利用Docker搭建比特币私有链


下载镜像

docker pull freewil/bitcoin-testnet-box

 

 

运行镜像

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

  

 

 修改make脚本

如果需要修改make相关的命令,则可以修改docker环境中的 /home/tester/bitcoin-testnet-box 路径下的Makefile脚本

make getblockchaininfo, make getnetworkinfo, make getwalletinfo等相关命令也是通过其设置

 启动测试网络

make start

  

 

 

 

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

输入下面的命令可以查看测试网络节点状态信息:

make getinfo

  

 

 

 我们可以顺便查看下两个节点的bitcoin.conf文件是如何配置的
节点的配置文件

节点1

cat /home/tester/bitcoin-testnet-box/1/bitcoin.conf

  

 

 

 节点2

cat /home/tester/bitcoin-testnet-box/2/bitcoin.conf

  

 

 

再顺便查看下节点1的对等节点的信息

 bitcoin-cli -datadir=1  getpeerinfo

 

 

 初始化区块链数据

生成钱包地址

bitcoin-cli -datadir=1 getnewaddress
bitcoin-cli -datadir=2 getnewaddress  

钱包1:2My51iv4qdBkZrJ5Xd8o523bnihiLqQmZ7m 

钱包2:2MxS36F99cMaAiQmjno2beRGYaZXEkEvf6X

 

 

 

 查看地址对应的私钥:

bitcoin-cli -datadir=1  dumpprivkey 2My51iv4qdBkZrJ5Xd8o523bnihiLqQmZ7m

  

 

 

 

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

生成一个区块:

make generate

生成9个区块:

make generate BLOCKS=9 

 

 

 

 查看钱包信息:

bitcoin-cli -datadir=1 getwalletinfo
bitcoin-cli -datadir=2 getwalletinfo

  

 

 

 

结果显示钱包1的balance(余额)里根本没有任何比特币,但immature_balance(未成熟的余额)里有相应的500个比特币,这是为什么呢?

结果显示,钱包1和钱包2都有20个区块了,没有什么问题,那么为什么钱包1的balance里没有比特币呢?

继续创建200个区块:

 

 

查看钱包余额

 

 

 

 

到这里,可以初步得出结论是之前生成的20个区块还太”新鲜”,不够”老”,需要后面生成更多的区块来完成确认。

(补充:后来查询资料知道,挖矿所得的coinbase交易中的奖励必须要在100个区块深度之后才能花费。)

给钱包2转账,这里转10个比特币:

make sendfrom1 ADDRESS=2MxS36F99cMaAiQmjno2beRGYaZXEkEvf6X  AMOUNT=10 

 

这时,查询钱包余额,

 

 好办,继续生成10个区块,使得交易得到确认:

  

参考资料

https://blog.csdn.net/yzpbright/article/details/81004202

https://www.cnblogs.com/freebird92/p/10032096.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM