区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > 币赢 > 正文

GAT:如何在以太坊2.0「Medalla多客户端测试网」上Staking?_GATE

作者:

时间:

本文将以Medalla多客户端测试网为例介绍在ETH2.0上质押的详细步骤。主要基于以下几个技术:

Ubuntuv20.04(LTS)x64服务器

GoEthereum节点(代码分支)

PrysmaticLabsETH2.0客户端——Prysm

官方多客户端公共测试网Medalla

浏览器扩展程序钱包MetaMask

Prometheus指标

Grafana控制面板

这篇指南介绍了如何:

配置新运行的Ubuntu服务器实例

配置和运行ETH1.0节点

为ETH2.0Phase0编译并配置PrysmaticLabs信标链和验证者客户端软件,并提供相应的运行服务

安装并配置Prometheus指标,并创建Grafana控制面板用于查看数据和接收警报

致谢和免责声明

这篇指南参考了各种网上资料。没有它们,就没有这篇指南。特此表示感谢!

我本人并不精通这篇指南中列出的所有技术。经过亲身尝试之后,我发现这些技术非常有趣,因此想要分享给其他人。如有任何错误或疏漏之处,烦请见谅。欢迎大家积极反馈!

读者须知

这篇指南并不适合初学者。读者需要具备一些关于以太坊、以太币、质押、Linux和MetaMask的知识。在开始阅读之前,请先运行Ubuntu服务器实例。先安装好MetaMask浏览器插件并配置好也在一定程度上有所帮助。然后,我会引导你完成接下来的步骤。

树莓派用户须知

我没有在树莓派上测试过这个指南。如果你想尝试一下,直接将下文列出的软件换成ARM版本。但是我不保证一定能成功!

要求

Ubuntu服务器实例。我使用的是v20.04(LTS)amd64服务器虚拟机。

安装并配置好的MetaMask密码学钱包浏览器扩展程序。

运行Prysm软件的最低硬件要求:—操作系统:64-bitLinux—处理器:IntelCorei5–760或AMDFX-8100或以上—内存:4GBRAM(推荐8GB)—硬盘:不低于20GB的SSD固态硬盘空间—网络:稳定的宽带连接

目前似乎还没有任何硬性硬盘要求。测试网可能只需要100GB的SSD固态硬盘就够了。对于主网来说,接下来的几年,使用1TB的SSD固态硬盘可能更好。总的来说,最好做好在必要时扩展硬盘容量的准备。

概述

这份指南很长而且细节繁多。所以我画了一张究极简化的示意图来帮助你对接下来要做的事情建立基本概念。下图中的黄色框即是本指南会覆盖到的部分。

整个流程可以概念化表述为:

启动一个Eth1节点并同步Eth1G?erli测试网

生成并激活验证者密钥对

配置信标链节点和验证者客户端

让信标链节点在验证者的帮助下施展魔法

第一步——保护你的系统

安全性很重要。由于本文不是一篇全面的安全性指南,我只介绍一些基本设置:防火墙和用户账号。本文预设你可以访问你的Ubuntu实例的控制台,并作为root用户通过SSH登陆控制台。

配置防火墙

Ubuntu20.04服务器可以使用默认的UFW防火墙来限制访问该服务器的流量。我们需要允许来自SSH、GoEthereum、Grafana和Prysm的入站流量。允许SSH——允许通过SSH连接到该服务器

Terra 2.0 社区已启动就有关如何分配 0.5% 应急资金提案的投票:6月9日消息,Terra 2.0 社区已启动就有关如何分配 0.5% 应急资金提案的投票,该提案建议将这部分资金分配给在 Terra Classic 上推出过符合市场需求的产品,包括产生了一定量的 TVL 和没有产生 TVL 的项目以及尚未推出过符合市场需求产品的项目,并提议向以上三类项目分别分配 250 万枚 LUNA、100 万枚 LUNA 和 150 万枚 LUNA。此外,该提案建议组件一个由部分 Terra 社区的长期成员组成的理事会监督分配工作。[2022/6/9 4:13:09]

注:出于安全考虑,你可能需要考虑更换你的SSH端口。这里面会有一些细微差别,你可以自己研究一下。

#ufwallow22/tcp

允许GoEthereum——允许来自GoEthereum节点的请求。

注:如果你将你的Ubuntu实例托管在本地,你需要对你的路由器和/或防火墙进行配置,允许来自这些端口的入站流量。

#ufwallow30303/tcp#ufwallow30303/udp

允许Grafana——允许将入站请求发送至Grafana网络服务器

#ufwallow3000/tcp

允许Prysm——允许对等节点之间进行连接,以便在信标链节点上进行操作。PrysmaticLabs将端口13000/TCP和12000/UDP列为默认端口。

注:如果你将你的Ubuntu实例托管在本地,你需要对你的路由器和/或防火墙进行配置,允许来自这些端口的入站流量。

#ufwallow13000/tcp#ufwallow12000/udp

可选项:如果你想要直接访问Prometheus数据服务,你也可以开启端口9090/TCP。如果你只使用Grafana查看数据,那就没必要开启这个端口。我自己就没有开启这个端口。

#ufwallow9090/tcp

现在开启防火墙并检查防火墙是否已经按照上述规则正确配置。

#ufwenable#ufwstatusnumbered

输出应如下图所示:

-UFW防火墙设置-

创建一个新的用户账户,并授予其管理权限

使用root账户登陆存在很大的风险。让我们来重新创建一个拥有管理权限的用户账户。

#adduser

你需要输入密码以及其它信息。

将新的用户加入sudo群组,即可授予其管理权限。

#usermod-aGsudo

当你以登陆时,你可以在命令行前键入sudo,即可以超级用户的权限来执行操作。

可选项:如果你使用SSH密钥连接你的实例,你需要将这个新账户与root账户的SSH密钥数据进行关联。

#rsync--archive--chown=:~/.ssh/home/

第二步——升级你的系统

注销你的root账户登录状态和SSH,使用你新创建的用户名进入Ubuntu系统,运行下列命令行来升级系统。

$sudoaptupdate&&sudoaptupgrade$sudoaptdist-upgrade&&sudoaptautoremove

第三步——安装并运行GoEthereum节点

本步的用意是安装并配置好一个将来的你的信标链节点需要连接的以太坊1.0节点。如果你倾向于使用由第三方托管的节点(比如Infura),那就跳过这一步。

沃尔玛调查其与莱特币合作的虚假新闻稿是如何发布的:9月14日消息,在与莱特币合作的假消息传出后,沃尔玛公司表示正在调查欺诈性新闻稿是如何发布的。The Litecoin Foundation和Charlie Lee也在调查此事。此外,Globenewswire表示,它还将与当局合作,“要求并促进进行全面调查,包括与此事相关的任何犯罪活动。”(Bitcoin News)[2021/9/15 23:25:08]

安装GoEthereum

GoEthereum建议使用PPA的。

$sudoadd-apt-repository-yppa:ethereum/ethereum

更新安装包并安装最新的稳定版本。

$sudoapt-getupdate$sudoapt-getinstallethereum

运行GoEthereum作为后台服务

为要运行的服务创建一个用户。此种类型的用户无法登录服务器。

sudouseradd--no-create-home--shell/bin/falsegoeth

为Eth1区块链创建数据文件夹。这是存储Eth1节点数据所必须的操作。使用-p来创建完整的路径。

$sudomkdir-p/var/lib/goethereum

设定文件夹权限。用户goeth需要权限来修改该数据文件夹。

$sudochown-Rgoeth:goeth/var/lib/goethereum

创建一个systemd服务文件来存储服务配置。我们将使用配置文件来命令你的systemd运行geth进程。

$sudonano/etc/systemd/system/geth.service

复制下列服务配置到该文件里面。

Description=EthereumgoclientAfter=network.targetWants=network.targetUser=goethGroup=goethType=simpleRestart=alwaysRestartSec=5ExecStart=geth--goerli--http--datadir/var/lib/goethereumWantedBy=default.target

那个--goerli标签是用来指定Goerli测试网的,而--http标签则是用来暴露供信标链节点连接的端口的。

可以对照下面这张屏幕截图。你的文件也应该像它一样。记得保存然后退出。

重启systemd以使更改生效。

$sudosystemctldaemon-reload

开启这项服务,并确保它正常运行。

$sudosystemctlstartgeth$sudosystemctlstatusgeth

启动服务后的输出应该像下图一样。

如果一切正常,它应该会用绿色文本显示“active(running)”。如果不正常,那就倒回去,重复这个步骤来解决这个问题。可以按Q退出。

允许geth服务在系统重启时自动启动。

$sudosystemctlenablegeth

GoEthereum会自动开始同步。你可以运行journal命令来查看进度。按Ctrl+C可以退出。

$sudojournalctl-f-ugeth.service

找到对等节点并完成Goerli测试网同步可能要花好一段时间。如果出现了延宕的情况,你可以手动添加节点来帮助同步。到这个网站找到最新的节点列表,并像这样这样修改geth服务:

动态 | Coinbase研究:学生越来越有兴趣了解区块链和加密如何使全世界的人受益:Coinbase博客发文称,研究表明,学生们越来越有兴趣了解区块链和加密如何使全世界的人受益。在2018年至2019年期间,学习区块链中对于“社会公正”的兴趣从13%上升到20%。与此同时,学生对于“安全”和“未来应用与增长”的学习兴趣在过去一年中都有所下降,分别从37%降至29%和31%至27%。[2019/8/31]

$sudosystemctlstopgeth$sudonano/etc/systemd/system/geth.service

修改“ExecStart”那一行,加入--bootnodes标签和一些最新的节点。

ExecStart=geth--goerli--http--datadir/var/lib/goethereum--bootnodes"enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4d94.237.54.114:30313,enode://119f66b04772e8d2e9d352b81a15aa49d565590bfc9a80fe732706919f8ccd00a13.250.50.139:30303"

保存文件并退出。重启服务并观察。

$sudosystemctldaemon-reload$sudosystemctlstartgeth$sudojournalctl-f-ugeth.service

结果应该像这样:

注意:在你运行信标链节点之前,要先等这个Eth1节点同步完成。可以在这里找到最新的区块。

接下来,我们要下载Prysm软件。从这里开始你可以开启一个新的命令行窗口,这样你就能继续观察Eth1节点的同步情况了。

第四步——安装Bazel

Bazel是一个开源构建工具。我们将使用它来编译Prysm软件。

我们还需要使用Curl来下载Prysm代码。

$sudoaptinstallcurlgnupg

下载BazelgpgdistributionURI并将其添加为包源。你在复制命令行时,别漏了“add”后的:sudoapt-keyadd-sudoapt-keyadd-。

$curlhttps://bazel.build/bazel-release.pub.gpg|sudoapt-keyadd-$echo"debhttps://storage.googleapis.com/bazel-aptstablejdk1.8"|sudotee/etc/apt/sources.list.d/bazel.list

根据Bazel的文档,保留组建名“jdk1.8”只是出于历史遗留原因,不再代表支持或包含哪些JDK版本。

安装Bazel。先安装最新版本,然后安装3.2.0版本。Prysm目前需要3.2.0版本。

$sudoaptupdate&&sudoaptinstallbazel$sudoaptupdate&&sudoaptinstallbazel-3.2.0

第五步——安装并构建Prysm

Prysm由两部分二进制文件组成:信标链和验证者。我们将构建这两部分。

克隆Prysm的主代码库。

$gitclonehttps://github.com/prysmaticlabs/prysm$cdprysm

使用BazelBuild来编译信标链和验证者二进制文件。

声音 | Circle首席执行官:加密和区块链产业是对公民社会最终如何运作基础的再设计:据Cointelegraph消息,Circle首席执行官Jeremy Allaire在世界银行集团和国际货币基金组织(IMF)2019年春季会议上表示,加密和区块链产业是对公民社会最终如何运作的基础根本性的重新设计。Allaire认为,加密和区块链产业不仅关乎数字支付,还关乎一种新的基础设施,用于记录重要信息,并为构建解决方案提供一个更加去中心化、更具弹性的基础。[2019/4/12]

$bazelbuild//beacon-chain:beacon-chain$bazelbuild//validator:validator

信标链文件需要一段时间才能构建完成。现在我们可以喝杯水小憩一下。或许可以读一下我的其它文章。

构建验证者文件会快一些,因为我们已经下载和/或构建好相关项了。

如果二者均构建完成,就可以执行后续步骤了。如果失败了,可以去Prysm的Discord寻求帮助。

更新Prysm

注:务必在完成本指南中的所有步骤后再执行该步骤,否则请直接跳到第六步。

如果你因为Git代码库变化而需要更新代码,请执行以下步骤获得最新文件,并创建你的二进制文件:

$cdprysm$gitpulloriginmaster$bazelbuild//beacon-chain:beacon-chain$bazelbuild//validator:validator

别忘了停止信标链和验证者服务,并将二进制文件复制到/usr/local/bin目录下,然后再开始启动服务:

$sudosystemctlstopbeaconchain$sudosystemctlstopvalidator$sudocpbazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain/usr/local/bin$sudocpbazel-bin/validator/linux_amd64_stripped/validator/usr/local/bin$sudosystemctlstartbeaconchain$sudosystemctlstatusbeaconchain<--Checkforanyerrors.$sudosystemctlstartvalidator$sudosystemctlstatusvalidator<--Checkforanyerrors.

第六步——配置信标链节点

在这一步骤中,我们将让信标链节点作为后台服务运行,如果系统重启,信标链节点进程也会自动重启。

建立账户和目录

为这项服务创建一个用户。此种类型的用户无法登录服务器。

$sudouseradd--no-create-home--shell/bin/falsebeaconchain

也要为信标链节点创建数据目录。这是存储信标链数据库所必需的。使用-p来创建完整的路径。

$sudomkdir-p/var/lib/prysm/beaconchain

设置文件夹权限。这个beaconchain用户需要权限来更改这个数据库目录。-R表示递归。

$sudochown-Rbeaconchain:beaconchain/var/lib/prysm/beaconchain

接下来,把新编译的beacon-chain二进制文件复制到/usr/local/bin目录。我们会在这个文件夹里运行它。

金色财经现场报道 海纳云CTO邹均:区块链技术难点在于如何让所有节点统一步调:金色财经现场报道,在2018区块链技术及应用峰会上,海纳云CTO邹均认为,区块链技术当前的限制难点在分布式系统中让所有节点统一步调,区块链目前存在性能限制、扩展性限制、易用性限制、兼容性跨链互联限制、存储限制、治理限制、软件升级限制等问题。[2018/3/31]

注意:每次你拉取/构建一个新版本的beacon-chain二进制文件的时候,都要做这一步骤。

$sudocpbazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain/usr/local/bin

把所有权设给我们上面创建的用户账户beaconchain。

$sudochown-Rbeaconchain:beaconchain/usr/local/bin/beacon-chain

创建和配置服务

创建一个systemd服务文件来存储这个服务的配置。

$sudonano/etc/systemd/system/beaconchain.service

复制下列内容到这个文件里面。

Description=BeaconchainWants=network-online.targetAfter=network-online.targetType=simpleUser=beaconchainGroup=beaconchainRestart=alwaysRestartSec=5Environment="ClientIP=$(curl-sv4.ident.me)"ExecStart=/bin/bash-c'/usr/local/bin/beacon-chain--p2p-host-ip=${ClientIP}--datadir=/var/lib/prysm/beaconchain--http-web3provider=http://127.0.0.1:8545'WantedBy=multi-user.target

我们是用一个环境参数来获得这个客户端的IP地址Environment="ClientIP=$(curl-sv4.ident.me)"因为ExecStart不允许内联调用。使用--p2p-host-ip=${ClientIP}是为了应对故障。

--http-web3provider标签用于定义Eth1节点的端口。如果你使用的是本地的节点,这个值就是http://127.0.0.1:8545,如果你在使用第三方服务,那就要使用一个外部的端口地址。

看看你的文件是不是也像这个截图一样。应该是一样的。然后你可以保存并退出。

重启systemd以使变更生效。

$sudosystemctldaemon-reload

注意:如果你在本地运行Eth1节点,你需要等待本地的节点同步区块链同步完成,然后才能开始beaconchain服务。使用这个命令行来检查进度:

sudojournalctl-f-ugeth.service。

启动服务并检查它有没有正常运行。

$sudosystemctlstartbeaconchain$sudosystemctlstatusbeaconchain

屏幕上的输出看起来应该是这样的。

如果你正确地完成了上述步骤,它应该会用绿色字体显示“active(running)”。如果没有这么显示,你要倒回去,重复这些步骤,来修复问题。按Q可以退出。

让信标链服务能随系统重启而自动重启。

$sudosystemctlenablebeaconchain

然后信标链节点会开始同步。可能需要几个小时才能完成同步。你可以运行journal命令来检查进度。按Ctrl+C来退出。

$sudojournalctl-f-ubeaconchain.service

命令行窗口的输出会给你来自Eth1区块链的、正在处理的保证金的状态信息。

现在你的信标链节点已经作为一项服务在后台运行了。恭喜!虽然节点还在同步,我们可以开始下一步了。

第七步——完成Medalla测试网的引导流程

在启动验证者客户端之前,我们需要先生成我们的验证者密钥对。官方的Eth2LaunchPad会引导你完成这个流程,不过,在你开始存入保证金之前,你需要获得一些GoerliETH。

获得GoerliETH

遵照下列步骤:

点击MetaMask浏览器插件并登录

点击顶部的下拉菜单,选择Goerli测试网

点击你的用户名,它会自动复制下你的GoerliETH钱包地址;

你可以通过这个经过认证的水龙头来获得Goerli测试网ETH,或者到ethstakerDiscord群组的goerli-eth频道内使用机器人命令:!goerliEth获取。

如果你在计划运行多个验证者,你可以请求自己想要的额度

等到GoerliETH出现在你的钱包里,你就可以操作下一步了

生成验证者数据

访问官方的Eth2LaunchPad网站,跟随指引完成操作。如果一切顺利,它就能生成一个验证者密钥文件。

根据引导流程、使用命令行工具所生成的JSON文件会存储在你运行“验证者密钥生成”脚本的目录下的eth2.0-deposit-cli/validator_keys文件夹里。当我们要运行验证者的时候,我们需要从这个位置引用我们的密钥。如果你需要通过SFTP发送到你的服务器,那可以放心这么做。本指南假定这个文件会存储在这个目录:$HOME/eth2.0-deposit-cli/validator_keys。

第八步——创建验证者钱包

首先我们要使用Prysm的验证者二进制文件来创建一个钱包,就基于上一步我们所创建的密钥。

$cdprysm$bazelrun//validator:validator--accounts-v2import--keys-dir=$HOME/eth2.0-deposit-cli/validator_keys

你会被程序询问指定一个钱包的存储位置。你可以直接按回车,这样它会存储到默认位置。你还需要输入一个新的钱包口令,请务必把这个口令保管在安全的地方。

接下来你要输入你在Eth2LaunchPad网站上创建验证者密钥时候使用的口令。如果你正确输入了,这个账户就会导入到这个新钱包中。

Enterawalletdirectory(default:/home/ethstaker/.eth2validators/prysm-wallet-v2):Newwalletpassword:Confirmpassword:INFOaccounts-v2:Successfullycreatednewwalletwallet-path=/home/ethstaker/.eth2validators/prysm-wallet-v2Enterthepasswordforyourimportedaccounts:Importingaccounts,thismaytakeawhile...Importingaccounts...100%Successfullyimported40accounts,viewallofthembyrunningaccounts-v2list

确认验证者账户创建成功。

$bazelrun//validator:validator--accounts-v2list

这就完成啦。现在这个验证者钱包已经配置好了,我们将启动验证者作为一个后台服务。

第九步——配置验证者客户端

建立账户和存储目录

我们将让验证者能作为一项后台服务运行,并且在系统重启时这个线程会自动重启。

为要运行的服务创建一个用户账户。此种类型的账户无法登录服务器。

$sudouseradd--no-create-home--shell/bin/falsevalidator

为验证者客户端创建数据存储目录,也就是跟验证者相关的数据库存放的地方。使用-p来创建完整的地址。

$sudomkdir-p/var/lib/prysm/validator

设置目录的权限。这个validator用户需要修改这个数据目录的权限。

$sudochown-Rvalidator:validator/var/lib/prysm/validator

现在,复制我们之前编译好的validator二机制文件到这个/usr/local/bin目录。

注意:每次你拉取/构建一个新版本的validator二进制文件,都要做这一步。

$cdprysm$sudocpbazel-bin/validator/linux_amd64_stripped/validator/usr/local/bin

把用户和群组权限设给validator用户。

$sudochown-Rvalidator:validator/usr/local/bin/validator

创建和配置服务

创建一个systemd服务文件来存储服务配置。

$sudonano/etc/systemd/system/validator.service

完全复制下列内容到这个文件中,就除了下面的两个例外:

用你正在使用的用户名替代那两个。

用你的PrysmPOAP参与奖章值替换掉,这样就能获得特殊的NFT奖品!例如--graffiti"abcdefg12345"

Description=ValidatorWants=network-online.targetAfter=network-online.targetType=simpleUser=validatorGroup=validatorRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/validator--datadir/var/lib/prysm/validator--wallet-dir/home//.eth2validators/prysm-wallet-v2--wallet-password-file/home//.eth2validators/prysm-wallet-v2/password.txt--graffiti""WantedBy=multi-user.target

检查你的文件,看看是不是跟这个截图一样。保存并退出。

password.txt是必需的,因为--wallet-password-file需要指定一个口令文件。因此我们就创建一个,然后存储在那个位置。

$cd/home//.eth2validators/prysm-wallet-v2$touchpassword.txt$nanopassword.txt

把你的钱包password输入到这个文件中。就像下图一样,然后保存并退出。

重启系统以使变更生效。

$sudosystemctldaemon-reload

启动服务并确保正常运行。

$sudosystemctlstartvalidator$sudosystemctlstatusvalidator

你的屏幕输出应该看起来像这样。

如果你正确地完成了上述步骤,它应该会用绿色字体显示“active(running)”。如果没有这么显示,你要倒回去,重复这些步骤,来修复问题。按Q可以退出。

让信标链服务能随系统重启而自动重启。

$sudosystemctlenablevalidator

你可以运行journal命令来检查进度。按Ctrl+C来退出。

$sudojournalctl-f-uvalidator.service

等信标链真的启动之后,可能还要等几个小时来激活你的验证者账户。验证者进程的输出会显示进度。

Aug0203:03:25ETH-STAKER-01validator:time="2020-08-0203:03:25"level=infomsg="WaitingforbeaconchainstartlogfromtheETH1.0depositcontract"prefix=validator

你可以通过beaconcha.in检查自己的验证者的状态。只需搜索你的验证者公钥即可。网站上很快就会显示出来。

就这么简单。我们已经开始运行信标链节点和验证者客户端了。恭喜恭喜,你很棒!

标签:SUDOGATGATEONCSudoswapgate币本位gate.io官网入口MOONCAT

币赢热门资讯
RAT:摩根士丹利(Morgan Stanley)策略师推荐比特币,因为央行加强了印钞业务_国内可以做加密货币吗

摩根士丹利投资管理公司的首席策略师兼新兴市场负责人建议,在央行实行大规模印钞政策的背景下,将比特币作为股票的另类投资。他说,在股市挣扎的同时,黄金和加密货币等另类资产可能会保持良好状态.

GATE:Gate.io 关于上线GOF(高尔夫)和GT将提名上线Golff流动性DeFi平台的公告_HTT

GOF是一个DeFi流动性质押挖矿平台,目前已经有质押GXS获得GOF等产品,Golff平台官方网站为:https://www.golff.finance/GT将提名上线Golff流动性DeFi.

CHA:关于TOROCUS20暂停提币的公告_PEPERUNNER

???????????????????????????????????????????????????????????????????公告编号2020091402各位关心ZBG.

INJ:关于NINJA上线CITEX P板并举办上线活动的公告_NINJA

尊敬的CITEX用户: NINJA即将上线CITEXP板交易区,并开放NINJA/BTC交易对.

USDT:【DeFi系列】--DMD钻石挖矿教程(EOS)_USDAP币

钻石项目概况: 钻石项目没有创始人、没有投资人、没有预挖、没有增发、全民平等。希望能推动EOSDeFi社区的大发展.

DEFI:BKEX Global 关于开启DeFi挖矿宝第八期抢购的公告_AllWin DeFi

亲爱的BKEXer:??BKEXGlobal将于2020年9月15日16:00~2020年9月16日16:00开启DeFi挖矿宝第八期抢购.