Swarm BZZ 快速部署指南
系统架构图:
Swarm BZZ 正式版是运行在 以太坊侧链 XDAI (主网)环境中的,测试版则是运行在 goerli (测试网络) 中, 在开始前,需要准备1个支持XDAI侧链的以太坊客户端,将以太坊侧链 XDAI区块链数据同步至本地,通过RPC接口提供给 BEE节点(挖矿节点)来做数据调用。当前XDAI侧链数据在40G左右,goerli测试网数据在26G左右。
ETH客户端:
目前有多种不同编程语言开发的以太坊客户端,均内置了一个标准的ETH RPC调用接口,除了支持不同的侧链外,大致功能上都相同,主要在运行环境,性能,技术实现上有所区别, 目前讨论比较热门的3种ETH客户端情况如下:
客户端 | 编程语言 | XDAI主网 | Goerli测试网 | 内置RPC | 平台支持 |
Geth | go | 不支持 | 支持 | 是 | Win普通 Linux好 |
Openethereum | rust | 支持 | 支持 | 是 | Win普通 Linux好 |
Nethermind | Net.core | 支持 | 支持 | 是 | Win 好 Linux普通 |
以上三种编程语言均有大公司背景支持, go语言(谷歌),rust(Mozilla基金会), Net.core(微软)可以支持跨平台使用,3种ETH客户端均可以支持Swarm BZZ测试网Goerli, 但在BZZ 2021年6月21日切换到主网XDAI后,则只有Openethereum和Nethermind 支持,考虑微软自家语言对Win系统支持更好,推荐在Win下使用Nethermind客户端,Linux 则推荐使用Openethereum 客户端.
如果是以集群方式部署,建议使用一台独立的服务器作为RPC服务节点。
在配置ETH客户端之前,需要将内网IP地址30303端口映射到公网IP 30303端口。
Openethereum 和 Nethermind 客户端2选1即可。
(1)配置Openethereum 客户端
发布地址 https://github.com/openethereum/openethereum/releases/
当前最新正式版本为 3.2.6 , 3.3.0 RC2 候选版本也已发布.
根据需要下载对应编译好的二进制版本
Win版本建议 Server 2012 ,Server 2016 更高版本操作系统,不要使用Win7 和Win10
Linux 版本因对Glibc版本有要求,建议使用CentOS8 或者 Ubuntu 20.04 发行版。
Openethereum 是使用命令行加配置参数的方式运行的,Win下可以使用编辑BAT脚本来完成启动. 默认可以使用HTTP方式请求RPC接口,也支持WebSocket协议请求。在运行后,其窗口不可关闭。
Windows 和Linux 运行参数均相同,参考以下参数进行调整
openethereum --chain xdai --jsonrpc-port=8545 --jsonrpc-cors=all --jsonrpc-interface=all --jsonrpc-hosts=all --jsonrpc-apis=web3,eth,net,parity --ws-interface=all --ws-apis=web3,eth,net,parity,pubsub --ws-origins=all --ws-hosts=all --ws-max-connections=500 --max-peers=500 --db-path=D:\Oepnethereum\data
参数详解:
--chain xda 指定连接XDAI链
--jsonrpc-port=8545 指定JSON RPC接口服务端口 8545
--jsonrpc-cors=all 指定跨域资源共享方式 all全部
--jsonrpc-interface=all 指定JSON RPC 接口监听IP地址 all 全部
--jsonrpc-hosts=all 允许访问JSON RPC 接口的主机 all 全部
--jsonrpc-apis=web3,eth,net,parity 指定JSON RPC 接口开放的API
--ws-interface=all 指定 WebSocket 协议监听IP地址
--ws-apis=web3,eth,net,parity,pubsub 指定WebSocket 协议开放的API
--ws-origins=all 允许WebSocket 协议请求的源地址 all 全部
--ws-hosts=all 允许WebSocket 协议请求的主机 all 全部
--ws-max-connections=500 允许WebSocket 协议请求最大的连接数
--max-peers=500 指定连接外部30303 端口同步数据的用户数(Win下不能使用多线程,默认值是25个连接,无法修改,会影响到同步速度。)
--db-path=D:\Oepnethereum\data 指定数据库保存的目录
Wndows 客户端运行后如下所示:并等待同步完成,大概需要1-2天时间不等。
当出现以下信息时,则表明同步完成。数据库目录大小大概为40G左右
(2)配置Netermind 客户端
发布地址:
https://github.com/NethermindEth/nethermind/releases/
当前正式版本 1.10.73
Windows 客户端,解压后
选择 Nethermind.Launcher 启动客户端,并用光标键选择 Ethereum Node 以太坊节点
选择XDAI 链 回车
选择 Fast Sync 快速同步 回车
设置API 监听参数,并按Y继续
127.0.0.1 是监听本机地址,只能本机访问,在局域网中,需要设置为 0.0.0.0 便于其他节点也能连接
输入n 不配置状态信息监控API接口
完成后,Netermind 开始启动,并同步数据,如下所示
查看控制台日志信息,当前需要下载区块高度,和总高度信息
如果在配置过程中,默认使用了127.0.0.1 监听IP地址,但后续又想改成 0.0.0.0 提供给局域网其他节点使用,可以手工编辑以下文件
在Nethermind 目录中的Configs 下找到 xdai.cfg 并用编辑器修改Host 为0.0.0.0
(3)BEE节点部署
下载地址: https://github.com/ethersphere/bee/releases
当前版本为 1.0.0 正式版,
下载 bee-windows-amd64.zip 后解压,有2个文件,一个是 bee.exe 另一个是默认的配置文件 在 packaging\scoop\bee.yaml 路径下。
正常运行bee节点只需要以下参数,可以根据需要自行编辑一个bee.yaml配置文件
api-addr: :1633
debug-api-addr: :1635
p2p-addr: :1634
clef-signer-enable: false
data-dir: D:\bee
swap-enable: true
swap-endpoint: http://10.0.0.151:8545
verbosity: trace
welcome-message: "Bzzzz Bzzzz Bzzzz"
debug-api-enable: true
full-node: true
mainnet: true
network-id: 1
password: "123456"
nat-addr: 127.0.0.1:1634
swap-initial-deposit: 0
参数详解:
api-addr: :1633 指定BEE API 监听端口 默认1633 日常需访问此接口来获取出票数据
debug-api-addr: :1635 指定BEE API 调试监听端口 默认1635(开发调试使用)
p2p-addr: :1634 指定BEE对外P2P点对点连接端口 默认1634
clef-signer-enable: false 是否使用bee-clef 管理ETH钱包地址(需要单独部署,否)
data-dir: D:\bee 指定数据保存目录
swap-enable: true 启动节点交换
swap-endpoint: http://10.0.0.151:8545 指定自建RPC服务的内外IP地址端口(为了稳定考虑这里不建议使用第三方提供的API地址)
verbosity: trace 控制台日志输出级别,trace 会更详细一些
welcome-message: "Bzzzz Bzzzz Bzzzz" 连接到其他节点的欢迎信息(bee运行后的控制台会打印连接到其他的信息,包括广告那些)
debug-api-enable: true 是否开启BEE API 调试功能,配合debug-api-addr使用
full-node: true 是否运行在全节点模式 是
mainnet: true 是否为主网,是
network-id: 1 指定网络ID 1 为主网(配合mainnet参数使用) 10为测试网
password: "123456" 指定ETH钱包地址私钥密码
nat-addr: 127.0.0.1:1634 NAT地址,如果公网IP,这里需要填写公网IP地址
swap-initial-deposit: 0 质押金额,设置为0.
启动参数
bee start –config=bee.yaml
首次启动bee 会自动创建一个以太坊地址,并时候用 配置文件中的password 参数作为私钥加密密码。首次启动后,因新账户没有余额,所以节点无法启动,需要往账户里进行注水
找到 Using ethereum addresss 后的字符串,往里面进行注水后,节点即可成功启动。
启动后,节点不能关闭。
在单机上部署多个bee节点时,需要为每个节点配置多个不同的bee.yaml 配置文件,并且配置文件中的监听端口均需要修改,如果是在内网环境中运行则还需要将p2p-addr 端口通过路由器映射出去。
api-addr: :1633
debug-api-addr: :1635
p2p-addr: :1634
目前BEE配套的管理工具尚未完善,建议配套第三方管理工具来使用。
常见问题解答:
Q: Bee的ETH私钥和地址信息存储在哪里
A: 在bee.yaml 配置参数指定的data-dir 路径中的 keys目录下,需要通过专用工具解码。
Q: Bee 运行过程中,控制台出现404 错误
A: 通常为 swap-endpoint: 指定的RPC服务器配置有误,如果是自建RPC服务器,确保运行参数正确,如 Openethereum 中的 --jsonrpc-apis 指定的API接口类型确保正确。如果是第三方的接口,确保服务商网络连接稳定(前期不少教程均使用第三方服务,导致很多人都去使用第三方服务,导致服务器压力过大而关闭了接口)
Q: Bee 运行过程中,控制台出现 Rate limit 错误
A: 通常使用了第三方提供的RPC服务接口,对于普通用户访问会有请求速率限制,BEE节点在工作时,需要频繁访问RPC接口,出现此信息时,建议改用自建RPC服务器。
Q: Bee 运行过程中,控制台出现Killed 自动退出,或”闪退”
A: 通常为使用了第三方提供的RPC服务接口,接口服务器位于外部,网络不稳定,或者使用了家用宽带,每48小时短线重连,RPC接口短时间无法联通,BEE进程会自动退出。
建议改为自建RPC服务,并放置在内网环境中,确保其稳定,BEE 1.0.0 版本程序缺少容错机制,一旦RPC无法连接,则会自动退出,有条件请对RPC服务做负载均衡和高可用措施来保障其稳定性。
Q:Bee 运行过程中,控制台提示 Error: chequebook init: chequebook not deployed by factory
A: 使用了Bee 测试网数据,即 bee.yaml 配置文件中datadir 指定的路径,使用了旧版本Goerli 测试网的数据,需要删除数据,重新注水,加入XDAI主链
评论关闭。