美文网首页
Docker搭建比特币测试网络

Docker搭建比特币测试网络

作者: foochane | 来源:发表于2018-06-20 21:30 被阅读187次

    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

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

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

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

    $ make getinfo

    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一个区块记录

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

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





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

    相关文章

      网友评论

          本文标题:Docker搭建比特币测试网络

          本文链接:https://www.haomeiwen.com/subject/zmvxyftx.html