草庐IT

以太坊2.0客户端Prysm搭建并运行节点记录

我也不知道该起什么名字 2023-04-12 原文

前言

主要的参考文档:Prysm官方文档
系统情况:Ubuntu 18.04 并已更换为阿里源
配置要求:


一、Prysm是什么?

Prysm is an implementation of the Ethereum proof-of-stake consensus specification.

使用Prysm运行节点和stake ETH可分为以下三个步骤:

  1. 使用执行层客户端配置execution node。
  2. 使用共识层客户端Prysm配置beacon node。
  3. 使用Prysm(可选)配置a validator和 stake ETH。

二、安装及运行步骤

1.prysm安装

安装Prysm的方法主要有三种:

  • 方法一:使用Docker安装

可能是网络问题,多次尝试该方法均连接失败。现把拉取及启动代码附上:

①使用docker拉取prysm镜像

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

②prysm容器启动
新建prysm目录

mkdir prysm && cd prysm

prysm容器启动(前提要已经生成jwt.hex文件,该文件的生成方式可参见下文

docker run -itd --restart=unless-stopped  \
   -v /etc/localtime:/etc/localtime \
   -v /etc/timezone:/etc/timezone \
   --name beacon-node \
   -v $(pwd)/data:/data -v $(pwd)/data/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://127.0.0.1:8551 \
  --accept-terms-of-use=true

跟踪beacon-node日志输出

docker logs -f beacon-node
  • 方法二:使用脚本安装

本步骤是官网上推荐,也是我成功安装的方式

①创建文件夹

sudo mkdir ethereum
cd ethereum
sudo mkdir consensus
cd .. #返回上一级目录
sudo mkdir execution

即为这样的目录结构:


②切换到consensus目录下

cd ethereum/consensus

③新建prysm数据文件夹

sudo mkdir prysm && cd prysm

④拉取脚本并修改文件权限

curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh

⑤生成JWT Secret

beacon node和execution node之间的HTTP连接需要使用JWT令牌进行身份验证。有几种方法可以生成这个JWT令牌:

  • 使用在线生成网站,将其复制并拷贝到新建的jwt.hex文件夹中。
  • 通过OpenSSL命令生成:openssl rand -hex 32 | tr -d "\n" > "jwt.hex"
  • 使用geth客户端生成
  • 使用prysm生成(这里是使用了这种方式)
    切换到prysm目录下,执行:
    ./prysm.sh beacon-chain generate-auth-secret #这种方式生成的jwt.hex文件路径在consensus目录下
注:可以把jwt.hex文件放置在任何位置,只要将后续命令中的jwt.hex文件路径写成实际存储路径即可。
这里使用的是第四种方法,其绝对路径为 :/opt/ethereum/consensus/jwt.hex
  • 方法三:使用使用 Bazel 从源代码构建(不了解,没试过)

2.运行geth客户端

①保证系统已安装go(1.18+)和c compiler,安装geth的教程可参考

官网对geth客户端的版本要求为1.10.22+
②启动geth客户端(在以太坊的执行层中运行一个执行节点)

geth --http --http.api eth,net,engine,admin --authrpc.jwtsecret /opt/ethereum/consensus/jwt.hex 

参数定义可参见:网站介绍

同步可能需要很长时间——从几个小时到几天。您可以在执行节点同步的同时进行下一步。
可另打开终端,通过以下命令检查geth执行节点情况

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

若出现以下响应,则证明节点已完成同步:

3.使用prysm运行beacon node

在prysm文件夹下执行

./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=/opt/ethereum/consensus/jwt.hex --suggested-fee-recipient=0x01234567722E6b0000012BFEBf6177F1D2e9758D9

Your beacon node will now begin syncing. This usually takes a couple days, but it can take longer depending on your network and hardware specs.
Congratulations - you’re now running a full, Merge-ready Ethereum node. To check the status of your node, visit Check node and validator status.

可以使用以下命令查询节点同步情况

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

根据教程,如果同步完成则返回{"syncing":false}
但是跑了一下午后查询的状态是:

有关以太坊2.0客户端Prysm搭建并运行节点记录的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  3. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

  7. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  8. ruby-on-rails - before_filter 运行多个方法 - 2

    是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://

  9. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  10. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

随机推荐