Справочник RPC

TALER предоставляет комплексный JSON-RPC интерфейс для программного взаимодействия с блокчейном, кошельком и сетью. Этот справочник документирует все доступные RPC методы.

Начало работы с TALER RPC

Включение доступа RPC

1. Настройте RPC в taler.conf

Создайте или отредактируйте ваш файл конфигурации:

Linux/macOS: ~/.taler/taler.conf Windows: %APPDATA%\TALER\taler.conf

# Включить RPC сервер
server=1

# Учетные данные RPC (обязательно)
rpcuser=yourusername
rpcpassword=yourpassword

# Опционально: привязать к конкретному IP
rpcbind=127.0.0.1

# Опционально: разрешить соединения с конкретного IP
rpcallowip=127.0.0.1

# Опционально: пользовательский RPC порт (по умолчанию: 23333)
rpcport=23333

2. Запустите talerd с включенным RPC

talerd -daemon

Выполнение RPC вызовов

Использование taler-cli (рекомендуется)

taler-cli [опции] <команда> [параметры]

Пример:

taler-cli getblockcount
taler-cli getbalance
taler-cli sendtoaddress "TFNxSh9X75WguDWRj4FbRELK8GUP37xu4E" 10.5

Использование curl (HTTP POST)

curl --user yourusername:yourpassword \
  --data-binary '{"jsonrpc":"1.0","id":"curltest","method":"getblockcount","params":[]}' \
  -H 'content-type: text/plain;' \
  http://127.0.0.1:23333/

Формат ответа:

{
  "result": 123456,
  "error": null,
  "id": "curltest"
}

RPC методы по категориям

Информация о блокчейне

Запрос состояния блокчейна, блоков, транзакций и статистики цепи.

МетодОписание
getblockchaininfoВозвращает полную информацию о блокчейне, включая вершину цепи, сложность и статус софтфорков
getblockcountВозвращает текущую высоту блока (количество блоков в основной цепи)
getbestblockhashВозвращает хэш текущего лучшего (вершина) блока
getblock "blockhash" (verbosity)Возвращает информацию о конкретном блоке по его хэшу
getblockhash heightВозвращает хэш блока на указанной высоте
getblockheader "blockhash" (verbose)Возвращает информацию заголовка конкретного блока
getchaintipsВозвращает информацию обо всех известных вершинах цепи (валидные и невалидные форки)
getchaintxstats (nblocks) (blockhash)Возвращает статистику транзакций цепи (количество tx, скорость tx, окно)
getblockstats hash_or_height (stats)Возвращает статистику по блоку (комиссии, вес, время, количество tx)
getdifficultyВозвращает текущую сложность proof-of-work и proof-of-stake
verifychain (checklevel) (nblocks)Проверяет целостность базы данных блокчейна
preciousblock "blockhash"Помечает блок как ценный, влияя на приоритет выбора цепи

Mempool (пул транзакций)

Проверка и управление транзакциями, ожидающими подтверждения.

МетодОписание
getrawmempool (verbose)Возвращает все ID транзакций в пуле памяти
getmempoolancestors "txid" (verbose)Возвращает все предшествующие транзакции данной транзакции mempool
getmempooldescendants "txid" (verbose)Возвращает все последующие транзакции данной транзакции mempool
getmempoolentry "txid"Возвращает подробную информацию о конкретной транзакции mempool
getmempoolinfoВозвращает размер mempool, использование памяти и количество транзакций
savemempoolСохраняет текущий пул памяти на диск

Набор UTXO

Запрос неизрасходованных выходов транзакций и проверка доказательств.

МетодОписание
gettxout "txid" n (include_mempool)Возвращает детали о неизрасходованном выходе транзакции (UTXO)
gettxoutsetinfoВозвращает статистику о наборе неизрасходованных выходов транзакций
gettxoutproof ["txid",...] (blockhash)Возвращает hex-закодированное доказательство включения транзакций в блок
verifytxoutproof "proof"Проверяет доказательство и возвращает транзакции, к которым оно относится
scantxoutset "action" [scanobjects,...]Сканирует набор UTXO на конкретные шаблоны дескрипторов

Продвинутое управление блокчейном

Продвинутые операции для тестирования и управления блокчейном.

МетодОписание
pruneblockchain heightОбрезает данные блокчейна до указанной высоты (если обрезка включена)
invalidateblock "blockhash"Помечает блок и всех его потомков как недействительные (только для тестирования)
reconsiderblock "blockhash"Пересматривает ранее объявленный недействительным блок
waitfornewblock (timeout)Ожидает генерации нового блока и возвращает его хэш и высоту
waitforblock "blockhash" (timeout)Ожидает прибытия конкретного блока
waitforblockheight height (timeout)Ожидает достижения блокчейном конкретной высоты

Майнинг и генерация

Управление генерацией блоков для proof-of-work (PoW) и proof-of-stake (PoS).

МетодОписание
getmininginfoВозвращает информацию о майнинге (хешрейт, сложность, блоки, статус стейкинга)
getnetworkhashps (nblocks) (height)Возвращает оценочную сетевую мощность хешей в секунду на основе недавних блоков
getblocktemplate (template_request)Возвращает шаблон блока для майнинга (совместим с BIP 22/23)
submitblock "hexdata" (dummy)Пытается отправить новый блок в сеть
prioritisetransaction "txid" (dummy) fee_deltaИзменяет приоритет транзакции для майнинга (более высокий fee_delta = более высокий приоритет)
generate nblocks (maxtries)Майнит до nblocks блоков немедленно (требуется кошелёк, только regtest)
generatetoaddress nblocks "address" (maxtries)Майнит блоки напрямую на указанный адрес
getgenerateВозвращает, настроен ли сервер на генерацию блоков
setgeneratepow generate (genproclimit)Включает/отключает proof-of-work майнинг и устанавливает количество потоков
setgeneratepos generateВключает/отключает proof-of-stake майнинг (кошелёк должен быть разблокирован)

Примечание: Для продакшн стейкинга используйте setgeneratepos true с зашифрованным и разблокированным кошельком. См. Руководство по майнингу и стейкингу для деталей.


Сырые транзакции

Создание, декодирование, подпись и трансляция сырых транзакций.

Создание транзакций

МетодОписание
createrawtransaction [{"txid":"id","vout":n},...] [{"address":amount},...] (locktime)Создает неподписанную сырую транзакцию
createpsbt [{"txid":"id","vout":n},...] [{"address":amount},...] (locktime)Создает неподписанный PSBT (частично подписанная Bitcoin транзакция)
fundrawtransaction "hexstring" (options)Добавляет входы к сырой транзакции, используя средства кошелька

Декодирование транзакций

МетодОписание
decoderawtransaction "hexstring"Декодирует hex-закодированную сырую транзакцию и возвращает её детали
decodescript "hexstring"Декодирует hex-закодированный скрипт (скрипт выкупа, скрипт свидетеля)
decodepsbt "psbt"Декодирует и возвращает информацию о PSBT

Подпись транзакций

МетодОписание
signrawtransaction "hexstring" ([{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey",...] sighashtype)Подписывает сырую транзакцию (использует кошелёк, если доступен)
signrawtransactionwithkey "hexstring" ["privatekey",...] ([{"txid":"id","vout":n,...},...] sighashtype)Подписывает сырую транзакцию предоставленными приватными ключами (кошелёк не нужен)
signrawtransactionwithwallet "hexstring" ([{"txid":"id","vout":n,...},...] sighashtype)Подписывает сырую транзакцию, используя приватные ключи кошелька

Трансляция транзакций

МетодОписание
sendrawtransaction "hexstring" (allowhighfees)Транслирует подписанную сырую транзакцию в сеть
testmempoolaccept ["rawtx",...] (allowhighfees)Тестирует, будут ли транзакции приняты в mempool (не транслирует)

Операции с PSBT

МетодОписание
walletcreatefundedpsbt [{"txid":"id","vout":n},...] [{"address":amount},...] (locktime) (options) (bip32derivs)Создает и финансирует PSBT, используя UTXO кошелька
walletprocesspsbt "psbt" (sign) (sighashtype) (bip32derivs)Обрабатывает и опционально подписывает PSBT, используя ключи кошелька
combinepsbt ["psbt",...]Объединяет несколько частично подписанных PSBT в один
finalizepsbt "psbt" (extract)Финализирует PSBT и опционально извлекает полную транзакцию
converttopsbt "hexstring" (permitsigdata)Конвертирует сырую транзакцию в формат PSBT

Объединение транзакций

МетодОписание
combinerawtransaction ["hexstring",...]Объединяет несколько частичных сырых транзакций в одну

Управление кошельком

Управление файлами кошелька, шифрованием, резервными копиями и пулами ключей.

Операции с кошельком

МетодОписание
getwalletinfoВозвращает общую информацию о кошельке (баланс, количество tx, пул ключей, статус шифрования)
listwalletsПеречисляет все загруженные кошельки
createwallet "wallet_name" (disable_private_keys) (blank) (passphrase) (avoid_reuse)Создает новый кошелёк
loadwallet "filename"Загружает существующий файл кошелька в память
unloadwallet ("wallet_name")Выгружает кошелёк из памяти (не удаляет)
backupwallet "destination"Делает резервную копию файла wallet.dat в указанное место
rescanblockchain (start_height) (stop_height)Повторно сканирует блокчейн на транзакции кошелька
abortrescanПрерывает текущее повторное сканирование блокчейна

Шифрование и безопасность кошелька

МетодОписание
encryptwallet "passphrase"Шифрует кошелёк парольной фразой (одноразовая операция, требует перезапуска)
walletpassphrase "passphrase" timeoutРазблокирует кошелёк на указанное время (в секундах)
walletpassphrasechange "oldpassphrase" "newpassphrase"Изменяет парольную фразу шифрования кошелька
walletlockНемедленно блокирует разблокированный кошелёк

Важно: Всегда шифруйте ваш кошелёк перед стейкингом. См. Лучшие практики безопасности для деталей.

Управление пулом ключей

МетодОписание
keypoolrefill (newsize)Пополняет пул ключей новыми ключами
sethdseed (newkeypool) ("seed")Устанавливает или генерирует новое HD seed кошелька

Адреса и метки

Генерация и управление адресами кошелька.

Генерация адресов

МетодОписание
getnewaddress ("label") ("address_type")Генерирует новый адрес получения с опциональной меткой
getrawchangeaddress ("address_type")Возвращает новый адрес для получения сдачи
validateaddress "address"Проверяет адрес TALER и возвращает информацию о нём
getaddressinfo "address"Возвращает подробную информацию об адресе в кошельке

Типы адресов: "legacy", "p2sh-segwit", "bech32" (по умолчанию зависит от конфигурации кошелька)

Метки и организация

МетодОписание
setlabel "address" "label"Устанавливает или обновляет метку для адреса
getaddressesbylabel "label"Возвращает все адреса, связанные с конкретной меткой
listlabels ("purpose")Перечисляет все метки адресов в кошельке
listaddressgroupingsПеречисляет группировки адресов (адреса, которые вероятно принадлежат вместе)

Мультиподписные адреса

МетодОписание
addmultisigaddress nrequired ["key",...] ("label") ("address_type")Создает мультиподписный адрес и добавляет его в кошелёк
createmultisig nrequired ["key",...]Создает мультиподписный скрипт выкупа (не добавляет в кошелёк)

Балансы и история транзакций

Запрос балансов кошелька и информации о транзакциях.

Информация о балансе

МетодОписание
getbalance ("dummy") (minconf) (include_watchonly)Возвращает общий доступный баланс кошелька
getunconfirmedbalanceВозвращает баланс неподтвержденных транзакций
getreceivedbyaddress "address" (minconf)Возвращает общую сумму, полученную на конкретный адрес
getreceivedbylabel "label" (minconf)Возвращает общую сумму, полученную на адреса с конкретной меткой
listreceivedbyaddress (minconf) (include_empty) (include_watchonly) ("address_filter")Перечисляет адреса с их полученными суммами
listreceivedbylabel (minconf) (include_empty) (include_watchonly)Перечисляет метки с их полученными суммами

История транзакций

МетодОписание
listtransactions ("label") (count) (skip) (include_watchonly)Перечисляет транзакции кошелька с опциональной фильтрацией
gettransaction "txid" (include_watchonly)Возвращает подробную информацию о транзакции кошелька
listsinceblock ("blockhash") (target_confirmations) (include_watchonly) (include_removed)Перечисляет транзакции с указанного блока

Отправка транзакций

Отправка монет TALER из кошелька.

Простая отправка

МетодОписание
sendtoaddress "address" amount ("comment") ("comment_to") (subtractfeefromamount)Отправляет сумму на данный адрес
sendmany "" {"address":amount,...} (minconf) ("comment") ["address",...] (subtractfeefromamount)Отправляет на несколько адресов в одной транзакции

Пример:

taler-cli sendtoaddress "TFNxSh9X75WguDWRj4FbRELK8GUP37xu4E" 10.5
taler-cli sendmany "" '{"TAddr1":10,"TAddr2":5.5}'

Управление транзакциями

МетодОписание
abandontransaction "txid"Помечает транзакцию как оставленную (позволяет повторно потратить монеты)
bumpfee "txid" (options)Увеличивает комиссию транзакции, используя RBF (Replace-By-Fee)
resendwallettransactionsНемедленно повторно транслирует неподтвержденные транзакции кошелька

Управление UTXO

Управление неизрасходованными выходами, доступными для траты.

МетодОписание
listunspent (minconf) (maxconf) (["address",...]) (include_unsafe) (query_options)Перечисляет неизрасходованные выходы транзакций (UTXO) с опциональными фильтрами
lockunspent unlock ([{"txid":"id","vout":n},...])Блокирует или разблокирует конкретные UTXO для предотвращения траты
listlockunspentВозвращает список всех заблокированных UTXO

Пример - Блокировка UTXO:

taler-cli lockunspent false '[{"txid":"abc123...","vout":0}]'

Пример - Разблокировка всех UTXO:

taler-cli lockunspent true

Импорт и экспорт

Импорт и экспорт ключей, адресов и данных кошелька.

Импорт

МетодОписание
importprivkey "privkey" ("label") (rescan)Импортирует приватный ключ в кошелёк
importaddress "address" ("label") (rescan) (p2sh)Импортирует адрес или скрипт для мониторинга только для просмотра
importpubkey "pubkey" ("label") (rescan)Импортирует публичный ключ для мониторинга только для просмотра
importwallet "filename"Импортирует ключи из файла дампа кошелька
importmulti '[{"scriptPubKey":{"address":"addr"},"timestamp":now,...},...]' (options)Импортирует несколько ключей/адресов с метаданными одним вызовом
importprunedfunds "rawtransaction" "txoutproof"Импортирует транзакцию и доказательство (для обрезанных нод)
removeprunedfunds "txid"Удаляет транзакцию, импортированную через importprunedfunds

Экспорт

МетодОписание
dumpprivkey "address"Экспортирует приватный ключ для адреса в формате WIF
dumpwallet "filename"Экспортирует все ключи и метаданные кошелька в читаемый человеком файл

Предупреждение безопасности: Никогда не делитесь экспортированными приватными ключами или дампами кошелька. Любой, имеющий доступ к приватным ключам, может тратить ваши монеты.


Подпись и проверка сообщений

Подпись сообщений адресами кошелька и проверка подписей.

МетодОписание
signmessage "address" "message"Подписывает сообщение приватным ключом адреса в кошельке
signmessagewithprivkey "privkey" "message"Подписывает сообщение приватным ключом (кошелёк не нужен)
verifymessage "address" "signature" "message"Проверяет подписанное сообщение

Пример:

# Подписать сообщение
taler-cli signmessage "TFNxSh9X75WguDWRj4FbRELK8GUP37xu4E" "Hello TALER"

# Проверить подпись
taler-cli verifymessage "TFNxSh9X75WguDWRj4FbRELK8GUP37xu4E" "H1234..." "Hello TALER"

Стейкинг (Proof-of-Stake)

Мониторинг и управление proof-of-stake майнтингом/стейкингом.

МетодОписание
listmintingПеречисляет информацию о майнтинге/стейкинге, включая ожидаемое время до следующего стейка
setgeneratepos generateВключает/отключает proof-of-stake стейкинг (требуется разблокированный зашифрованный кошелёк)
getmininginfoВозвращает информацию о майнинге и стейкинге (включает статус стейкинга)

Для подробных инструкций по настройке стейкинга, см. Руководство по майнингу и стейкингу.


Информация о сети

Запрос соединений пиров и сетевой статистики.

Управление пирами

МетодОписание
getconnectioncountВозвращает количество соединений с другими нодами
getpeerinfoВозвращает подробную информацию о каждом подключенном пире
addnode "node" "command"Добавляет, удаляет или пытается подключиться к пиру ("add", "remove", "onetry")
disconnectnode "[address]" (nodeid)Отключается от конкретного пира по адресу или node ID
getaddednodeinfo (node)Возвращает информацию о вручную добавленных нодах
pingОтправляет ping всем подключенным пирам (измеряет задержку)

Сетевая статистика

МетодОписание
getnetworkinfoВозвращает информацию о сети (версия, соединения, протокол, сети)
getnettotalsВозвращает статистику сетевого трафика (всего байт отправлено/получено)

Управление банами

МетодОписание
setban "subnet" "command" (bantime) (absolute)Банит или разбанивает IP/подсеть ("add" или "remove")
listbannedПеречисляет все забаненные IP/подсети с продолжительностью бана
clearbannedОчищает все забаненные IP/подсети

Пример - Забанить IP:

taler-cli setban "192.168.1.100" "add" 86400

Управление сетью

МетодОписание
setnetworkactive stateВключает/отключает всю P2P сетевую активность

Управление сервером и информация

Управление демоном TALER и запрос системной информации.

МетодОписание
help ("command")Перечисляет все команды или возвращает справку по конкретной команде
stopКорректно останавливает сервер TALER
uptimeВозвращает общее время работы сервера в секундах
getmemoryinfo ("mode")Возвращает статистику использования памяти
logging ("[include,...] <exclude>")Получает или устанавливает категории логирования для отладки

Пример:

# Получить справку по команде
taler-cli help getblockcount

# Проверить время работы сервера
taler-cli uptime

# Остановить демон
taler-cli stop

Устаревшие методы

Следующие методы устарели и поддерживаются только для обратной совместимости. Они могут быть удалены в будущих версиях.

МетодЗаменаОписание
getinfoИспользуйте конкретные методыВозвращает агрегированную информацию о ноде (используйте getblockchaininfo, getnetworkinfo, getwalletinfo вместо этого)
getaccount "address"getaddressinfoВозвращает счет для адреса
setaccount "address" "account"setlabelУстанавливает счет для адреса
getaccountaddress "account"getnewaddressПолучает адрес для счета
getaddressesbyaccount "account"getaddressesbylabelПеречисляет адреса для счета
listaccountslistlabelsПеречисляет счета и их балансы
getreceivedbyaccount "account"getreceivedbylabelВозвращает всего получено на счет
listreceivedbyaccountlistreceivedbylabelПеречисляет счета с полученными суммами
sendfrom "account" "address" amountsendtoaddressОтправляет с конкретного счета
move "fromaccount" "toaccount" amountN/AПеремещает средства между счетами (удалено)
addwitnessaddress "address"N/AДобавляет адрес свидетеля (связано с SegWit)

Обработка ошибок

RPC вызовы возвращают ошибки в следующем формате:

{
  "result": null,
  "error": {
    "code": -5,
    "message": "Invalid address"
  },
  "id": "curltest"
}

Распространенные коды ошибок

КодОписание
-1Общая ошибка
-3Недействительный параметр
-5Недействительный адрес или ключ
-6Недостаточно средств
-8Недостаточный приоритет
-13Требуется разблокировка кошелька
-14Неправильная парольная фраза кошелька
-15Сбой шифрования кошелька
-17Ошибка базы данных
-22Недействительный параметр (слишком много)
-32600Недействительный JSON-RPC запрос
-32601Метод не найден

Аутентификация RPC

TALER RPC использует HTTP Basic Authentication. Настройте учетные данные в taler.conf:

rpcuser=yourusername
rpcpassword=yourpassword

Лучшие практики безопасности:

  • Используйте сильный, случайно сгенерированный пароль
  • Никогда не выставляйте RPC в публичный интернет
  • Используйте rpcallowip для ограничения доступа с конкретных IP
  • Рассмотрите использование SSH туннелирования для удаленного доступа
  • Используйте HTTPS/TLS при удаленном доступе к RPC (требуется обратный прокси)

Дополнительные ресурсы

Для вопросов или поддержки посетите Сообщество TALER в Telegram.

Нужна дополнительная помощь?

Не можете найти то, что ищете? Проверьте наш раздел FAQ или обратитесь к сообществу за помощью.