# Bytom命令行工具

Bytom 提供CLI客户端(bytomcli), 它是进入Bytom 网络的入口点,能够作为全节点运行。 其他进程可使用HTTPWebSocketIPC等方式通过JSON RPC调用访问Bytom 网络. 完整的CLI选项可使用bytomcli --help查看. 包含从账户、密钥、资产、token、交易、区块及其他等几个方面.

# 搭建全节点

环境要求

$ go version #查看golang版本是否符合要求
$ go env GOROOT GOPATH #获取环境变量

clone源码

$ git clone https://github.com/Bytom/bytom.git $GOPATH/src/github.com/bytom

编译运行

编译:

$ cd $GOPATH/src/github.com/bytom
$ make bytomcli  # build bytomcli

编译好以后就可以子在 bytom 目录下执行一下接口命令,接口如下:

# create-key

创建密钥,用于创建账户

参数

参数 描述
alias 密钥别名
password 密钥密码

返回

响应 描述
alias 密钥别名
xpub 密钥对应的公钥
file 密钥的生成文件路径

例子:

./bytomcli create-key wen 123456

# list-keys

获取节点中的所有密钥

参数

返回

响应 描述
alias 密钥别名
xpub 密钥对应的公钥
file 密钥的生成文件路径

例子:

./bytomcli list-keys

# delete-key

删除密钥

参数

参数 描述
xpub 密钥对应的公钥
password 生成密钥时设置的密码

返回

响应 描述
Successfully delete key 删除成功的提示
key not found or wrong password 公钥错误或不存在时的提示
could not decrypt key with given passphrase 密码错误时的提示

Example:

 ./bytomcli delete-key 7b328361cb360a2dbd289b4fcc94f38b6dcf4b1f1469a96489950146e8d7feb2d8d5254c3d2f6bd0c6cd6ea7be08d5f7672e8bc49c3a9c3b67ad3f8190d1be79 123456

# create-account

创建账户

参数

参数 描述
alias 账户名
xpub(s) 公钥

返回

响应 描述
alias 账户名
id 账户id
key_index 帐户在钱包节点中的索引值
quorum 签名数
xpubs 公钥,array

Example:

 ./bytomcli create-account test 81b6150ee90b7936a8b21f7f3e5028d9060aef1cc633c13cbbb21183bbf66f3b484bf876468b4278f1421f9b66d55d6a4d71542e20faf908590a39d4e96cc0ed

# list-accounts

获取节点中所有帐户

参数

返回

响应 描述
id 帐户id
alias 账户名
key_index 帐户在钱包节点中的索引值
quorom 签名数,即发送交易时所需的密钥数
xpubs 公钥数组

Example:

./bytomcli list-accounts

# delete-account

删除帐户

参数

参数 描述
alias或者accountID 帐户名或者帐户id

返回

响应 描述
Successfully delete account 删除成功时的提示
fail to find account alias或者accountID错误时的提示

Example:

./bytomcli delete-account test 

或者

./bytomcli delete-account 0E96GEA9G0A04

# create-account-receiver

给对应帐户新建地址

参数

参数 描述
alias 必带,账户名
accountID 可选, 帐户id

返回

响应 描述
address 地址
control_program 帐户控制程序,可以用来接收转账

Example:

 ./bytomcli create-account-receiver zhang 

或者

 ./bytomcli create-account-receiver zhang 0DV0J74K00A02

# list-addresses

获取帐户下的所有地址

参数

参数 描述
alias 账户名(二选一)
id 帐户id(二选一)

返回

响应 描述
account_alias 账户名
account_id 帐户id
address 地址
change 当帐户改变时地址是否也跟着改变,默认为true

Example:

./bytomcli list-addresses --alias zhang 

或者

./bytomcli list-addresses --id 0DV0J74K00A02

# validate-address

校验地址是否合法

参数

参数 描述
address 地址

返回

响应 描述
valid 是否合法,true即合法
is_local 是否是本节点地址

Example:

./bytomcli validate-address sm1qrztgvhxgfy2njgewdhk524uhzhdw03g9l63u48

# create-asset

创建资产

参数

参数 描述
alias 资产别名
xpub(s) 公钥组

返回

响应 描述
alias 资产名称
definition 资产定义
id 资产id
issuance_program 发行资产的控制程序
quorum 签名数
keys JSONObject,参数如下
asset_derivation_path
asset_pubkey
root_xpub

Example:

 ./bytomcli create-asset GODS 81b6150ee90b7936a8b21f7f3e5028d9060aef1cc633c13cbbb21183bbf66f3b484bf876468b4278f1421f9b66d55d6a4d71542e20faf908590a39d4e96cc0ed

# get-asset

方法 描述
get-asset 获取对应资产信息
参数
assetID 资产id
返回
alias 资产名称
id 资产id
issue_program 发行资产的控制程序
key_index 公钥的索引
quorum 签名数
raw_definition_byte 资产定义的字节
type 类型
vm_version VM版本,应该是完备图灵VM
xpubs 公钥组
definition 资产定义,以下JSONObject
decimals 精确位数
description 资产描述
name 资产名
symbol 资产币种

Example:

./bytomcli get-asset ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

# list-assets

获取全部资产信息

参数

返回

响应 描述
alias 资产别名
id 资产id,btm为全f
issue_program 发行资产的控制程序
key_index 公钥的密钥索引
quorum 密钥数
raw_definition_byte 资产定义的字节
type 资产类型
vm_version VM版本
xpubs 公钥数组
definition 是一个对象,关于该资产的描述,有以下参数
decimals 精确位数,8位
description 资产描述
name 资产名称,BTM
symbol 资产币种,BTM

Example:

./bytomcli list-assets

# list-balances

获取钱包中所有帐户的余额

参数

返回

响应 描述
account_alias 帐户名称
account_id 帐户id
amount 资产余额,以NEU为单位, 1BTM = 10^8 NEU
asset_alias 资产名称
asset_id 资产id
asset_definition 资产定义,JSONObject

Example:

./bytomcli list-balances

# create-access-token

创建token

参数

参数 描述
tokenID token的id

返回

响应 描述
created_at 创建时间
id id
token token,包含密码。冒号后面为密码

Example:

./bytomcli create-access-token test

# list-access-tokens

获取所有token

参数

返回

响应 描述
created_at 创建时间
id token id
token token,冒号后面为密码

Example

./bytomcli  list-access-tokens

# check-access-token

校验token

参数

参数 描述
tokenID token id
secret token密码,即生成token时,参数token中冒号后面的字符串

返回

响应 描述
Valid access token token正确返回的提示
ERROR invalid token token的密码错误时返回的提示
ERROR nonexisting access token ID tokenID不存在时返回的提示

Example:

./bytomcli check-access-token test 1061bacc735ae574f84001d617ed17a8302f7c6206481b9f45c7235853e6ab19

# get-block-count

获取当前的块高

参数

返回

响应 描述
block_count 块高

Example:

./bytomcli get-block-count

# get-block-hash

返回最新块的哈希值

参数

返回

响应 描述
block_hash 块哈希

Example:

./bytomcli get-block-hash

# get-block

根据块高或块哈希获取块信息

参数

参数 描述
block_height 块高(可选)
block_hash 块哈希(可选)

返回

响应 描述
hash 块哈希
size 块大小
version 块版本
height 块高
previous_block_hash 前一个块的哈希
timestamp 出块时间戳(秒级)
transaction_merkle_root merkle(默克尔树)值
transaction_status_hash 交易状态的merkle
bits 当前难度的bits
nonce nonce
difficulty 难度值
transactions JSONArray,参数如下
id 交易哈希
inputs JSONArray,参数如下表
outputs JSONArray,参数如下表
size 交易的大小
status_fail 请求状态是否失败
time_range 请求响应时间戳
version 交易版本

参数

参数 描述
inputs
amout 资产数量
arbitrary 当type是 coinbase 时才存在此参数
asset_definition 资产定义 JSONObject
asset_id 资产id
type 类型

参数

参数 描述
outputs
address 输出地址
amount 金额
asset_definition 资产定义 JSONObject
asset_id 资产id
control_program 账户控制程序
id 与utxo相关的输出id
position 输出位置
type 类型,控制

Example:

 ./bytomcli get-block 20a31511b7869fc90b849c4d011ccc0b51ee61e742d20034438309236afd78af 

或者

./bytomcli get-block 8031

# get-difficulty

获取当前块或指定块的难度

参数

参数 描述
不带参数即获取当前块难度
hash 可选,指定块的哈希
height 可选,指定块的高度

返回

响应 描述
bits 难度对应的bits
difficulty 难度值
hash 块哈希
height 块高

Example:

./bytomcli get-difficulty 

或者

./bytomcli get-difficulty --height 8251 

或者

./bytomcli get-difficulty  --hash 13d8d75dd33fcd277cf9a2d86e71daeab9aac6f8eb06a7505b2766d564720028

# get-block-header

根据块高或块哈希获取详细的块头部

参数

参数 描述
block_height 块高,可选
block_hash 块哈希,可选

返回

响应 描述
block_header 块头部
reward 出块奖励

Example

./bytomcli get-block-header 12 

或者

./bytomcli get-block-header e3b7cbc56b355cce8f0c827edaa6a154298d5d42ec398b4a47fa4af2f14b0a36

# is-mining

检测本节点是否在挖矿

参数

返回

响应 描述
is_mining true 表示在挖矿,false 表示没有在挖矿

Example

./bytomcli is-mining

# gas-rate

获取当前的gas价格

参数

返回

响应 描述
gas_rate gas价格

Example:

./bytomcli gas-rate

# set-mining

设置节点挖矿

参数

参数 描述
true 表示启动挖矿
false 表示停止挖矿

返回

响应 描述
success message

Example:

./bytomcli set-mining true 

或者

./bytomcli set-mining false

# build-transaction

构建交易

参数

响应 描述
alias 账户名
asset 资产id或别名
amount 转账数量,按NEU算,1BTM=10^8NEU
address 转账地址
type 类型
receiver 接收程序id,当type为spend时需要带

返回

响应 描述
json 返回打包好的raw-transaction

Example:

 ./bytomcli build-transaction --alias zhang BTM 1000000000 --type spend --receiver 00145bb44b681e970cf1be37513fe9e39785f56bd72c 

或者

 ./bytomcli build-transaction --alias zhang BTM 1000000000 --address sm1qtw6yk6q7jux0r03h2yl7ncuhsh6kh4ev92z7pk --type address

# sign-transaction

对交易进行签名

参数

参数 描述
raw-transaction build返回的json数据
password 钱包密码

返回

响应 描述
json数据 签名好的交易json数据

Example: 【注:json格式记得加单引号,否则提示参数过多】

 ./bytomcli sign-transaction '{"allow_additional_actions":false,"raw_transaction":"070100010161015f65f1a7c13ebd9d687c853dd28fd125702a7d173439969d857cb01b0b98bd4372ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8099c4d5990100011600142412b41a0f48a6dfad726f7b502e557aa39df36b010002013effffffffffffffff   ffffffffffffffffffffffffffffffffffffffffffffffff80ab94ef950101160014a81d7084fcafaa32798e7355284639000aea0d5600013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc03011600145bb44b681e970cf1be37513fe9e39785f56bd72c00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0100000000000000"],"xpub":"145b584d3de371405e7b6ceba11d69a3ae6f0b22d2ec879f17977f3c51f5f2d14390c20ead68eb2ab4e210ca0958873b28a9635b8c4a29ba74934aa47137c80c"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"9817f7c9a9d8729374cfff24a4b2e400fdfd2cfb4ab09ee339925a9033ab7eb7"}]}]}' --password 12345

# submit-transaction

广播交易

参数

参数 描述
json数据 sign-transaction返回的json

返回

响应 描述
txid 交易哈希

Example: 【注:json格式记得加单引号,否则提示参数过多】

 ./bytomcli submit-transaction '{"sign_complete":true,"transaction":{"allow_additional_actions":false,"raw_transaction":"070100010161015fedb1e3ea7fd526a6f5402f95e8b2fd870fa9a766c89b3555b016602aa45197e4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8099c4d5990100011600142412b41a0f48a6dfad726f7b502e557aa39df36b63024070eb4675106805bd6e72e63d45ee9ff30802106fd11be2d4deac192bc3cb75cbfe5180c9aa1285baae09a93997724d0c8a50cde99c1e619012af7fbce645f809209817f7c9a9d8729374cfff24a4b2e400fdfd2cfb4ab09ee339925a9033ab7eb702013effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80ab94ef9501011600140478426d17f952005f10a38e6779ecd2dd6bca6500013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc03011600145bb44b681e970cf1be37513fe9e39785f56bd72c00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0100000000000000"],"xpub":"145b584d3de371405e7b6ceba11d69a3ae6f0b22d2ec879f17977f3c51f5f2d14390c20ead68eb2ab4e210ca0958873b28a9635b8c4a29ba74934aa47137c80c"}],"quorum":1,"signatures":["70eb4675106805bd6e72e63d45ee9ff30802106fd11be2d4deac192bc3cb75cbfe5180c9aa1285baae09a93997724d0c8a50cde99c1e619012af7fbce645f809"],"type":"raw_tx_signature"},{"type":"data","value":"9817f7c9a9d8729374cfff24a4b2e400fdfd2cfb4ab09ee339925a9033ab7eb7"}]}]}}'
Last Updated: 3/30/2020, 11:49:24 AM