其实之前从没有了解过“区块链”、“比特币”,只觉得它是一个很高深、很神秘、一听就很复杂的东西。
然鹅,我没想到这学期有一门课程竟然是学习区块链。
不在我的规划之中,还得占用我的时间和精力去完成作业,有点小烦躁。
但是,既然学了,那就好好学吧,总会有收获。
第一节课的任务是在Ubuntu中搭建以太坊私有链。
接下来进入正题:
1.安装Ubuntu16.04的虚拟机:
2.安装Ubuntu系统:
3.安装VM Tools:
4.更新源:
sudo gedit /etc/apt/sources.list
更新源:
sudo apt-get update
5.后面需要用vim文本编辑器修改配置文件,所以还要安装vim:
sudo apt-get install vim-gtk
1.在虚拟机中下载go语言的安装包:
wget https://studygolang.com/dl/golang/go1.10.3.linux-amd64.tar.gz
2.在下载好的压缩包的目录下,将其解压到 /usr/local 文件夹下:
sudo tar -xzvf go1.10.3.linux-amd64.tar.gz -C /usr/local
mkdir go
sudo vim ~/.bashrc
将下列代码复制粘贴到文件最后,保存退出:
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOBIN
source ~/.bashrc
go version
Geth是GoEthereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。
1.依次输入以下命令:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
我在执行第二条命令sudo add-apt-repository -y ppa:ethereum/ethereum的时候遇到了报错!然后在经过了长达七个多小时的迂回绕转、艰苦奋战,最后想到了解决办法!
如果你的报错信息和我下图所示一样的话,可以尝试一下我的方法:
1.首先要确保自己的虚拟机能连上网,具体的配网教程网上找
3.添加geth的PPA源,在https://launchpad.net/ubuntu/+ppas搜索geth的PPA源,将其添加到“其他软件”里,也要用sudo gedit /etc/apt/sources.list写进源文件里:
更新完成以后再来执行上面的命令,就可以正常执行第二条命令了。
然鹅,第四条命令sudo apt-get install ethereum在执行的时候也会出现下图的报错。我找到的解决办法就是:不停的重复执行这条命令。
因为虽然它每次都失败,但它的下载进度是累加的,我们可以一直重复下载,直到进度条拉满。我用了一个晚上都没下好,第二天早上起来才下好的:
2.查看是否安装成功:
geth version
1.新建文件夹例如mychain,用来保存私有链的数据:
mkdir mychain
2.创建创世块文件genesis.json,并将其放在mychain目录下:
vim genesis.json
写入以下内容:
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": { },
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
3.初始化创世区块,并指定数据存放路径。在mychain目录下新建一个目录mydata用以存放区块链数据,进入mychain目录中,执行命令:
geth --datadir mydata init genesis.json
4.初始化成功后,会在数据目录 mydata中生成 geth和 keystore 两个文件夹。其中 geth/chaindata 中存放的是区块数据,keystore 中存放的是账户数据:
5.启动私有链节点:
geth --identity "TestNode" --rpc --rpcport "8545" --datadir mydata --port "30303" --networkid 6666 --nodiscover console
出现了如下页面就表示启动了区块链节点并进入了该节点的控制台:
至此,Ubuntu16.04下的以太坊私有链环境已经搭建好了!
总结一下:
环境不停报错,我已经记不清我尝试过过少次方法、恢复了多少次快照了。
搭环境这种事,真的是别人能搭好、你用同样的方法就不一定能搭好,总会遇到一些奇奇怪怪的报错……所以虽然我的安装步骤是已经进行了种种排错的,但可能你们按照我的步骤来搭建依然会遇到问题。
收获就是,这应该是我真正意义上的第一次独立完成的环境搭建。在这个过程中,更大的收获不是搭建成功,而是遇到报错时的排错思维。因为并不是所有报错问题别人都遇到了、网上都有解决方法,而是需要自己分析,自己判断大致方向,然后去找相应的解决方法后灵活套用到自己的问题上。