您的位置:首页 > 财经 >

区块链开发由浅入深指南(二):比特币测试网络 实现转账和交易功能

2018-06-29 09:45:21 来源: 巴比特

本文在常用的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

关键词: 由浅入深区块功能

精选 导读

募资55亿港元万物云启动招股 预计9月29日登陆港交所主板

万科9月19日早间公告,万物云当日启动招股,预计发行价介乎每股47 1港元至52 7港元,预计9月29日登陆港交所主板。按发行1 167亿股计算,万

发布时间: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情况曝光 隐形重仓股多为高端制造业

随着半年报披露收官,公募基金二季度持股情况曝光。截至今年二季度末,公募基金全市场基金总数为9794只,资产净值为269454 75亿元,同比上

发布时间: 2022-09-02 10:45
资讯   2022-09-02

又有上市公司宣布变卖房产 上市公司粉饰财报动作不断

再有上市公司宣布变卖房产。四川长虹25日称,拟以1 66亿元的转让底价挂牌出售31套房产。今年以来,A股公司出售房产不断。根据记者不完全统

发布时间: 2022-08-26 09:44
资讯   2022-08-26

16天12连板大港股份回复深交所关注函 股份继续冲高

回复交易所关注函后,大港股份继续冲高。8月11日大港股份高开,随后震荡走高,接近收盘时触及涨停,报20 2元 股。值得一提的是,在7月21日

发布时间: 2022-08-12 09:56
资讯   2022-08-12

万家基金再添第二大股东 中泰证券拟受让11%基金股权

7月13日,中泰证券发布公告,拟受让齐河众鑫投资有限公司(以下简称齐河众鑫)所持有的万家基金11%的股权,交易双方共同确定本次交易的标的资

发布时间: 2022-07-14 09:39
管理   2022-07-14

央行连续7日每天30亿元逆回购 对债市影响如何?

央行12日再次开展了30亿元逆回购操作,中标利率2 10%。这已是央行连续7日每天仅进行30亿元的逆回购缩量投放,创下去年1月以来的最低操作规

发布时间: 2022-07-13 09:38
资讯   2022-07-13

美元指数创近20年新高 黄金期货创出逾9个月新低

由于对美联储激进加息的担忧,美元指数11日大涨近1%创出近20年新高。受此影响,欧美股市、大宗商品均走弱,而黄金期货创出逾9个月新低。美

发布时间: 2022-07-13 09:36
资讯   2022-07-13

美股三大股指全线下跌 纳斯达克跌幅创下记录以来最大跌幅

今年上半年,美股持续回落。数据显示,道琼斯指数上半年下跌15 3%,纳斯达克综合指数下跌29 5%,标普500指数下跌20 6%。其中,纳斯达克连续

发布时间: 2022-07-04 09:51
推荐   2022-07-04

融资客热情回升 两市融资余额月内增加超344亿元

近期A股走强,沪指6月以来上涨4%,融资客热情明显回升。数据显示,截至6月16日,两市融资余额1 479万亿元,月内增加344 67亿元,最近一个半

发布时间: 2022-06-20 09:41
资讯   2022-06-20

4个交易日净买入超百亿元 北向资金持续流入A股市场

北向资金净流入态势延续。继6月15日净买入133 59亿元后,北向资金6月16日净买入44 52亿元。自5月27日至今,除6月13日以外,北向资金累计净

发布时间: 2022-06-17 09:37
推荐   2022-06-17