以太坊节点搭建
安装go-10
安装go-10很简单,直接下载编译好的安装包,解压,拷贝到安装目录,然后设置环境变量,如下所示:
$ wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz
$ tar xzvf go1.10.1.linux-amd64.tar.gz
$ mv go ~/usr/local/
$ echo "export GOROOT=~/usr/local/go" >> ~/.bash_profile
$ echo "export PATH=$PATH:~/usr/local/go/bin/" >> ~/.bash_profile
$ source ~/.bash_profile
这里是安装到当前用户,并设置GOROOT和PATH
安装geth
从github上下载最新源码,并编译,编译好之后同样设置环境变量。
$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ make all
$ cd ..
$ mv go-ethereum ~/usr/local
$ echo "export PATH=$PATH:~/usr/local/go-ethereum/build/bin" >> ~/.bash_profile
$ source ~/.bash_profile
全部编译会有点慢,可以只编译geth:
make geth
注意这里直接将go-ethereum移到了~/usr/local 下,可以根据需要不这么做,并设置对应的环境变量。
启动节点
- 启动私有节点
$ mkdir myEthereum
$ cd myEthereum
$ vi mygenesis.json
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0xffffffff",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
$ geth --datadir chain init mygenesis.json >> test.log
$ geth --rpc --targetgaslimit 7000000 --port 30305 --gasprice 0 --rpcaddr "0.0.0.0" --rpcport "8090" --rpcapi "db,eth,net,web3,personal" --rpccorsdomain "*" --networkid 666 --datadir chain console
> personal.newAccount("123456")
> minner.start()
> eth.blocknumber
mygenesis.json 为配置文件,如果启动miner.start()之后一周没有新块产生,可以试着修改
difficulty
字段,为0x20降低挖块的难度,重新init再启动。
第一行geth命令为初始化,指定数据保存目录为当前目录的chain下
第二行geth命令,很多参数可以根据自己需要删减,具体详细信息参考网上其它资料
personal.newAccount
为创建一个账户,密码为123456,注意,这个密码只是生成的keystore文件的解密密码,不是私钥,私钥被加密在keystore文件中。
minner.start()
即启动挖矿。
启动后会有提示挖到新块,可以通过eth.blocknumber
查看块的数目
- 启动一个以太坊主链轻节点
事实上,我们更需要一个可以访问主链的节点,在不需要挖矿的前提下,我们可以同步一个轻节点。
运行如下命令即可
$ nohup geth --datadir chain --rpc --rpcport 8454 --rpcaddr "0.0.0.0" --rpcapi "eth,web3" --rpccorsdomain "*" --syncmode "light" --maxpeers 100 2 >> geth.log &
$ geth attach --datadir chain
因为同步可能需要很长时间,所以这里直接在后台执行了,接下来就是漫长的等待。
我们可以通过下面的attach命令登陆到当前轻节点,查看同步情况。
eth.syncing
查看同步情况。
admin.peers
查看当前发现并链接的节点情况。
这里经常会有人问到一个问题,就是同步到最后几个节点的时候,一直同步不成功。大部分情况是时间没同步,在root账户下安装ntp,并启动:yum install ntp
,service ntpd restart