主页 > token.im官网 > 比特币btcd码初体验

比特币btcd码初体验

token.im官网 2023-01-17 06:17:22

我最近在看比特币的源代码。一开始看的是主流的C++版本,但是很多年没用过C++,几乎相当于重温语法。另外,在C++环境下编译也很麻烦。所以我们从 Golang 版本开始。首先,Golang 语言相对容易上手。其次,btcd版本的代码模块设计和单元测试比C++版本的源代码更清晰、更完整。

对于刚接触 Golang 但有其他语言基础的人比特币项目开源代码,我推荐《Go Language in Action》作为 Golang 的入门书籍。本书不像传统教科书那样按照基本类型和循环的顺序,而是直接指出了Golang与其他语言的区别,并用不同的小项目直接从代码上讲解了Golang的语法。对于有其他语言背景的人来说,通过代码更容易理解一门新语言。

同时你可以先看一下项目的简化版《如何用Go实现区块链》(),里面包含了区块链最基本的结构,可以帮助你理解。基础工作准备好后,开始体验btcd代码。

必须先配置环境。我正在使用ubuntu系统。安装 golang 后,设置 GOROOT 和 GOPATH 路径。这些可以在网上找到详细的设置方法。简单来说,GOROOT是Golang源码安装路径比特币项目开源代码,GOPATH是开发代码的路径,类似于JAVA项目的工作场所。

比特币项目开源代码

$ go get -u github.com/Masterminds/glide
$ git clone https://github.com/btcsuite/btcd $GOPATH/src/github.com/btcsuite/btcd
$ cd $GOPATH/src/github.com/btcsuite/btcd
$ glide install
$ go install . ./cmd/...

运行glide install会遇到墙问题,导致如下错误:

[ERROR] Update failed for golang.org/x/crypto: Cannot detect VCS

比特币项目开源代码

我的做法是配置镜像,然后重新运行glide install

glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git

就这么简单,btcd安装就完成了。

比特币项目开源代码

有几个基本的命令可以运行下来

查看版本

btcd --version

比特币项目开源代码

查看可用命令

p>

btcd --help

比特币项目开源代码

运行btcd直接启动比特币程序,内置的DNS SEEDS将允许这个新节点连接到比特币网络。

btcd 启动新节点截图

在这个截图中,可以看到很多信息,就是本地重置如何访问比特币网络中的其他节点,然后将区块数据下载到本地,具体交互细节后面会分析。简单来说,第一次启动这个程序就像是一个新人进入了比特币的世界,但是这个新人不认识这个世界上的其他人,其他人也不认识他。所以新人会先找几个有权威的人(DNS Seeds),找到别人的地址,然后新人会认识更多的人,成为网络的一份子,把他们手头的账本数据下载到本地.

另外需要注意的是,这里连接的是主网,也就是中本聪在2009年1月3日创建比特币的网络,总区块数据已经超过100G。如果只是研究代码,不需要下载那么多数据,也没有办法直接在主网上测试,因为每笔交易都需要真金白银的矿工费,那么测试网可能会成为首选地方发展。本文将介绍比特币的测试网络。