web3公测版本教程(一)-ETH公有链节点同步

ETH公有链节点同步

最近区块链公司不少都会搞发糖果活动,通常都能吸引几万粉丝,这就来了一个需求,给人家发糖果。主流的geth,parity,甚至imtoken钱包只能输入地址一笔笔交易,几万笔交易人工根本没法完成,因而开始研究使用web3脚本群发交易。java

在2017年7月25号,web3就已经发布web3v1.0.0-beta.9公测版本,但国内甚至国外大部分教程还停留在早期的版本,其中的坑不言而喻,只看这些文章是根本跑不通的,做者就是深受其害,最后参考官网文档,github issue才最终完成。node

web3原理

经过RPC 调用与本地节点通讯。web3能够与任何暴露了RPC接口的以太坊节点链接。python

web3种类

web3在github分为web3.js,web3j,web3.py,分别对应node,java,python三门语言,要数node star人数最多,做者接下来教程也是web3.js。linux

web3.js使用前置条件

  1. 安装node 最好使用v8.1,公测版web3使用大量异步操做,使用async等语法比较方便。
  2. 使用npm安装web3,npm install web3 --save
  3. linux或者mac环境(window环境下web3一直报错,钱包问题也很大)
  4. web3是与本地节点通讯(远程其实也行),因此必须同步一个以太坊节点

前三点相对比较容易,接下来主要讲同步一个以太坊节点。git

ETH公有链节点同步

目前来讲搞一个可用的以太坊节点有三种办法github

  1. 同步一个geth节点
  2. 同步一个parity节点
  3. 使用他人(包括节点服务商)同步的节点

第一次尝试同步节点

首先使用geth钱包下载直接同步,结果400w块左右后永远到不了终点,如今回想cpu,内存,硬盘网络都有问题,想同步简直作梦。事后论坛寻找缘由,是由于国内节点少网络环境差,解决方法发现国内有个星火节点的列表,教程你们能够搜索下,也成功配置但效果并不明显,就很少说这个。
失败缘由:以太坊节点对内存,cpu,硬盘速度,网络情况要求都比较高,星火节点也只有36个节点,不少还没能同步到最新块,因此你们有条件还要多多参与,携手共建区块链美好将来。web

第二次尝试同步节点

接下来逛论坛发现钱包不仅有geth还有parity轻钱包据说国内效果不错,换来台i5处理器,8g内存,120g固态的电脑去同步,一天左右就同步成功了,但一直很不稳定,过一会节点就会被远程节点拉开距离,没法被web3使用。
失败缘由:使用任务管理器看cpu常常到99%,配置还低,加上公司网络也不稳定。还有parity在windows环境下可能运行也不是很稳定。npm

第三次尝试同步节点

发糖果日期渐渐到来,因为不肯定节点是放在本地仍是服务器好,服务器放国内仍是国外好,geth仍是parity,冲冠一怒得砸钱,因而在阿里云上配置了两台服务器,配置同为8g 4核 500ssd 百兆带宽是刚需,因为以前经验还选择了高计算型,一台在华东部署parity节点,另外一台部署geth节点在硅谷。结果都完成了华东的parity用了2天半,美国的geth用了一天半。windows

所用命令:

geth --fast --cache=2048 --rpc --rpcapi personal,web3,eth,net
--ws --wsorigins "*"

--fast 使用快速同步模式
--cache= 增大内存使用
--rpc --rpcapi personal,web3,eth,net
开启rpc接口和personal等操做api,后边rpcapi必定要写这也是遇到的一个坑,若是没有后期能使用基础web3函数,但不能使用personal等API
--ws --wsorigins "*" 容许全部人使用ws链接api

parity 官方提供了一个配置生成器,因为最后没有在parity上开发,好用配置项目能够自行添加

问题:

linux服务器geth,parity命令后如何退出ssh继续执行,退出自动杀死执行的进程,使用nohup不挂断的运行命令,同时log输出到output.log,修改命令以下。

nohup geth --fast --cache=2048 --rpc --rpcapi personal,web3,eth,net --ws --wsorigins "*" >> output.log 2>&1 & //将返回进程码
tail -f output.log //查看实时查看日志
kill processNum //关闭geth杀死进程

同步节点结论

  1. 目前来讲parity和geth都是能够同步成功
  2. 节点彻底能够放在国外,同步速度会很快,使用ssh链接执行web3脚本就好有特殊需求国内阿里云也能够同步成功。
  3. 配置至少4核 8g 300G固态
  4. geth使用fast模式,parity使用warp模式,都是快速同步,彻底能够用于web3开发。这两个模式默认也是开启的为了保险才加上参数。
  5. 同步时候总会有一些错误,诀窍就是死等,geth同步完成后还会去重头处理1000w多的数据不要惊慌等。geth偶尔会丢失异步失败一些节点只要进程不停就死等。parity后期会很慢由于后边区块交易多也不要惊慌死等。
相关文章
相关标签/搜索