ETH - Ropsten 测试节点搭建全流程

ETH - Ropsten 测试节点搭建全流程,第1张

ETH - Ropsten 测试节点搭建全流程 测试网络概述 链接

官方文档

以太坊3个测试网络(ropsten、kovan、Rinkeby)的区别

注意!PoW 和 PoA 的共识是不一样的!虽然大部分教程都说 PoA 又好又安全,开发合约啥的都能布置,但是交易的数据结构还是不一样!

我当时一开始用的是 Rinkeby,结果花了一整天同步完了,账户都创建完了,发现公司服务器检测不到充值行为

后来发现 PoA 链和 PoW 链的 Extra Data 长度不一样… 还得重新同步,心态炸裂

报错长这样:

in check_extradata_length
    raise ValidationError(
web3.exceptions.ValidationError: The field extraData is 97 bytes, but should be 32. It is quite likely that you are connected to a POA chain. Refer http://web3py.readthedocs.io/en/stable/middleware.html#geth-style-proof-of-authority for more details. The full extraData is: HexBytes('0xd783010600846765746887676f312e372e33856c696e757800000000000000009f1efa1efa72af138c915966c639544a0255e6288e188c22ce9168c10dbe46da3d88b4aa065930119fb886210bf01a084fde5d3bc48d8aa38bca92e4fcc5215100')

别用 Rinkeby!用 Ropsten!

打算干啥

geth 全称 go ethereum, 是一款 ETH 客户端,可以选择不同的网络搭建节点

我们需要整一台服务器,使用 geth 搭建在 ETH 测试网络(这里我们用 Ropsten)上的节点,创建用户对应的地址,测试转账功能

我们要实现账户转出,首先要有秘钥(存在安装好了geth客户端),有密码(自己知道),这样我们就可以解锁地址,实现转账

那为什么我们非要搭建一个节点,不能直接连测试网吗?

至于检测某地址是否收到转账,我们就需要用节点同步数据,跑一个 service 来检测节点最新同步的块里有没有我要检测的地址的转账信息,所以需要节点!

OK,大概就是这样,Let’s Go!

区块链浏览器

Ropsten

Kovan

Rinkeby

服务器购买 ropsten 网络 硬盘

使用 snap 模式同步所有数据,数据大小(截至2021-8-30):

Ropsten 的数据总量在114G多点;

Rinkeby 数据总量在 81G多点;

系统占据5G

不考虑太远的需求,200G的 SSD 应该够用

网络

关系到同步时间,我在华为云上买的是 100M的网络, 按流量计费

Ropsten 同步时间在10小时以内,还好,感觉国内的网络情况也就这样

CPU

无需求

内存

越大越好,16G 肯定够,如果用 --cache 1024 限制内存,4G 也能作为节点同步

网络

最好欧美,越快越好

手头的服务器

华为云

通用计算型 - 1v CPU,4GB 内存,100M网络

设置了 geth --cache 选项,把内存限制到 1024

不超过6小时数据同步完成,在 https://www.rinkeby.io/#stats 上可见(需要手动连,也可以不连)

硬件需求 geth 硬件配置需求

https://github.com/ethereum/go-ethereum/issues/15153

可以通过限制 geth --cache 来决定内存消耗多少,限制到 1024 的情况下,4G 内存就可以

环境搭建 geth(官方版) 通过 PPA(Personal Package Archive, ubuntu 的 apt/apt-get) 安装(最终采纳路线)

https://geth.ethereum.org/docs/install-and-build/installing-geth#install-on-ubuntu-via-ppas

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
遇到的问题

2v CPU,4GB 内存

未使用 --cache 限制内存,同步到一半,耗尽内存

运行 geth 同步区块 geth 命令, 开启数据同步
# rinkeby
geth --rinkeby --syncmode snap --cache=1024 --http --http.api "eth,net,web3,personal" --http.addr <我们的 ETH 测试服务器 ip> --http.port <我们的 ETH 测试服务器 端口> --maxpeers 32 --allow-insecure-unlock --ethstats='superggn_rinkeby:Respect my [email protected]'
# ropsten (我们用这种,因为 Ropsten 是 PoW 的链,和主链相似度最高,如果用 PoA 共识的链,代码中的 check_block 会报错(ExtraData 长度不一样))
geth --ropsten --syncmode snap --cache=1024 --http --http.api "eth,net,web3,personal" --http.addr <我们的 ETH 测试服务器 ip> --http.port <我们的 ETH 测试服务器 端口> --maxpeers 32 --allow-insecure-unlock
# --rinkeby: 连接到测试网络 rinkeby
# --syncmode snap: 同步模式选择 snap
# --cache=1024: 选择
# --http: 开启 http.rpc 服务
# --http.api "eth,net,web3,personal": HTTP-RPC 接口提供的 API
# --http.addr: HTTP-RPC 服务监听地址(内网地址, ubuntu 通过 "ip a" 命令获取)
# --http.port: HTTP-RPC 服务监听端口
# --maxpeers 32: 最大 peer 数量
# --allow-insecure-unlock: Allow insecure account unlocking when account-related RPCs are exposed by http
# --ethstats='<节点名称(随便起,但不能和已有的重复,geth 界面会不停地报登录失败)>:<密码,似乎不能改,维持原来的 'Respect my authoritah!'>@stats.rinkeby.io': 
# 仅限 rinkeby(反正别的网络,像 ropsten 啊,我没找到统计的站点)
# 将节点信息上报到 "stats.rinkeby.io",可到 "https://www.rinkeby.io/#stats" 查看节点信息
sync mode 有几种
# full
geth --syncmode "full"
# fast
geth --syncmode "fast"
# light
geth --syncmode "fast"
# snap(新开发的功能,21年刚上线,快照同步模式,同步速度极快)
geth --syncmode "snap"
进入 geth 命令行
geth attach http://<我们的 ETH 测试服务器 ip>:<我们的 ETH 测试服务器 端口>
# 查看节点是否已同步完成
> eth.syncing
  False
生成新的地址 创建账户
# 生成1000个地址,打印信息重定向到 tempdata 中
for i in {1..1000}
do
    # 账户地址信息均写入 tempdata
    geth --ropsten account new --password ./testnet_account_password >> ./tempdata
done
# 生成过程中,每个地址生成会匹配两条报错,正常,只要在 key_store 中能看到密钥生成,即可
将 tempdata 格式化为数据库可导入文件(table_name.txt)

使用 python 脚本

通过堡垒机 sftp 将 table_name.txt 下载到本地
# 连接 sftp
# sftp -i <堡垒机 key 文件> -o IdentitiesOnly=yes -P<端口号> <用户名>@<堡垒机ip地址>
# 在服务器登录界面,输入 ^, 进入文件下载页面,将测试服务器上的文件下载到堡垒机
# mac 本地通过 sftp 命令,连接堡垒机,下载文件
sftp 命令:
ls
get '<文件名>'
rm '<文件名>'
通过 navicat 导入测试数据库 其他相关教程

link2sea 教程

https://www.link2sea.com/archives/502

segment_fault 张京

https://segmentfault.com/a/1190000013385767

通过 github 源码安装(有问题)

https://www.link2sea.com/archives/502

https://github.com/yeasy/blockchain_guide

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/935292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存