区块链optimism主网节点搭建

文章目录

  • 官方参考资料
  • 编译
    • 环境搭建
    • 编译Optimism Monorepo
    • 编译op-geth
  • 执行
    • 下载数据快照
    • 生成op-geth和op-node通信密钥
    • op-geth
      • 执行脚本
    • op-node
      • 执行脚本
  • 启动日志
    • op-geth
    • op-node

本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。

官方参考资料

源码:https://github.com/ethereum-optimism/optimism/
文档:https://community.optimism.io/docs/developers/nodes/mainnet/

编译

环境搭建

在这里插入图片描述
按照要求安装以上软件。

编译Optimism Monorepo

下载源码

git clone https://github.com/ethereum-optimism/optimism.git

安装模块

cd optimism
pnpm install

编译op-node

make op-node
pnpm build

这个过程需要一些时间,可以在这个时候继续做下边步骤。

编译op-geth

下载源码

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和op-node通信密钥

进入op-geth目录下,执行

openssl rand -hex 32 > jwt.txt

把jwt.txt文件拷贝到op-node目录下,保证geth和node用jwt内容相同。(其实我感觉路径下边的jwt路径设置相同就行)

cp jwt.txt ../optimism/op-node

op-geth

新建一个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-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。其他的配置和我保持一致就可以,如果有的端口被占用了,就换端口。

启动日志

op-geth

在这里插入图片描述

这样就是启动成功了,因为我使用了history.transactions=0,Indexing transactions就是在建立交易索引的意思。

op-node

刚启动会出现下边这个日志
在这里插入图片描述

这是在找邻节点。大约持续几分钟或几十分钟,我这里启动了2次,都差不多半个小时。过后就开始同步,会出现下边这个日志。
在这里插入图片描述

op-geth也就开始同步了
在这里插入图片描述

搞定!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速排序的非递归实现

上期我们实现了快速排序的递归实现&#xff0c;但是我们知道如果递归深度太深&#xff0c;栈就会溢出&#xff0c;所以我们本期将为大家讲述快速排序的非递归实现&#xff0c;我们需要用到栈的数据结构&#xff0c;我们知道栈中的数据全是在堆区开辟的空间&#xff0c;堆的空间…

大数据分析与应用实验任务十一

大数据分析与应用实验任务十一 实验目的 通过实验掌握spark Streaming相关对象的创建方法&#xff1b; 熟悉spark Streaming对文件流、套接字流和RDD队列流的数据接收处理方法&#xff1b; 熟悉spark Streaming的转换操作&#xff0c;包括无状态和有状态转换。 熟悉spark S…

Leetcode—190.颠倒二进制位【简单】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—190.颠倒二进制位 算法思路 实现代码 class Solution { public:uint32_t reverseBits(uint32_t n) {uint32_t res 0;for(int i 0; i < 32 && n > 0; i) {res | (n & 1) << (31 - i);n >&…

SpringDataJPA基础

简介 Spring Data为数据访问层提供了熟悉且一致的Spring编程模版&#xff0c;对于每种持久性存储&#xff0c;业务代码通常需要提供不同存储库提供对不同CURD持久化操作。Spring Data为这些持久性存储以及特定实现提供了通用的接口和模版。其目的是统一简化对不同类型持久性存储…

Verilog学习 | 用initial语句写出固定的波形

initial beginia 0;ib 1;clk 0;#10ia 1; #20ib 0;#20ia 0; endalways #5 clk ~clk; 或者 initial clk 0;initial beginia 0;#10ia 1; #40ia 0; endinitial beginib 1;#30 ib 0; endalways #5 clk ~clk;

Linux本地部署1Panel服务器运维管理面板并实现公网访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

一些系统日常运维命令和语句

一、前言 记录一些日常系统运维的命令和语句 二、linux命令与语句 1、linux查看各目录使用磁盘情况 du -h /home home为目录 du -h /home 2.查看内存使用情况 free -h 3、查看进程和CPU使用情况 top top 三、数据库语句 1、统计mysql数据库表数量 SELECT COUNT(*) A…

【Linux--基础IO】

目录 一、系统文件接口1.1 open1.2 write1.3 read1.4 close 二、文件描述符三、文件描述符的分配规则四、重定向4.1输出重定向的原理4.2dup2函数的系统调用 五、缓冲区5.1代码及现象5.2原理解释5.3C语言FILE 六、文件系统6.1磁盘的介绍6.1磁盘的分区管理 7、软硬连接7.1软连接7…

基于FPGA的温度控制系统设计(论文+源码)

1.系统设计 本次基于FPGA的智能温度控制系统&#xff0c;以FPGA为控制核心&#xff0c;采用自顶向下的设计方法&#xff0c;按照模块化设计的思路分别实现各个模块&#xff0c;再加以整合实现整个系统&#xff0c;从而达到了温度控制的目的。系统以水箱为被控对象&#xff0c;…

【Spring 源码】 深入理解 Bean 定义之 BeanDefinition

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

Python文件操作(txt + xls + json)

文章目录 简介1、使用with_open读取和保存&#xff1a;.txt .bin&#xff08;二进制文本&#xff09;1.1、with open语句详解1.1、项目实战 2、使用pandas读取和保存&#xff1a;.xls .xlsx2.1、pandas简介2.2、环境配置2.3、项目实战 3、 使用json.dump读取和保存&#xff1…

如何查询川菜食材配料的API接口

在当今的美食文化中&#xff0c;菜谱不只是一张简单的食谱&#xff0c;更是了解美食文化和饮食知识的重要途径。然而&#xff0c;若没有准确的食材配料&#xff0c;烹制出的每道菜品都将难以达到完美的味道。因此&#xff0c;为了更好地满足人们对于菜谱和食谱的需求&#xff0…

Avalonia中如何实现文件拖拽上传

前言 前面我们讲了在Avalonia中如何将View事件映射到ViewModel层感兴趣的读者可以看一下&#xff0c;本章我们将讲一下在Avalonia框架下如何实现文件和文字的拖拽到指定区域进行处理和上传。 先看效果 界面设计比较简单&#xff0c;还是在前一张的基础上加了一个指定区域&…

Vue使用百度地图以及实现轨迹回放 附完整代码

百度地图开放平台 https://lbs.baidu.com/index.php?title%E9%A6%96%E9%A1%B5 javaScript API https://lbs.baidu.com/index.php?titlejspopularGL 百度地图实例 https://lbsyun.baidu.com/index.php?titleopen/jsdemoVue Baidu Map文档 https://dafrok.github.io/vue-baidu…

【环境搭建】ubuntu22安装ros2

基于某种特殊需求&#xff0c;从Ubuntu16到22目前都尝试过安装ros、ros2 参考1&#xff1a;http://t.csdnimg.cn/DzvSe 参考2&#xff1a;http://t.csdnimg.cn/sOzr1 1.设置locale sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 s…

基于ssm vue协同过滤算法的图书推荐系统源码和论文

基于ssm vue协同过滤算法的图书推荐系统源码和论文742 idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多行业…

[原创][6]探究C#多线程开发细节-“ConcurrentDictionary<T,T>解决多线程的无顺序性的问题“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

Matlab 点云曲线探测(算法不稳定,仅用于学习)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的曲线探测的方法,不过我没有复现出论文中那样的效果,可能是理解有误,但这个算法仍然是很有意思,故这里也对其进行记录。 按照论文中的思路,首先我们需要通过一种线性强度图来计算确定每个点的法…

学好操作系统需要的前置知识

1. 态度&#xff1a;不要等一切都准备好了再前行 如果把一切你可能会说&#xff0c;没有这些基础知识&#xff0c;我每看一篇文章&#xff0c;知识就铺天盖地席卷过来&#xff0c;仿佛每一个知识点都准确地打在了自己的盲点上&#xff0c;这该怎么办呢&#xff1f; 我非常能理…

一对多群聊

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…