Swarm BZZ 快速部署指南

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主链

作者: Su

等待完善