Ethereum&Arbitrum&Optimism节点搭建

Ethereum节点搭建

参考资料:

以太坊2.0客户端Prysm搭建并运行节点记录_我也不知道该起什么名字的博客-CSDN博客
部署prysm mainnet_51CTO博客_yapi部署
https://github.com/prysmaticlabs/prysm/issues?page=3&q=is%3Aissue+is%3Aclosed
https://github.com/ethereum/go-ethereum

Ethereum节点搭建可基于源码或基于docker。这里介绍基于docker的方式搭建。该方式需要启动两个客户端prysm 和 geth客户端,且两者需要通信

  1. 从https://hub.docker.com/拉取最新镜像,注意看要不要关掉docker镜像源,如阿里云等,否则可能拉不到最新版本。 
    docker pull ethereum/client-go
    docker pull prysmaticlabs/prysm-beacon-chain
  2. 生成 jwt.hex用于两个客户端之间通信时的身份验证。jwt.hex文件可以放在任何位置,因为我这里准备把下载的链数据放在/data/eth下,所以我这里就在/data/eth下生成jwt.hex,生成jwt.hex执行以下命令即可。

    openssl rand -hex 32 | tr -d "\n" > "jwt.hex"
    
  3. 创建docker网络,我这里叫mynet 用于两个客户端之间可以互相通信

    docker network create -d bridge mynet
  4. 启动geth。 指定参数 --network=mynet      --authrpc.jwtsecret /root/.ethereum/jwt.hex 

    docker run -itd -p 8545:8545 -p 30303:30303 -p 8551:8551 --name eth -v /data/eth:/root/.ethereum --network=mynet ethereum/client-go  --http --http.addr "0.0.0.0" --authrpc.jwtsecret /root/.ethereum/jwt.hex  --syncmode "full" --authrpc.addr eth --authrpc.port 8551    --authrpc.vhosts "*" --mainnet 
  5. 启动prysm。指定参数 --network=mynet   --execution-endpoint=http://eth:8551 ,eth为容器名称

    docker run -itd --restart=unless-stopped     -v /etc/localtime:/etc/localtime    -v /etc/timezone:/etc/timezone    --name beacon-node -v /data/eth/prysm:/data  -v /data/eth/jwt.hex:/opt/jwt.hex   --network=mynet    prysmaticlabs/prysm-beacon-chain  --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://eth:8551   --accept-terms-of-use=true

下载的区块链数据默认存放在  容器的~/.ethereum/目录下 可添加参数 --datadir 指定目录,这里使用 -v参数挂载文件,将数据存放在/data/eth下。容器启动后需等待几十分钟到几个小时可能才会开始同步数据,等着吧。 可通过进入geth客户端进入查看同步情况。

Arbitrum节点搭建

这里也介绍使用docker的方式搭建节点,在装有docker的环境中,打开终端执行此命令即可。

docker run -itd --name=arb -v /data/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.14-2baa834 --l1.url=https://ethereum.publicnode.com --l2.chain-id=42161 --http.api=net,web3,eth,debug,admin --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url=wss://arb1.arbitrum.io/feed   --init.url="https://snapshot.arbitrum.io/mainnet/nitro.tar"  --node.rpc.classic-redirect="https://arb-mainnet.g.alchemy.com/v2/rwQ5PfDeqB11Ptak2pb_SEI0zR9TjZXH"

参数解释:

/data/arbitrum为数据存放磁盘上的路径
offchainlabs/nitro-node:v2.0.14-2baa834为镜像名
--l1.url=https://ethereum.publicnode.com 主链数据同步的链接地址
--init.url="https://snapshot.arbitrum.io/mainnet/nitro.tar" 初始化链数据链接

Optimism节点搭建

搭建optimism节点有两种方式,基于docker和基于源码。基于源码的方式比较复杂且过程中遇到的问题较多。这里介绍使用docker的方式搭建。先启动节点,从头同步区块的方式较慢且不稳定,所以我们使用先下载快照数据再进行同步的方式。

官方参考资料

https://community.optimism.io/docs/developers/build/run-a-node/#non-docker-configuration

https://github.com/smartcontracts/simple-optimism-node

拉取镜像

optimism节点依赖的镜像中op-node镜像和op-geth镜像在谷歌云上。国内无法直接拉取,需通过谷歌云上传至阿里云,再通过阿里云拉取到本地。

镜像地址

https://console.cloud.google.com/artifacts/docker/oplabs-tools-artifacts/us/images/op-node

https://console.cloud.google.com/artifacts/docker/oplabs-tools-artifacts/us/images/op-geth

参考教程

 使用GoogleCloudShell解决99%的镜像拉取问题 - 知乎

2:下载快照

下载

aria2c -c -o /data/op/mainnet-bedrock.tar.zst https://datadirs.optimism.io/mainnet-bedrock.tar.zst > aria2c.log 2>&1 &

解压

zstd -d /bigdata/op/mainnet-bedrock.tar.zst -o /bigdata/op/mainnet-bedrock.tar.zst/torrent_downloads/bedrock.tar

参考链接

https://github.com/smartcontracts/simple-optimism-node/issues/84 

3:启动容器

进入simple-optimism-node文件夹

启动: 

docker compose --profile current up -d

停止:

docker compose --profile current down

日志查看:

docker compose logs 

启动成功后若没有报错,需等待几分钟到几十分钟才会开始同步。

你可能感兴趣的:(区块链,区块链)