===
测试的时候使用 Infura 真的非常方便, 但是最近经常出现无法连接, rpc 调用失败, 合约无法部署等问题, 经排查使用国外的 aws 则可以顺畅进行上面提及的所有操作.
再次郁闷我们的网络情况. 于是乎, 在 rinkeby 的申请测试币的网站, 发现两个比较好玩的东西.
- 安装自有节点 https://www.rinkeby.io/#geth
- Puppeth 一键安装管理私有网络 https://www.rinkeby.io/#about
本文字主要记录一下安装自有 rinkeby 节点的过程.
下载依赖环境
首先要有 Geth, 在下载地址 https://geth.ethereum.org/downloads/ 找到自己需要的版本, 我是在服务器上安装, 所有选择 Linux 版本.
然后我是使用 supervisor
进行的节点保护, 所以需要安装 Python 2.7.x
版本, 以及安装 pip install supervisor
.
下载创世区块文件 wget https://www.rinkeby.io/rinkeby.json
使用默认参数启动一下
可以选择的钱包同步方式有四种,
- Archive node 用于同步全部的链信息, 非常消耗内存磁盘 CPU 等.
- Full node 全节点, 只同步从启动开始之后的全部链信息, 不同步启动之前的, 这意味着可以节省一大笔资源, 但是在启动自有节点前就有相关业务, 那么这些业务将无法从自有节点查询得到.
- Light node 轻节点, 依据需求同步数据, 只同步头部信息, 不存储任何的交易, 这意味着如果你想查询交易而不只是进行钱包的支付校验的话, 那么将无法查到交易信息.
- Embedded node 个人理解这个钱包是用于便携设备的, 目前还在试验当中.
由于我们当前的需求是可以根据交易的哈希查询交易日志, 并且解析交易日志进行合法性校验的, 所以我们选择 Full Node 全节点.
初始化创世区块 geth --datadir=$HOME/.rinkeby init rinkeby.json
启动节点
1 |
|
其中 networkid 为 4 表示是 rinkeby 测试网络.
datadir 用于存储区块的文件.
cache 表示内部缓存使用的初始化内存 MB 大小.
ethstats 是用于在 https://www.rinkeby.io/#stats 上查看节点情况的配置, 其中 yournode 表示的是在该界面的展示主机名.
bootnodes 是初始化的链接邻居节点, 用于寻找最近的可用节点.
在区块监控的页面 https://www.rinkeby.io/#stats 可用看到我们自己节点的情况.
自定义一些配置
由于我们想要使用域名链接, 并且更改一下默认的端口什么的, 所以参数也有相应的修改:
1 |
|
开启 rpc 支持远端通过 1221 端口访问, 注意绑定域名的时候使用 rpcvhosts 对该域名进行访问授权, cros 为使用 ajax 等访问的时候支持的访问源.
开完 ws 支持通过 1222 端口访问, 将日志写入指定文件.
注意: 此配置进行数据同步需要一段时间, 该时间内访问相关数据查询语句均返回 null 查询不到数据.
使用 supervisor 进行管理
Supervisor 配置文件
1 | [supervisord] |
启动脚本
1 |
|
目录结构
1 | . |
- 初始化创世块:
./init.sh
- 手动启动:
./start.sh
- 启动 Supervisor 管理:
./start-supervisor.sh