本文在常用的Ubuntu14 04操作系统上,采用Docker容器来快速安装和配置私有节点的比特币测试网络(bitcoin-testnet)作为开发试验环境,
本文在常用的Ubuntu14.04操作系统上,采用Docker容器来快速安装和配置私有节点的比特币测试网络(bitcoin-testnet)作为开发试验环境,结合Node.js为例来说明如何调用比特币钱包节点提供的RPC接口服务来实现一些具体的比特币相关账户和交易操作。
RPC(Remote Procedure Call)即远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在Bitcoin的wiki网页上面(https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)),可以看到除了Node.js外还有很多种语言都可以调用Bitcoin的RPC,大家可以参考本文内容选择适合自己的语言具体试验。在上面的网页里,还可以延伸阅读和了解Bitcoin RPC可以调用的命令列表(https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list)。
关于如何安装Ubuntu14.04操作系统和Node.js, 如有需要可以参考上一篇《比特币区块链开发由浅入深指南1》里面的说明进行安装(http://www.8btc.com/blockchain_develope_lesson_1)。
一、安装Docker运行环境
1.使用apt-get命令安装Docker容器支持软件:
$sudo apt-get install docker.io
2.创建软连接$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
3.查看Docker版本$docker –version如看到提示信息类似“Docker version 1.6.2, build 7c8fca2”则说明你已经在Ubuntu14.04上面快速安装Docker成功了。
如需了解更多关于Docker安装和运行的入门说明可以网络搜索更多资料,也可以看看这个网页: “Docker初试”(http://my.oschina.net/lamciuloeng/blog/226107)
二、安装和运行比特币测试网络(bitcoin-testnet)
1.下载比特币测试网络(bitcoin-testnet)的Docker镜像$sudo docker pull freewil/bitcoin-testnet-box
2.运行Docker镜像$sudo docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box
注:上述命令中的19001和19011是配置给两个节点提供RPC服务的端口。
3.进入Docker运行环境后,输入下面的命令来启动比特币测试网络:$ make start启动成功后,将在本机模拟运行两个比特币测试钱包节点,组成一个私有范围的比特币测试网络。
输入下面的命令可以查看测试网络节点状态信息:$ make getinfo
显示的提示信息如下,中文为对其中若干关键信息的说明:bitcoin-cli -datadir=1 getinfo //第一个钱包节点的信息{“version”: 120100,“protocolversion”: 70012,“walletversion”: 60000,“balance”: 0.00000000, //第一个钱包节点的账户余额,初始为0“blocks”: 0, //已经产生的区块数量,初始启动为0,可以通过进一步的命令来模拟生成区块数据“timeoffset”: 0,“connections”: 1,“proxy”: “”,“difficulty”: 4.656542373906925e-10,“testnet”: false,“keypoololdest”: 1467253951,“keypoolsize”: 101,“paytxfee”: 0.00000000,“relayfee”: 0.00001000,“errors”: “”}bitcoin-cli -datadir=2 getinfo //第二个钱包节点的信息{“version”: 120100,“protocolversion”: 70012,“walletversion”: 60000,“balance”: 0.00000000,“blocks”: 0,“timeoffset”: 0,“connections”: 1,“proxy”: “”,“difficulty”: 4.656542373906925e-10,“testnet”: false,“keypoololdest”: 1467253951,“keypoolsize”: 101,“paytxfee”: 0.00000000,“relayfee”: 0.00001000,“errors”: “”}4.初始化和测试区块链数据
在Docker运行窗口里依次输入下面的命令来初始化创建基本的区块链数据,供进一步的程序示例来使用。
注意:在正式的比特币网络环境下,平均是10分钟左右才能产生一个新的区块。但在这里的测试网络(testnet)特殊设定的环境下,区块是通过简单的命令控制就可以即时和批量产生的,方便程序开发测试。
make generate//说明:模拟新产生1个区块记录
make generate BLOCKS=200//说明:模拟新产生200个区块记录
make getinfo//说明:查看最新的钱包状态包括余额信息,这时可以留意看到第一个钱包节点的账户余额变为了 5050.00000000 BTC,即通过模拟区块挖矿产生的测试比特币。
make sendfrom1 ADDRESS=mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT=10//说明:给指定测试钱包地址转账10个BTC。注意命令中的测试转账地址“mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ”对应后续测试程序示例所需要使用的测试钱包地址。
make generate BLOCKS=10//说明:模拟新产生10个区块记录,让上面的转账交易得到足够有效的确认
make getinfo//说明:查看最新的钱包状态包括余额信息, 这时可以留意看到第一个钱包节点的账户余额变为了 5539.99996160 BTC ,即已经交易转账支出了10个BTC加上少许的矿工费用。
三、安装Node.js的RPC支持库\
常用的Node.js的RPC支持库有多个,我们这里选用开源项目kapitalize。
在Ubuntu桌面新起一个终端命令行界面,输入以下命令进行安装:
$npm install kapitalize
关于kapitalize开源项目的更多说明可以参考: https://github.com/shamoons/Kapitalize
四、运行示例程序
将下述示例代码复制保存到测试环境下(保存文件名为RpcTestnet.js),在命令行下输入以下命令即可运行并看到运行结果:
node RpcTestnet.js
注意:每运行一次测试代码后,都需要到Docker运行环境的命令行下输入”make generate BLOCKS=10″, 模拟产生新的区块记录,让测试代码产生的交易记录得到有效的确认。
示例程序RpcTestnet.js源码如下(源码文件可以点击这里下载):
/********************* 示例代码起始 **********************/
/********************* 示例代码结束 **********************/在此程序的基础上,经过对Bitcoin协议的进一步了解,我们可以调用RPC接口进一步开发出更复杂功能,如自行构建特定交易数据包(比如多重签名数据)来满足特定业务需求,后续我们PPkPub将深入介绍。
编辑:daisy
关键词: 由浅入深区块功能