ARWEAVE JP

暗号資産Arweave(AR)の目指すビジョンに共感し、応援の思いを込めて情報を日本語で紹介するブログです。

Arweaveマイニングガイド

この記事をシェアする

 暗号資産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_threadsio_threadsrandomx_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/sMiner 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_storagerocksdbフォルダに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が、ノードがデータを同期するのにかかる時間を推定するツールを開発しました。

github.com

 ノードによって同期されたブロックヘッダの数(ツールによって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_storagerocksdbフォルダにマウントする:

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_statechunk_storage_index ファイルとrocksdb/ar_data_sync_dbrocksdb/ar_data_sync_chunk_dbchunk_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.
 

最新情報

 Arweaveのマイニングに成功したら、新しいリリースを常にチェックすることが必要です。

 特に、ネットワークと同期するために一定時間内にアクションを起こす必要があるアップデートについては、メーリングリストに参加すると、新しいアップデートがリリースされたことを知らせるメールと、最新の状態を維持するために必要な手順が届きます。

 これらのメッセージに注意し、可能であれば、team@arweave.org をメールプロバイダの信頼できる送信者リストに追加してください。

翻訳元:
docs.arweave.org


このサイトについてArweaveとは?Arweaveマイニングガイド

※免責事項:当サイトに掲載しているサービス・銘柄について、将来的な利益をお約束するものではございません。また情報の正確性には気を配っておりますが、当サイトの掲載内容について保証は一切致しかねます。必ずご自身で情報をご精査の上ご利用下さい。また、暗号資産(仮想通貨)取引は元本を保証するものではなく、価格変動により損失が生じるリスクがあります。取引をされる際には取引内容をよく理解し、ご自身の判断で行ってください。