比特币区块链开发由浅入深指南(二)
本文在常用的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将深入介绍。
本文链接:
https://www.8btc.com/article/95126
转载请注明文章出处
Will Crypto Pump or Dump This Weekend? Analyst Reveals Top Altcoin For 3x Gains
The post Will Crypto Pump or Dump This Weekend? Analyst Reveals Top Altcoin For 3x Gains appeared fi...
Cardano Price Prediction: ADA Targets 15% Surge Amid Technical Breakout Momentum, Cardano ETF Odds Hit 55%—Is XYZVerse Positioned to Outperform With 1.5x Growth?
The post Cardano Price Prediction: ADA Targets 15% Surge Amid Technical Breakout Momentum, Cardano E...
Chainlink In The Mist — A $15.85 Reversal May Clear The Path
Technical analyst CRYPTOWZRD shared his latest take on Chainlink (LINK)’s price action in a recent p...