暗号資産Arweaveをマイニングするためのガイド(公式ガイドページの翻訳記事)です。
Arweaveマイニングガイド
Arweaveのマイニングを行いたいですか? そんなあなたにぴったりのガイドです。
このクイック&イージーガイドで準備を行い、マイナーの増え続ける素晴らしいネットワークに参加しましょう。
Arweaveでのマイニングに関するご質問やサポートは、Discordサーバー(link)に参加されることを強くお勧めします。ここでは、多くのコミュニティメンバーとArweaveチームメンバーがあなたをサポートします。
Arweaveのコア開発者は、中国本土内の少なくとも1つのマイニングノードが政府によって押収されたことを認識しています。ノードオペレータは、Arweaveネットワークが中国政府の活動に関連する相当量の資料を保存し、提供していることを理解する必要があります。Arweaveプロトコルは、どのマイナーも不適切と判断したデータを保存することを要求していません。コンテンツポリシーについてはこちらをご覧ください。
アップグレードの注意:私たちはプロトコルの新しいイテレーション(一連の工程を短期間で繰り返す、開発サイクルのこと)に取り組んでいます。これは、マイナーにとって最適なハードウェア設定を変更することで、特にハードディスクをSSDよりも大幅にコスト効率の良いものにするためです。アップグレード後は、安価なHDDも高価なNVMeディスクと同様にマイニングに適したものになる予定です。移行の正確なスケジュールはまだ言えませんが、今後数カ月で完了すると推定されます。
マイナーソフトウェアのインストール
リリースページ(リンク)から、お使いのOSに対応した.tar.gzアーカイブをダウンロードします。
そしてダウンロードしたアーカイブを解凍してください。このとき専用のディレクトリの中で解凍することをお勧めします。
このディレクトリはいつでも移動できますが、一部のファイルだけを移動するとマイナーが動作しない可能性があります。
Weave(Arweaveにおけるブロックチェーン)のデータは、デフォルトでは同様にこのディレクトリに格納されますが、data_dir
コマンドライン引数を使用して上書きし、別の場所へ変更することを推奨します。
もし、あなたのOS/プラットフォームのアーキテクチャがリストにない場合は、ソースコードリポジトリのREADME(リンク)をチェックして、ソースからマイナーをビルドする方法を確認してください。
「Windows Subsystem for Linux」や仮想マシン環境を使って、Windows上にArweaveのマイニング環境を構築することも可能です。
準備編:ファイルディスクリプタの制限
利用可能なファイルディスクリプタの数は、ノードがデータを処理する速度に影響します。
多くのOSでは、ユーザー・プロセスに割り当てられたデフォルトの制限値が低いのが普通なので、これを増やすことをお勧めします。
現在の制限値は、ulimit -n
を実行することで確認できます。
Linuxでは、より大きなグローバルリミットを設定するために、/etc/sysctl.conf
を開き、次の行を追加します。
fs.file-max=900000
fs.nr_open=9000001
そしてsysctl -p
を実行し、変更を有効にします。
OSユーザーで変更を恒久的なものにするには、/etc/security/limits.conf
を開き、以下の行を追加してください。
soft nofile 900000
続いて新しいターミナルセッションを開きます。
変更が有効になり、上限が上がったことを確認するために、ulimit -n
と入力します。
現在のセッションの制限を変更するには、ulimit -n 900000
と入力します。
上記を試してみてうまくいかない場合は、下記の値を/etc/systemd/user.conf
と/etc/systemd/system.conf
の両方に記述してください。
DefaultLimitNOFILE=900000
準備編:ファイルシステムのチューニング
ディスクにインストールされているファイルシステムは、df -T
を実行することで確認することができます。
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda ext4 2077376896 3709996 1968072124 1% /
マイニングに推奨環境であるext4(fourth extended file system)ファイルシステムを使用している場合、以下のコマンドを実行することで、大量のファイルをうまく扱えるようになります。
sudo tune2fs -O large_dir /dev/sda
dev/sda
はファイルシステムの名前に置き換えてください。
マイナーの実行
ここまでのステップでマイニングを開始する準備が整いました。
マイニングを開始するために、Arweaveディレクトリから以下のコマンドを実行してください。
./bin/start mine mining_addr YOUR-MINING-ADDRESS peer 188.166.200.45 peer 188.166.192.169 peer 163.47.11.64 peer 139.59.51.59 peer 138.197.232.192
上記のコードにおいてYOUR-MINING-ADDRESS
をあなたのウォレットアドレスに書き換えるのを忘れずに!
マイナーの活動のログを見たい場合は、別のターミナルを立ち上げて、Arweaveディレクトリで./bin/logs -f
を実行してください。
最終的にマイニングのコンソール画面はこのような状態になるはずです。
[Stage 1/3] Starting to hash
Miner spora rate: 1545 h/s, recall bytes computed/s: 3129, MiB/s read: 386, the round lasted 145 seconds.
[Stage 1/3] Starting to hash
Skipping hashrate report, the round lasted less than 10 seconds.
[Stage 1/3] Starting to hash
Miner spora rate: 1545 h/s, recall bytes computed/s: 3182, MiB/s read: 386, the round lasted 135 seconds.
[Stage 1/3] Starting to hash
Miner spora rate: 1637 h/s, recall bytes computed/s: 3292, MiB/s read: 409, the round lasted 245 seconds.
[Stage 1/3] Starting to hash
ブロックの採掘に成功すると、コンソールに次のように表示されます。
[Stage 2/3] Produced candidate block ... and dispatched to network.
そしておよそ20分後、次のように表示されます。
[Stage 3/3] Your block ... was accepted by the network
なお時折、あなたのブロックが確認されない(チェーンが別のフォークを選択する)ことに注意してください。
マイニングを停止させるには、./bin/stop
を実行するか、OSのプロセスを強制終了(kill -sigterm <pid>
またはpkill <name>
)してください。
SIGKILL (kill -9
) を実行することは推奨されません。
マイナーのチューニング
特定のハードウェアで得られるハッシュレートと採掘量についての大まかな目安は、プール運営者の一人である @vird が開発したカリキュレーターを参考にしてください。
マイナーのSPoRAレートを最適化する
マイニングの効率を決定する3つの重要な要因は、ディスクのスループット(GiB/s)、同期データ量、プロセッサパワーです。RAMは32GiBを推奨しますが、最低限必要なのは8GiBです。
ノードはコンソールでそのハッシュレートを報告します。マイナーのSpora Rate:1546 h/sand
ログ:-miner_sporas_per_second
。
この値はデータなしでマイナーを起動したときは0であり、より多くのデータが同期されるにつれて徐々に増加することに注意してください。
数値が安定したら、コミュニティメンバーである @tiamat が寛大にも作成してくれたこちらのマイニング計算機に入力して、期待されるリターンを確認することができます。
ハッシュレートを事前に見積もるには、CPUの性能、ディスクのスループット、マイニングに割り当てるディスク容量を予め調べておくか測定する必要があります。
CPUのベンチマークを行うには、パッケージ化されたrandomx-benchmark
スクリプトを実行します。例:./bin/randomx-benchmark --mine --init 32 --threads 32 --jit --largePages
。この"32"はお使いのハードウェアのCPUスレッド数に置き換えてください。 このときスレッド数を減らすと結果が良くなる場合がありますのでご注意ください。また、--largePages
をまだ設定していない場合は指定しないでください。
参考までに、32スレッドのAMD Ryzen 3950xで約10000h/s、32スレッドのAMD EPYC 7502Pで24000h/s、12スレッドのIntel Xeon E-2276G CPUで2500h/s、クラウド上の2スレッド Intel Xeon CPU E5-2650マシンで600h/sの性能が得られます。
ディスクのスループットがわからない場合は、hdparm -t /dev/sda
を実行してください。/dev/sda
は、df -h
で得られたディスク名に置き換えてください。
競争力を高めるには、数GiB/秒以上の高速なNVMe SSDを検討してください。
最後に、セットアップの上限ハッシュレートを確認するには、./bin/hashrate-upper-limit 2500 1 3
を実行します。ここで"2500"は RandomX ハッシュレート、"1"はディスクが毎秒読み取る GiB 数、"3"は weave の 1/ 複製シェアを表します。
例えば、12コアのIntel Xeonに1GiB/sのSSDを搭載し、weaveの3分の1を使用した場合、上限は540h/sとなります。実際には、上限値の0.7~0.9程度の性能となるのが一般的です。
マイニング設定の変更
デフォルトの設定が最高効率となるよう最善を尽くしましたが、次のパラメータのいくつかを変更すると、さらにマイナーの効率が向上する場合があります:
stage_one_hashing_threads
(1からCPUスレッド数との間)、stage_two_hashing_threads
、io_threads
、randomx_bulk_hashing_iterations
。
例えば次のようになります。
./bin/start stage_one_hashing_threads 32 stage_two_hashing_threads 32 io_threads 50 randomx_bulk_hashing_iterations 64 data_dir /your/dir mine sync_jobs 80 mining_addr YOUR-MINING-ADDRESS peer 188.166.200.45 peer 188.166.192.169 peer 163.47.11.64 peer 139.59.51.59 peer 138.197.232.192
recall bytes computed/s
はMiner spora rate
をweaveから得られたシェアで割ったものとほぼ等しいはずです。
もしそうでなければ、io_threads
を増やし、stage_one_hashing_threads
を減らすことを検討してください。
chunk_storage
フォルダのサイズ (du -sh /path/to/data/dir/chunk_storage
) を weave の総サイズで割ると、そのノードがこれまでに同期した weave のシェアを知ることができます。
randomx_bulk_hashing_iterations
を128以上に増加させると、強力なマシンでは大きな違いが出るかもしれません。
Weaveの同期
Arweaveのマイナーは、データがなければマイニングできません。
新しいブロックごとに、それを採掘するために、過去のデータの多数のランダムな情報のかたまりを読み取り、チェックする必要があります。
ピアからデータをダウンロードするのに時間がかかるため、最初の起動時はマシンがマイニングに集中することを期待しないでください。
例えば、全体のWeaveサイズの10%をダウンロードしている場合、データセット全体を使った同様の設定の10%の効率で採掘していることになります。ただし完全なデータセットをダウンロードする必要はないことに注意してください。
chunk_storage
とrocksdb
フォルダに1TiBしか容量がない場合、ノードがそれを埋めてしまうので、ディスクとプロセッサが十分に高性能であれば、あなたのマイナーは競争力を持つかもしれないです。
ブートストラップを高速化するには、次のようにsync_jobs
設定パラメータに高い値(デフォルトは20)を使用します。
./bin/start mine sync_jobs 80 mining_addr YOUR-MINING-ADDRESS peer 188.166.200.45 peer 188.166.192.169 peer 163.47.11.64 peer 139.59.51.59 peer 138.197.232.192
データの同期が完了したら、sync_jobs
を 2 に戻すことができます。minerをオフにする(mine
フラグを設定しない)ことで、さらに同期を高速化することができます。
コミュニティメンバーの@francesco-adamoが、ノードがデータを同期するのにかかる時間を推定するツールを開発しました。
ノードによって同期されたブロックヘッダの数(ツールによってexpected arweave_storage_blocks_stored sync time
として報告される)は、マイニング効率に影響を与えないことに注意してください。
大きなメモリページの設定
さらにパフォーマンスを向上させるために、OSに巨大なメモリページを設定することを検討してください。
Ubuntuの場合、現在の値を見るには以下を実行します:cat /proc/meminfo | grep HugePages
。
値を設定するには、sudo sysctl -w vm.nr_hugepages=1000
を実行してください。再起動後も設定を維持するために、/etc/sysctl.d/local.conf
を作成し、そこに vm.nr_hugepages=1000
を記述してください。
cat /proc/meminfo | grep HugePages
の出力は、次のようになります。
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 1000
HugePages_Free: 1000
HugePages_Rsvd: 0
HugePages_Surp: 0
上記のようでない場合、または起動時に "erl_drv_rwlock_destroy" エラーが発生する場合は、マシンを再起動してください。
最後に、起動時にenable randomx_large_pages
を指定して、ラージページを使用できるようにマイナーに指示してください。
./bin/start mine enable randomx_large_pages mining_addr YOUR-MINING-ADDRESS peer 188.166.200.45 peer 188.166.192.169 peer 163.47.11.64 peer 139.59.51.59 peer 138.197.232.192
複数のディスクを使用する
最もシンプルな方法は、すべてを1つのディスクに保存することです。それで問題ない場合は、このセクションをスキップしてください。
しかし、マイニングに使用しないメタデータは、より安価で低速な媒体、例えばHDDディスクに保存してもよいでしょう。
高速なデバイスをchunk_storage
と rocksdb
フォルダにマウントする:
sudo mount /dev/nvme1n1 /your/dir/chunk_storage
sudo mount /dev/nvme1n2 /your/dir/rocksdb
sudo mount /dev/hdd1 /your/dir
df -h
の出力は、次のようになります。
/dev/hdd1 5720650792 344328088 5087947920 7% /your/dir
/dev/nvme1n1 104857600 2097152 102760448 2% /your/dir/chunk_storage
/dev/nvme1n2 104857600 2097152 102760448 2% /your/dir/rocksdb
dev/nvme1n1
、/dev/nvme1n2
、/dev/hdd1
はお持ちのファイルシステムに、/your/dir
は起動時に指定したディレクトリに置き換えてください:
./bin/start data_dir /your/dir mine sync_jobs 80 mining_addr YOUR-MINING-ADDRESS peer 188.166.200.45 peer 188.166.192.169 peer 163.47.11.64 peer 139.59.51.59 peer 138.197.232.192
トラブルシューティング
自分のノードがインターネットにアクセスできることを確認する
マイニングプロセスの重要な部分は、他の採掘者が採掘したブロックを発見することです。あなたのノードは、インターネット上のどこからでもアクセスできる必要があり、ピアはあなたと接続し、彼らのブロックを共有することができます。
自分のノードがパブリックアクセス可能かどうかを確認するには、http://[あなたのインターネット IP]:1984
をブラウズしてください。ここでパブリックIPを取得するか、curl ifconfig.me/ip
を実行することで取得することができます。
マイナーを起動する際に別のポートを指定した場合、この手順のどこかで「1984」をあなたのポートに置き換えてください。ノードにアクセスできない場合、ポート1984のあなたのインターネットIPアドレスへのHTTPリクエストを、マイニングマシンの選択したポートにTCPポートフォワーディングをセットアップする必要があります。
ポートフォワーディングの設定方法の詳細については、ISPまたはクラウドプロバイダーにお問い合わせください。
ノードがインターネットにアクセスできない場合、マイニングマシンは機能しますが、効率が著しく低下します。
データを別のマシンにコピーする
別のマシンでマイナーを起動したい場合、最初のマイナーからダウンロードしたデータをコピーして、より速くスピードアップさせることができます。以下の手順で行ってください。
1. 1台目のArweaveマイナーを停止し、2台目のマイナーも稼働していないことを確認してください。
2. data_dir
フォルダを丸ごと新しいマシンにコピーします。
chunk_storage
フォルダはスパースファイルを含んでいるので、通常の方法でコピーすると時間がかかり、コピー先のフォルダのサイズも大きくなりすぎることに注意してください。
このフォルダをコピーするには、rsync に-aS
フラグを付けるか、コピーする前にtar -Scf
でアーカイブしてください。
オプションとして、data_sync_state
とchunk_storage_index
ファイルとrocksdb/ar_data_sync_db
、rocksdb/ar_data_sync_chunk_db
、chunk_storage
フォルダのみをコピーすることができます。
これらのフォルダには、マイニングに必要なすべてのデータが格納されています。しかし、2つのノードのうち1つが完全なWeaveを保存していない限り、それらにデータを同期させることは、長い目で見れば採掘効率を上げることになります。sync_jobs
設定パラメータに高い値を設定することで、ノードのブートストラップを高速化できます。
3. 両方のマイナーを起動します。
Windowsでマイナーを動かす
私たちの経験では、Windowsは効率と信頼性が低いため、マイニングに使用することはお勧めしません。しかし、Windowsでマイニングすることは可能です。
方法としては、Windows Subsystem for Linux (WSL) 内で Arweaveマイナーを動作させることができます。
WSLが依存するデフォルトのTCPコンフィギュレーションは、典型的なLinuxコンフィギュレーションよりも制限が多いことに注意してください。
WSLの構成では、TCP接続のためのTCPポート数が約半分、ソケット再利用のタイムアウトが2倍となっており、マイニングマシンが他のノードに行える1秒あたりの同時リクエスト数が大幅に減少しています。
その結果、マイナーコンソールに次のようなエラーが表示されることがあります。
=ERROR REPORT====...=== Socket connection error: exit badarg, [{gen_tcp,connect,4, [{file,"gen_tcp.erl"},{line,149}]}
このときWindowsイベントログには、以下のような警告が出ることが予想されます。
TCP/IP failed to establish an outgoing connection because the selected local endpoint was recently used to connect to the same remote endpoint. This error typically occurs when outgoing connections are opened and closed at a high rate, causing all available local ports to be used and forcing TCP/IP to reuse a local port for an outgoing connection. To minimize the risk of data corruption, the TCP/IP standard requires a minimum time period to elapse between successive connections from a given local endpoint to a given remote endpoint.
最新情報
- Discordサーバーに参加する
- マイニングメーリングリストへの参加
Arweaveのマイニングに成功したら、新しいリリースを常にチェックすることが必要です。
特に、ネットワークと同期するために一定時間内にアクションを起こす必要があるアップデートについては、メーリングリストに参加すると、新しいアップデートがリリースされたことを知らせるメールと、最新の状態を維持するために必要な手順が届きます。
これらのメッセージに注意し、可能であれば、team@arweave.org をメールプロバイダの信頼できる送信者リストに追加してください。
翻訳元:
docs.arweave.org