搭建主网以太坊全节点钱包

来源:csdn博客 分类: 文章浏览史 发布时间:2020-11-18 01:22:56 最后更新:2020-11-18 浏览:80
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2020-11-18 01:22:56

搭建全节点钱包

前言

最近公司需要开发以一个基于以太坊的 DApp, 使用 ETH 作为中转介质,需要开发一个简易版的以太坊的钱包组件。考虑到 API 的并发,为了保证 DApp 的稳定运行, 不能使用 Infura 的免费接口,所以还是决定自己搭建钱包节点。

安装相关工具

配置go语言运行环境

#解压
root@xiaomao:~# tar xvpzf go1.11.2.linux-amd64.tar.gz
#安装
root@xiaomao:~# mv go /usr/local/
#创建软链接
root@xiaomao:~# ln -s /usr/local/go/bin/go   /usr/local/bin/

安装geth

# 下载源码包  需要翻墙下载,部署的话一定要最新版本!否则在后面同步的的时候会失败
https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.14-6d74d1e5.tar.gz
cd /opt
Version=1.9.14-6d74d1e5
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-${Version}.tar.gz
# 解压
tar zxf geth-linux-amd64-1.9.14-6d74d1e5.tar.gz
cp geth-linux-amd64-1.9.13-cbc4ac26/geth   /usr/local/bin/
[root@izj6cfwx1igy3rr2p1uug8z ~]# cd  /usr/local/bin/
[root@izj6cfwx1igy3rr2p1uug8z bin]# ls
geth  go 

编译完成之后在 build/bin 目录下会生成很多可执行文件,geth 就是其中一个.

配置环境变量

编辑 /etc/environment 文件,添加 geth 和 go 语言的环境变量

root@xiaomao:/usr/local/go-ethereum# vim /etc/environment 
root@xiaomao:/usr/local/go-ethereum# cat !$
cat /etc/environment
#添加 geth 和 go 语言的环境变量
GOROOT=/usr/local/go
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:/usr/local/bin/geth"

使环境变量生效

root@xiaomao:/usr/local/go-ethereum# source  /etc/environment 

验证

root@xiaomao:/usr/local/go-ethereum# geth version
updated=652
Geth
Version: 1.8.17-stable
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.11.2
Operating System: linux
GOPATH=
GOROOT=/usr/local/go

准备节点启动脚本

root@xiaomao:/usr/local/go-ethereum# nohup geth --syncmode "fast" --networkid 1 --datadir /data --rpc  --rpcapi 'eth,net,web3,admin,personal,miner,debug' \
 --rpccorsdomain '*'  --rpcport 9980 --port 10103 --rpcaddr  0.0.0.0 --ws --wsapi 'eth,net,web3,admin,personal,miner,debug,bzz,shh'  \
 --wsport 1025  --port 10103 --wsaddr 0.0.0.0  >>  miner.log 2>&1 & 

参数解释说明

参数名称参数说明
–syncmode同步模式,有三种”fast” ,”full”,”light”.
–networkid网络ID(整型, 1=Main, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) 这里我们使用默认值 1 表示同步主网的数据
–datadir钱包以及区块数据等存储目录,这个建议单独使用数据盘,不要指定系统盘的文件夹
–identity节点标识符
–rpc开启 RPC 服务
–rpcapi开放那些 API 给 JSONRPC 调用,默认 personal 工具是不开放的
–rpccorsdomainRPC 调用跨域限制,*号标识不限制
–rpcportJSONRPC 服务监控的端口
–port同步服务端口
–rpcaddr可以调用 RPC 服务的IP地址,我这里只允许本地调用,不开放给其他用户,如果你想做成 Infura 那样作为公开的 API 的话,可以设置成 0.0.0.0

同步模式做一个更加详细的解释

【 fast 】 启动快速区块同步模式,在同步到最新区块后,转化为正常区块同步模式. 这个是推荐选项,此方法可能会对历史数据有部分丢失, 但是不影响今后的使用
【full】从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。 速度最慢,但是能获取到所有的历史数据, 这个是默认的选项。
【light】仅获取当前状态。验证元素需要向full节点发起相应的请求。

关闭后台运行的脚本

#!/bin/sh
pid=`ps -ef|grep geth|grep -v grep|awk '{print $2}'`
echo $pid
kill -INT $pid

在节点启动之后,我们可以使用 geth attach 命令去进入节点 javascript 终端

root@xiaomao:~# geth attach /data/geth.ipc
updated=652
Welcome to the Geth JavaScript console!

instance: Geth/ddblock/v1.8.17-stable/linux-amd64/go1.11.2
 modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> 

这里的 data 为上面启动 geth 时指定的 datadir 目录。

进入终端以后我们就可以输入命令去查看同步的状态,网络,区块信息等,比如如果我们想查看当前同步状态的话可以使用 eth.syncing 命令:

> eth.syncing
false
> eth.blockNumber
10075557
#出现当前这情况,表示已经同步完成

官网查看区块高度

https://eth.tokenview.com/
php技术微信