Rinkeby 私有节点指南

搭建 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1221 http, 1222 ws, 1223 ethscan

./bin/geth \
--networkid=4 \
--datadir=./data \
--cache=256 \
--port=20303 \
--rpc \
--rpcaddr 0.0.0.0 \
--rpcport 1221 \
--rpcapi admin,debug,eth,miner,net,personal,rpc,txpool,web3 \
--rpccorsdomain 'http://www.xxx.com:1223' \
--rpcvhosts 'www.xxx.com' \
--ws \
--wsaddr 0.0.0.0 \
--wsport 1222 \
--wsapi admin,debug,eth,miner,net,personal,rpc,txpool,web3 \
--wsorigins 'http://www.xxx.com' \
--ethstats='xxx-rinkeby:Respect my authoritah!@stats.rinkeby.io' \
--bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303 \
>> ./logs/geth.log 2>&1
  1. rpc rpcaddr rpcport rpcapi rpccorsdomain rpcvhosts 配置支持 rpc (基于http) 的协议.
  2. 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 才解决.

  1. ethstats 表示向 stats.rinkeby.io 发送统计信息, 方便在官方地址进行查看节点信息.

注意: xxx-rinkeby 部分是节点名称, 根据情况自行修改, : 后面部分为密码, 必须使用 Respect my authoritah! 消息才能被 stats.rinkeby.io 接收.

  1. bootnodes 是可用依赖初始化节点, 参考 https://www.rinkeby.io/#geth.

本脚本是基于 https://www.rinkeby.io/#geth 进行的改进, 支持 http + ws. 参数的具体详细解析, 参考 geth --help

注意: 上面的脚本进行同步数据, 大概需要几个小时不等的时间, 具体情况参考个人网速, 可以参看 ./logs/geth.log 文件的内容变化查看具体进度.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.