go-ethereum源码搭建环境
阅读源码对深入理解以太坊和区块链的原理是非常有用的,通过阅读源码可以知道交易、区块等核心数据结构的组成,可以对区块链的底层实现原理和运行过程有一个更清晰的认识,很多不明确的问题都可以从源码中找到答案。 网上以太坊的技术资料很多,但多数是关于智能合约和应用开发的,真正涉及底层实现和源码的很少。本文介绍以太坊go-ethereum源码的阅读环境配置,之后会陆续介绍一些源码阅读心得体会。以太坊有8种语言的实现,选择go-ethereum是因为它是以太坊的官方实现版本,包含了以太坊的所有特性,比较权威和全面,它是用go语言编写的,go语言学习起来比较容易,而且可读性也比较好。 阅读源码有一个代码编辑器就够了,但是为了更好的体验和更高的效率,还需要做一些配置,比如代码高亮、代码跳转等。 安装go语言 为了能支持代码跳转,需要安装go语言,安装教程参考这篇文章,其中最重要的是要保证正确设置了GOPATH,这样才能进行代码跳转。如果想学习go语言,可以看一下在线教程A Tour of Go,或者去看《The Go Programming Language》这本书。 配置编辑器 看代码可以选择你喜欢的代码编辑器,我用的是Visual Studio Code,为了支持go语言代码高亮,需要安装一个插件。在vscode的插件面板中搜索lukehoban,安装即可。 接下来安装一些go语言工具(有些需要翻墙),在命令行中执行以下命令安装: go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/zmb3/gogetdoc go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-outline go get -u -v sourcegraph.com/sqs/goreturns go get -u -v golang.org/x/tools/cmd/gorename go get -u -v github.com/tpng/gopkgs go get -u -v github.com/acroca/go-symbols go get -u -v golang.org/x/tools/cmd/guru go get -u -v github.com/cweill/gotests/... go get -u -v golang.org/x/tools/cmd/godoc go get -u -v github.com/fatih/gomodifytags 下载源码 以太坊代码都托管在github上,它的代码经常更新,每次更新会加入一些新的东西,也可能改变代码的组织架构,所以最好选择一个稳定版阅读,这里以1.5.9版本为例。 首先在GOPATH/src下创建github.com/ethereum目录: $ mkdir -p $GOPATH/src/github.com/ethereum 然后进入上面创建的目录,下载go-ethereum项目源码: $ cd $GOPATH/src/github.com/ethereum $ git clone https://github.com/ethereum/go-ethereum.git $ cd go-ethereum $ git checkout v1.5.9 上面通过git clone下载源码,然后通过git checkout检出指定版本的代码,如果想使用其他版本,在git checkout中指定相应的版本号即可。 下载完成后目录结构应该是这样的: GOPATH/src ├── github.com └── ethereum └── go-ethereum 路径和目录名一定要与上面的一致,不能放到其他地方或者改成其他名字,因为go语言是按照路径搜索包的。 其实上面最重要的就是要正确设置了GOPATH,并且要把源码放到GOPATH/src中正确的路径中。接下来就可以开始阅读代码了。 如果对以太坊开发有兴趣,推荐两个教程: 1.适合区块链新手的以太坊DApp开发: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 2.用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建以太坊DApp电商平台: http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6 如果想加入以太坊技术开发群可以加微信拉你入群。