MyTetra Share
Делитесь знаниями!
Как устроен клиент Биткоин: Стандартное консольное API Биткоина (команды клиента). Описание на русском языке.
Время создания: 18.11.2015 12:44
Автор: Xintrea
Текстовые метки: API, Bitcoin, Биткоин, команды, клиент, bitcoin-cli, bitcoind
Раздел: Компьютер - Web / Internet - Криптовалюты (Bitcoin, Litecoin, etc...) - Bitcoin (BTC)
Запись: xintrea/mytetra_syncro/master/base/14478398488o0qigp7au/text.html на raw.github.com

Введение


Стандартное ПО биткоина состоит из двух частей:


  1. Демон, запускаемый как фоновый процесс
  2. Интерфейсная программа, которая взаимодействет с демоном


Для ОС Linux демон называется bitcoind, а интерфейсная консольная программа - bitcoin-cli.

Вначале небходимо запустить демон bitcoind. Интерфейсная программа по RPC-протоколу (JSON) соединяется с демоном, демон обрабатывает полученные команды и выдает ответ.


Работа может выглядеть следующим образом. Предположим, что необходимо получить текущую информацию о состоянии клиента на компьютере. В консоли выполняется команда "bitcoin-cli getinfo", в ответ клинт выдает информацию в формате JSON:


$ ./bitcoin-cli getinfo

{

"version" : 100002,

"protocolversion" : 70003,

"walletversion" : 60000,

"balance" : 0.00000000,

"blocks" : 842388,

"timeoffset" : 252,

"connections" : 8,

"proxy" : "",

"difficulty" : 41781.63861704,

"testnet" : false,

"keypoololdest" : 1447756675,

"keypoolsize" : 101,

"paytxfee" : 0.00000000,

"relayfee" : 0.00100000,

"errors" : ""

}

Более подробное описание того, как запускать сервер и клиент Биткоина, можно найти в статье:


Как работать с выкаченным блокчейном биткоина через консольный клиент bitcoin-cli



Перечень API-команд

Обязательные аргументы записываются как <аргумент>.

Необязательные (опциональные ) аргументы записываются как [аргумент].



Команада

Параметр

Описание

Требуется ли разлоченый кошелек? (v0.4.0+)

addmultisigaddress

<nrequired> <'["key","key"]'> [account]

Добавление мультисигнатурного адреса nrequired в кошелек.


Каждый параметр key - это биткоин-адрес или публичный ключ в HEX кодировке.


Если указан параметр account, адрес привязывается к данному аккаунту.


Команда возвращает строку, содержащую адрес.


N

addnode

<node> <add/remove/onetry>

version 0.8


Попытаться добавить (опция add) или удалить (опция remove) узел node в списке узлов.


Если задать опцию "только попробовать" onetry, будет произведена попытка соедениться с узлом node.


N

backupwallet

<destination>

Безопасное копирование кошелька wallet.dat в другое место, заданное в опции destination. В destination можно указывать либо просто путь к директории, либо полный путь с именем файла.


N

createmultisig

<nrequired> <'["key,"key"]'>

Создание мультисигнатурного адреса.


Результат команды возвращается в виде JSON объекта.


?

createrawtransaction

[{"txid":txid,"vout":n},...] {address:amount,...}

version 0.7


"Ручное" создание транзакции (raw transaction ) на основании входных данных, которые представляют из себя массив объектов, содержащих выходы транзакции этой проводки, отправлямой на указанный адрес.


Команда возвращает строковое представиление транзакции в виде HEX-кода.


Важно: входы транзакции не подписаны, и они не сохраняются в кошельке и не передаются в сеть.


Также обратите внимание, что проверка транзакции НЕ выполняется. Легко создать недействительные транзакции или транзакции, которые не будут переданы/просчитаны сетью, поскольку они содержат недостаточную плату.


N

decoderawtransaction

<hex string>

version 0.7


Создание человекочитаемого JSON кода на основе HEX-представления транзакции (см. raw transaction ).


N

dumpprivkey

<bitcoinaddress>

Показать закрытый ключ, соответствующий bitcoinaddress.


Y

encryptwallet

<passphrase>

Зашифровать кошелек с помощью пароля passphrase.


N

getaccount

<bitcoinaddress>

Получить аккаунт (разобраться бы что это такое) который привязан к указанному адресу bitcoinaddress.


N

getaccountaddress

<account>

Получение текущего биткоин-адреса для получения платежей на аккаунт account.


Если указанный в опции аккаунт не существует, будут созданы новый аккаунт и соответствующий новый адрес, который будет возвращен как результат выполнения команды.


N

getaddednodeinfo

<dns> [node]

version 0.8


Получение информации об одном (если оказан параметр node) или обо всех добавленных узлах.


Обратите внимание, что в списке не будут отображаться узлы, к которым происходило обращение в режиме "только попробовать" (onetry).


Если dns недоступен, будет предоставлен только список добавленных узлов, в противном случае будет доступна информация о подключении.


getaddressesbyaccount

<account>

Получение списка адресов, привязанных к аккаунту.


N

getbalance

[account] [minconf=1]

Получение баланса.


Если опция account не указана, возвращается полный баланс, доступный на сервере (в кошельке?)


Если account задан, то возвращается баланс данного аккаунта.


N

getbestblockhash

version 0.9


Команда возвращает хеш лучшего (tip) блока в самой длинной цепочке блоков. (Разобраться что это вообще такое и зачем нужно).


N

getblock

<hash>

Получение информации о блоке по известному хешу.


N

getblockcount

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


N

getblockhash

<index>

Получение хеша блока в самой лучшей цепочке (best-block-chain) с указанным индексом.


Индекс 0 соответствует генезис-блоку (genesis block ).


N

getblocknumber

Больше не используется.


Команда удалена в клиенте v. 0.7.


Вместо этой команды используйте getblockcount.


N

getblocktemplate

[params]

Получение структуры данных, необходимых для конструирования рабочего блока.


См. BIP_0022 чтобы получить больше информации о параметрах.


N

getconnectioncount

Получение количества соединений с узлами.


N

getdifficulty

Возвращает сложность доказательства работы как величину, кратную минимальной сложности.


N

getgenerate

Возвращает true в тот момент, когда bitcoind занимается генерированием хешей.


N

gethashespersec

Возвращает скорость генерирования хэшей в секунду по нескольким последним замерам.


N

getinfo

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


N

getmemorypool

[data]

Команда заменена в v 0.7.0 на команды getblocktemplate, submitblock, getrawmempool

N

getmininginfo

Команда возвращает JSON-код, содержащий информацию о майнинге:


  • blocks
  • currentblocksize
  • currentblocktx
  • difficulty
  • errors
  • generate
  • genproclimit
  • hashespersec
  • pooledtx
  • testnet


N

getnewaddress

[account]

Получение нового биткоин-адреса для получения платежей.


Если указан account, платежи, полученные на данный адрес, будут зачислены на этот аккаунт.


N

getpeerinfo

version 0.7


Получение данных обо всех присоединенных узлах (нодах).


N

getrawchangeaddress

[account]

version 0.9


Возвращает новый биткойн-адрес для получения изменений (непонятно что имеется в виду). Он может использоваться только с "сырыми транзакциями" (raw transactions), и для нормального использования не подходит.

N

getrawmempool

version 0.7


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


N

getrawtransaction

<txid> [verbose=0]

version 0.7


Команда возвращает информацию о транзакции в формате raw transaction .


txid - это идентификатор транзакции.


N

getreceivedbyaccount

[account] [minconf=1]

Returns the total amount received by addresses with [account] in transactions with at least [minconf] confirmations. If [account] not provided return will include all transactions to all accounts. (version 0.3.24)

N

getreceivedbyaddress

<bitcoinaddress> [minconf=1]

Returns the amount received by <bitcoinaddress> in transactions with at least [minconf] confirmations. It correctly handles the case where someone has sent to the address in multiple transactions. Keep in mind that addresses are only ever used for receiving transactions. Works only for addresses in the local wallet, external addresses will always show 0.

N

gettransaction

<txid>

Returns an object about the given transaction containing:

  • "amount" : total amount of the transaction
  • "confirmations" : number of confirmations of the transaction
  • "txid" : the transaction ID
  • "time" : time associated with the transaction[ 1].
  • "details" - An array of objects containing:
  • "account"
  • "address"
  • "category"
  • "amount"
  • "fee"

N

gettxout

<txid> <n> [includemempool=true]

Returns details about an unspent transaction output (UTXO)

N

gettxoutsetinfo

Returns statistics about the unspent transaction output (UTXO) set

N

getwork

[data]

If [data] is not specified, returns formatted hash data to work on:

  • "midstate" : precomputed hash state after hashing the first half of the data
  • "data" : block data
  • "hash1" : formatted hash buffer for second hash
  • "target" : little endian hash target

If [data] is specified, tries to solve the block and returns true if it was successful.

N

help

[command]

List commands, or get help for a command.

N

importprivkey

<bitcoinprivkey> [label] [rescan=true]

Adds a private key (as returned by dumpprivkey) to your wallet. This may take a while, as a rescan is done, looking for existing transactions. Optional [rescan] parameter added in 0.8.0. Note: There's no need to import public key, as in ECDSA (unlike RSA) this can be computed from private key.

Y

keypoolrefill

Fills the keypool, requires wallet passphrase to be set.

Y

listaccounts

[minconf=1]

Returns Object that has account names as keys, account balances as values.

N

listaddressgroupings

version 0.7 Returns all addresses in the wallet and info used for coincontrol.

N

listreceivedbyaccount

[minconf=1] [includeempty=false]

Returns an array of objects containing:

  • "account" : the account of the receiving addresses
  • "amount" : total amount received by addresses with this account
  • "confirmations" : number of confirmations of the most recent transaction included

N

listreceivedbyaddress

[minconf=1] [includeempty=false]

Returns an array of objects containing:

  • "address" : receiving address
  • "account" : the account of the receiving address
  • "amount" : total amount received by the address
  • "confirmations" : number of confirmations of the most recent transaction included

To get a list of accounts on the system, execute bitcoind listreceivedbyaddress 0 true

N

listsinceblock

[blockhash] [target-confirmations]

Get all transactions in blocks since block [blockhash], or all transactions if omitted. [target-confirmations] intentionally does not affect the list of returned transactions, but only affects the returned "lastblock" value.[1]

N

listtransactions

[account] [count=10] [from=0]

Returns up to [count] most recent transactions skipping the first [from] transactions for account [account]. If [account] not provided it'll return recent transactions from all accounts.

N

listunspent

[minconf=1] [maxconf=999999]

version 0.7 Returns array of unspent transaction inputs in the wallet.

N

listlockunspent

version 0.8 Returns list of temporarily unspendable outputs

lockunspent

<unlock?> [array-of-objects]

version 0.8 Updates list of temporarily unspendable outputs

move

<fromaccount> <toaccount> <amount> [minconf=1] [comment]

Move from one account in your wallet to another

N

sendfrom

<fromaccount> <tobitcoinaddress> <amount> [minconf=1] [comment] [comment-to]

<amount> is a real and is rounded to 8 decimal places. Will send the given amount to the given address, ensuring the account has a valid balance using [minconf] confirmations. Returns the transaction ID if successful (not in JSON object).

Y

sendmany

<fromaccount> {address:amount,...} [minconf=1] [comment]

amounts are double-precision floating point numbers

Y

sendrawtransaction

<hexstring>

version 0.7 Submits raw transaction (serialized, hex-encoded) to local node and network.

N

sendtoaddress

<bitcoinaddress> <amount> [comment] [comment-to]

<amount> is a real and is rounded to 8 decimal places. Returns the transaction ID <txid> if successful.

Y

setaccount

<bitcoinaddress> <account>

Sets the account associated with the given address. Assigning address that is already assigned to the same account will create a new address associated with that account.

N

setgenerate

<generate> [genproclimit]

<generate> is true or false to turn generation on or off.
Generation is limited to [genproclimit] processors, -1 is unlimited.

N

settxfee

<amount>

<amount> is a real and is rounded to the nearest 0.00000001

N

signmessage

<bitcoinaddress> <message>

Sign a message with the private key of an address.

Y

signrawtransaction

<hexstring>

[{"txid":txid,

"vout":n,

"scriptPubKey":hex},...] [<privatekey1>,...]

version 0.7 Adds signatures to a raw transaction and returns the resulting raw transaction.

Y/N

stop

Stop bitcoin server.

N

submitblock

<hex data> [optional-params-obj]

Attempts to submit new block to network.

N

validateaddress

<bitcoinaddress>

Return information about <bitcoinaddress>.

N

verifymessage

<bitcoinaddress> <signature> <message>

Verify a signed message.

N

walletlock

Removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call walletpassphrase again before being able to call any methods which require the wallet to be unlocked.

N

walletpassphrase

<passphrase> <timeout>

Stores the wallet decryption key in memory for <timeout> seconds.

N

walletpassphrasechange

<oldpassphrase> <newpassphrase>

Changes the wallet passphrase from <oldpassphrase> to <newpassphrase>.

N


Коды ошибок

Для получения актуальных кодов ошибок, можно посмотреть файл rpcprotocol.h в исходниках ПО.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования