搭建 Rinkeby 私有节点的益处
以前都是使用 Infura, 毋庸置疑, 非常方便.
但是 Infura 在部分情况下出现 http 访问失败, ws 链接不稳定, 不支持 ipc 链接方式等等.
那么为了解决上面的问题, 决定搭建私有 rinkeby 节点.
经过一段时间尝试, 将内容整理如下:
准备工作
创建工作空间
创建目录 rinkeby
作为工作根目录.
其实本步骤并不是必须的, 只是为了后文更好的进行沟通.
创建一些必备的文件夹
- bin 存放可执行文件
- conf 存放配置文件
- data 存放区块数据
- logs 存放日志
- pids 存放一些 pid 文件
如果嫌麻烦直接执行 mkdir -p rinkeby/{bin,conf,data,logs,pids}
下载安装 geth
在 https://geth.ethereum.org/ 可以下载对应操作系统版本的预编译包, 极度不推荐自己编译(电脑内存 Cpu 有自信者随意).
下载好后, 解压缩到 rinkeby/bin/
目录下备用.
下载的时候, 有很多可以选, 建议选择最新版的 alltools
版本, 方便以后直接使用其他工具.
比如我下载的就是 geth-alltools-linux-amd64-1.8.11-dea1ce05.tar.gz
版本.
当然, 你看到本文的时候, 可能已经升级了很多, 建议最新.
下载 rinkeby.json 创世块文件
在 https://www.rinkeby.io/#geth 可以找到 rinkeby.json
文件进行下载.
下载好后, 放到 rinkeby/conf/
目录下备用.
开始
初始化创世块
1 | ./bin/geth --datadir=./data init conf/rinkeby.json |
执行启动脚本
1 | # 1221 http, 1222 ws, 1223 ethscan |
- rpc rpcaddr rpcport rpcapi rpccorsdomain rpcvhosts 配置支持 rpc (基于http) 的协议.
- ws wsaddr wsport wsapi wsorigins 配置支持 ws (基于websocket) 的协议.
注意: 配置 --wsorigins 'http://www.xxx.com'
之后, 只能在 web3js 中进行访问(指定 origin), 不能直接使用 geth attach
方式进行访问, 如果需要使用 attach 方式, 只能设置 --wsorigins '*'
.
我在自建节点的时候, 就出现了无法使用 ws 进行访问的问题, 参考了 https://github.com/ethereum/go-ethereum/issues/16608 才解决.
- ethstats 表示向
stats.rinkeby.io
发送统计信息, 方便在官方地址进行查看节点信息.
注意: xxx-rinkeby
部分是节点名称, 根据情况自行修改, :
后面部分为密码, 必须使用 Respect my authoritah!
消息才能被 stats.rinkeby.io
接收.
- bootnodes 是可用依赖初始化节点, 参考
https://www.rinkeby.io/#geth
.
本脚本是基于 https://www.rinkeby.io/#geth
进行的改进, 支持 http
+ ws
. 参数的具体详细解析, 参考 geth --help
注意: 上面的脚本进行同步数据, 大概需要几个小时不等的时间, 具体情况参考个人网速, 可以参看 ./logs/geth.log
文件的内容变化查看具体进度.