资讯专栏INFORMATION COLUMN

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

flybywind / 3462人阅读

摘要:将返回进程码查看实时查看日志关闭杀死进程同步节点结论目前来说和都是可以同步成功节点完全可以放在国外,同步速度会很快,使用连接执行脚本就好有特殊需求国内阿里云也可以同步成功。

ETH公有链节点同步

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

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

web3原理

通过RPC 调用与本地节点通信。web3可以与任何暴露了RPC接口的以太坊节点连接。

web3种类

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

web3.js使用前置条件

安装node 最好使用v8.1,公测版web3使用大量异步操作,使用async等语法比较方便。

使用npm安装web3,npm install web3 --save

linux或者mac环境(window环境下web3一直报错,钱包问题也很大)

web3是与本地节点通信(远程其实也行),所以必须同步一个以太坊节点

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

ETH公有链节点同步

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

同步一个geth节点

同步一个parity节点

使用他人(包括节点服务商)同步的节点

第一次尝试同步节点

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

第二次尝试同步节点

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

第三次尝试同步节点

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

所用命令:
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连接

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杀死进程
同步节点结论

目前来说parity和geth都是可以同步成功

节点完全可以放在国外,同步速度会很快,使用ssh连接执行web3脚本就好有特殊需求国内阿里云也可以同步成功。

配置至少4核 8g 300G固态

geth使用fast模式,parity使用warp模式,都是快速同步,完全可以用于web3开发。这两个模式默认也是开启的为了保险才加上参数。

同步时候总会有一些错误,诀窍就是死等,geth同步完成后还会去重头处理1000w多的数据不要惊慌等。geth偶尔会丢失异步失败一些节点只要进程不停就死等。parity后期会很慢因为后边区块交易多也不要惊慌死等。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23975.html

相关文章

  • web3公测版本教程(三)-不用自己同步以太坊节点,直接发起签名交易

    摘要:最后毅然决然的选择自己同步节点的苦逼之路。三用连接发起智能合约交易要发起交易首先要解决的就是问题一,不可以用。自己同步节点就可以先解锁在签名交易,然后发送交易给其他节点。 一.前言 前文提到目前有一些公司提供公共的以太坊对外服务,就是以你可以调用他的web3接口,之前一直被两个问题困扰,一个是觉得别人的节点不安全,还有初步尝试后发现Infura节点没有开放账户相关的方法。没法使用web...

    The question 评论0 收藏0
  • web3公测版本教程(二)-基础异步语法,交易,签名交易,ganache-cli

    摘要:可以解锁,也可以将交易代码写函数内。签名交易同理封装一个异步函数,实际上签名交易分为两个步骤签名一个交易发送这个签名的交易到区块链。 一.开发环境安装及其搭建 1.安装node 最好v8的可以使用ES6语法2.安装ganacheganache介绍:虽说真实发布必须要使用前文说到的三种方法geth,parity,或其它服务商,但是测试开发环境下,有一款本地基于内存的钱包,不需要等待确认交...

    Martin91 评论0 收藏0
  • python和flask框架开发以太坊智能合约

    摘要:是以太坊开发的个人区块链,可用于部署合约,开发应用程序和运行测试。安装是一个用于与以太坊交互的库。启动以太坊测试区块链服务器要部署智能合约,我们应该启动测试以太坊服务器。最后,你将在以太坊合约中设置调用用户对象时获得的值。 将数据存储在数据库中是任何软件应用程序不可或缺的一部分。无论如何控制该数据库都有一个该数据的主控。区块链技术将数据存储到区块链网络内的区块中。因此,只要某个节点与网...

    enrecul101 评论0 收藏0
  • python和flask框架开发以太坊智能合约

    摘要:是以太坊开发的个人区块链,可用于部署合约,开发应用程序和运行测试。安装是一个用于与以太坊交互的库。启动以太坊测试区块链服务器要部署智能合约,我们应该启动测试以太坊服务器。最后,你将在以太坊合约中设置调用用户对象时获得的值。 将数据存储在数据库中是任何软件应用程序不可或缺的一部分。无论如何控制该数据库都有一个该数据的主控。区块链技术将数据存储到区块链网络内的区块中。因此,只要某个节点与网...

    UnixAgain 评论0 收藏0
  • java使用web3j和spring boot构建以太坊区块dapp

    摘要:使用和以太坊客户端的容器镜像,可以快速启动解决方案,实现区块链技术的本地开发。以太坊,主要是针对工程师使用进行区块链以太坊开发的详解。以太坊,主要讲解如何使用开发基于的以太坊应用,包括账户管理状态与交易智能合约开发与交互过滤器和事件等。 区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全...

    _DangJin 评论0 收藏0

发表评论

0条评论

flybywind

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<