Довідник 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 або зверніться до спільноти за допомогою.