本文将介绍如何在远程服务器搭建私有链,并且进行rpc连接。
搭建私有链
首先需要有一台远程服务器,Linux下安装geth,比较简单,只需要几个指令:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
安装完后创建创世块、启动私有链参考之前文章:https://www.jianshu.com/p/b6dcb5afe866
如何连接远程rpc服务
启动私有链后有个问题:rpc默认连接的地址是localhost,这样其他机器就无法访问到这台服务器的节点,那和本地电脑搭建的私链有啥区别。
- 使用geth --help发现启动参数有个 rpcaddr可以设置rpc服务的地址
- 把启动参数里添加 --rpcaddr "服务器ip" 进行启动
- 启动后会报如下错误:
panic: runtime error: invalid memory address or nil pointer dereference
额,这是啥问题,百度一番没找到解决方法。后来看官方文档,找到一句话:
Do not forget --rpcaddr 0.0.0.0, if you want to access RPC from other containers and/or hosts.
By default, geth binds to the local interface and RPC endpoints is not accessible from the outside.
- 原来是需要通过设置0.0.0.0,才可以进行外部访问,0.0.0.0表示指向本机的所有IP地址。修改之后果然启动成功了
如何验证你启动的rpc服务是能够正常被外部访问的?
很简单,打开remix ide,点击Run,选择Environment的Web3 Provider,填写你的rpc服务地址(例:http://x.x.x.x:8545),连接成功后在Account中看到该链上的账户和余额,表示连接成功了。