比特币bitcoind-cli 常用命令学习记录

比特币bitcoind-cli 常用命令学习记录

接触比特币客户端bitcoind-cli只有半个月,很多都是萌新阶段,欢迎纠错。
本文记录开发时常用到的bitcoin-cli 命令。

  • 开发环境
    ubuntu 16.04LTS ;
    Bitcoin Core Daemon version v0.16.2.0;
    (有很多API在不同版本的bitcoin core中已经失效,比如getinfo等,本文只在v0.16.2.0测试通过;)
    搭建开发环境是参照教程https://blog.csdn.net/ffzhihua/article/details/80695886,本文不在赘述。

  • 网络
    启动前Bitcoin Core说明一下网络种类,根据查找到资料有3种,个人用白话理解为: 公共真实网络; 公共测试网络;单机测试网络。
    启动时不设置参数默认连接公共真实网络,会同步真实区块数据(约200G)。
    启动时设置参数 -testnet 连接测试网络,会同步测试网络的区块数据(约18G)
    启动时设置参数 -regtestn 不连接外网,不需要同步数据,节约时间下文都是在单机上进行。


注意:以下文中 粉色背景红色文字 的内容根据实际的情况替换。 1 启动/关闭bitcoin server服务
1.1 启动bitcoin服务
bitcoind -conf=” /home/chenlin/.bitcoin/bitcoin.conf” -regtest -jsonrpc -server
返回
bitcoin server starting 启动服务
1.2 关闭Bitcoin server
bitcoin-cli -regtest stop
返回
Bitcoin server stopping
3 账户操作
3.1 创建新账户
bitcoin-cli -regtest getnewaddress “ 123 ” (使用 “123”账户名称创建新的地址)
返回
2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e (新的地址)

3.2 用地址获取账户
bitcoin-cli -regtest getaccount 2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e(使用 “2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e”地址,获取账户名称)
返回
123

3.3 用账户名称获取所有地址,因地址唯一但账户名可重复,所以一个账户名称对应多个地址现象
bitcoin-cli -regtest getaddressesbyaccount “123” (获取账户名为“123”的所有地址,这里有两个地址)
返回
[
“2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e”,
“2NChUuASLwbCJadWgwWrxwkanaJSwMjxRzY”
]

3.4 列出所有账户,余额
bitcoin-cli -regtest listaccounts
返回
{
“”: 149.95000000,
“123”: 0.00000000
}

4 生成1个区块(用于认证刚才的转账操作,测试网络中可用)
bitcoin-cli -regtest generate 1
返回 (区块hex)
[
“4a59b4612fb0b6e2ac9944813b22ad604ff25fb72a09eb0d583fe3831c53b4f0”
]
5 获取余额
例如 查询账号“123”的余额,0次确认
bitcoin-cli getbalance “ 123” 0
返回
00.00000000
6 钱包操作

6.1 加密钱包 ,首次加密会重启bitcoind服务
bitcoin-cli -regtest encryptwallet “test

6.2解锁钱包 (使用test 解锁,600秒后自动锁)
bitcoin-cli -testnet walletpassphrase test 600

6.4 改变解锁钱包的密码短语(test 改 test1)
bitcoin-cli -testnet walletpassphrasechange test test1

6.5 删除内存中的加密密匙
bitcoin-cli -testnet walletlock

7 转账
向123的地址2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e 转10.0 btc
bitcoin-cli -regtest sendtoaddress 2MsXtCiaCwQaphX1sSVNZvxLiE84F8L162e 10.00
返回(交易号):
13ffd47d35308547eb24624b051f8686fb530aefe453e9aeb24b446cf6af828e
8 查看本钱包 UTXO: unspend transaction output. 未花费的交易输出 (这个概念很重要,目前我还没理解透彻. )
8.1 bitcoin-cli -regtest listunspent
返回
[
“太多了,不贴,记住里面的txid,vout,amount 就行,方便下面创建交易”
]
9 创建交易
格式 bitcoin-cli createrawtransaction ‘[{ “txid” : “<之前交易id>”, “vout” : <之前输出的索引> }]’ ‘{“本次输出的地址”: 金额}’
例如 ,下面的命令用txid:13ff..的0号的输出作为本次交易输入,转给地址2N39..,金额9.9999
bitcoin-cli -regtest createrawtransaction ‘[{ “txid” :
"13ffd47d35308547eb24624b051f8686fb530aefe453e9aeb24b446cf6af828e", “vout” : 0 }]’ ‘{ "2N39JKm2hGVyz5dse77yj59QbMGUvQcBokg": 9.9999}’
返回 原生交易id
02000000018e82aff66c444bb2aee953e4ef0a53fb86861f054b6224eb478530357dd4ff130000000000ffffffff01f0ca052a0100000017a9146c9261a3bce6c91f24d20cf79fbb3c388e9c3fd08700000000
RAW_TX=02000000018e82aff66c444bb2aee953e4ef0a53fb86861f054b6224eb478530357dd4ff130000000000ffffffff01f0ca052a0100000017a9146c9261a3bce6c91f24d20cf79fbb3c388e9c3fd08700000000
这里用变量RAW_TX 保存0200…。下文用RAW_TX 代替
10 解码原生交易id (可以查看交易:输出地址,输入金额等信息)
bitcoin-cli -regtest decoderawtransaction $RAW_TX
返回
[
“太多了,不贴,核对一下里面的输出地址,输入金额等信息 ”
]
11 操作进行”签名”
给 : bitcoin-cli -regtest signrawtransaction $RAW_TX
返回 签过名的hex2
{
"hex": "020000000001018e82aff66c444bb2aee953e4ef0a53fb86861f054b6224eb478530357dd4ff13000000001716001425b43a753230bd37a85a0138eb3ab3359ff423f6ffffffff01f0ca052a0100000017a9146c9261a3bce6c91f24d20cf79fbb3c388e9c3fd08702483045022100998cf5c7b6f0bd204765edff32386e46c88b0ccbaf7e3c11340d7aee760ff70c022061f0eb151dcc6a09f58f97f1b67dbf93a038496ff016798584f41545ad71256401210345b12b0d2524acc674d6dfe91b81b6688533b12f3e37e77c1683dcc8c6edaf9c00000000",
"complete": true
}
12 把这个被签名过的“交易”发到网络上(广播交易)
12.1 发送命令: bitcoin-cli -regtest sendrawtransaction 020000000001018e82aff66c444bb2aee953e4ef0a53fb86861f054b6224eb478530357dd4ff13000000001716001425b43a753230bd37a85a0138eb3ab3359ff423f6ffffffff01f0ca052a0100000017a9146c9261a3bce6c91f24d20cf79fbb3c388e9c3fd08702483045022100998cf5c7b6f0bd204765edff32386e46c88b0ccbaf7e3c11340d7aee760ff70c022061f0eb151dcc6a09f58f97f1b67dbf93a038496ff016798584f41545ad71256401210345b12b0d2524acc674d6dfe91b81b6688533b12f3e37e77c1683dcc8c6edaf9c00000000
返回 :如果成功返回另一个txid,如果失败则返回错误
交易发布完了,在测试网络中还需要手动生成一个区块,认证一下刚才广播的交易
bitcoin-cli -regtest generate 1
然后再用
bitcoin-cli -regtest listaccounts
查看一下输出地址对应的账户是不是金额增加了,(我的测试环境里默认账户每次生成区块都会增加50btc,我理解为默认账号是矿工,50btc是对他的奖励)。

好了,在csdn上第一篇博客文章,写得有啥错误欢迎大家指出(有空才改)。谢谢!

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页