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.