部署以太坊2.0

搭建准备

配置 JWT 身份验证

信标节点和执行节点之间的 HTTP 连接需要使用JWT 令牌进行身份验证。

https://seanwasere.com/generate-random-hex/
生成出来的值如:d874f729a21a8b261aec0fe8b6f0f19b060c409fc05a0352d77f2ccbf6e867b8

部署执行节点geth

运行geth

~# geth --goerli --http.api "eth,net,engine,admin" --http --http.addr "0.0.0.0" --authrpc.addr 0.0.0.0""  --cache 2048 --maxpeers 30 --allow-insecure-unlock --ignore-legacy-receipts --authrpc.jwtsecret /data/goerli/jwt.hex --datadir /data/goerli

参数解释:

  • --datadir:数据库和密钥库的数据目录(默认:"~/.ethereum")
  • --http.api:指定需要调用的HTTP-RPC API接口,默认只有eth,net,web3
  • --http:启动HTTP-RPC服务(基于HTTP的)
  • --http.addr:HTTP-RPC服务器监听地址(default: "localhost")
  • --cache:分配给内部缓存的内存的兆字节 (默认值为: 1024)
  • --maxpeers:最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
  • --allow-insecure-unlock:允许使用不安全的账户解锁
  • --authrpc.port:设置认证监听的api端口,默认为8551
  • -authrpc.addr:允许连接认证监听api端口的IP地址
  • --authrpc.vhosts:允许连接认证监听api端口的域名
  • --authrpc.jwtsecret:设置身份验证的RPC接口的JWT私钥的路径

部署共识节点Prysm

下载Prysm镜像

docker pull gcr.io/prysmaticlabs/prysm/beacon-chain:v3.1.1

运行prysm

docker run -itd --restart=unless-stopped  \
   -v /etc/localtime:/etc/localtime \
   -v /etc/timezone:/etc/timezone \
   --name prysm \
   -v $(pwd)/data:/data -v $(pwd)/jwt.hex:/opt/jwt.hex \
  --network=host \
   gcr.io/prysmaticlabs/prysm/beacon-chain:v3.1.1 \
  --datadir=/data \
  --jwt-secret=/opt/jwt.hex \
  --rpc-host=0.0.0.0 \
  --grpc-gateway-host=0.0.0.0 \
  --monitoring-host=0.0.0.0 \
  --execution-endpoint=http://10.8.2.241:8551 \
  --accept-terms-of-use=true  \
  --goerli

参数说明:

  • --datadir:数据库和密钥库的数据目录(默认:"~/.ethereum")
  • --authrpc.jwtsecret:设置身份验证的RPC接口的JWT私钥的路径
  • --rpc-host:允许连接RPC服务的主机(默认值:“127.0.0.1”)
  • --grpc-gateway-host:允许连接网关的主机(默认值:“127.0.0.1”)
  • --monitoring-host:用于监听和响应prometheus监控的主机(默认值:“127.0.0.1”)
  • --execution-endpoint:连接执行客户端的http端点。格式为“http://localhost:8551
  • --accept-terms-of-use:接受条款和条件(用于非交互环境)(默认值:false)

检查节点是否同步完成

检查geth执行节点

使用以下命令检查节点的同步状态:

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545

如果节点已完成同步,将看到响应:

{"jsonrpc":"2.0","id":1,"result":false}

检查prysm共识节点

使用以下命令检查节点的同步状态:

# curl http://localhost:3500/eth/v1alpha1/node/syncing

如果节点已完成同步,将看到响应:

{"syncing":false}

geth常用命令

  • 查询最新区块高度
# curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0xedd589"}
  • 根据区块高度获取区块信息
# curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0xedd592", true],"id":1}' http://localhost:8545
  • 根据交易哈希查询交易信息
curl -H Content-Type:application/json -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xc8fcaf677d0f28c21e1c0bfab5470fa026bc6379eb9421805837a76e7517b3f5"],"id":1}' http://localhost:8545
  • 返回给定地址的帐户的余额
# curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xb8001c3ec9aa1985f6c747e25c28324e4a361ec1", "latest"],"id":1}' http://localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0x6c74cac7c08da0ab59"}

端口说明

端口/协议 防火墙规则 原因/注意事项
8545/TCP 阻止所有流量。 这是执行节点的查询 API 的 JSON-RPC 端口。您(和应用程序)可以使用此端口检查执行节点状态,查询执行层链数据,甚至提交交易。这个端口一般不应该暴露给外界。
3500/TCP 阻止所有流量。 这是信标节点查询 API 的 JSON-RPC 端口。您(和应用程序)可以使用此端口检查信标节点状态并查询共识层链数据。这个端口一般不应该暴露给外界。
8551/TCP 阻止所有流量。 您的信标节点使用此端口连接到执行节点的引擎 API 。只有当您的本地信标节点连接到远程执行节点时,才应允许通过此端口的入站和出站流量。
4000/TCP 阻止所有流量。 您的验证器使用此端口通过gRPC连接到您的信标节点。只有当您的本地验证器连接到远程信标节点时,才应允许通过此端口的入站和出站流量。
*/UDP+TCP 允许出站流量。 为了发现对等点,Prysm 的信标节点通过随机端口拨出。允许来自任何端口的出站 TCP/UDP 流量将有助于 Prysm 找到对等点。
13000/TCP 允许入站和出站流量。 在我们发现对等点后,我们通过此端口拨叫它们为libp2p建立持续连接,所有 gossip/p2p 请求和响应都将通过该连接流动。
12000/UDP 允许入站和出站流量。 你的信标节点公开这个 UDP 端口,以便其他以太坊节点可以发现你的节点,请求链数据,并提供链数据。
30303/TCP+UDP 允许入站和出站流量。 30303/TCP是您的执行节点的侦听器端口,30303/UDP而是它的发现端口。此规则允许您的执行节点连接到其他对等节点。请注意,某些客户端30301默认使用。

参考文档

 

posted @ 2022-10-12 19:08  小吉猫  阅读(1219)  评论(1编辑  收藏  举报