成为2022年11月版以太坊Goerli测试网络的验证者

总结

    • 2022年11月時点(The Merge以降)のEthereum Goerliテストネット用Validatorクライアントをセットアップする手順をまとめました。

 

    • 本記事の内容はほとんどそのままMainnetにも適用できる前提で作っていますが、試していません。(お金がない)

 

    • プラットフォームはUbuntu server 20.04.1 LTS

Execution ClientはGeth 1.10.26、Consensus ClientとValidatorはPrysm 3.1.2を使用します。
本記事に係る内容は全て自己責任で実施をお願いします。

1. 需要准备的东西

机器1(适用于以太坊节点)

请参阅下方的推荐配置要求。

 

预计常常使用的话,小型静音的迷你PC是理想选择。至少电源要稳定,否则很困难。
必须要有SSD硬盘,并且建议使用NVMe接口。容量方面,如果是目前的Goerli,500GB应该足够了。

机器2(用于监控节点)

在远程监控Ethereum节点时,我们可以运行Prometheus和Grafana。由于在验证者操作中快速检测异常非常重要,最好准备一个单独的机器来进行监控。由于需进行持续监视,因此希望使用轻量级的工具。尽管可接受的可靠性并不是非常高,但树莓派可能是最佳选择。

机器3(用于生成密钥):★断网★

生成 Validator Key 的目的是不能连接到网络。甚至连局域网连接也是禁止的。这是一个铁律,请务必遵守。

如果没有钱的话,可以准备一个USB存储设备,并创建一个不带永久数据的可引导Linux设备作为替代方案。

传递钥匙使用的USB存储设备。

为了将在Machine 3生成的密钥传输到Machine 1上使用,需要进行这样的操作。在使用之前和之后都不要忘记格式化。

电脑用于作业

为进行各种操作所需的个人电脑。本文中假设使用以下环境:
Windows操作系统、Google Chrome浏览器、Visual Studio Code编程软件等。但您可以根据个人喜好选择其他环境。

Goerli EOA (Goerli以太坊账户)

EOA指的是以太坊所有账户(Ethereum Owned Account)。它是处理执行层ETH的账户。
EOA由个人负责管理和运营其私钥。
虽然有不同的创建账户的方法,但对于不太了解的人,先使用Metamask创建钱包是一个不错的选择。
在创建地址时,请不要忘记选择goerli测试网络而不是Mainnet。
请从安装谷歌浏览器的扩展程序开始操作。

 

以太坊(可少量投資)

goETH(=goerli ETH)是仅在goerli测试网络中通用的货币。
在PoW结束后,获取它变得更加困难。
除了通过水龙头逐渐收集,您还需要找到一个出售它的稳定币网站来购买。
要成为验证者,您需要抵押32个goETH,但即使数量不足,也有一种非正式的方法可以成为验证者。本文将介绍该方法直到成为验证者,但在您阅读本文时不能保证它仍然有效。

只要有一个Faucet,可以提供0.1goETH,我们假设已经获取到这个数量,继续进行对话。

还没有的人可以通过下面的链接跟踪并获取以太坊测试网的水龙头。

Discord账号

请先注册一个Discord账号,因为在这篇文章中会使用到。

2. Ubuntu安装设置

从完成Ubuntu server 20.04.1 LTS的安装和通过工作电脑进行SSH登录的状态开始。

将SSH配置为密钥认证。

在工作电脑上生成密钥。

    Windowsならコマンドプロンプト
ssh-keygen -t ecdsa -b 521

将生成的密钥对放入 C:\Users\\.ssh 文件夹中,然后将公钥*.pub传输到Ubuntu上预先备用。

    VisualStudioCode設定
Host EthNode_KeyAuth
    HostName <target IP address>
    User <username>
    port 22522
    IdentityFile C:\Users\<user>\.ssh\id_ecdsa_ethnode

我会随意更改端口号从22开始。

第一个机器 (Ubuntu Server)

~/.ssh/authorized_keysに公開鍵を書き加える

~/.ssh$ cat id_ecdsa_ethnode.pub > authorized_keys

sshd_configの設定

Port 22522
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
    再起動
$ service ssh restart

建议您在更改端口后重新连接。当前会话将保持有效直到断开连接,但是如果设置错误,将无法重新连接,所以建议您打开另一个会话。

将SSD扩展到最大容量

如果使用大容量的SSD,可能会遇到逻辑卷无法被完全识别的情况。
实际上,我已经遇到了这个问题,所以需要采取解决措施。

$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
<snip>
nvme0n1                   259:0    0  1.8T  0 disk 
├─nvme0n1p1               259:1    0    1G  0 part /boot/efi
├─nvme0n1p2               259:2    0    2G  0 part /boot
└─nvme0n1p3               259:3    0  1.8T  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0  100G  0 lvm  /

PV(物理卷)/dev/nvme0n1p3 有1.8T的容量,
但LV(逻辑卷)ubuntu–vg-ubuntu–lv 只挂载了100G。
以下的命令也可以确认该情况。

$ sudo pvs
  PV             VG        Fmt  Attr PSize  PFree 
  /dev/nvme0n1p3 ubuntu-vg lvm2 a--  <1.82t <1.72t

$ sudo lvs
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- 100.00g

pvs命令输出PV和VG(卷组)之间的对应关系。
lvs命令输出LV和VG之间的对应关系。
根据pvs的结果,可以看出1.72T处于未使用状态。

lvextend -l +100%FREEで未使用領域を全てLVにアサインします

$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to <1.82 TiB (476150 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
<snip>
nvme0n1                   259:0    0  1.8T  0 disk 
├─nvme0n1p1               259:1    0    1G  0 part /boot/efi
├─nvme0n1p2               259:2    0    2G  0 part /boot
└─nvme0n1p3               259:3    0  1.8T  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0  1.8T  0 lvm  /

然而在这种状态下,还没有在文件系统中反映出来。
通过resize2fs命令进行反映。

$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv 
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 233
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 487577600 (4k) blocks long.
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
<snip>
/dev/mapper/ubuntu--vg-ubuntu--lv  1.8T  5.2G  1.8T   1% /

以上是全部的。

3. 安全更新自动更新

将安全更新设定为自动更新

$ sudo apt update && sudo apt upgrade -y
$ sudo apt install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades

禁用IPv6

目前没有必要故意激活,因此将其无效化。

GRUB CMDLINE LINUX="ipv6.disable=1"
    設定反映
$ sudo update-grub

5. 禁用明确拥塞通知

明示的拥塞通知(ECN)是一种用于通过网络发送数据包时,通过控制标志位来通知发送端设备的协议,以告知发送端设备在带宽限制超过或网络拥塞的情况下。最好的策略是先禁用它。

net.ipv4.tcp_ecn=0
    設定反映
$ sudo sysctl -p

6. 参考公共DNS

可能是个人喜好。省略解释。

DNS=8.8.8.8 8.8.4.4
$ cd /etc
$ sudo ln -sf ../run/systemd/resolve/resolv.conf resolv.conf
$ ls -la resolv.conf
    設定反映
$ sudo systemctl restart systemd-resolved

7. 创建以太坊用户

通常情况下,操作是通过以太坊用户进行的。我们将确保您可以使用sudo。

$ sudo useradd -m -s /bin/bash ethereum
$ sudo passwd ethereum
$ sudo usermod -aG sudo ethereum
    rootはロックしておきます
$ sudo passwd -l root

8. 防火牆設定

我們將禁用IPv6。

请用中文原生方式重新表达以下内容,仅提供一种选项:
sudo vim /etc/default/ufw

请使用超级管理员权限打开/etc/default/ufw文件,并编辑。

IPV6=no

允许各种协议

使用以下方式在中国的本地化语言中进行改写:
sudo ufw允许22522端口的SSH连接。
sudo ufw允许30303端口的执行客户端(Geth)TCP/UDP连接。
sudo ufw允许13000端口的共识客户端(Prysm)TCP连接。
sudo ufw允许12000端口的共识客户端(Prysm)UDP连接。
sudo ufw允许6060端口的Geth度量。
sudo ufw允许9100端口的Node-exporter监听来自Prometheus的连接。
sudo ufw允许8080端口的Prysm(Beacon节点)监听来自Prometheus的连接。
sudo ufw允许8081端口的Prysm(验证者)监听来自Prometheus的连接。

    ufw有効化
$ sudo ufw enable
    設定確認
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22522                      ALLOW IN    Anywhere                  
30303                      ALLOW IN    Anywhere                  
13000/tcp                  ALLOW IN    Anywhere                  
12000/udp                  ALLOW IN    Anywhere                  
9100                       ALLOW IN    Anywhere                  
6060                       ALLOW IN    Anywhere                  
8080                       ALLOW IN    Anywhere                  
8081                       ALLOW IN    Anywhere
    • 併せて以下のポートをルータでポート開放しEthereum NodeにForwardingしておくこと(LAN環境の場合)

 

    • 30303/tcp&udp

 

    • 13000/tcp

 

    12000/udp

9. 设定时间

我们将使用Ubuntu默认的timesyncd。

systemd-timesyncd是一个进行网络时间同步的功能。
timedatectl是管理systemd-timesyncd的控制器。

$ sudo apt install systemd-timesyncd 
$ timedatectl set-ntp true
$ timedatectl
    • NICTを参照するように設定

 

    sudo vim /etc/systemd/timesyncd.conf
NTP=ntp.nict.jp
    設定反映
$ sudo systemctl restart systemd-timesyncd.service
    ハードウェアクロックを時刻合わせ
$ sudo hwclock -w
$ sudo hwclock -r
    タイムゾーン設定
$ timedatectl set-timezone Asia/Tokyo
$ timedatectl #確認
$ date #確認

10. 创建 JSON Web Token 的密钥

我们将创建JWT(JSON Web Token)。
这将作为执行客户端和共识客户端安全通信的共享密钥。
我们将使用openssl生成随机数来创建JWT。

$ sudo mkdir -p /var/lib/jwtsecret
$ openssl rand -hex 32 | sudo tee /var/lib/jwtsecret/jwt.hex > /dev/null

如果您可以使用 sudo vim /var/lib/jwtsecret/jwt.hex 命令查看其内容并生成合适的字符串,则表示一切正常。

免谈其他话题

执行客户端和共识客户端分别作为多客户端存在,主要的代表如下。

image.png
image.png

每个软件的通信端口如下所示。

image.png

在这篇文章中,我们将使用Geth和Prysm。

11. 安装执行客户端(Geth: Go Ethereum)

    下記リンクから最新版をダウンロードする

 

$ curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.26-e5eb32ac.tar.gz
$ tar xvf geth-linux-amd64-1.10.26-e5eb32ac.tar.gz 
$ cd geth-linux-amd64-1.10.26-e5eb32ac/

geth-linux-amd64-1.10.26-e5eb32ac$ ll
total 42300
drwxr-xr-x 2 ethereum ethereum     4096 Nov  3 20:19 ./
drwxrwxr-x 3 ethereum ethereum     4096 Nov  4 14:41 ../
-rw-rw-r-- 1 ethereum ethereum    35149 Nov  3 20:16 COPYING
-rwxrwxr-x 1 ethereum ethereum 43269776 Nov  3 20:19 geth*

geth-linux-amd64-1.10.26-e5eb32ac$ sudo cp geth /usr/local/bin/
    version確認 $ /usr/local/bin/geth version
Geth
Version: 1.10.26-stable
Git Commit: e5eb32acee19cc9fca6a03b10283b7484246b15a
Git Commit Date: 20221103
Architecture: amd64
Go Version: go1.18.5
Operating System: linux
GOPATH=
GOROOT=go
    Gethユーザ作成&dataディレクトリ作成
$ sudo useradd --no-create-home --shell /bin/false geth
$ sudo mkdir -p /var/lib/geth
$ sudo chown -R geth:geth /var/lib/geth
    • systemdに登録

 

    sudo vim /etc/systemd/system/geth.service
[Unit]
Description=Geth Execution Client (Goerli Testnet)
After=network.target
Wants=network.target

[Service]
User=geth
Group=geth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
  --goerli \
  --datadir /var/lib/geth \
  --authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex \
  --metrics \
  --metrics.addr=<host IP address>

[Install]
WantedBy=default.target

–metrics.addr用于在Prometheus中设置可访问的自身IP地址。

    service起動
$ sudo systemctl daemon-reload 
$ sudo systemctl start geth
$ sudo systemctl status geth`
#ActiveになっていればOKです

#自動起動有効化
$ sudo systemctl enable geth
    ログ確認
$sudo journalctl -fu geth

备注:Geth控制台操作

Geth提供了基于JavaScript的IPC作为控制台。可以使用以下命令进行连接。

geth attach ipc:geth-tutorial/geth.ipc
    • Sync状況eth.syncing

peer接続数net.peerCount

peer情報admin.peers

你可以参考等。

生成12个验证器密钥

使用CLI工具staking_deposit_cli生成将来需要的Validator key。

只需要一个选项的话,以下是对”マシン1″的中文翻译:机器1

    ツールをダウンロードします
curl -LO https://github.com/ethereum/staking-deposit-cli/releases/download/v2.3.0/staking_deposit-cli-76ed782-linux-amd64.tar.gz
    USBメモリを挿入し、フォーマットしてマウント
$ sudo fdisk -l

<snip>
Disk /dev/sda: 7.21 GiB, 7743995904 bytes, 15124992 sectors
Disk model: Silicon-Power8G 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x500a0dff
<snip>
$ sudo lsblk -f
NAME                 FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
<snip>
sda                  vfat        FAT32    default E481-3F56                                             
<snip>
$ sudo mkfs.vfat -F 32 -n 'MyEth' /dev/sda
mkfs.fat 4.2 (2021-01-31)

使用mkfs.vfat命令可以在指定的设备上创建FAT文件系统。
使用mkfs.vfat命令可以创建与Windows和MacOS之间进行数据交互的设备,例如USB闪存驱动器或外接硬盘驱动器。

$ sudo mkdir /media/external
$ sudo mount /dev/sda /media/external/
$ sudo df -h
Filesystem                         Size  Used Avail Use% Mounted on
<snip>
/dev/sda                           7.2G  4.0K  7.2G   1% /media/external

staking_deposit_cliをUSBメモリにコピーしてアンマウント

$ sudo cp -r staking_deposit-cli-76ed782-linux-amd64 /media/external/
$ sudo umount /media/external

以下是对“マシン3”的原生中文释义:

机器三

    • USBメモリを挿入&マウントし、staking_deposit_cliを$HOMEにコピー、解凍。

 

    下記のコマンドによりvalidator-keyを生成する(今回は2 validator分のkeyを作成します)
$ chmod 755 deposit
$ sudo ./deposit new-mnemonic --num_validators 2 --chain goerli

keystore passwordを考えて入力してください → 後ほどマシン1へimportする際に必要になります。

mnemonic(seed phrase)を紙にメモる ★安全かつ確実に保管してください★
出来上がったvalidator_keysディレクトリをUSBメモリに移します

只需要给你一个选项,对以下内容进行汉语本土化的改写:机器1。

我会回来三次插入USB存储器并挂载,然后复制并带回验证器密钥。

$ sudo mount /dev/sda /media/external/
$ mkdir ~/testnet_keys
$ sudo cp -r /media/external/ /home/ethereum/testnet_keys/

$ sudo ls -l ./
total 20900
-rwxr-xr-x 1 root root 21396536 Nov  4 15:16 deposit
drwxr-xr-x 2 root root     4096 Nov  4 15:16 validator_keys

$ sudo ls -l validator_keys/
total 12
-rwxr-xr-x 1 root root 1410 Nov  4 15:16 deposit_data-1667330975.json
-rwxr-xr-x 1 root root  710 Nov  4 15:16 keystore-m_12381_3600_0_0_0-1667330974.json
-rwxr-xr-x 1 root root  710 Nov  4 15:16 keystore-m_12381_3600_1_0_0-1667330975.json

keystore-m_.json是要导入的JSON文件。
deposit_data-.json将通过稍后提及的launchpad来发行deposit合约。

13. Prysm软件的安装(Consensu客户端和验证器)

    下記リンクから最新版をダウンロードする。手順同じなのでValidatorも一緒にインストールしてしまいます。

 

$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v3.1.2/beacon-chain-v3.1.2-linux-amd64
$ curl -LO https://github.com/prysmaticlabs/prysm/releases/download/v3.1.2/validator-v3.1.2-linux-amd64

$ mv beacon-chain-v3.1.2-linux-amd64 beacon-chain
$ mv validator-v3.1.2-linux-amd64  validator

$ chmod +x beacon-chain 
$ chmod +x validator 

$ ll
-rwxrwxr-x  1 ethereum ethereum 103629584 Nov  3 20:41 beacon-chain*
-rwxrwxr-x  1 ethereum ethereum  93784904 Nov  3 20:42 validator*

$ sudo cp beacon-chain /usr/local/bin/
$ sudo cp validator /usr/local/bin/
    walletディレクトリ(validator_keyのimport先)を作成します
$ sudo mkdir -p /var/lib/prysm/validator
$ sudo chown -R ethereum:ethereum /var/lib/prysm/validator/

将validator_key导入

$ /usr/local/bin/validator \
 accounts import \
 --keys-dir=/home/ethereum/testnet_keys/validator_keys \
 --wallet-dir=/var/lib/prysm/validator \
 --goerli
    上記コマンドを実行すると確認メッセージが表示されますのでacceptとタイプします。
Prysmatic Labs Terms of Use

By downloading, accessing or using the Prysm implementation (“Prysm”), you (referenced herein
as “you” or the “user”) certify that you have read and agreed to the terms and conditions below.

TERMS AND CONDITIONS: https://github.com/prysmaticlabs/prysm/blob/master/TERMS_OF_SERVICE.md

Type "accept" to accept this terms and conditions [accept/decline]: (default: decline):
accept

wallet passwordを考えて設定します。
続いて、validator_key生成時に設定したkeystore passwordを入力しimportを実行します。

[2022-11-04 15:33:33]  WARN flags: Running on the Prater Testnet
Password requirements: at least 8 characters
New wallet password: 
Confirm password: 
[2022-11-04 15:33:45]  INFO accounts: Successfully created new wallet wallet-path=/var/lib/prysm/validator
[2022-11-04 15:33:45]  WARN validator: You are using an insecure gRPC connection. If you are running your beacon node and validator on the same machines, you can ignore this message. If you want to know how to enable secure connections, see: https://docs.prylabs.network/docs/prysm-usage/secure-grpc
Enter the password for your imported accounts: 
Importing accounts, this may take a while...
Importing accounts... 100% [=================================================================================================]  [1s:0s]
Successfully imported 2 accounts, view all of them by running `accounts list`

通过这个操作,已经导入了两个验证器的验证器密钥。

wallet passwordをファイル化しておきます。これはprysmがユーザ介助なしにwalletへアクセスするためです。

$ sudo vim /var/lib/prysm/validator/password.txt
#walletパスワードを手打ちで入力して保存しましょう。
    以下のコマンドで動作確認しましょう。
$ /usr/local/bin/validator \
 accounts list \
 --wallet-dir=/var/lib/prysm/validator \
 --wallet-password-file=/var/lib/prysm/validator/password.txt \
 --goerli
[2022-11-05 02:15:41]  WARN flags: Running on the Prater Testnet
[2022-11-05 02:15:41]  WARN validator: You are using an insecure gRPC connection. If you are running your beacon node and validator on the same machines, you can ignore this message. If you want to know how to enable secure connections, see: https://docs.prylabs.network/docs/prysm-usage/secure-grpc
(keymanager kind) local wallet

Showing 2 validator accounts
View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data`

Account 0 | grossly-suited-mouse
[validating public key] <snip>

Account 1 | only-expert-lemur
[validating public key] <snip>

设置信标节点

    • beacon nodeとはconsensus clientのことbeacon chainを扱うconsensus layerで動作します。具体的にはprysmを構成するモジュールの1つと言えます。

 

    専用のユーザprysmbeaconを作成します。
$ 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
    service設定を行います。

请使用超级用户权限打开终端并输入以下命令:
$ sudo vim /etc/systemd/system/prysmbeacon.service

[Unit]
Description=Prysm Consensus Beacon Node(Goerli Testnet)
Wants=network-online.target
After=network-online.target
[Service]
User=prysmbeacon
Group=prysmbeacon
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/beacon-chain \
  --goerli \
  --datadir=/var/lib/prysm/beacon \
  --http-web3provider=http://127.0.0.1:8551 \
  --jwt-secret=/var/lib/jwtsecret/jwt.hex \
  --suggested-fee-recipient=<FeeRecipientAddress> \
  --enable-debug-rpc-endpoints \
  --grpc-max-msg-size=65568081 \
  --checkpoint-sync-url=https://goerli.checkpoint-sync.ethdevops.io \
  --genesis-beacon-api-url=https://goerli.checkpoint-sync.ethdevops.io \
  --accept-terms-of-use \
  --monitoring-host=<host IP address>

[Install]
WantedBy=multi-user.target

建议的收费接收者是指定接收交易矿工费用的地址。这是指定执行层(旧版ETH1)的地址。如果没有特殊要求,可以先指定预设的令牌所有者地址。

— 监控主机是在后续的Prometheus监视中使用的自己的IP地址。请指定在Prometheus服务器中可访问的主机IP地址。

    beacon node起動
$ sudo systemctl daemon-reload 
$ sudo systemctl start prysmbeacon
$ sudo systemctl status prysmbeacon
#activeになっていればOKです。

#自動起動有効化
$ sudo systemctl enable prysmbeacon
    動作ログ確認
$ sudo journalctl -fu prysmbeacon

設置驗證器

    • validatorもconsensus layerで動作するprysmソフトウェア群の1つですが、beacon nodeとは別プロセスとなります。

 

    実行するユーザprysmvalidatorも専用に設けます。
$ sudo useradd --no-create-home --shell /bin/false prysmvalidator
$ sudo mkdir -p /var/lib/prysm/validator
$ sudo chown -R prysmvalidator:prysmvalidator /var/lib/prysm/validator

$ sudo ls -l /var/lib/prysm/
total 8
drwxr-xr-x 3 prysmbeacon    prysmbeacon    4096 Nov 15 19:19 beacon
drwxr-xr-x 3 prysmvalidator prysmvalidator 4096 Nov  4 15:50 validator
    • service登録

 

    $ sudo vim /etc/systemd/system/prysmvalidator.service
[Unit]
Description=Prysm Consensus Validator Node(Goerli Testnet)
Wants=network-online.target
After=network-online.target
[Service]
User=prysmvalidator
Group=prysmvalidator
Type=simple
Restart=always
RestartSec=5
ExecStart=/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="<aaaaaaa>" \
  --accept-terms-of-use \
  --monitoring-host=<host IP address>
[Install]
WantedBy=multi-user.target

–有人说涂鸦就像是一种评论(未经证实)。
–监测主机需要指定与刚才相同的IP地址。

$ sudo systemctl daemon-reload 
$ sudo systemctl start prysmvalidator
$ sudo systemctl status prysmvalidator
#activeになっていればOKです。

#自動起動有効化
$ sudo systemctl enable prysmvalidator
    動作ログ確認
$ sudo journalctl -fu prysmvalidator

由于存款尚未完成,在此阶段,会持续输出类似于”等待信标节点观察到存款”的消息。

14.投资权益

到目前为止,期待已久的质押准备工作已经完成。
现在,截至2022年11月,在Goerli网络上进行质押有两种主要方式。

① 自己购买32goETH并进行存款
② 出资0.0001goETH,并代理存款32goETH

将32个以太币自行获得并存入。

在PoW结束后,获得goETH变得更加困难,与以前相比上升了。
由于Faucet供应不足1个goETH/天,大部分人需要花费相当多的努力和时间来积累。
虽然有一些网站可以将goETH兑换成稳定币,但是如果你坚持自己准备的话,可能需要自己找到这些存在可能是灰色地带的网站。
考虑到可能存在的问题,我决定不在这里列出来。

只需要投资0.0001goETH,代理人会帮您存入32goETH。

在本文中,我們將介紹這種方法。
這種方法的持續性也不確定。

我将在下面以项目符号列出步骤。

    1. 我将在Discord上注册ethstaker服务器。

 

    1. 加入/cheap-goerli-validator频道。

 

    1. 让它休息大约24小时(出于滥用防护的限制)。

 

    1. 发布/cheap-goerli-validator。

 

    1. 根据BOT的指示,跳转到signer.is并同意,进行MetaMask和连接设置。

 

    1. 生成链接后,将其复制到剪贴板。

 

    1. 返回Discord并粘贴。

 

    1. 如果成功,BOT将回复”You can now perform 2 cheap deposits on~”。

 

    1. 按照指示,前往专用的Launchpad https://goerli.launchpad.ethstaker.cc,并按照教程进行操作。外观类似于普通的launchpad,但质押所需金额降到了0.0001goETH/validator。

 

    1. 如果要求deposit文件,请将已生成的deposit_data-.json拖放并上传。

 

    1. 从launchpad生成deposit合约,Metamask将做出响应。如果没有问题,请确认。

 

    1. 使用EOA支付0.0001goETH给中继CA。

 

    1. 然后,中继CA将发出内部交易,并支付32goETH给实际的deposit-CA。差额由中继CA承担。

 

    (Note: The translation may vary based on context and may require proper nouns to be retained in English.)

以上就完成了。
再重申一遍,一切由个人负责。

只要存款成功,Validator账户就会自动支付到Beacon Chain。
可以通过beaconcha.in等网站查看进度。
等待大约16小时处于待定状态后,进入活跃状态。

 

在等待的时候,我们将进行监视节点的设置。

15. 设置监控节点(Prometheus + Grafana)

机器1(以太坊节点):安装节点导出程序。

首先,设置Ethereum节点上的node-exporter。node-exporter是一种代理程序,用于将各种度量指标传输给Prometheus(准确地说,它是等待代理程序,在Prometheus来拉取数据时做出响应)。

    ダウンロード(最新版を探してきましょう)

 

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
$ tar xvf node_exporter-1.5.0.linux-amd64.tar.gz
    実行ユーザ作成
$ sudo useradd --no-create-home --shell /bin/false nodeexporter
$ sudo mkdir -p /var/lib/node_exporter
$ sudo chown -R nodeexporter:nodeexporter /var/lib/node_exporter
    /user/local/bin/へ配置
$ cd node_exporter-1.5.0.linux-amd64/

$ ls -l node_exporter ※実行権限ついてることを確認
-rwxr-xr-x 1 ethereum ethereum 19779640 Nov 30 03:59 node_exporter*

$ sudo cp node_exporter /usr/local/bin/

$ sudo ls -l /usr/local/bin/node_exporter 
-rwxr-xr-x 1 root root 19779640 Nov 30 23:12 /usr/local/bin/node_exporter
    • service登録

 

    sudo vim /usr/lib/systemd/system/prometheus_node_exporter.service
[Unit]
Description=Node Exporter for Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=nodeexporter
Group=nodeexporter
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
 
[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload

#設定反映を確認
$ sudo systemctl list-unit-files | grep prometheus
prometheus_node_exporter.service           disabled        enabled

#起動
$ sudo systemctl start prometheus_node_exporter.service 
$ sudo systemctl status prometheus_node_exporter.service

#自動起動有効化
$ sudo systemctl enable prometheus_node_exporter.service 
    ログ確認
$ sudo journalctl -fu prometheus_node_exporter

机器2:Prometheus设备安装

本文中提到使用树莓派作为监视节点。(因为希望尽量减少能耗和光照)

 

选择并安装Raspberry Pi OS(64位)。由于基于Debian,因此其命令体系与Ubuntu相似。

    Prometheusインストール
$ sudo apt install prometheus

请在`sudo vim /etc/prometheus/prometheus.yml`文件中添加以下配置。

#Ethereum Validator Node
  - job_name: 'ethereum host'
    static_configs:
      - targets: ['<target IP address>:9100']

  - job_name: 'beacon node'
    static_configs:
      - targets: ['<target IP address>:8080']

  - job_name: 'validator'
    static_configs:
      - targets: ['<target IP address>:8081']

  - job_name: 'slasher'
    static_configs:
      - targets: ['<target IP address>:8082']

将<目标IP地址>设置为Validator节点(Machine 1)的IP地址。
ethereum主机与node-exporter的监听端口9100对应。
由于此次不进行削减工作,因此无需提供slasher。

    起動
$ sudo systemctl start prometheus

我們使用作業用電腦的瀏覽器,透過 http://<監視節點IP>:9090 進行操作測試。

设备2:Grafana安装配置

 

$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$ sudo apt-get update
$ sudo apt-get install -y grafana
$ sudo /bin/systemctl enable grafana-server
$ sudo /bin/systemctl start grafana-server

请使用作业用PC的浏览器,通过 http://<监视节点IP>:3000 进行操作确认。
用户名为admin,初始密码也为admin。

    • Dashboard設定

 

    • Grafanaは好みのDashboardを設定できます。

 

    JSONファイルをダウンロードして、Grafanaの設定画面からImportしましょう。

 

以下是一些列举的例子。

prysm使用
https://docs.prylabs.network/assets/grafana-dashboards/big_amount_validators.json

请使用Node-exporter
https://grafana.com/grafana/dashboards/1860-node-exporter-full/

 

以上是全部完成的。辛苦了。

请参考以下链接

以太坊质押指南(Ubuntu/Goerli/Prysm)

广告
将在 10 秒后关闭
bannerAds