主页 > imtoken官网是哪个 > Docker搭建比特币测试网络

Docker搭建比特币测试网络

imtoken官网是哪个 2023-02-28 06:27:47

1 安装相关软件

1.1 安装nodejs和npm

1.2 安装RPC支持库kapitalize kapitalize源码:

$ npm 安装大写

[问题] npm WARN enoent ENOENT: 没有那个文件或目录,打开 '/home/xx/package.json'

【解决】切换到/usr/share/npm目录安装,注意调用sudo

$ sudo npm install 大写

1.3 安装Docker命令

$ sudo apt-get 安装 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运行环境后比特币测试节点,输入以下命令启动比特币测试网:

$ 开始

启动成功后,会在本地模拟运行两个比特币测试钱包节点,形成私有的比特币测试网络。

tester@093cb526fe8d:~/bitcoin-testnet-box$ make start
bitcoind -datadir=1  -daemon
Bitcoin server starting
bitcoind -datadir=2  -daemon
Bitcoin server starting

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

$ 获取信息

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 模拟生成区块记录

tester@093cb526fe8d:~/bitcoin-testnet-box$ make generate
bitcoin-cli -datadir=1  generate 1
[
  "6ebc434b410dda5e929d1b805dbc0682f0836835d923f3c9b76cd57ef9623f23"
]

3.2 模拟新生200条区块记录

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

3.3 查看最新钱包状态包括余额余额信息。 这时候你可以注意到第一个钱包节点的账户余额发生了变化。 新余额是模拟区块挖矿产生的测试比特币。

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到示例测试钱包地址。

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条区块记录比特币测试节点,使上述转账交易得到足够有效的确认。

$ 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加上小额矿工费。

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": ""
}

【参考】:邹军、张海宁、唐毅、李雷着的《区块链技术指南》