以太坊2.0主网质押教学_ECOIN:ChatCoin

本文基于PrysmaticLabs的Prysm客户端,详细讲解如何参与以太坊2.0主网质押。主要基于以下几个技术:

Ubuntuv20.04(LTS)x64服务器

GoEthereum节点(Github)

PrysmaticLabsETH2.0客户端—Prysm(代码分支)

浏览器插件加密钱包MetaMask

提示:参与质押至少需要32ETH以及额外的gas费。在搞清楚之前切记不要向任意地址发送ETH。本教程介绍了如何安全地将你的ETH存入存款合约。请牢记不要将ETH发送给任何人。

致谢

本教程参考了网上的各种资料,感谢这些提供资料的贡献者!

感谢EthStaker管理团队和提供教程的社区成员、Eth2客户端团队、以及质押社区的帮助和校对。

特别感谢Eth2客户端团队和以太坊基金会的研究员。他们经过几年的不懈努力,将我们带到这难以置信的时刻——Eth2.0成功创世。

免责声明

本文仅供参考,不构成专业建议。作为本教程的作者。我本人不保证文中信息的准确性,对于那些参考了本文进行操作而产生的任何损失概不负责。文末有更加完整的免责声明,请阅读之后再进行操作。

支持

如需技术支持,请联系:

EthStaker社区是一个以太坊2.0Staking社区,资源丰富且十分友好。

Reddit:

https://www.reddit.com/r/ethstaker/

Discord:

https://discord.gg/7z8wzehjrJ

Prysm客户端团队,

Discord:https://discord.gg/GVM5TJwzkU

条件

使用本教程需要对以太坊、ETH、Staking、Linux、MetaMask(Portis或Fortmatic)有一定的背景知识。

还需要准备:

Ubuntu服务器v20.04(LTS)amd64或者一个较新的,在本地计算机或云端安装和运行的Ubuntu服务器。

已安装或已配置的浏览器插件加密钱包MetaMask(或Portis、Fortmatic)。一台装有操作系统(Mac、Windows、Linux等)和浏览器(Brave、Safari、FireFox等)的计算机。

从测试网到主网

如果你从测试网设置转到主网设置,那么我强烈建议你在一个全新的(新安装的)服务器实例上开始。本教程没有对迁移场景进行测试,所以如果你使用的是此前安装过的测试网软件,那么无法保证你的操作能成功。

要求

硬件要求是一个比较大的话题。总的来说:一个相对较新的CPU、8GB内存的RAM(16GB更佳)、一个内存至少500GB的SSD(1TB更佳)、稳定的网络,这些性能都会让质押过程更加安全顺畅。

注意:检查你的可用磁盘空间。尽管你有一个容量较大的SSD,Ubuntu也会出现仅剩200GB可用空间的状况。如果你遇到这种情况,请查看附录C——扩展逻辑卷。

概览

下面这个简化图表标明了本篇教程所涉及的范围,标黄的即是本文会覆盖到的部分:

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

生成验证者密钥对和存款数据

准备Ubuntu服务器(防火墙、安全设置等)

设置一个Eth1节点并同步Eth1区块链的数据

配置Prysm客户端并同步Eth1节点数据

存款并激活验证者密钥对

那我们现在就开始吧!

第1步:生成质押数据

参与质押首先要决定你想要运行的验证者节点的数量,并基于此生成一些数据文件。

注意:如果你的存款数据和验证者密钥对已经生成,可以跳过这一步。

一个验证者节点需要存32ETH,你的MetaMask钱包里要有相应足够的ETH。比如,如果你计划运行5个验证者节点,你将需要准备160ETH(32*5)并且预留一些gas费。存款过程会稍后再讲解,下面教大家怎么把设备运行起来。

下载存款工具(存款CLI)

点击此处下载最新发布的存款命令行界面app(CLIapp)。

下载链接:

https://github.com/ethereum/eth2.0-deposit-cli/releases/

在“Assets”那一栏选择与你的设备(如Windows、Mac、LinuxDesktop等)匹配的版本并下载。

运行存款工具(Eth2存款CLI)

解压文件,里面应该有一个二进制文件(可执行文件)。存款工具生成用于质押的文件和一组助记词。这组助记词需要安全地保存。下面有两种选择:

建议方案:将这份二进制文件复制粘贴到USB驱动器里。连接到一台此前从未连接过网络的计算机,将文件复制到计算机里并开始运行。

不建议方案:在当前使用的计算机上运行。但是网络连接可能会导致你的助记词密钥泄漏。如果没有未联网的计算机,那就在开始运行之前断开网络。

准备好之后,在终端窗口(或windows的命令提示符CMD)中运行这份文件以继续使用下面列出的命令。确定好你要运行的验证者节点的数量之后,用该数字替换。比如:?--num_validators2

Linux/Mac:

./deposit?new-mnemonic?--num_validators??--chain?mainnet

数据:以太坊市值占比为18.7%:金色财经报道,据CoinGecko数据显示,当前加密货币市值为2.97万亿,比特币市值占比为41.1%,以太坊市值占比为18.7%。[2021/11/14 6:50:53]

Windows:

deposit.exe?new-mnemonic?--num_validators??--chain?mainnet

在你选择的计算机执行上面的步骤之后,你将被要求创建一个验证者密钥存储库(validatorkeystore)密码,并保存在一个安全的地方。在后面的步骤中,你将需要这个keystore来上传验证者密钥到Prysm的验证者钱包里。

随后会生成一组助记词,请保存在一个安全的地方,这至关重要。因为最终你需要助记词来生成提款密钥以提出质押的ETH,并且增加验证者节点时也需要使用助记词。如果你丢失了助记词,就无法将你的资产提出了。

一旦你点击确认已经记好助记词之后,你的验证者密钥对便会生成。

新创建的验证者密钥对和存款数据文件会放置在指定位置。文件夹的内容如下所示:

关于这些文件:

文件deposit_data-.json包含验证者公钥和质押存款信息。该文件将用于完成随后的ETH存款过程。

文件keystore-m...json包含经过加密的验证者签名密钥。每一个验证者节点对应一个“keystore-m”。该文件将被导入到Prysm验证者钱包中以备质押时使用。随后需要将这些文件复制粘贴到Ubuntu服务器中。

最后的步骤

现在你已经有了存款数据和密钥存储库文件,接下来就可以设置Ubuntu服务器了。

注意:此时还不能进行存款。

首先完成并验证你的质押设置非常重要。如果你的ETH存款激活了,但是质押设置还没准备好的话,你将会受到怠工惩罚。

第2步:连接至服务器

使用一个SSH端口,连接至你的Ubuntu服务器。如果你用root登录,最好是重新创建一个拥有管理权限的用户账户,因为使用root用户登录存在很大的风险。

注意:如果你不是用root登录的便可以直接跳到第三步。

创建一个新账户。在中填入你的用户名,然后设置一个安全系数较高的密码,并输入其他可选信息。

#?adduser?

通过把新的用户加入sudo群组中,来授予其管理权限。这样用户在命令行前输入sudo,便会以超级用户的权限来执行操作。

#?usermod?-aG?sudo?

可选项:如果你使用SSH密钥通过root用户连接你的Ubuntu系统,你需要将新创建的账户和root用户的SSH密钥数据组合起来。

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

最后,退出登录你的root账户,然后使用你新创建的用户名登入Ubuntu服务器。

第3步:升级服务器

确保系统更新至最新的软件和安全设置。

$?sudo?apt?update?&&?sudo?apt?upgrade$?sudo?apt?dist-upgrade?&&?sudo?apt?autoremove$?sudo?reboot

第4步:保护服务器

安全性十分重要。但由于本文不是针对安全性的指南,所有只列出了一些基础的设置。

修改SSH默认端口

SSH默认端口是端口22,也是易受攻击的矢量,因此可以修改SSH端口来防止攻击。

在1024—49151之间选择一个端口号,然后运行以下命令以检索尚未使用的端口号。没有其他显示便意味着该端口号未被使用;显示红色便意味着已被使用,请尝试其他端口号。比如:sudoss-tulpn|grep':6673'

$?sudo?ss?-tulpn?|?grep?':'

确定端口号可用之后,通过升级SSH设置来修改默认端口。

$?sudo?nano?/etc/ssh/sshd_config

在文件中检索或者添加(如果没有的话)Port22命令行。删掉#(如果有的话)并在下面的命令行中输入端口号。

Port?

参考下方的截图。按CTRLx然后选‘y’,按回车保存并退出。

重新启动SSH服务以显示上述所作的修改。

$?sudo?systemctl?restart?ssh

登出并使用你的SSH端口号重新登入。

配置防火墙

Ubuntu20.04服务器可以使用默认的UFW防火墙来限制访问该服务器的流量,不过要先设置其允许来自SSH、GoEthereum、Prysm的入站流量。

安装UFW防火墙

按照下面的命令行输入以保证在默认情况下安装UFW。

$?sudo?apt?install?ufw

应用UFW默认值

明确地应用默认值,拒绝入站流量,允许出站流量。

$?sudo?ufw?default?deny?incoming$?sudo?ufw?default?allow?outgoing

AllowSSH允许SSH

允许你此前设置的端口号的入站流量。SSH要求TCP协议。比如:sudoufwallow6673/tcp

$?sudo?ufw?allow?/tcp

拒绝SSH端口号22

拒绝端口22/TCP的入站流量。

注意:当你完成了修改SSH默认端口之后再做这一步。

Santiment:每日新增以太坊地址数量达到近4周以来最高水平:8月18日消息,根据加密分析公司Santiment发布的最新数据,每日新增以太坊地址数量已达到近4周以来的最高水平,以太坊网络的链上数据一直在稳步增长。此外由于最近ETH价格的上涨,以太坊鲸鱼地址增加了ETH的积累,所有持有超过10万枚ETH的以太坊巨鲸目前所持有的ETH数量占据总供应量的43.7%。[2021/8/18 22:21:59]

$?sudo?ufw?deny?22/tcp

允许GoEthereum

允许与GoEthereum的对等节点(端口30303)进行点对点(P2P)连接。如果你使用第三方托管的Eth1节点,则可以跳过这一步。

注意:如果你在本地托管你的Ubuntu服务器,你需要配置你的网络路由以允许来自端口30303的入站流量。

$?sudo?ufw?allow?30303

允许Prysm客户端

允许与Prysm的对等节点进行点对点连接,以便在信标链节点上(PrysmaticLabs的默认端口为13000/TCP和12000/UDP)进行操作。

注意:如果你在本地托管你的Ubuntu服务器,你需要配置你的网络路由以允许来自端口13000和12000的入站流量。

$?sudo?ufw?allow?13000/tcp$?sudo?ufw?allow?12000/udp

开启防火墙并检查是否已按上述步骤正确地配置。

$?sudo?ufw?enable$?sudo?ufw?status?numbered

查看下面截图以供参考。

第5步:配置定时器

Ubuntu内置了时间同步,并默认使用systemd‘stimesyncd服务进行激活。验证其是否正确运行。

$?timedatectl

激活?NTPservice,运行方式:

$?sudo?timedatectl?set-ntp?on

参考下方的截图:

只能使用单个定时器服务。如果你此前安装过NTPD,你需要检查此文件是否还存在,如果存在请操作下面的命令行以删除。

$?ntpq?-p$?sudo?apt-get?remove?ntp

第6步:设置一个Eth1节点

参与质押需要一个Eth1节点。你可以选择运行一个本地Eth1节点,也可以使用第三方提供的节点。本教程会详细讲解如何运行GoEthereum,如果你选择第三方服务的话,可以跳过这一步。

注意:检查你的可用磁盘空间。一个Eth1节点需要大概400GB的存储空间。尽管你有一个容量较大的固态硬盘,Ubuntu也可能显示仅剩200GB的可用空间。如果你遇到这种情况,请查看附录C——扩展逻辑卷。

安装GoEthereum

使用PPA(PersonalPackageArchives,个人安装包存档)安装GoEthereum客户端。

$?sudo?add-apt-repository?-y?ppa:ethereum/ethereum$?sudo?apt?update$?sudo?apt?install?geth

将GoEthereum作为后台服务来运行,运行该服务需要创建一个账户。此种类型的账户无法登录服务器。

$?sudo?useradd?--no-create-home?--shell?/bin/false?goeth

为Eth1区块链创建数据目录,用来存储Eth1节点数据。

$?sudo?mkdir?-p?/var/lib/goethereum

设置目录的权限。goeth账户需要权限来修改该数据目录。

$?sudo?chown?-R?goeth:goeth?/var/lib/goethereum

创建一个systemd服务配置文件来对该服务进行配置。

$?sudo?nano?/etc/systemd/system/geth.service

将下列的服务配置复制粘贴到文档中。

Description=Go?Ethereum?ClientAfter=network.targetWants=network.targetUser=goethGroup=goethType=simpleRestart=alwaysRestartSec=5ExecStart=geth?--http?--datadir?/var/lib/goethereum?--cache?2048?--maxpeers?30WantedBy=default.target

需要注意的flags:

flag--http用来公开与Prysm信标链节点连接的一个HTTP端口(http://localhost:8545)。

flag--cache指的是内部缓存的大小,以GB为单位。数值的增减取决于你的可用系统内存。设置2048将大概需要使用4-5GB的内存。

flag--maxpeers指的是所连接节点的最大数值。节点数量越多,意味着越多的网络数据可用空间。所以记得不要将该数值设置得太低,否则你的Eth1节点将难以保持同步。

参考下方的截图。按CTRLx然后选‘y’,按回车保存并退出。

重新加载systemd以显示上述的更改并启动服务。检查状态以确保其正确运行。

$?sudo?systemctl?daemon-reload$?sudo?systemctl?start?geth$?sudo?systemctl?status?geth

参考下方的截图:

以太坊未确认交易为108,693笔:金色财经消息,据OKLink数据显示,以太坊未确认交易108,693笔,当前全网算力为262.99TH/s,全网难度为3.49P,当前持币地址为50,702,200个,同比增加173,685个,24h链上交易量为3,441,568.28ETH,当前平均出块时间为14s。[2020/11/25 22:08:13]

如果你每一步都做对了,它会用绿色字体显示”active(running)"。如果没有显示,你需要倒回去重复上述步骤,修复问题。按Q退出(此操作不会影响geth服务)。

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

$?sudo?systemctl?enable?geth

GoEthereum节点将会开始同步。你可以运行下列命令来追踪进程或检查错误。按“CTRLc”退出(此操作不会影响geth服务)。

$?sudo?journalctl?-fu?geth.service

参考下方的截图:

查看同步状态

要检查Eth1节点同步状态,请使用下列命令访问控制台。

geth?attach?http://127.0.0.1:8545>?eth.syncing

如果显示结果是false,表明你的同步已完成。如果显示结果是同步数据,表明你仍在同步。作为参考,大概有7亿个已知状态knownStates.

参考下方的截图

完成时按“CTRLd”以退出。

检查连接的对等节点

要检查你的Eth1节点所连接的对等节点,请使用下列命令访问控制台。

geth?attach?http://127.0.0.1:8545>?net.peerCount

对等节点总数peerCount不会超过你所设置的最大对等节点总数--maxpeers。如果无法找到需要同步的对等节点,参阅下一部分。

完成后按“CTRLd”以退出。

添加bootnodes(可选)

有时可能要花点时间才能找到要同步的对等节点,可以添加bootnodes以改善这种情况。

访问https://gist.github.com/rfikki/a2ccdc1a31ff24884106da7b9e6a7453获得最新的清单并根据下列操作修改geth服务:

$?sudo?systemctl?stop?geth$?sudo?nano?/etc/systemd/system/geth.service

修改ExecStart行,添加--bootnodesflag:在下方罗列出最新的对等点,并以逗号分割。

ExecStart=geth?--http?--datadir?/var/lib/goethereum?--cache?2048?--maxpeers?30?--bootnodes?"enode://d0b4a09d072b3f021e233fe55d43dc404a77eeaed32da9860cc72a5523c90d31e157.230.142.236:30303,enode://5070366042daaf15752fea340e7ffce3fd8fc576ac846034bd551c3eebac76db1116.202.231.71:30303"

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

$?sudo?systemctl?daemon-reload$?sudo?systemctl?start?geth$?sudo?journalctl?-fu?geth.service

注意:需要按照一系列特定的步骤来更新Geth。更多信息请参见“附录A:更新Geth”。

第7步:下载Prysm

Prysm客户端由两份二进制文件组成:信标链节点和验证者客户端。本步骤将讲解如何下载Prysm和那两份二进制文件。

首先,访问

https://github.com/prysmaticlabs/prysm/releases并找到最新发布的Prysm版本。通常在页面的最顶部,比如:

在“Assets”那一栏(如果需要的话点击展开)将下载链接复制粘贴至文档beacon-chain-v…-linux-amd64以及文档validator-v…-linux-amd64中。请确保复制的链接是正确的。

操作下列命令来下载这些文件。将下方指令部分的URL改为最新版本的下载链接。

$?cd?~$?sudo?apt?install?curl$?curl?-LO?https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/beacon-chain-v1.0.0-linux-amd64$?curl?-LO?https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/validator-v1.0.0-linux-amd64

重命名文档并使它们可执行。将他们复制到目录/usr/local/bin中,Prysm会在该处运行这些文件。根据需求修改文档名。

$?mv?beacon-chain-v1.0.0-linux-amd64?beacon-chain$?mv?validator-v1.0.0-linux-amd64?validator$?chmod?x?beacon-chain$?chmod?x?validator$?sudo?cp?beacon-chain?/usr/local/bin$?sudo?cp?validator?/usr/local/bin

清理下载的文档。

监测数据:Circle向以太坊网络新增发5,515万枚USDC:DAppTotal.com稳定币专题页面数据显示:10月08日16时50分 ,USDC发行方Circle向以太坊网络新增发1笔价值5,515万美元的USDC, 块高度为:11013967,交易哈希值为:0x2b8d416844c1f60defe6117f97f8e95be9a5307207be13fd0042ac0f6f5be5c0 。截至目前,Circle在以太坊网络上的ERC20 USDC总发行量已达2,770,795,349枚。[2020/10/8]

$?cd?~$?sudo?rm?beacon-chain?&&?sudo?rm?validator

注意:需要按照一系列特定的步骤来更新Prysm。更多信息请参见“附录B:更新Prysm”。

第8步:导入验证者密钥对

导入你在第1步生成的密钥对,以配置Prysm验证者钱包。

复制验证者密钥存储文件

如果你的验证者存储文件keystore-m…json不是在你的Ubuntu服务器上生成的,那么你就需要将这些文件复制粘贴到你的本地目录中。你可以用USB把文件拷过去(如果你的服务器是本地的),也可以使用安全的FTP(SFTP)。

将文件放置在:

$HOME/eth2deposit-cli/validator_keys。如果需要的话创建文件目录。

将密钥存储文件导入验证者客户端

创建一个目录以存储验证者钱包数据,并授予当前用户访问该目录的权限。当前用户需要访问权限来执行导入。在修改登入用户名。

$?sudo?mkdir?-p?/var/lib/prysm/validator$?sudo?chown?-R?:?/var/lib/prysm/validator

运行验证者密钥导入进程。你需要提供放置已生成的密钥存储库文件的路径。比如:$HOME/eth2deposit-cli/validator_keys

$?cd?/usr/local/bin$?validator?accounts?import?--keys-dir=$HOME/eth2deposit-cli/validator_keys

然后会出现一些使用条款,你需要输入接受accept才能继续下一步。

你将需要提供一个钱包目录,在这里你可以创建新的钱包。输入:/var/lib/prysm/validator

然后创建一个钱包密码并保存在一个安全的地方。稍后你配置验证者时将需要使用这个密码。

接下来你需要提供你在第1步生成的验证者密钥对。

如果输入正确,密钥将被导入。

创建一个钱包密码文件

创建一个文件来保存钱包密码,这样Prysm验证者服务就可以在不知道密码的情况下访问该钱包了。文件命名为:password.txt

$?sudo?nano?/var/lib/prysm/validator/password.txt

将你的新钱包密码导入文件中,用你的密码替换掉YourNewWalletPassword。

参考下方的截图。按CTRLx然后选‘y’,按回车保存并退出。

接下来会讲如何设置验证者目录以及密码文件的访问权限。

现在已经导入成功并且设置好钱包了。

第9步:配置Prysm信标节点

在这一步,你要把节点作为服务那样来配置并运行,因此如果系统重启,这个过程将自动重新开始。

设置账户和目录

为信标节点的运行创建一个账户。这种账户不能用来登录进入服务器。

$?sudo?useradd?--no-create-home?--shell?/bin/false?prysmbeacon

为信标节点的数据库创建数据目录和设置权限。

$?sudo?mkdir?-p?/var/lib/prysm/beacon$?sudo?chown?-R?prysmbeacon:prysmbeacon?/var/lib/prysm/beacon$?sudo?chmod?700?/var/lib/prysm/beacon$?ls?-dl?/var/lib/prysm/beacon

参考下方的截图。

创建和配置服务

创建一个systemd服务的config文档来配置服务

$?sudo?nano?/etc/systemd/system/prysmbeacon.service

将下面这段代码复制粘贴到文档里

Description=Prysm?Eth2?Client?Beacon?NodeWants=network-online.targetAfter=network-online.targetUser=prysmbeaconGroup=prysmbeaconType=simpleRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/beacon-chain?--datadir=/var/lib/prysm/beacon?--http-web3provider=http://127.0.0.1:8545?--accept-terms-of-useWantedBy=multi-user.target

需要注意的flags:

--http-web3provider如果你正在使用一个远程或第三方的Eth1节点,你需要改变这个值。如果你是在本地创建Eth1节点的,这里不需要改动。

--accept-terms-of-use需要自动启动服务。使用这个flag表示接受Prysm的使用条款。

V神:以太坊智能合约促进了Uniswap之类的DEX兴起:推特网友Aliquis在推特对以太坊创始人V神提问称,就你看来,Binance、Kraken、Gemini、Bitstamp是不好的应用吗?对此V神刚刚回复称,有些是,有些不是。以太坊具有强大的智能合约功能,这无疑促进了Uniswap之类的DEX(去中心化交易所)的兴起,也降低了CEX(中心化交易所)行为异常的风险。[2020/8/18]

参考下方的截图。按CTRLx然后'y',按回车保存然后退出。(译注:此处原文无截图)

重新加载systemd以显示更改。

$?sudo?systemctl?daemon-reload

启动服务并检查,确保正确运行。

$?sudo?systemctl?start?prysmbeacon$?sudo?systemctl?status?prysmbeacon

参考下方的截图

如果你每一步都做对了,它会用绿色字体显示”active(running)"。如果没有显示,你需要倒回去重复上述步骤,修复问题。按Q退出(不会影响prysmbeacon的服务)。

允许服务随系统重启而自动重启。

$?sudo?systemctl?enable?prysmbeacon

如果Eth2链处于创世后的状态,Prysm的信标链会开始同步数据。它可能要花几个小时才能完全实现同步。你可以通过运行journalctl命令来追踪进程或检查错误。按CTRLc退出(将不会影响prysmbeacon的服务)

$?sudo?journalctl?-fu?prysmbeacon.service

日志的截位视图会显示以下状态信息。

Nov?27?06:20:48?ETH-STAKER-001?bash:?time="2020-11-27?06:20:48"?level=info?msg="Processing?deposits?from?Ethereum?1?chain"?deposits=1024?genesisValidators=1019?prefix=powchain

当Eth2主网启动,信标链和验证者将自动开始处理数据。

注意:如果你的Eth1节点仍在同步,你将会出现以下报错信息。当同步完成了,它会自动消失。

Nov?27?06:16:29?ETH-STAKER-001?bash:?time="2020-11-27?06:16:29"?level=error?msg="Could?not?connect?to?powchain?endpoint"?error="could?not?dial?eth1?nodes:?eth1?node?using?incorrect?chain?id,?0?!=?1"?prefix=powchain

第10步:配置Prysm验证者客户端

在这一步,你需要将你的验证者客户端作为一项后台服务来配置和运行,因此系统重启时这个进程会自动重启。

创建账户和目录

为验证者客户端的运行创建一个账户。这类账户无法登录服务器。

$?sudo?useradd?--no-create-home?--shell?/bin/false?prysmvalidator

这个验证者数据目录已经在第8步创建了。现在设置权限,使得这个prysmvalidator账户可以修改这个数据目录。

$?sudo?chown?-R?prysmvalidator:prysmvalidator?/var/lib/prysm/validator$?sudo?chmod?700?/var/lib/prysm/validator$?ls?-dl?/var/lib/prysm/validator

参考下方的截图。

验证者钱包的password.txt文档在第8步已经创建了。现在设置权限,使得只有prysmvalidator的账户可以读取这个文档。

$?sudo?chmod?-R?700?/var/lib/prysm/validator/password.txt$?sudo?ls?-lh?/var/lib/prysm/validator/

创建并配置服务

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

$?sudo?nano?/etc/systemd/system/prysmvalidator.service

将下面这段代码复制粘贴到文档里

Description=Prysm?Eth2?Validator?ClientWants=network-online.targetAfter=network-online.targetUser=prysmvalidatorGroup=prysmvalidatorType=simpleRestart=alwaysRestartSec=5ExecStart=/usr/local/bin/validator?--datadir=/var/lib/prysm/validator?--wallet-dir=/var/lib/prysm/validator?--wallet-password-file=/var/lib/prysm/validator/password.txt?--graffiti=""?--accept-terms-of-useWantedBy=multi-user.target

需要注意的flag:

--graffiti=""填上你的涂鸦字串符。出于安全和隐私,应避免使用能唯一辨识你的信息。比如--graffiti"HelloEth2!FromDominator"。

参考下方的截图。按CTRLx然后选‘y’,按回车保存并退出。

重新加载systemd以显示更改。

$?sudo?systemctl?daemon-reload

开启服务并检查,确保运行正确。

$?sudo?systemctl?start?prysmvalidator$?sudo?systemctl?status?prysmvalidator

参考下方的截图

如果你每一步都做对了,它会用绿色字体显示”active(running)"。如果没有显示,你需要倒回去重复上述步骤,修复问题。按Q退出(不会影响prysmvalidator的服务)。

允许服务随系统重启而自动重启。

$?sudo?systemctl?enable?prysmvalidator

你可以通过运行journalctl命令来追踪进程或检查错误。按CTRLc来退出(将不会影响prysmvalidator的服务)

$?sudo?journalctl?-fu?prysmvalidator.service

日志的截位视图会显示以下状态信息。

ETH-STAKER-001?systemd:?Started?Prysm?Eth2?Validator?Client.level=warning?msg="Running?on?ETH2?Mainnet"?prefix=flagslevel=info?msg="Opened?validator?wallet"?keymanager-kind=direct?level=info?msg="Checking?DB"?databasePath="/var/lib/prysm/validator"?level=info?msg="Starting?validator?node"?prefix=node?...level=info?msg="Validating?for?public?key"?prefix=validator?publicKey=0x9072a8f02c18level=info?msg="Validating?for?public?key"?prefix=validator?publicKey=0xaa5ff8b63560level=info?msg="Waiting?for?beacon?chain?start?log?from?the?ETH?1.0?deposit?contract"?prefix=validatorlevel=info?msg="Beacon?chain?started"?genesisTime=2020-12-01?12:00:23?0000?UTC?prefix=validatorlevel=info?msg="Waiting?for?deposit?to?be?observed?by?beacon?node"?prefix=validator?pubKey=0x9072a8f02c18?status="UNKNOWN_STATUS"

你可以在beaconcha.in查看你的验证者状态。只需要搜索你的验证者公钥或使用你的MetaMask钱包地址进行搜索。你的数据可能要过一段时间才会在网站上显示。

第11步:进行验证者存款

现在你的节点已经设置好并开始运行,你将需要将ETH存入你的验证者节点。

注意:如果你已经提交了你的质押存款,你可以跳过这一步。

这一步是关于将所需的ETH存入Eth2.0的存款合约。不要把ETH发送到存款合约。这需要在浏览器上通过Eth2.0的Launchpad网站启动你的MetaMask(或其他)钱包。

注意:如果是在创世后进行的话,你需要在你的Eth1节点和信标链都完全同步完之前存入你的存款。如果你不这样做,当你的Eth1节点或信标链在同步时,Prysm会处于怠工状态,而你可能要遭遇怠工惩罚。

以太坊2.0Launchpad:

https://launchpad.ethereum.org/

一直随着屏幕切换点击这些警告步骤,直到你到达密钥对生成的部分。选择你打算运行的验证者数量。选择一个与你在步骤1中生成的验证者文件数量相匹配的值。

往下滚动,看这些内容你是否同意,然后点击“Continue”(继续)。

你会被要求上传deposit_data-.json文档。这个文档你是在步骤1生成的。浏览/选择或拖拉这个文档,然后点击Continue。

连接你的钱包。选择MetaMask(或者是其他支持的钱包),登录,选择存有你的ETH的钱包,然后点击Continue。

你的MetaMask余额就会显示出来。如果你选择了主网且你有充足的ETH余额,网站会允许你继续下一步。

然后会出现一个Summary(总结),显示验证者数和所需的ETH数量。如果你同意的话就给那些方框打勾,然后点击Continue。

如果你准备好去存款了,点击"InitiateAllTransactions"(启动所有交易)。

当你到了可以确认每笔交易那一步时,MetaMask(或其他钱包)的窗口会自动弹出。

当所有的交易都成功完成时,你的质押也完成了!

恭喜你已经成功存入你的质押存款了!

查看你的验证者存款状态

新加入的验证者需要等一下(几个小时到几天不等)才能激活。你可以以下几步来查看你的密钥状态:

1.复制你的MetaMask(或其他)钱包地址。

2.前往这里:beaconcha.in/

3.用你的钱包地址搜索你的密钥。

点进某个验证者详情,每个验证者激活后你会看到在Status那一栏有预估时间。

现在你面前有一个条正在运作的信标链、一个验证者节点以及你的主网存款。如果以太坊2.0主网处于运行中,一旦你的存款被激活,你将开始工作并赚取收益。

恭喜你:你终于正式成为了一名以太坊质押者!

是时候来一顿肥宅水狂欢了。

第12步:监测

因为一些还没被解决的安全问题,监测这一部分将在未来补充到这份教程。

结束语及后续建议

感谢大家给我这个机会。希望这份教程能帮到大家。

后续步骤:

检查三次所有密钥与密码备份。

重启你的电脑并确保服务都能自动启动。

了解如何升级客户端与服务器软件。

使用htop来监测本地电脑的资源

熟悉beaconcha.in,这样你就能监测你的验证者情况,其提供警报功能和最多3个POAP。

加入Ethstaker和Prysm的Discord,留意重要通知。

请在Discord,Twitter,orReddit分享对这份教程的反馈。

在Ethstaker的discord上帮助其他人设置。

用friendlink分享这份教程

支持一下:somer.eth

延伸阅读

强烈建议大家从尽可能多的来源获取信息,还有很多其他资源可以帮助你熟悉如何在Eth2上质押。

如果作者对这些资源还没测试或验证过,而你采用了的话,是要自己承担风险的。

客户端团队的官方文档Prysm|Lighthouse|Teku|Nimbus

/r/EthStakerSticky

以太坊2.0客户端的非官方docker环境

如何在Ubuntu上设置Eth2主网验证者系统

指南|如何在ETH2主网设置验证者

指南|ETH2验证者信标链节点的安全最佳实践

质押节点的额外监察

以太坊2.0质押的Telegram服务

Appendix附录A—Geth更新

如果你需要更新到Geth的最新版本,请按下列步骤:

$?sudo?systemctl?stop?prysmvalidator$?sudo?systemctl?stop?prysmbeacon$?sudo?systemctl?stop?geth$?sudo?apt?update?&&?sudo?apt?upgrade$?sudo?systemctl?start?geth$?sudo?systemctl?status?geth?#?<--?Check?for?errors$?sudo?journalctl?-fu?geth?#?<--?Monitor$?sudo?systemctl?start?prysmbeacon$?sudo?systemctl?status?prysmbeacon#?<--?Check?for?errors$?sudo?journalctl?-fu?prysmbeacon.service?#?<--?Monitor$?sudo?systemctl?start?prysmvalidator$?sudo?systemctl?status?prysmvalidator#?<--?Check?for?errors$?sudo?journalctl?-fu?prysmvalidator.service?#?<--?Monitor

Appendix附录B—更新Prysm

如果你需要更新到Prysm的最新版本,请按下列步骤进行:

首先,前往这里找出最新的Linux发布。在asset部分(如果需要的话点击展开)复制下载连接到beacon-chain-v…-linux-amd64和validator-v…-linux-amd64文档。注意要复制正确的链接。

将下方指令部分的URL改为最新版本的下载链接。

$?cd?~$?sudo?apt?install?curl$?curl?-LO?https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/beacon-chain-v1.0.0-linux-amd64$?curl?-LO?https://github.com/prysmaticlabs/prysm/releases/download/v1.0.0/validator-v1.0.0-linux-amd64

停止Prysm的服务。

$?sudo?systemctl?stop?prysmvalidator$?sudo?systemctl?stop?prysmbeacon

重命名文档使其可执行。复制它们到/usr/local/bin目录。需要的话修改下方的文档名。

$?mv?beacon-chain-v1.0.0-linux-amd64?beacon-chain$?mv?validator-v1.0.0-linux-amd64?validator$?chmod?x?beacon-chain$?chmod?x?validator$?sudo?cp?beacon-chain?/usr/local/bin$?sudo?cp?validator?/usr/local/bin

重启服务并检查错误。

$?sudo?systemctl?daemon-reload$?sudo?systemctl?start?prysmbeacon$?sudo?systemctl?status?prysmbeacon#?<--?Check?for?errors$?sudo?journalctl?-fu?prysmbeacon.service?#?<--?Monitor$?sudo?systemctl?start?prysmvalidator$?sudo?systemctl?status?prysmvalidator#?<--?Check?for?errors$?sudo?journalctl?-fu?prysmvalidator.service?#?<--?Monitor

清理已下载的文档。

$?cd?~$?sudo?rm?beacon-chain?&&?sudo?rm?validator

Appendix附录C—扩展逻辑卷

很多时候Ubuntu只预配200GB的较大固态硬盘,导致用户在同步他们的Eth1节点时就耗尽存储空间了。报错信息近似于:

Fatal:?Failed?to?register?the?Ethereum?service:?write?/var/lib/goethereum/geth/chaindata/383234.ldb:?no?space?left?on?device

为了解决这个问题,假设你有一个大于200GB的固态硬盘,你可以通过下列步骤为LVM(逻辑卷管理)扩大容量。

$?sudo?lvdisplay?#?<--?Check?your?logical?volume?size$?sudo?lvm?>?lvextend?-l?100%FREE?/dev/ubuntu-vg/ubuntu-lv>?exit$?sudo?resize2fs?/dev/ubuntu-vg/ubuntu-lv$?df?-h?#?<--?Check?results

这会重新调整你的硬盘至它的最大可用空间。

如果你在这方面需要支持,请在EthStaker的Discord上寻求帮助。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-4:411ms