Mac上安装比特币go版本客户端btcd、btcwallet
最近在深入学习比特币,打算出一系列文章记录自己的学习过程,这个系列暂定叫做《循序渐进比特币》。后续会先从技术角度,逐步分析客户端的安装、启动过程、账户与地址产生、交易过程、区块结构、挖矿、p2p、比特币脚本、以及一些其他的最近几年出现的新概念。如果能力能够跟上,也会从经济学角度分析一些比特币的现象。
本文是该系列的第一篇-安装篇。由于最近在简单学习go语言,所以就学习了go版本的全节点客户端btcd, btcd 本身不包含钱包功能,为了能够创建账户,做交易,顺便也安装了btcwallet。
1 搭建环境
1.1 前置配置 git
1.2 配置go环境
安装go(也可以使用源码安装,可以自己调试go哦~)
brew install go
配置GOROOT、GOPATH。
vi ~/.bash_profile
看下我的吧。
go配置
1.3 配置glide
go get -u github.com/Masterminds/glide
验证一下是否OK?
glide --version
出现下图就说明OK了。
glide 验证
2 下载源码
2.1 btcd源码下载
git clone https://github.com/btcsuite/btcd $GOPATH/src/github.com/btcsuite/btcd
2.2 btcwallet源码下载
git clone https://github.com/btcsuite/btcwallet $GOPATH/src/github.com/btcsuite/btcwallet
3 安装
3.1 btcd安装
切换到btcd的目录
cd $GOPATH/src/github.com/btcsuite/btcd
初始化glide需要的依赖文件
glide init
安装需要的依赖
glide install
源码安装【如果自己想加入自己的一些调试信息,在这一步之前,可以直接修改代码哈】
go install . ./cmd/...
3.2 btcwallet安装
切换到btcwallet的目录
cd $GOPATH/src/github.com/btcsuite/btcwallet
初始化glide需要的依赖文件
glide init
安装需要的依赖
glide install
源码安装【如果自己想加入自己的一些调试信息,在这一步之前,可以直接修改代码哈】
go install . ./cmd/...
4 默认配置
将代码包中的配置文件加入到 btcd 和 btcwallet的启动文件夹去,这两个文件都是注释过的,所以没有对配置起什么作用,但是必须执行这两步,不然后面启动程序的时候会报缺少文件的错误。
cp $GOPATH/src/github.com/btcsuite/btcd/sample-btcd.conf ~/Library/Application\ Support/Btcd/btcd.conf
cp $GOPATH/src/github.com/btcsuite/btcwallet/sample-btcwallet.conf ~/Library/Application\ Support/Btcwallet/btcwallet.conf
5 启动
btcd 有Mainnet,Regression,Testnet和Simnet四种 网络。Mainnet是主干网络,如果不配置,默认会走这个网络,本文先讲了测试,我们使用simnet网络。至于后三种网络啥区别,不是本文讨论范围。后续我们也会有直接使用mainnet 网络 搭建山寨币的教程。
5.1 开启btcd 网络
btcd --simnet --rpcuser=rpcuser --rpcpass=rpcpass --rpclisten=0.0.0.0:18556 --listen=0.0.0.0:18555
看到这个图,就说明成功了
起飞~
5.2 开启钱包
钱包我们就不在这儿演示了,下一篇,我们会有一个btcd跟btcwallet,以及btcd 命令行工具btcctl 的交互。
6 注意事项
6.1 glide install 有些包下载不下来。
国内因为一些特殊的原因,所以失败。我有梯子,自己配置了代理。我除了本地搭建了代理,为了构建多节点网络,也买了腾讯云的香港服务器,可以直接下载哦。
代理配置截图:
agent
参考了这篇文章 unable to checkout golang.org/x/crypto
7 其他
本文是《循序渐进比特币》的第一篇-安装。
如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长”~
参考文献
linux下安装btcd和btcwallet
unable to checkout golang.org/x/crypto