mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

比特币区块链开发由浅入深指南(二)

收藏
分享

本文在常用的Ubuntu14.04操作系统上,采用Docker容器来快速安装和配置私有节点的比特币测试网络(bitcoin-testnet)作为开发试验环境,结合Node.js为例来说明如何调用比特币钱包节点提供的RPC接口服务来实现一些具体的比特币相关账户和交易操作。

BlockchainTestNetAndNodeJS

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源码如下( 源码文件可以点击这里下载 ):

/********************* 示例代码起始 **********************/ txt1

/********************* 示例代码结束 **********************/ 在此程序的基础上,经过对Bitcoin协议的进一步了解,我们可以调用RPC接口进一步开发出更复杂功能,如自行构建特定交易数据包(比如多重签名数据)来满足特定业务需求,后续我们PPkPub将深入介绍。

本文链接: https://www.8btc.com/article/95126
转载请注明文章出处

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读