本文在常用的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 //第一个钱包节点的信息 https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg "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 //第二个钱包节点的信息 https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg "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
转载请注明文章出处

本文在常用的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 //第一个钱包节点的信息 https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg "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 //第二个钱包节点的信息 https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg "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
转载请注明文章出处

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注