最近区块链公司不少都会搞发糖果活动,通常都能吸引几万粉丝,这就来了一个需求,给人家发糖果。主流的geth,parity,甚至imtoken钱包只能输入地址一笔笔交易,几万笔交易人工根本没法完成,因而开始研究使用web3脚本群发交易。java
在2017年7月25号,web3就已经发布web3v1.0.0-beta.9公测版本,但国内甚至国外大部分教程还停留在早期的版本,其中的坑不言而喻,只看这些文章是根本跑不通的,做者就是深受其害,最后参考官网文档,github issue才最终完成。node
经过RPC 调用与本地节点通讯。web3能够与任何暴露了RPC接口的以太坊节点链接。python
web3在github分为web3.js,web3j,web3.py,分别对应node,java,python三门语言,要数node star人数最多,做者接下来教程也是web3.js。linux
前三点相对比较容易,接下来主要讲同步一个以太坊节点。git
目前来讲搞一个可用的以太坊节点有三种办法github
首先使用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杀死进程