Ethereum 2.0 Pyrmont テストネット ステーキングへの参加ガイド

Ethereum 2.0 Pyrmont テストネット ステーキングへの参加ガイド

ソース |翻訳元

警告: Eth2 メインネットに接続するには、このガイドに従わないでください。メインネットガイドについては、「Ethereum 2.0 メインネットステーキングチュートリアル (Ubuntu/Teku)」を参照してください。

この記事では、マルチクライアント テストネット Pyrmont を通じて Ethereum 2.0 メインネットにステークする方法について説明します。主に以下のテクノロジーに基づいています:

  • Ubuntu v20.04 (LTS) x64 サーバー

  • Go Ethereum ノード (コード ブランチ)

  • ConsenSys の Ethereum 2.0 クライアント、Teku (コードフォーク)

  • 公式マルチクライアントテストネットワークパブリックネットワーク、ピルモント

  • ブラウザプラグイン暗号ウォレットMetaMask

  • プロメテウスパラメータ

  • Grafanaダッシュボード

このガイドには以下の手順が含まれています。

  • 新しく稼働するUbuntuサーバーに接続して安全に構成するユースケース

  • Ethereum 1.0ノードを設定し、サービスとして実行する

  • Pyrmontバリデータアカウントキーを生成し、資産を預ける

  • PyrmontバリデータアカウントキーをTekuクライアントにインポートする

  • Ethereum 2.0およびPyrmontテストネットフェーズ0用のTekuクライアントソフトウェアをコンパイルおよび構成し、サービスとして実行する

  • Prometheusパラメータをインストールして設定し、Grafanaダッシュボードをセットアップする

思い出させる

このガイドは Pyrmont テストネット用です。いかなる状況でもメインネット ETH をテストネットに送信しないでください。一度送信すると失われます。

Eth2 メインネットに接続するには、このガイドに従わないでください。メインネット固有のガイドについては、「Ethereum 2.0 メインネットステーキングチュートリアル (Ubuntu/Teku)」を参照してください。

謝辞と免責事項

このチュートリアルでは、インターネット上のさまざまな資料を参照します。資料を提供してくださった寄稿者の方々に感謝します!

ConsenSys Discord の #teku チャンネルと、Discord でのサポートとレビューをしてくれた EthStaker チームに感謝します。

Ethereum Foundation の Eth2 クライアント チームと研究者に特に感謝します。数年にわたるたゆまぬ努力の末、彼らは私たちをこの素晴らしい瞬間、つまり Eth2.0 の成功へと導いてくれました。

このチュートリアルは教育目的のみに使用されます。私はこの記事で取り上げられている技術の専門家ではありません。このチュートリアルの内容の正確性は保証されません。また、このチュートリアルに従うことで生じたいかなる損失についても責任を負いません。

サポート

このプロセスは少し難しい場合があります。私のほかに、助けを求めることができる 2 つの優れたリソースがあります。

  • EthStaker コミュニティは、リソースが豊富で非常にフレンドリーな Ethereum 2.0 ステーキング コミュニティです。

  • レディット: https://www.reddit.com/r/ethstaker/

  • ディスコード: https://discord.gg/7z8wzehjrJ

  • Teku クライアント チーム Discord: https://discord.gg/trQ378WCp4 は、クライアント ソフトウェアのエンジニアリング チームであり、Teku の使用に関する専門家です。

状態

このチュートリアルでは、Ethereum、ETH、ステーキング、テストネット、Linux、MetaMask に関する背景知識が必要です。

このチュートリアルでは、以下をインストールして実行する必要もあります。

  • Ubuntu Server v20.04 (LTS) amd64 以降が、ローカル コンピューター、ネットワーク、またはクラウド (AWS、Digital Ocean、Microsoft Azure など) にインストールされ、実行されていること。ネットワークの分散化を高めるには、ローカル コンピューターを使用することをお勧めします。クラウド プロバイダーがオフラインになると、そのプロバイダーでホストされているすべてのノードがオフラインになります。

  • ブラウザ プラグインの暗号ウォレット MetaMask がインストールまたは構成されています。オペレーティング システム (Mac、Windows、Linux など) とブラウザー (Brave、Safari、FireFox など) を搭載したコンピューター。

Raspberry Piユーザーの皆様へ

このチュートリアルは Raspberry Pi ではテストしていません。試してみたい場合は、以下にリストされているソフトウェアを ARM バージョンに置き換えるだけです。これが機能するという保証はありません。

必要とする

  • Ubuntu サーバーの使用例。 v20.04 (LTS) amd64サーバーVMを使用しました

  • ブラウザプラグイン暗号化ウォレットMetaMaskをインストールして設定する

  • ハードウェア要件は比較的大きなトピックです。一般的に、比較的新しい CPU、8 GB の RAM (16 GB が望ましい)、少なくとも 1 TB のメモリを搭載した SSD、安定したネットワーク (ダウンロード速度と月間データ クォータが十分に速い) があれば、ステーキング プロセスはより安全でスムーズになります。

概要

このチュートリアルはかなり長いので、次の図でステーキングの手順を簡単に説明します。黄色の部分がこの記事で取り上げる部分です。

全体のプロセスは次のように概念化できます。

  • Eth1 ノードを設定し、Eth1 Göerli テストネットのデータを同期します。

  • バリデータキーと入金データを生成します。

  • Tekuクライアントを設定し、Eth1ノードデータを同期する

  • バリデータキーを有効化するには、32 Göerli テストネット ETH を入金してください。

それでは、今すぐ始めましょう!

ステップ0: サーバーに接続する

SSH ポートを使用して、Ubuntu サーバーに接続します。 Ubuntu の root アカウントは通常デフォルトで無効になっていますが、一部のクラウド プロバイダーでは root アカウントを有効にすることができます。 root としてログインする場合は、root としてログインするのは非常に危険なため、管理者権限を持つユーザー アカウントを再作成することをお勧めします。

注: root としてログインしていない場合は、手順 1 に進んでください。

# adduser <ユーザー名>

パスワードを設定し、その他の情報を入力します。

新しいユーザーを sudo グループに追加して、管理者権限を付与します。

# usermod -aG sudo <ユーザー名>

<yourusername> としてログインしている場合は、コマンド ラインの前に sudo と入力することで、スーパーユーザー権限でコマンドを実行できます。

オプション: SSH キーを使用してルート アカウント経由で Ubuntu インスタンスに接続した場合は、ルート アカウントの SSH キー データを使用して新しいアカウントに接続する必要があります。

# rsync --archive --chown=<ユーザー名>:<ユーザー名> ~/.ssh /home/<ユーザー名>

最後に、ルート アカウントからログアウトし、新しく作成したユーザー名 <yourusername> を使用して Ubuntu サーバーにログインします。

ステップ1: サーバーをアップグレードする

システムが最新のソフトウェアとセキュリティ設定に更新されていることを確認してください。

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

$ sudo 再起動

ステップ2: サーバーを保護する

セキュリティは非常に重要です。ただし、この記事はセキュリティに関するガイドではないため、基本的な設定のみがリストされています。

ファイアウォールの設定

Ubuntu 20.04 サーバーは、デフォルトの UFW ファイアウォールを使用してサーバーにアクセスするトラフィックを制限できますが、最初に SSH、Go Ethereum、Grafana、Teku からの受信トラフィックを許可するように設定します。

SSHを許可する

SSH 経由でサーバーに接続できるようにします。セキュリティ上の理由から、次にデフォルトのポートを 22 に変更します (これは一般的な攻撃ベクトルであるため)。

注: デフォルトの SSH ポートを変更しないことを選択した場合 (推奨されません)、デフォルトの SSH ポートを許可するための追加手順 *$ sudo ufw allow 22/tcp* を追加してから、「Go Ethereum」を許可する手順に進む必要があります。

1024 〜 49151 の間のポート番号を選択し、次のコマンドを実行して、まだ使用されていないポート番号を取得します。赤色(使用中)の場合は、別のポートを選択してください。例: sudo ss -tulpn | grep ':6673'

$ sudo ss -tulpn | grep ':<SSHポート番号>'

ファイアウォールを更新して、<yourSSHportnumber> への受信トラフィックを許可します。 SSH には TCP プロトコルが必要です。例: sudo ufw allow 6673/tcp

$ sudo ufw allow <SSHポート番号>/tcp

次に、デフォルトの SSH ポートを変更します。

$ sudo ナノ /etc/ssh/sshd_config

デフォルトのポート番号「ポート 22」または「ポート 22」を見つけて、独自のポート番号「ポート <yourSSHportnumber>」を変更します。 # を削除します (ある場合)。以下のスクリーンショットを参照すると、ドキュメントは以下に示すものと似ているはずです (ポート番号を除く)。保存して終了します。

SSHサービスを再起動する

$ sudo systemctl sshを再起動します

次回 SSH 経由でログインするときは、ポート番号 <yourSSHportnumber> を使用します。

オプション: ポート 22/TCP に UFW をすでに使用している場合は、ファイアウォールを更新して、そのポートへの受信トラフィックを拒否します。必ず新しい SSH ポートを使用してログインした後にこれを実行してください。

$ sudo ufw 22/tcpを拒否

イーサリアムを許可する

Go Ethereum ピア (ポート 30303/TPC および 30303/UDP) からの受信要求を許可します。 Infura などのサードパーティがホストする Eth1 ノードを使用している場合は、この手順をスキップできます。

注: Ubuntu サーバーをローカルでホストしている場合は、ポート 30303 からの受信トラフィックを許可するようにネットワーク ルーティングを構成する必要があります。

$ sudo ufw 許可 30303

テクを許可する

Teku のピアとのピアツーピア接続が Beacon Chain ノード上で動作できるようにします (デフォルトのポートは Consensys によって提供される 9000/TCP および 9000/UDP)。 。

注: Ubuntu サーバーをローカルでホストする場合は、ポート 9000 からの受信トラフィックを許可するようにネットワーク ルーティングとファイアウォールを構成する必要があります。

$ sudo ufw 許可 9000

Grafanaを許可する

Grafana Web サーバー (ポート 3000/TCP) への受信要求を許可します。

$ sudo ufw 3000/tcp を許可する

Prometheus を有効にする (オプション)

Prometheus データ サービスに直接アクセスする場合は、ポート 9090/TCP を開くこともできます。 Grafana をデータの表示のみに使用している場合、これは必要ありません。このポートは開いていません。

$ sudo ufw 9090/tcp を許可する

ファイアウォールを起動し、正しく設定されているかどうかを確認します。

$ sudo ufw enable$ sudo ufw status numbered

表示は次のようになります

ステップ3: Go Ethereumノードをインストールして実行する

ビーコン チェーンが接続される Eth1.0 ノードをインストールして構成します。サードパーティのサービス (Infura など) を選択した場合は、この手順をスキップできます。

Go Ethereumをインストールする

Go Ethereum クライアントをインストールするには、PPA (Personal Package Archives) を使用することをお勧めします。

$ sudo add-apt-repository -y ppa:ethereum/ethereum

パッケージを更新し、最新の安定バージョンをインストールします。

$ sudo apt update$ sudo apt install geth

Go Ethereumをバックグラウンドサービスとして実行する

このサービスを実行するにはアカウントを作成する必要があります。このタイプのアカウントではサーバーにログインできません。

$ sudo useradd --no-create-home --shell /bin/false を実行する

Eth1 ノード データを保存するための Eth1 ブロックチェーンのデータ ディレクトリを作成します。

$ sudo mkdir -p /var/lib/goethereum

ディレクトリの権限を設定します。 goeth アカウントには、データ ディレクトリを変更する権限が必要です。

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

サービス構成を保存するための systemd サービス ファイルを作成します。この設定ファイルを使用して、systemd に geth プロセスを実行するように指示します。

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

次のサービス構成をコピーしてドキュメントに貼り付けます。

[ユニット]説明=Ethereum Go クライアント
後=ネットワーク.ターゲット
Wants=network.target[サービス]
ユーザー=goeth
グループ=goeth
タイプ=シンプル
再起動=常に
再起動秒数=5
ExecStart=geth --goerli --http --datadir /var/lib/goethereum[インストール]
WantedBy=デフォルト.ターゲット

--goerli フラグは Göerli テストネットをターゲットにするために使用され、--http フラグはビーコン チェーン ノードに接続するための HTTP ポート (http://localhost:8545) を公開するために使用されます。

下のスクリーンショットを参照してください。保存して終了します。

上記の変更を表示するには、systemd をリロードします。

$ sudo systemctlデーモンリロード

サービスを開始し、正常に実行されていることを確認します。

$ sudo systemctl gethを開始$ sudo systemctl status geth

表示は以下のスクリーンショットのようになります。

すべてを正しく実行すると、緑色で「アクティブ(実行中)」と表示されます。表示されない場合は、戻って上記の手順を繰り返して問題を解決する必要があります。終了するにはQを押してください。

システムの再起動時に geth サービスが自動的に開始されるようにします。

$ sudo systemctl gethを有効にする

Go Ethereum ノードが同期を開始します。進行状況を追跡するには、journal コマンドを実行します。終了するには、Ctrl+C を押します。

注意: Ctrl+C を押してジャーナルを終了しても、サービスには影響しません。ジャーナルは、サービス ログをリアルタイムで表示するものです。

注: Ctrl+C を使用してジャーナルを終了しても、サービスには影響しません。ジャーナルは、サービス ログをリアルタイムで表示するものです。

$ sudo journalctl -fu geth.service

同期するピアを見つけるのに時間がかかる場合 (10 分以上)、ピアを追加できます。ここにアクセスして最新のマニフェストを取得し、次のコマンドを実行して geth サービスを変更します。

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

ExecStart 行を変更し、--bootnodes フラグを追加します。最新のピアを以下にコンマで区切ってリストします。

ExecStart=geth --goerli --http --datadir /var/lib/goethereum --bootnodes "enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291@94.237.54.114:30313 、enode://119f66b04772e8d2e9d352b81a15aa49d565590bfc9a80fe732706919f8ccd00a471cf8433e398c55c4862aadb4aadf3a010201483b87e8358951698aa0b6f07@13.250.50.139:30303"

ファイルを保存して終了します。その後、サービスを再起動して観察します。

$ sudo systemctl daemon-reload$ sudo systemctl gethを起動します
$ sudo journalctl -fu geth.service

起動後、画面は以下のスクリーンショットのようになります。

ビーコン チェーンを実行する前に、ノードが同期するまで待つ必要があります。最新のブロックにアクセスするにはここをクリックしてください。

たとえば、上のスクリーンショットはノードがブロック番号 43756 を処理していることを示しており、下のスクリーンショットは最新のブロックが 3196411 であることを示しています。つまり、同期を完了するにはまだ時間があるということです。

次に、バリデータ入金データを準備します。同期のステータスを確認したい場合は、いつでも sudo journalctl -fu geth.service コマンドを実行できます。

ステップ4: バリデータキーと入金データを生成する

Eth2.0 Pyrmont テストネットでバリデータノードを実行するには、1 つ以上のバリデータアカウントを登録する必要があります。

注意: すでに入金データを生成し、ステーク入金を送信している場合は、この手順をスキップできます。他の場所で認証キーを生成した場合は、このサーバーに認証キーをコピーする必要があります。

登録手順は次のとおりです。

  • Göerli ETH を入手

  • バリデータキーを生成します。 1 つのキーは 1 つのバリデータ アカウントを表します。

  • 各バリデーターアカウントに32 Göerli ETHを入金する

  • バリデーターアカウントが有効化されるのを待っています

それでは、今すぐ始めましょう!

Goerli ETHを入手

  • MetaMask ブラウザ プラグインがインストールされているコンピューターを使用します。

  • MetaMaskをクリックしてログインします

  • 上部のドロップダウンメニューをクリックし、Göerli Test Networkを選択します。

  • アカウント名をクリックして、Göerliテストネットウォレットアドレスをコピーします。

  • 自分のアドレスを使用して認証済みのフォーセットから Göerli ETH を取得するか、ethstaker Discord の #request-goerli-eth チャンネルでボット コマンド !goerliEth <yourwalletaddress> を使用して取得します。

注: バリデーターには 32 ETH のデポジットが必要です。 MetaMask ウォレットには、各バリデータ クライアントに十分な Göerli ETH が入金されている必要があります。たとえば、10 個のバリデーターを実行する場合は、320 Göerli ETH と、ガス料金を支払うための追加のお金 (1 Göerli ETH など) が必要になります。

バリデータキーを生成する

次に、入金データと検証キーを生成する必要があります。 Teku バリデータ クライアントは複数のバリデータ キーをサポートします。 Pyrmont テストネットでは、基本的に 1 つのバリデータ キーが 1 つの「バリデータ アカウント」を表します。入金データにはステーキング情報(バリデータキーリストなど)が含まれます。

Deposit コマンドライン インターフェース アプリの最新リリースを入手するには、ここをクリックしてください。

「アセット」列に Linux バージョンへのリンクをコピーします。以下に示すリンクを使用してダウンロードします。コマンド内の URL を最新バージョンのダウンロード リンクに変更します。

$ cd ~$ sudo apt install curl
$ curl -LO https://github.com/ethereum/eth2.0-deposit-cli/releases/download/v1.1.0/eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz

tar アーカイブを開き、作成されたディレクトリに移動します。

$ sudo tar xvf eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz$ cd eth2deposit-cli-ed5a6d3-linux-amd64

アプリケーションを実行して、入金データと検証キーを生成します。

<numberofvalidators> を、作成する検証キーの数に変更します。例: --num_validators 5

$ sudo ./deposit new-mnemonic --num_validators <検証子の数> --mnemonic_language=english --chain pyrmont

ウォレットのパスワードを作成するように求められます。これを使用して、バリデータ キーを Teku クライアントのバリデータ ウォレットに読み込みます。安全な場所にバックアップしてください。

シードフレーズ(ニーモニック)を生成します。別の場所にバックアップしてください。これは重要であり、引き出しキーを生成したり、バリデータを追加したりするために必要になります。

ニーモニックを確認すると、バリデータ キーが作成されます。

新しく作成されたバリデータキーと入金データドキュメントは特定の場所に作成されます。たとえば、 eth2deposit-cli-ed5a6d3-linux-amd64/validator_keys です。マークしておいてください。後で必要になります。

フォルダの内容は次のとおりです。

deposit_data-[timestamp].json ドキュメントには、バリデータの公開鍵と入金情報が含まれています。この書類は、入金手続きを完了するための次のステップで使用されます。サーバー上にあり、Web ブラウザーがないため、セキュア FTP (SFTP) を使用して、MetaMask を実行しているコンピューターにドキュメントを転送します。続行する前にこの手順を完了することを忘れないでください。

keystore-m...json ドキュメントには暗号化された署名キーが含まれています。各バリデータ アカウントには keystore-m があります。これらは、Teku クライアント バリデータ ウォレットを作成するために使用されます。

ダウンロードした tar アーカイブを削除してクリーンアップします。

$ cd ~$ rm -rf eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz

デポジットデータとキーストアファイルが揃ったので、Teku を設定できます。 Teku をセットアップする前に、資産をキーに預ける (バリデーターをアクティブ化するために Göerli ETH を預ける) 必要があります。そうすることで、まずセットアップを検証できます。バリデーターの入金が有効化されているが、システムの準備ができていない場合、非アクティブとしてペナルティが課せられます。

ステップ5: インストール条件

Teku は Java 言語に基づいて構築されているため、実行するには Java ランタイム環境 (JRE) が必要であり、コンパイルするには Java 開発キット (JDK) が必要です。

両方のツールをインストールします。

$ sudo apt install default-jre default-jdk$ java --version
$ javac --バージョン

表示は次のようになります

ethstaker@ETH-STAKER-001:~$ java --versionopenjdk 11.0.9.1 2020-11-04

OpenJDK ランタイム環境 (ビルド 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64 ビット サーバー VM (ビルド 11.0.9.1+1-Ubuntu-0ubuntu1.20.04、混合モード、共有)
ethstaker@ETH-STAKER-001:~$ javac --version
javac 11.0.9.1

ステップ6: Tekuのクローンとビルド

これでTekuを構築する準備が整いました。 Teku は teku バイナリ ファイルを生成します。このバイナリは、ビーコン チェーンとバリデータ クライアントの機能を提供します。

Teku の最新バージョンを入手するには、ここをクリックしてください。マスター ブランチ バージョンは不安定になる可能性があるため、クローンを作成しないように注意してください。

タグを使用する(この場合は20.11.0-RC2)

$ cd ~$ git clone --b 20.11.0-RC2 https://github.com/Consensys/teku.git
$ cd テク

Gradleを使用してコードをコンパイルする

$ sudo ./gradlew インストールDist

ビルド時間は約3〜6分かかります。飲み物を飲んで水分補給しましょう。私の他の記事も読んでみてください。

すべてがうまくいけば、続行します。そうでない場合は、ConsenSys Discord の #teku チャンネルで助けを求めてください: https://discord.gg/trQ378WCp4

ステップ7: Tekuバイナリをコピーする

次に、コンパイルされた Teku ファイルを /usr/local/bin ディレクトリにコピーして貼り付けます。ここで、後で systemd サービスを作成し、ファイルを実行します。

$ cd ~$ sudo cp -a teku/build/install/teku/. /usr/local/bin/teku

注意: *teku* バイナリの新しいバージョンをプルまたはビルドするたびに、これを実行する必要があります。このチュートリアルの最後の付録「Teku アップデート」を参照してください。

ステップ8: ビーコンノードとバリデータクライアントを構成する

Teku クライアントはサービスとして実行されるため、システムを再起動するとプロセスも自動的に再起動されます。

アカウントとディレクトリの設定

ビーコンおよびバリデータノードを実行するためのアカウントを作成します。このタイプのアカウントはサーバーにログインするために使用できません。

$ sudo useradd --no-create-home --shell /bin/false teku

Teku クライアント データ ドキュメント用のデータ ディレクトリと、Teku 構成ドキュメント用の config ディレクトリを作成します。

$ sudo mkdir -p /var/lib/teku$ sudo mkdir -p /etc/teku

この方法では、ドキュメントを 1 か所に集中させ、keystore-m...json ドキュメントを先ほど作成したデータ ディレクトリにコピーできます。

$ sudo cp -a /$HOME/<ValidatorKeysPath> /var/lib/teku

<ValidatorKeysPath> に、生成したバリデータ キーへのパスを入力します (例: eth2deposit-cli-ed5a6d3-linux-amd64/validator_keys)。 keystore-m ファイルのみをコピーすることに注意してください。 deposit_data ドキュメントをコピーしないでください。コピーした場合は、次のコードで削除してください。

$ cd /var/lib/teku/validator_keys$ ls
$ sudo rm <デポジットデータファイル名>

次のような結果が表示されます (バリデータ ドキュメントの数によって異なります)。

認証者パスワード文書の作成

Teku クライアントでは、実行時にバリデーターが各バリデーター アカウントにアクセスするためのパスワード ドキュメントを必要とし、サービスが自動的に再起動されます。

各バリデーターの keystore-m...json キー ファイルには、対応するパスワード txt ファイルが必要です。すべての認証子のパスワードが同じであっても、この手順は必須です。パスワード ファイルの名前は、対応する keystore-m ファイルと一致している必要があります。

$ ls /var/lib/teku/validator_keys

各 keystore_m*.json ファイルに対して、同じ名前のパスワード ファイルを作成します。

$ sudo nano /var/lib/teku/validator_keys/<jsonファイル名>.txt

<jsonfilename> に json ドキュメントの名前を入力します。最後に .txt を追加することを忘れないでください。 txt ファイルで、キーストアのパスワード (手順 4 で検証ファイルを作成するときに指定したパスワード) を YourKeystorePasswordForThisValidator に入力します。保存して終了します。各 *.json ドキュメントに対して上記の手順を繰り返します。

次の結果が得られれば、この手順は完了です。

注意: *deposit_data-\*.json* ファイルは存在しないはずです。ある場合は削除してください。 Teku クライアントは対応するパスワード ドキュメントが存在することを期待するため、誤ったペアリングが発生します。

権限を設定する

ディレクトリの権限を設定します。 teku アカウントにはディレクトリを変更する権限が必要です。ディレクトリの権限が正しく設定されていることを確認します。

$ sudo chown -R teku:teku /var/lib/teku$ sudo chown -R teku:teku /etc/teku
$ ls -dl /var/lib/teku; ls -dl /etc/teku

次のようになります:

認証者キーにドキュメント権限を適用して、セキュリティをさらに強化し、誤って削除されるのを防ぎます。 (teku) ユーザーに読み取り/書き込み/実行権限を与えます。ドキュメントの権限が正しく設定されていることを確認します。

$ sudo chmod -R 700 /var/lib/teku/validator_keys$ sudo ls -lh /var/lib/teku/validator_keys

結果は次のようになるはずです

バリデータキーとパスワードが設定されたので、サービスの設定を開始できます。

Teku構成ドキュメントを作成する

Teku クライアントは、構成ファイルを介してコマンド ライン オプションを読み取ることができます。今すぐ作成します。

$ sudo nano /etc/teku/teku.yaml

次のコードをドキュメントに貼り付けます。

データベース パス: "/var/lib/teku"ネットワーク: "pyrmont"eth1 エンドポイント: "http://127.0.0.1:8545/"バリデータ キー: "/var/lib/teku/validator_keys:/var/lib/teku/validator_keys"バリデータ グラフィティ: "<yourPOAPstring>"p2p ポート: 9000ログ送信先: CONSOLEmetrics-enabled: truemetrics-port: 8008rest-api-enabled: true
REST API ドキュメントが有効: true

flagdata-base-path は、サービスがデータを保存する場所を定義します。

flageth1-endpoint は ETH1 ノードのエンドポイントを定義します。ローカルにインストールする場合、この値は http://127.0.0.1:8545 になります。サードパーティのノード (Infura など) を使用している場合は、この値を外部端末のアドレスを指すように変更する必要があります。

フラグ validators-keys は、キー ファイルとパスワード ファイルの場所を示します。こうすることで、それらはすべて同じディレクトリ内にあります。

<yourPOAPstring> に必要なテキストを入力します。たとえば、validators-graffiti: "abcdefg12345" などです。

推奨されるログ出力先: systemd 使用時の CONSOLE 設定

下のスクリーンショットを参照してください。ドキュメントは次のようになります。終了して保存します。

Teku サービスの作成と構成

構成サービスを保存するための systemd サービス ドキュメントを作成します。

$ sudo nano /etc/systemd/system/teku.service

次のコードをコピーしてドキュメントに貼り付けます

[ユニット]説明=Tekuクライアント
欲しいもの=ネットワークオンライン.ターゲット
After=network-online.target[サービス]
タイプ=シンプル
ユーザー=teku
グループ=てく
再起動=常に
再起動秒数=5
環境="JAVA_OPTS=-Xmx2g"
ExecStart=/usr/local/bin/teku/bin/teku --config-file=/etc/teku/teku.yaml[インストール]
WantedBy=マルチユーザー.ターゲット

Java (Teku で使用されるプログラミング言語) は、ランタイムを実行するときに大量の RAM を使用するように設計されています。 flagEnvironment="JAVA_OPTS=-Xmx2g" はヒープ サイズを 2GB に制限するため、Teku は合計で約 3~3.5GB の使用可能なメモリで実行されます。

下のスクリーンショットを参照してください。ドキュメントは次のようになります。終了して保存します。

変更を表示するには、systemd をリロードします。

$ sudo systemctlデーモンリロード

注意: ローカル Eth1 ノードを実行している場合 (手順 3 を参照)、Teku サービスを開始する前に、完全に同期されるまで待つ必要があります。プロセスはここで確認してください: *sudo journalctl -fu geth.service*

サービスを開始し、正しく実行されていることを確認します。

$ sudo systemctl start teku$ sudo systemctl status teku

表示される結果は次のようになります。

すべてを正しく実行すると、緑色で「アクティブ(実行中)」と表示されます。表示されない場合は、戻って上記の手順を繰り返して問題を解決する必要があります。終了するにはQを押してください。

システムの再起動時にサービスが自動的に再起動されるようにします。

$ sudo systemctl を有効にする

ビーコンノードはデータの同期を開始します。完全に同期するまでに数時間かかる場合があります。 journal コマンドを実行すると進行状況を追跡できます。終了するには、Ctrl+C を押します。

注意: Ctrl+C を押してジャーナルを終了しても、サービスには影響しません。ジャーナルはサービス ログのリアルタイム ビューを示します。

$ sudo journalctl -fu teku.service

バリデータキーの処理を開始し、データを Eth1 チェーンの先頭に同期します。ヘッドスロットが現在のスロットに同期されると、ビーコンノードの同期が完了します。

Teku クライアントを起動しました。
情報 - 2 つの検証キーを読み込んでいます...
情報 - BLS: BLST ライブラリがロードされました
情報 - 2 つのバリデータが読み込まれました: 96a349b、b7f51b6
...
情報 - 同期イベント *** 現在のスロット: 30174、ヘッド スロット: 54、接続されたピア: 1
情報 - 同期イベント *** 現在のスロット: 30175、ヘッド スロット: 92、接続されたピア: 6
情報 - 同期イベント *** 現在のスロット: 30176、ヘッド スロット: 128、接続されたピア: 8
情報 - 同期イベント *** 現在のスロット: 30177、ヘッド スロット: 160、接続されたピア: 10

このステップは終了です。これで、実行中のビーコン チェーンとバリデータ ノードができました。おめでとう!あなたは素晴らしいです!

ステップ9: バリデーターの入金を行う

セットアップが完了したら、32 Göerli ETH を Pyrmont テストネットに入金する必要があります。

注意: すでにステークデポジットを送信している場合は、この手順をスキップできます。

このステップでは、必要な Göerli ETH を Pyrmont テストネットのデポジット契約にデポジットします。これには、ブラウザ上の Pyrmont の Launchpad ウェブサイトから MetaMask (またはその他の) ウォレットを起動する必要があります。

注意: このチュートリアルがメインネット用である場合 (そうではありません)、デポジットを行う前に、Eth1 ノードとビーコン ノードが完全に同期されるまで待つ必要があります。これを行わないと、Eth1 ノードまたはビーコン チェーンの同期中に slack ペナルティが発生する可能性があります。

Pyrmont テストネット ローンチパッド: https://pyrmont.launchpad.ethereum.org/

画面が進むにつれて警告手順をクリックし続け、キー ペアを生成する部分に到達します。実行するバリデーターの数を選択します。手順 4 で生成した検証ファイルの数と一致する値を選択します。

下にスクロールして内容に同意するかどうかを確認し、「続行」をクリックします。

deposit_data-[timestamp].json ファイルをアップロードするように求められます。このドキュメントは で作成されました。ブラウザを搭載したコンピュータにコピーしてください。ドキュメントを参照/選択するかドラッグ アンド ドロップして、「続行」をクリックします。

ウォレットを接続します。 MetaMask (またはサポートされている他のウォレット) を選択し、ログインして、Göerli ETH が保存されている Göerli テスト ネットワークを選択し、「続行」をクリックします。

注意: MetaMask で Göerli テスト ネットワークを選択したことを 100% 確認してください。実際の ETH を Pyrmont テストネットに送信しないでください。

MetaMaskの残高が表示されます。 Göerli テスト ネットワークを選択し、十分な Göerli ETH 残高がある場合は、Web サイトで次の手順に進むことができます。

次に、バリデーターの数と必要な Göerli ETH の量を示す概要が表示されます。同意する場合はボックスにチェックを入れ、「続行」をクリックします。

「すべての取引を開始」をクリックします。

複数の MetaMask インスタンスがポップアップ表示され、それぞれが Pyrmont テストネットに対して 32 Göerli ETH のトランザクション要求を行います。各取引ごとにご確認ください。

すべての取引が正常に完了すると、誓約が完了します。

おめでとう!

最後にリストがあります。そこには役に立つ情報がたくさんあります。ぜひご覧ください

バリデーターの入金ステータスを確認する

新しいバリデーターは、アクティブ化されるまでにしばらく(数時間から数日)待つ必要があります。次の手順に従ってキーのステータスを確認できます。

  • Göerliテストネットウォレットアドレスをコピーします

  • 次のサイトにアクセスしてください: https://pyrmont.beaconcha.in/

  • ウォレットアドレスを検索します。キーが表示されます。

バリデーターの詳細をクリックします。各バリデーターがアクティブ化されると、ステータス列に推定時間が表示されます。

これで、機能するビーコン チェーン、バリデータ ノード、およびテストネット デポジットができました。入金が有効になると、作業が開始され、収益が得られます。おめでとう!

ステップ10: Prometheusをインストールする

Prometheus は、監視機能とアラート ツールキットを提供するオープン ソース システムです。これは Ubuntu サーバー上のサービスとして実行され、その役割はデータをスクレイピングすることです。詳細はここをご覧ください。

Prometheus を使用して、ビーコン チェーン、バリデータ、および特定のインスタンス データのランタイム データを公開します。

ユーザーアカウントを作成する

これらのサービスはアカウントの下で実行されます。これらのアカウントはサーバーにログインできません。

$ sudo useradd --no-create-home --shell /bin/false prometheus$ sudo useradd --no-create-home --shell /bin/false node_exporter

ディレクトリを作成する

プログラムとデータのディレクトリ。

$ sudo mkdir /etc/prometheus$ sudo mkdir /var/lib/prometheus

ディレクトリの所有権を設定します。これらは Prometheus アカウントによって管理されます。

$ sudo chown -R prometheus:prometheus /etc/prometheus$ sudo chown -R prometheus:prometheus /var/lib/prometheus

Prometheusソフトウェアをダウンロード

Prometheus ダウンロード ページから最新バージョンのバージョン番号を変更します。 Rpi ユーザーは必ず ARM バイナリを入手する必要があります。

$ cd ~$ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.22.2/prometheus-2.22.2.linux-amd64.tar.gz

tar アーカイブを開きます。 2 つのバイナリ ファイルといくつかのコンテンツ ファイルが含まれています。

$ tar xvf prometheus-2.22.2.linux-amd64.tar.gz

バイナリ ファイルを次の場所にコピーします。

$ sudo cp prometheus-2.22.2.linux-amd64/prometheus /usr/local/bin/$ sudo cp prometheus-2.22.2.linux-amd64/promtool /usr/local/bin/

ディレクトリの所有権を設定します。これらは Prometheus アカウントによって管理されます。

$ sudo chown -R prometheus:prometheus /usr/local/bin/prometheus$ sudo chown -R prometheus:prometheus /usr/local/bin/promtool

これらのコンテンツ ドキュメントを次の場所にコピーします。

$ sudo cp -r prometheus-2.22.2.linux-amd64/consoles /etc/prometheus$ sudo cp -r prometheus-2.22.2.linux-amd64/console_libraries /etc/prometheus

ディレクトリとドキュメントの所有権を設定します (-R)。これらは Prometheus アカウントによって管理されます。

$ sudo chown -R prometheus:prometheus /etc/prometheus/consoles$ sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

ダウンロードアーカイブを削除します。

$ rm -rf prometheus-2.22.2.linux-amd64.tar.gz prometheus-2.22.2.linux-amd64

構成ドキュメントの編集

Prometheus は、データを取得する場所を認識するために構成ドキュメントを使用します。

YAML 構成ドキュメントを開いて編集します。

$ sudo nano /etc/prometheus/prometheus.yml

次のコードをドキュメントにコピーし、他の編集を行わないように注意して、終了してファイルを保存します。

グローバル: scrape_interval: 15秒
scrape_configs:
- ジョブ名: "プロメテウス"
静的設定:
- ターゲット: ["localhost:9090"]
- ジョブ名: "teku"
スクレイプタイムアウト: 10秒
メトリックスパス: /metrics
スキーム: http
静的設定:
- ターゲット: ["localhost:8008"]

設定ファイルの所有権を設定します。この所有権は Prometheus アカウントに付与されます。

$ sudo chown -R prometheus:prometheus /etc/prometheus/prometheus.yml

最後に、サーバーが正しく実行されていることをテストします。

$ sudo -u prometheus/usr/local/bin/prometheus \ - config.file /etc/prometheus/prometheus.yml \
-storage.tsdb.path/var/lib/prometheus/\
-web.console.templates =/etc/prometheus/consoles \
-web.console.libraries =/etc/prometheus/console_libraries

出力は次のとおりです。 Ctrl+Cを押して終了します。

レベル=情報TS = 2020-11-22T17:24:35.396Z CALLER = MAIN.GO:684 MSG = "サーバーはWebリクエストを受信する準備ができています。」

Prometheusを自動的に開始したサービスとして設定します

SystemD Serviceドキュメントを作成して、PrometheusユーザーとしてPrometheusを実行するようにSystemDを指示し、Directory /etc/prometheus/prometheus.ymlに構成ドキュメントを配置し、ディレクトリ/var/lib/prometheusに保存します。

$ sudo nano /etc/systemd/system/prometheus.service

次のコードをドキュメントにコピーします。終了して保存します。

[ユニット]説明=プロメテウス
wants = network-online.target
after = network-online.target [service]
type = simple
user = prometheus
Group = Prometheus
再起動=常に
RestArtSec = 5
execstart =/usr/local/bin/prometheus \
-config.file /etc/prometheus/prometheus.yml \
-storage.tsdb.path/var/lib/prometheus/\
-web.console.templates =/etc/prometheus/consoles \
-web.console.libraries =/etc/prometheus/console_libraries [install]
wantseby = multi-user.target

変更を表示するためにSystemDをリロードします。

$ sudo systemctl daemon-reload

次に、次のコマンドを実行してサービスを開始し、ステータスが正しく実行されていることを確認します。

$ sudo systemctlは、prometheus $ sudo systemctlステータスprometheusを開始します

出力は次の画像のように見える必要があります。

すべてを正しく行った場合、グリーンで「アクティブ(ランニング)」と表示されます。表示されない場合は、問題を修正するために上記の手順を繰り返す必要があります。 Qを押して終了します。

最後に、Prometheusがシステムブートから開始できるようにします。

$ sudo systemctlはprometheusを有効にします

ステップ11:ノードエクスポートをインストールします

Prometheusは、ビーコンチェーンとバリデーターに関するデータを提供します。 Ubuntuインスタンスのデータが必要な場合は、node_exporterという拡張子が必要です。以下に別のバージョンを指定する場合は、ここで最新の安定バージョンを見つけることができます。 RPIユーザーは、ARMバイナリドキュメントを取得することを忘れないでください。

$ cd〜 $ curl -lo https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

ダウンロードしたソフトウェアを開きます。

$ tar xvf node_exporter-1.0.1.linux-amd64.tar.gz

バイナリドキュメントをディレクトリ/USR/ローカル/ビンにコピーし、ユーザーとグループの所有権を以前に作成したnode_exporterユーザーに設定します。

$ sudo cp node_exporter-1.0.1.linux-amd64/node_exporter/usr/local/bin $ sudo chown-r node_exporter:node_exporter/usr/local/bin/node_exporter

ダウンロードされたアーカイブを削除しました。

$ rm -rf node_exporter-1.0.1.linux-amd64.tar.gz node_exporter-1.0.1.linux-amd64

Node Exporterを設定して、自動的にサービスを開始します

SystemD Serviceドキュメントを作成して、SystemDがnode_exporterユーザーとしてnode_exporterを実行するようにsystemdを指示するサービス構成ドキュメントを保存します。

$ sudo nano /etc/systemd/system/node_exporter.service

次のコードをドキュメントにコピーします。終了して保存します。

[ユニット]説明=ノードエクスポート
wants = network-online.target
after = network-online.target [service]
user = node_exporter
group = node_exporter
type = simple
execstart =/usr/local/bin/node_exporter [install]
wantseby = multi-user.target

変更を表示するためにSystemDをリロードします。

$ sudo systemctl daemon-reload

次に、以下のコマンドを押してサービスを開始し、ステータスが正しく実行されることを確認します。

$ sudo systemctl start node_exporter $ sudo systemctl status node_exporter

出力を以下に示す必要があります。

すべてのステップを正しく行うと、グリーンフォントに「アクティブ(実行)」が表示されます。表示されていない場合は、上記の手順を巻き戻して繰り返して問題を修正する必要があります。 Qを押して終了します。

最後に、システムの開始時にノード輸出機が起動することが許可されます。

$ sudo systemctl enable node_exporter

PrometheusおよびNode Exporterをテストする(オプション)

すべて準備完了です。ファイアウォールにポートを開いて(ステップ1を参照)、http:// <surserverip>:9090を参照して、その機能を選択的にテストできます。そこで、クエリを実行して異なるデータを表示できます。たとえば、このクエリを試して、使用可能なメモリの量を確認できます。

http:// <ureserverip>:9090/new/graph?g0.expr = node_memory_memfree_bytes&g0.tab = 1&g0.stacked = 0&g0.range_input = 1h

ステップ12:Grafanaをインストールします

Prometheusは私たちのデータソースであり、Grafanaはダッシュボードデータを報告する機能を提供します。次に、Grafanaをインストールし、ダッシュボードを構成します。

APTリポジトリを使用してインストールします。これにより、インストールと更新が簡単になるためです。 Grafanaは公式のUbuntuパッケージリポジトリにありますが、そのバージョンは最新ではないかもしれないので、Grafanaの公式リポジトリを使用します。

WGETを使用してGrafana GPGのキーをダウンロードし、出力をApt-Keyに転送します。これにより、APTインストールのTrustキーリストにキーが追加されます。

$ wget -q -o -https://packages.grafana.com/gpg.key | sudo apt -key add-

GrafanaリポジトリをAPTのソースに追加します。

$ sudo add-papt-repository "deb https://packages.grafana.com/oss/deb stable main"

APTキャッシュを更新します。

$ sudo aptアップデート

グラファナが倉庫から設置されていることを確認してください。

$ apt-cacheポリシーグラファナ

出力は次のようにする必要があります。

Grafana:インストール:(なし)
候補者:7.3.3
バージョンテーブル:
7.3.3 500
500 https://packages.grafana.com/oss/deb stable/main amd64パッケージ
7.3.2 500
500 https://packages.grafana.com/oss/deb stable/main amd64パッケージ
7.3.1 500
500 https://packages.grafana.com/oss/deb stable/main amd64
...

上部に表示されるバージョンがここに表示されている最新バージョンと一致するかどうかを確認してください。その後、インストールを続けます。

$ sudo apt install grafana

Grafanaサーバーを起動し、ステータスが正しく実行されることを確認してください。

$ sudo systemctl start grafana-server $ sudo systemctl status grafana-server

出力は次のようにする必要があります。

すべてのステップを正しく行うと、グリーンフォントに「アクティブ(実行)」が表示されます。表示されていない場合は、上記の手順を巻き戻して繰り返して問題を修正する必要があります。 Qを押して終了します。

システムの開始時にGrafanaが開始できるようになります。

$ sudo systemctl grafana-serverを有効にします

Grafanaログインを構成します

これができることはすでに素晴らしいことです!すべてがセットアップされて実行されているので、ブラウザでhttp:// <yourserverip>:3000/にアクセスでき、Grafanaログインウィンドウが表示されます。

管理者にユーザー名とパスワードを入力します。システムを使用すると、パスワードを変更できます。必ず変更してください。

Grafanaのデータソースを構成します

データソースを構成しましょう。マウスを左側のメニューバーのギアアイコンに移動すると、メニューがポップアップ表示されます。データソースを選択します。

[データソースの追加]をクリックし、[Prometheus]を選択します。 URLにhttp:// localhost:9090を入力し、[保存とテスト]をクリックします。

Grafanaダッシュボードをインポートします

マウスを左メニューバーの +アイコンに移動すると、メニューがポップアップし、[インポート]を選択します。

コード13457を使用して公式のTekuシングルVerifierダッシュボードをインポートするか、コード12522を使用してBen Edgingtonダッシュボードをインポートします

また、データソース(Prometheus)を選択する必要がある場合があります。

この時点でダッシュボードを見ることができるはずです。最初はデータが少ないかもしれませんが、すべてが実行されると、データはより豊富になります。

最後に

ここで行われました!このチュートリアルが役立つことを願っています。

  • フィードバックがある場合は、TwitterまたはRedditで私に連絡できます

  • このチュートリアルが気に入っていて、他の人がこのチュートリアルを学ぶことができることを願っている場合は、Friendsリンクを使用してチュートリアルを共有してください!

  • サポート:Somer.Eth

  • 付録 - Tekuアップデート

TEKUクライアントチームがTEKUコードベースのコードを更新する場合、次のコマンドを使用してサービスを更新できます。

ここで希望するバージョンを見つけて、<リリース>に入力します。例:$ git fetch-tags && gitチェックアウト20.11.0-RC2。

$ cd〜 $ cd teku
$ sudo git fetch -tags && git checkout <Lelease>
$ sudo ./gradlew installdist
$ sudo systemctlはtekuを停止します
$ sudo rm -r/usr/local/bin/teku#< - 古いビルドを削除する
$ sudo cp -a〜/teku/build/install/teku/。 /usr/local/bin/teku
$ sudo systemctlはtekuを開始します
$ sudo systemctl status teku#< - ステータスを確認してください
$ sudo journalctl -fu teku#< - ステータスを確認してください

声明:ECNの翻訳作業は、高品質の情報と学習リソースを中国のイーサリアムコミュニティに伝えることを目的としています。記事の著作権は原作者に帰属します。元のテキストとethereum.cnのソースを示す必要があります。長期間にわたって再印刷する必要がある場合は、[email protected] に連絡して許可を得てください。

公式アカウント:ETH中国のウェブサイト

ウェブサイト:ethereum.cn

<<:  毎日の市場分析 |オプションの受渡日が近づくにつれて、BTCは大きく変動すると予想される

>>:  コイン掘りクリスマススペシャル

推薦する

DAO: 規制のせいでインターネットがまたおかしくなりつつある

クレイジーな解説:世界で最も資金を集めたプロジェクトとして、1億5000万元を調達したDAO(分散型...

Bitwise: どのような状況でビットコインは第4四半期に8万ドルを超えるのか

ビットコインが2024年に史上最高値を更新するには3つの要素が必要です。もう一つの要因がその発展を加...

UAEの銀行、データ侵害とビットコインによる身代金要求に悩まされる

顧客データの漏洩がまたもやニュースになっていますが、今回は、これまで経験したことよりも結果がひどいで...

ビットメイングループ、ロボット企業キャロットテクノロジーの資産を買収し、人工知能の展開を加速

12月8日、大手人工知能チップ企業であるビットメイングループは、インテリジェントロボット企業である北...

12 種類以上のトークンを証券として明確に分類している SEC が、なぜ ETH を回避し続けるのでしょうか?

米国証券取引委員会(SEC)は最近、Binanceに対して訴訟を起こし、暗号通貨業界に衝撃を与えた。...

ミームコインマニアの心理学

「ミームコインブーム」の形成につながった心理的・社会的プロセスは、他のブームにつながるものと似ていま...

新しいビットコイン採掘機能:廃熱を利用して魚を育て、野菜を育てる

ビットコインなどのデジタル通貨については、その誕生以来、投機や誇大宣伝が話題となり続けています。しか...

ビットコインのマイニング手数料は値上げされる可能性はありますか?

第0章 はじめにビットコインのブロック報酬が将来複数回半減すると、マイナーの利益が保護されるかどうか...

海外メディア:ビットコインは史上最も急速に成長し、最も広く保有されている金融資産となった

香港を拠点に急成長中の暗号通貨取引所Crypto.comの新しい調査によると、暗号通貨ユーザーの数は...

最高のビットコインマイナー: Antminer S5 レビュー (パート 2)

このレビューの前半では、 Antminer S5の外観、使用方法、技術的な詳細、デフォルト周波数35...

台湾金融監督委員会は噂を否定し、ビットコイン問題については中立の立場を表明

台湾の金融監督委員会(FSC)は最近、ビットコイン規制の問題について中立の立場を維持するという新たな...

「非典型的な」ブロックチェーン: コインチェーンサークルの観点から Filecoin エコシステムを解釈する

Arweave は「非典型的な」ブロックチェーン プロジェクトです。ほとんどの人はそれについて何も知...