好久不碰区块链了。毕业设计要用到 Ethereum ,熟练地打开 github.com/ethereum/ ,在里面寻找 aleth 的身影……然而,aleth 居然已经在这一年中挂了。。现在只能下 geth 了,悲
Geth 的编译运行
博主对 golang 了解极为有限,这里简单记一下 geth 的编译和使用
第一步当然是下载代码。
这里我用了一个镜像,下载代码的速度能快不少
然后,在目录中一句 make geth 即可
go 会自己下依赖,然后自己编译,很简单就完成了
直接启动可执行文件,即可启动节点
Geth 的私有链搭建
定义私链创世 State
所谓创世 state,其实就是初始状态。这个初始状态用一个 json 文件进行定义。
我们可以参考下面的这段 json 来创建我们自己的创世 json 文件
{
"config": {
"chainId": <这里填个你喜欢的正整数>,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
上面这段是官方文档给的,我不做任何修改直接拿来用了。。
使用该命令即可用我们自定义的创世状态来创建我们自己的私链 $ geth init /path/to/genesis.json。
注意,所有要连接到我们的私有链的节点,都应该用同样的 json 文件来启动。
如果之前执行过与公链的同步,这里会出现数据库冲突的问题。
可以在启动 geth 时加上参数 removedb 来删除原有的数据库,然后重新 init 即可
这样,init 就完成了
接下来,再直接运行 geth,即可在我们自己的链上启动节点了
这个私链上只有我们自己的节点,想要运行就需要我们启动自己的 miner 。如下,一句话的事。。
./geth --mine --miner.threads=1 --etherbase=0x0000000000000000000000000000000000000001
mine 代表着要作为 miner 启动本节点,miner.threads=1 意味着我们只为 miner 分配一个线程,etherbase 是出块成功后奖励到的 account address。这里可以设置为任意的账户,比如我们自己创建的用于调试合约的账户地址
Ethereum 中的 mining 需要先生成一个 DAG ,需要跑一会儿。。跑完了就会开始 mining 了
开始正常 mining