Besu参考文档:Using Ethash (Pow) - Hyperledger Besu 本文章依据环境:OpenJdk 16、Besu 21.1.7、Windows
1、安装Java环境
注意要求Java11以上,可以使用OpenJdk,Download the Microsoft Build of OpenJDK | Microsoft Docs 点下一步就行了
2、安装Besu
参考文档:Install Binary Distribution - Hyperledger Besu、下载地址Releases · hyperledger/besu · GitHub
- Linux/Mac的二进制编译过程请参考GitHub,因为我只有Windows环境的机器,此处不做介绍了,如有问题可以留言
- Windows版本在GitHub的release中提供了批处理脚本的版本,如图,上方的地址是Windows版的,可以直接配置环境变量就可使用besu命令;下方是二进制源码,需要编译
3、创建目录
- 创建目录data,每个节点都需要区块链数据的数据目录,节点启动时,Besu 会保存目录中的节点密钥。
- 创建目录config方便管理配置文件和创世文件等
4、编辑创世文件
{
"config": {
"constantinoplefixblock": 0,
"ethash": {
"fixeddifficulty": 1000
},
"chainID": 21066
},
"nonce": "0x42",
"gasLimit": "0x1000000",
"difficulty": "0x10000",
"alloc": {
"fe3b557e8fb62b89f4916b721be55ceb828dbd73": {
"privateKey": "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "0xad78ebc5ac6200000"
},
"f17f52151EbEF6C7334FAD080c5704D77216b732": {
"privateKey": "ae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f",
"comment": "private key and this comment are ignored. In a real chain, the private key should NOT be stored",
"balance": "90000000000000000000000"
}
}
}
data-path="C:/Users/Administrator/Documents/ethlink/data"
genesis-file="C:/Users/Administrator/Documents/ethlink/config/SKC-privateNetworkGenesis.json"
miner-enabled=true
miner-coinbase="0x0000000000000000000000000000000000000000"
p2p-host="192.168.1.11"
p2p-port=30301
max-peers=42
bootnodes=["enode://3bf8bcebb……2d@192.168.1.11:30301"]
rpc-http-enabled=true
rpc-http-host="192.168.1.11"
rpc-http-port=2828
rpc-http-cors-origins=["all"]
rpc-ws-enabled=true
rpc-ws-host="192.168.1.11"
rpc-ws-port=2829
host-allowlist=["*"]
rpc-http-api=["ADMIN","ETH","NET","WEB3"]
logging="DEBUG"
miner-coinbase:挖掘并指定帐户(0x0……为链的第一个用户)以支付采矿奖励
5、启动服务
引导节点使用如上配置文件(privateNetworkConfig.json)启动,将第一个节点作为引导节点启动,并复制保留enodeURL备用
besu --config-file=config/privateNetworkConfig.json
节点启动时,enode URL 会显示。复制 enode URL,在以下步骤中指定节点-1作为引导节点。
enode://437876735f755774……c349cd708a63c9c26@192.168.1.221:30301
6、加入新节点
将引导节点中的区块创世文件(privateNetworkGenesis.json)复制到新的节点服务器上,仅使用同一个创世文件即可,网络配置使用命令参数就够了,不用单独配置文件了,执行以下命令
besu --data-path=data --genesis-file=config/privateNetworkGenesis.json --bootnodes=enode://3bf8bcebbd……6ef5c611528fa9da4@192.168.1.221:30301 --p2p-host='192.168.1.222' --p2p-port=30302
- data-path:数据目录
- genesis-file:创世文件
- bootnodes:引导节点的enodeURL
- p2p-host:每个节点可访问的外部IP,用于被引导节点发现
- p2p-port:每个节点有自己的端口,用于被引导节点发现,各节点不可重复
7、测试网络可用
可使用PostMan或curl等方式,POST请求引导节点地址使用RPC端口: 如:192.168.1.221:2828 请求体(method参考官方API:Besu API Methods - Hyperledger Besu):{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}
部署在公网注意事项
- 建议两个引导节点或以上,参考:Configure Bootnodes - Hyperledger Besu
- 保护enode信息安全
- 各节点由于需要相互通信所以需要适当对外暴露地址及端口,所以一定要配置好防火墙,保证节点网络安全
- 其余注意事项可详见官方文档的各处提示。
至此一个多节点的私链就部署完成了,链的地址就是引导节点的地址,可以进行合约发布、Dapp开发了; 如有疑问欢迎留言~~
接下来会搭建本地开发环境以及编写代币合约并部署到私链
|