bitconin-cli 私有链搭建及jsonrpc-api
精通比特币第三章,讲了如何编译等
最后搭建成功之后执行:bitcoind -regtest -daemon后台运行私有链,不加-regtest默认公有链,包括之后对私有链操作,加上-regtest即可
如果为了以后方便,修改配置文件也可以,具体位置~/.bitcoin/bitcoin.conf,我的配置:
# This config should be placed in following path: # ~/.bitcoin/bitcoin.conf # [rpc] # Accept command line and JSON-RPC commands. server=1 txindex=1 # 设定默认为私有链 regtest=1 #gen=1 表示节点可以挖矿 gen=1 #交易费 fallbackfee=0.0002
钱包
每次重启服务要loadwallet
bitcoin-cli loadwallet testwallet
创建一个钱包
bitcoin-cli -regtest createwallet testwallet_1
显示钱包列表
bitcoin-cli -regtest listwallets
查询指定钱包信息
-rpcwallet=xxx表示在某个钱包上具体操作
bitcoin-cli -regtest -rpcwallet=testwallet_1 getwalletinfo
给钱包创建一个地址
bitcoin-cli -regtest -rpcwallet=wallet_money getnewaddress wallet_money
wallet_money :bcrt1q4nxt5sp8vk0t8hwaem0lkua0jax9u9638c0aar
testwallet_2:bcrt1q4pcr3y523qjhxuxzua0w8ekhhz3t4cueuck2rc
testwallet_3:bcrt1qyhf50pzvvn824dqd7lgjsr0jdylx0jy3ganrwy
bcrt1q3hy7f6we0fvdlcuj4gytkfk6vxxga3sh6g2zxv
testwallet_4:bcrt1qj8fjv7mcy9wweszn369hq542r6r60a78lmc3q2
查询指定地址详细信息
bitcoin-cli -regtest -rpcwallet=wallet_money getaddressinfo bcrt1q4nxt5sp8vk0t8hwaem0lkua0jax9u9638c0aar
查看钱包交易信息
要指定钱包查看
bitcoin-cli -regtest -rpcwallet=testwallet_3 gettransaction 4775ad41657cb73cf4fe42495ce546c4752fa3cf79a686722d47b8f97cd79c0a
查看钱包金额
由于前100个区块没有奖励,查看testwallet_3的金额
bitcoin-cli -regtest -rpcwallet=testwallet_3 getbalance
查看钱包未确认收益总和
bitcoin-cli -regtest -rpcwallet=wallet_money getunconfirmedbalance
查询某个地址收到的币
bitcoin-cli getreceivedbyaddress 地址
以下文交易实例中钱包2的地址为例
钱包2的某个具体地址收到了500
区块
创建区块
需要指定某个钱包,相当于指定一个节点,这个节点作为矿工要添加收益
1、测试链前100个区块没有btc奖励
2、区块奖励需要100个区块确认,第101个区块产生才会发出前第101个区块的奖励
由testwallet_3创建一个区块
bitcoin-cli -regtest -rpcwallet=testwallet_3 -generate 1
Blocks:74d058e00a0cead4bdd5014dc0e4f5232eee7e5c463543fbe7c684b977eaafce
查看区块高度
bitcoin-cli -regtest getblockcount
返回2(因为中间进行了其他操作,没记录上)
再查看区块链信息
bitcoin-cli -regtest getblockchaininfo
返回这个区块链的一系列信息,bestblockhash表示最高的块的hash,就是刚才创建的区块
也可以通过bitcoin-cli -regtest getbestblockhash查看最新区块hash
查看区块信息
bitcoin-cli -regtest getblock
5711455ed00eede7560300114e1f728b8780ae0241095ea2feceffca8b196a28
创建区块,奖励给指定地址
bitcoin-cli -regtest -rpcwallet=wallet_money generatetoaddress 1
bcrt1q4nxt5sp8vk0t8hwaem0lkua0jax9u9638c0aar
。。。。。。。。。
中间随便创建了多个区块后,忘了是哪些钱包创建的了,最后两个钱包的钱就这样了
最后以一个交易实例运用这些命令,并看看与理论是否一样
交易实例
这个例子中涉及到三方,支付者,收款者,矿工
钱包2为空,钱包3 1700个币,
目前钱包2为确认收益总和0
矿工为wallet_money:bcrt1q4nxt5sp8vk0t8hwaem0lkua0jax9u9638c0aar
testwallet_2:bcrt1q4pcr3y523qjhxuxzua0w8ekhhz3t4cueuck2rc
testwallet_3:bcrt1qyhf50pzvvn824dqd7lgjsr0jdylx0jy3ganrwy
bcrt1q3hy7f6we0fvdlcuj4gytkfk6vxxga3sh6g2zxv
现在转500个去钱包2
bitcoin-cli -regtest -rpcwallet=testwallet_3 sendtoaddress bcrt1q4pcr3y523qjhxuxzua0w8ekhhz3t4cueuck2rc 500
返回交易hash:582bfcc664cd35782fd7f7ac14d4bc56d88c1f1c22a2c69224a9a0545ee4006d
此时查看钱包2未确认收益
钱包2余额
需要生成6个区块才能确认
由矿工wallet_money生成,也就是挖矿
再看钱包2的金额,钱收到
查看刚才的交易582bfcc664cd35782fd7f7ac14d4bc56d88c1f1c22a2c69224a9a0545ee4006d
着重关注下面画框的内容,确认数,接收地址,金额这些都吻合
查看这个区块
bitcoin-cli getblock
7d358c3c40490c88132c3f1714c4d6b0cffaed5318cb59b9203913ad0206a688
查看coinbase
根据地址可以发现是刚才的wallet_money的钱包,金额为25.000163,后面的是手续费,再检查转账者钱包3的金额来验证是不是手续费
钱包3余额
可见支付了手续费
目前就用了下这些简单的,如果后续涉及到签名utxo的继续更新,用来自己随时翻阅
完整的rpcjson-api参考:https://www.jianshu.com/p/2209bd03b960
或者精通比特币第三章.....但是都要自己去敲,因为有些命令好像我的主机上无法识别,比如getaddressesbyaccount