第6章 比特币应用开发指南
6.1 以虚拟机方式搭建应用开发环境
6.1.1 下载和安装虚拟机
6.1.2 以虚拟机方式安装 Ubuntu
6.1.3 安装Node.js开发环境
6.1.4 安装Docker运行环境
6.1.5 安装和运行比特币测试网络
1
| $ sudo docker pull freewil/bitcoin-testnet-box
|
1
| $ sudo docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box
|
- 3.进入Docker运行环境后,输入下面的命令来启动比特币测试网络;
- 4.启动成功 查看测试节点网络状态信息,了解比特币测试网络的配置和运行状态,如:协议版本、区块链长度和挖矿计算难度等。 并初始化和测试区块链数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| $ make getinfo
bitcoin-cli -datadir=1 getinfo //第一个钱包节点的信息 { "version": 130200, //客户端节点软件版本 "protocolversion": 70015, //比特币协议版本 "walletversion": 130000, //钱包数据格式版本 "balance": 5489.99996160, //第一个钱包节点的账户余额 初始值为0 "blocks": 210, //已经产生的区块数量,初始启动为0,可以通过进一步命令来模拟生成区块数据 "timeoffset": 0, //时间的时区偏移量 "connections": 1, //本节点接入的其他节点数量 "proxy": "", //网络代理设置 "difficulty": 4.656542373906925e-10, //当前挖矿计算难度 "testnet": false, //是否使用外部的比特币测试网络, 即只建立私有测试环境 "keypoololdest": 1522663845, //预生成的公钥和私钥池的起始时间 "keypoolsize": 100, //预生成的公钥和私钥池的包含记录数量 //用于生成钱包地址和找零地址,这样钱包备份可以对已有的交易以及未来多笔交易有效 "paytxfee": 0.00000000, //每笔交易支付给矿工的最少标准手续费 "relayfee": 0.00001000, //节点运行错误 "errors": "" }
bitcoin-cli -datadir=2 getinfo //第二个钱包节点信息,说明同上 { "version": 130200, "protocolversion": 70015, "walletversion": 130000, "balance": 0.00000000, "blocks": 210, "timeoffset": 0, "connections": 1, "proxy": "", "difficulty": 4.656542373906925e-10, "testnet": false, "keypoololdest": 1522663845, "keypoolsize": 100, "paytxfee": 0.00000000, "relayfee": 0.00001000, "errors": "" }
|
1
| make generate BLOCKS=200
|
1
| make sendfrom1 ADDRESS= mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT= 10
|
- 9.模拟新产生10个区块记录,让上面的转账交易得到足够有效的确认。
6.1.6 运行第一个示例程序
6.2 把握比特币“交易”数据结构
本节以比特币测试网络作为开发试验环境,解析比特币交易(Transaction)的数据结构,并以Node.js为例来说明如何自行组织特定需要的交易数据,并在签名后广播,最终被矿工节点确认生效。
6.2.1 了解比特币的“交易”数据结构
6.2.2 交易记录的实例解析
6.2.3 运行实例程序
6.3 实战:多重签名交易
6.3.1 将ODIN标识注册到区块链的实例解析
6.3.2 运行实例程序