下载镜像
docker pull freewil/bitcoin-testnet-box
运行镜像
docker run -t -i -p 19001:19001 -p 19011:19011 freewil/bitcoin-testnet-box
启动测试网络
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://www.cnblogs.com/freebird92/p/10032096.html