本文亮点
作者认为,本教程是目前网络上最新且最简单的,“一条命令”指的并不是真的只需一条命令,但是核心命令只有一条
- 最新:网上的教程基本是一年前甚至几年前写的,某些参数和控制台命令已经不能使用
- 最简单:相较于作者之前写的教程和网上的教程,省去了与 geth console 交互的步骤
本文的命令以 Windows 系统为准
配置私链
这一步可以参考作者以前的教程:搭建以太坊私链,到搭建私链前的部分
搭建私链
创造配置文件
在不同于以太坊源码的文件路径下创一个文件夹和.json文件,命名为genesis.json
1 | mkdir ./project |
在这个 json 文件下,配置这个私链的参数,注意这里的 “alloc” 字段下的地址,是需要填入 geth account new 新建的用户
这里使用的共识机制是 Clique,
1 | { |
初始化链
1 | geth --datadir node1 init node1/genesis.json |
成功后会出现以下提示 (可能会有 Error 信息,可以忽略)
假如出现以下报错,可以删除 ./project/MyChain/ 目录下新生成的两个文件夹,只保留 .json 文件
创建用户
这里要用 geth account new 创建一个用户,用户的信息会存在 /project/node1/keystore 下
此处需要输入密码创建用户,要记得这里的密码,待会有用
启用链
此处启用私链,并且开启RPC接口
此处就是本文的重点,也就是题目中所说的“一条命令”
1 | geth --datadir node1 --http --http.addr 0.0.0.0 --http.port 8545 --http.corsdomain "*" --networkid 12345 --mine --miner.etherbase "0x890fb1799fe7fa4b8e01ccf343e088d946fcd556" --allow-insecure-unlock --unlock "0x890fb1799fe7fa4b8e01ccf343e088d946fcd556" --password password.txt |
- http:开启 RPC 接口
- http.port:指定端口,默认8545
- http.addr :HTTP-RPC 监听的ip地址,默认localhost
- http.corsdomain:跨域请求,”*”为允许所有来源的跨域请求
- networkid:指定链的id,以太坊主链id为1
- mine:启用挖矿,只有启用了才能打包交易成区块
- miner.etherbase:需要显式指定coinbase,这里选刚刚创建的账户
- allow-insecure-unlock:这是最重要的一个参数,没有这个参数 unlock 和 http 不能共存
- unlock:非交互式解锁账户,选择刚刚创建的账户
- password:在 /project 下新建 password.txt,把刚刚的密码放到这个文件中,通过这个参数就可以被读取到,而不用交互式输入
如果需要创建多节点,有一些参数是需要显式指定的,不同节点这些参数也要不同,否则会报错
- port:指定链这个程序占用的端口,默认30303
- authrpc.port:authenticated APIs的端口,默认8551
- ipcpath:默认 \.\pipe\geth.ipc
启用成功后,可以发现链已经在挖矿了,此时提交交易可以被顺利执行;而且 http 服务也成功被开启
