前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker搭建比特币测试网络

Docker搭建比特币测试网络

作者头像
foochane
发布2019-05-23 15:00:38
1.5K0
发布2019-05-23 15:00:38
举报
文章被收录于专栏:foochanefoochane

1 安装相关软件

1.1 安装nodejs和npm

1.2 安装RPC支持库kapitalize kapitalize的源码:https://github.com/shamoons/Kapitalize

$ npm install capitalize

【问题】 npm WARN enoent ENOENT: no such file or directory, open '/home/xx/package.json'

【解决】 切换到/usr/share/npm目录下安装,注意叫上sudo

$ sudo npm install capitalize

1.3 安装Docker 命令

$sudo apt-get install docker.io

创建软连接

$sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

2 安装运行比特币测试网络

2.1 下载比特币测试网络(bitcoin-testnet)的Docker镜像。

$sudo docker pull freewil/bitcoin-testnet-box

2.1 运行Docker镜像。

$sudo docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box

注意:上述命令中的19001和19011是配置给两个节点提供RPC服务的端口。 2.3 进入Docker运行环境后,输入下面的命令来启动比特币测试网络:

$ make start

启动成功后,将在本机模拟运行两个比特币测试钱包节点,组成一个私有范围的比特币测试网络。

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make start
bitcoind -datadir=1  -daemon
Bitcoin server starting
bitcoind -datadir=2  -daemon
Bitcoin server starting

输入下面的命令可以查看测试网络节点状态信息,从中可以了解到比特币测试网络的配置和运行状态,比如协议版本、区块链长度和挖矿计算难度等内容。

$ make getinfo

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make getinfo
bitcoin-cli -datadir=1  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 0.00000000,
  "blocks": 0,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489621,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}
bitcoin-cli -datadir=2  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 0.00000000,
  "blocks": 0,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489621,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}

3 初始化和测试区块链数据 在Docker运行窗口里依次输入下面的命令来初始化创建基本的区块链数据,供进一步的程序示例来使用。

注意:在正式的比特币网络环境下,平均是10分钟左右才能产生一个新的区块。但在这里的测试网络(testnet)特殊设定的环境下,区块是通过简单的命令控制就可以即时和批量产生的,方便程序开发测试。

3.1 模拟产生1一个区块记录

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make generate
bitcoin-cli -datadir=1  generate 1
[
  "6ebc434b410dda5e929d1b805dbc0682f0836835d923f3c9b76cd57ef9623f23"
]

3.2 模拟新产生200个区块记录

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make generate BLOCKS=200    
bitcoin-cli -datadir=1  generate 200
[
  "4b3904d9d4de9286976da3669386a49e450abfebd2d5b63315cf96bc645485af", 
  "1f01c311ea7afa8d35be9ac002819b60649b38cf19b124e307baa94c7a6d6427", 
.
. 
  中间共有200行  
.
.
.
  "2dfac1ddf4c4e71352f5fbd1cfc951d4750585de9c7f2f643e8cd3a3a7eb8f0d", 
  "1ff1c51635aa7477323730a59398a273351f582ab3682779068f0ea3f7e6faf2"
]

3.3 查看最新的钱包状态包括 balance 余额信息,这时可以留意看到第一个钱包节点的账户余额发生了变动,新的余额即通过模拟区块挖矿产生的测试比特币。

代码语言:javascript
复制
bitcoin-cli -datadir=1  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 5050.00000000,
  "blocks": 201,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489622,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}
bitcoin-cli -datadir=2  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 0.00000000,
  "blocks": 201,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489621,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}

3.4 给作为示例的测试钱包地址转账10个BTC。

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make sendfrom1 ADDRESS=mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ AMOUNT=10
bitcoin-cli -datadir=1  sendtoaddress mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ 10
e39de1cd82dd83526d5424785174ed506f9655c13976d615e83a59561c283a6f

注意:这里的示例地址mkiytxYA6kxUC8iTnzLPgMfCphnz91zRfZ是比特币测试网络下的钱包地址(以字符m起始),与比特币正式网络下的钱包地址(一般以数字1或3起始)是有区别的。

3.5 模拟新产生10个区块记录,让上面的转账交易得到足够有效的确认。

代码语言:javascript
复制
$ make generate BLOCKS=10  
bitcoin-cli -datadir=1  generate 10
[
  "0e3a09f2e51d4ba6c31205db54bced6bd5930183f5a84c1bafa057cc8802493e", 
  "2e14f4cbf7698319be5de7ea5e27a4486fc2a2a6b50f824fdb1f4d22cad64041", 
  "7e2b64ec51597c45cd5ae263e9fdeab409de6d75bf81d9def527decf1c2951cc", 
  "1757540748c0a771a7dc17038f8730fb36258fa4e31c1d525939bfd40209ff53", 
  "095c6557f72b947fb2beeac8069d07b9c0867c8bc19b71c56c2e594bc6f69988", 
  "54932f2a307db0044a3a8af8c4b88c2219c8b70064c03b2a4e689eb6beb727a0", 
  "073f5daa6ab46d50600fb28150e0013e42f11dad84c21f5ee3f8acbcb4a6d66a", 
  "2c65b368a18586126b2c0cae0ab6ccc92c525eb470995437d2fe3b3ae309c215", 
  "45f2d770b0f8ed3a40d298eea056deaf6d0e619e5928bd41ded7a7f8627502bf", 
  "49603877d4cd7c26ee83d6d76cee27537bf56da37c5028ea606393d73d4f391e"
]

3.6 查看最新的钱包状态包括余额信息, 这时可以留意看到第一个钱包节点的balance 账户余额发生了改变 ,差额部分即已经交易转账支出的10个BTC加上少许的矿工费用。

代码语言:javascript
复制
tester@093cb526fe8d:~/bitcoin-testnet-box$ make getinfo
bitcoin-cli -datadir=1  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 5539.99996180,
  "blocks": 211,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489622,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}
bitcoin-cli -datadir=2  getinfo
{
  "version": 130200,
  "protocolversion": 70015,
  "walletversion": 130000,
  "balance": 0.00000000,
  "blocks": 211,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1529489621,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}

         【参考资料】:《区块链技术指南》 邹均,张海宁,唐屹,李磊 著

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 安装相关软件
  • 2 安装运行比特币测试网络
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档