赞
踩
源码:https://github.com/ethereum-optimism/optimism/
文档:https://community.optimism.io/docs/developers/nodes/mainnet/
按照要求安装以上软件。
下载源码
git clone https://github.com/ethereum-optimism/optimism.git
安装模块
cd optimism
pnpm install
编译op-node
make op-node
pnpm build
这个过程需要一些时间,可以在这个时候继续做下边步骤。
下载源码
git clone https://github.com/ethereum-optimism/op-geth.git
编译
cd op-geth
make geth
一定要做,可大大减少数据同步的时间。
下载
wget https://datadirs.optimism.io/mainnet-bedrock.tar.zst
解压
进入op-geth目录下,新建datadir,并把下载的mainnet-bedrock.tar.zst解压到datadir下
mkdir datadir
cd datadir
tar xvf <<PATH_TO_DATA_DIR>>
PATH_TO_DATA_DIR 就是mainnet-bedrock.tar.zst的文件路径
进入op-geth目录下,执行
openssl rand -hex 32 > jwt.txt
把jwt.txt文件拷贝到op-node目录下,保证geth和node用jwt内容相同。(其实我感觉路径下边的jwt路径设置相同就行)
cp jwt.txt ../optimism/op-node
新建一个scripts 用来存放执行脚本
新建脚本文件,并修改文件属性为可执行
touch run-op-geth.sh
chmod +x run-op-geth.sh
#! /usr/bin/bash SEQUENCER_URL=https://mainnet-sequencer.optimism.io/ cd /data/op/src/op-geth ./build/bin/geth \ --datadir=./datadir \ --http \ --http.port=8545\ --http.addr=0.0.0.0 \ --authrpc.addr=localhost \ --authrpc.jwtsecret=./jwt.txt \ --verbosity=3 \ --rollup.sequencerhttp=$SEQUENCER_URL \ --nodiscover \ --syncmode=full \ --maxpeers=10 \ --port=30303 \ --authrpc.port=8551\ --gcmode=full \ --history.state=0 \ --history.transactions=0
参数解释
Path to op-geth directory:自己的op-geth文件夹路径。
–maxpeers=10:最大的邻节点数量,官网写的0,感觉有问题,我这里写10。
–gcmode=full:区块链垃圾回收模式,官网没配这个参数,其他地方有人写这个,我就写上了。不写也没事,默认就是full。
–history.state=0:要保留状态历史记录的最近块数。
–history.transactions:要维护事务索引的最近块数
–datadir: 为自己存放数据库的地址:前面已经做过了,这里就不用改了。
op的命令行和eth的命令行应该是一样的 可以参考
https://geth.ethereum.org/docs/fundamentals/command-line-options
最后执行
./run-op-geth.sh
这里可以使用nohup 后台启动,不然 ctrl+c, 程序就停了。如果有的端口被占用了,就换端口,比如8545、8551都可以替换,但如果端口换了,下边op-node的端口也要换,保持一致。
和op-geth方法类似,这里简写了。
touch run-op-node.sh
chmod +x run-op-node.sh
关键是这个配置文件啊,自己在这里卡了很久,这里放上我的配置文件。
#!/usr/bin/bash L1URL=https://eth-mainnet.g.alchemy.com/v2/xxxxxxxxxxxxxxxxxxxxxxxxxxx L1KIND=any NET=mainnet cd /data/op/src/optimism/op-node ./bin/op-node \ --l1=$L1URL \ --l1.rpckind=$L1KIND \ --l2=http://localhost:8551\ --l2.jwt-secret=./jwt.txt \ --network=$NET \ --rpc.addr=127.0.0.1 \ --l1.trustrpc \ --rpc.port=8547
主要是这个–l1,可以写https://ethereum.publicnode.com/,但因为用的人很多,所以请求会失败。
我是到alchemy官网https://www.alchemy.com/注册了个账号,并建立一个以太坊项目,获得一个apikey,作为L1URL。其他的配置和我保持一致就可以,如果有的端口被占用了,就换端口。
这样就是启动成功了,因为我使用了history.transactions=0,Indexing transactions就是在建立交易索引的意思。
刚启动会出现下边这个日志
这是在找邻节点。大约持续几分钟或几十分钟,我这里启动了2次,都差不多半个小时。过后就开始同步,会出现下边这个日志。
op-geth也就开始同步了
搞定!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。