btcd源码解析

1.写在前面

因为学习的需要,这一年半和接下来更长的时间都会与Bitcoin打交道。不可避免地,需要对Bitcoin的源码进行修改。
网上找过一些Bitcoin源码分析的资源,但大多都是基于C++实现的源码。笔者对C++并不是很熟悉,相反,用Go语言用得更多一些。所以,这个系列的博客会针对Go语言实现的Bitcoin进行分析,也即btcd。因为btcd的实现中将wallet的功能独立了出来,形成一个新的项目btcdwallet,因此我们也会对btcdwallet的代码实现进行分析。

2. 实验环境

有必要明确一下btcdbtcwallet代码版本号,以及Go语言的版本号:

  • btcd版本:[git commit log] ed77733ec07dfc8a513741138419b8d9d3de9d2d
  • btcwallet版本:[git commit log] 9ad115360b375a08265d088580606a398202e3ac
  • Go版本:go1.11.2

3. 系统运行步骤

考虑到btcdbtcwallet的官方文档描述得不够详细,我们在这里演示一下btcdbtcwalletbtcctl的运行步骤。
我们以运行一个simnet网络为例。

3.1. 生成挖矿地址

在运行btcd时,需要通过--miningaddr指定一个挖矿的地址。这个挖矿地址我们需要借助btcwallet来生成,但btcwallet生成挖矿地址的过程又需要和btcd通信。这里就形成了一个环,也即:btcd依赖于btcwalletbtcwallet又依赖于btcd

我们的处理方式是:

  1. 先不指定--miningaddr运行btcd./btcd -u seafooler -P 123456 --simnet
  2. 然后运行btcwallet连接btcd: ./btcwallet -u seafooler -P 123456 --simnet (需要注意的是,在第一次运行btcwallet时,需要首先利用--create选项初始化一个钱包:./btcwallet -u seafooler -P 123456 --simnet --create)
  3. 再运行btcctl发送指令给btcwallet生成地址:./btcctl -u seafooler -P 123456 --wallet --simnet getnewaddress

3.2. 指定挖矿地址重启btcd

基于以上步骤生成的挖矿地址,重新启动btcd,如下所示:/btcd -u seafooler -P 123456 --simnet --miningaddr=SN9t3caxhG77Pn7cAitHHz7C9b5Jaadkt6

3.3. 挖矿操作

使用btcctl运行./btcctl -u seafooler -P 123456 --wallet --simnet generate 1命令即可生成一个新区块。此时通过命令./btcctl -u seafooler -P 123456 --wallet --simnet getbalance查看当前账户余额,会发现余额为0.
这是因为新挖出的区块奖励需要等待100个区块之后才能生效,也即使用./btcctl -u seafooler -P 123456 --wallet --simnet generate 99命令继续挖出99个新区块后,即可查询到当前余额为50.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值