官方文档
以太坊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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)