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 | Перераховує адреси для рахунку |
listaccounts | listlabels | Перераховує рахунки і їх баланси |
getreceivedbyaccount "account" | getreceivedbylabel | Повертає всього отримано на рахунок |
listreceivedbyaccount | listreceivedbylabel | Перераховує рахунки з отриманими сумами |
sendfrom "account" "address" amount | sendtoaddress | Відправляє з конкретного рахунку |
move "fromaccount" "toaccount" amount | N/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
- Довідник командного рядка: talerd & taler-cli
- Кращі практики безпеки: Безпека гаманця
- Посібник зі стейкінгу: Майнінг і стейкінг
- Розгортання Docker: Налаштування Docker
Для питань або підтримки відвідайте Спільноту TALER в Telegram.