Даведнік 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)Стварае неpadпісаны 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 або звярніцеся да супольнасці за дапамогай.