Arweaveの最新2.7.2バージョンでは何がアップグレードされましたか?
最近、#Arweave はブロック高 1391330 でハードフォークを行い、コンセンサス機構を 2.7.2 バージョンにアップグレードしました。このバージョンにはどのような更新があるのでしょうか?この記事では詳細に解説します。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
1. 協調マイニング(Coordinated Mining)
協調マイニングは、複数のノードが同じマイニングアドレスを使用してマイニングを行うことができ、ブロック報酬を失ったりブラックリストに載ったりする心配がないマイニング方式です。この方式を使用しない場合、もし2つのノードが同じ高さで同じマイニングアドレスを使用してブロックを公開した場合、違反と見なされます。これにより、マイナーはマイニング収益を失うだけでなく、そのマイニングアドレスがブラックリストに載ることになります。したがって、Weave の異なるサブセットを保存している複数のノードが、より多くの二重データブロック解決(two-chunk solutions)を得るための計算能力の利点を得ることができます。
ここで登場する二重データブロック解決(two-chunk solutions)について疑問があるかもしれませんが、これは何でしょうか?
以前のホワイトペーパーシリーズの解説記事で説明したように、各 VDF(毎秒と理解できます)、マイナーは各パーティションごとに毎秒最大 2 回成功したマイニング解決策を見つける機会があります。ここでは、各試行を Attempt と呼ぶことにします。最初の Attempt は、マイナーが保存しているパーティション内でランダムにデータブロックを見つけてハッシュを生成することです。マイナーがこの最初の Attempt のハッシュを得た後、それを使用してすべての Weave パーティション内で2つ目のランダムデータブロックを見つけ、そのハッシュを生成して2回目の Attempt を完了します。もしマイナーが2回目の Attempt で解決策を見つけた場合、それは彼らが2つのデータブロック(chunks)を使用してマイニングを完了したことを示しているため、これを two-chunk solutions と呼びます。
2.7.2 バージョンでは、コンセンサス機構が最初の Attempt の難易度を大幅に引き上げ、マイナーが one-chunk solution を見つけることが非常に困難になりました。これにより、マイナーは2回目の Attempt を行う必要があり、概ね 100 個の two-chunk solutions に対して1回の one-chunk solution の機会が得られます。これを行う目的は、マイナーができるだけ多くの Weave パーティションを保存するように促すことです。そして、新しく更新された協調マイニングモードでは、マイナーがすべての Weave を保存していない場合でも、他のマイナーとの協力を通じてマイニング効率を最大化できるようになります。
基本システム
協調マイニングモードには2つの役割があります:
- 出口ノード
- マイナー
クラスター内のすべてのノードは同じマイニングアドレスを共有します。各マイナーは彼らが保存しているパーティションの H1 ハッシュを生成します。時には、彼らが必要とする H2 ハッシュが彼らが保存していないパーティションに存在することがあります。この場合、彼らは協調マイニングクラスター内で対応するパーティションを保存しているマイナーを見つけ、H1 を送信して H2 を計算してもらいます。有効な解決策が見つかった場合(one-chunk または two-chunk)、この解決策は出口ノード(Exit node)に送信されます。出口ノードは協調マイニングクラスター内で唯一スラッシュリスクがなく、ブロックを公開できるノードです。出口ノードはこのマイニングアドレスの秘密鍵を保存している唯一のノードでもあるため、出口ノードだけがブロックに署名できます。
協調マイニングクラスター内の各ノードは、通常通りネットワーク上の他のノードとピア接続を行うことができます。
単一マイナー One-Chunk プロセス
https://pbs.twimg.com/media/GLQiwonXoAANcx9?format=jpg\&name=medium
注:Miner1 は十分な数のパーティションを保存しており、同時に H1 と H2 を取得できます。
協調 Two-Chunk のプロセス
https://pbs.twimg.com/media/GLQi6aDWgAEnnGD?format=jpg\&name=medium
設定
- 協調マイニングクラスター内のすべてのノードは coordinated_mining パラメータを設定する必要があります。
- 協調マイニングクラスター内のすべてのノードは cmapisecret を通じて同じ secret パラメータを設定する必要があります。これは任意の長さの文字列で構いません。
- 協調マイニングクラスター内のすべてのマイナーは cmpeer パラメータを使用してクラスター内の他のマイナーを識別する必要があります。注:出口ノードも選択的にマイニングを行うことができ、その場合はマイナーと見なされ、cmpeer パラメータで識別されるべきです。
- すべてのマイナー(出口ノードを除く)は cmexitpeer パラメータを使用して出口ノードを識別する必要があります。
- 協調マイニングクラスター内のすべてのノードは正常に設定できますが、同じマイニングアドレス mining_addr を指定する必要があります。
パフォーマンスを調整するために使用できる2つの追加パラメータがあります:
- cmoutbatch_timeout:ミリ秒単位で、協調マイニング設定内の他のノードへの H1 値のバッチを送信する頻度。高い値はネットワークトラフィックを減少させ、低い値はハッシュ遅延を減少させます。デフォルト値は 20 です。
- cminbatch_timeout:ミリ秒単位で、ピアノードから受信した H1 バッチを処理する頻度。高い値は冗長なディスク読み取りを減少させ、低い値はハッシュ遅延を減少させます。デフォルト値は 20 です。
初期のテストでは、200 から 300 は多くのマイニング設定において良い妥協案かもしれません。しかし、特定のマイニングクラスターの設定やハードウェアによって、最適な値は大きく変わる可能性があります。
2. マイニングプールのローカルサポート
現在、Arweave ノードはマイニングプールに対する組み込みのサポートを提供しています。
マイニングプールに関連する新しいパラメータ:
- ispoolserver
- ispoolclient
- poolapikey
- poolserveraddress
3. マイニングパフォーマンスの最適化
新しいバージョンでは、より多くのマイナーが最大ハッシュレートを実現できるように、いくつかの最適化とバグ修正が実施されました。
更新の概要:
- マイニングプロセスで使用される水平分布の程度を増加させ、高いパーティション数でのパフォーマンスボトルネックを排除
- Erlang 仮想マシンのメモリ割り当て、管理、およびガベージコレクションの最適化
- 高いパーティション数で発生する可能性のあるいくつかのメモリ不足エラーの修正
- 有効なデータブロックがハッシュされる前に破棄される可能性のあるバグの修正
更新後のマイニングパフォーマンスレポート:
https://pbs.twimg.com/media/GLQjeH4WwAAD6lV?format=png\&name=medium
ここで:
- H1 Solutions / H2 Solutions は、マイニング解決策が見つかったタイプのカウントを指し、H1 ハッシュ下で見つかったか H2 ハッシュ下で見つかったかのカウントを表示します。
- Confirmed Blocks は、このノードがマイニングしたブロックの数を表示します。
- Cur 値は最近の値(例:過去 10 秒の平均値)を指します。
- Avg 値は全体の平均値を指します。
- Ideal は、与えられた VDF スピードと現在のパッキングデータ量に基づく最適なレートを指します。
- % of Max は、与えられたパーティション(または全体の Weave)がどれだけパッキングされたかを指します。
4. プロトコル変更
2.7.2 ハードフォークはブロック 1391330 で行われ、以下のプロトコル変更が有効になりました:
- one-chunk solution の難易度が 100 倍に増加し、完全な Weave のコピーを保存することをより良く促す;
- 追加の価格移行段階が 2024 年 11 月に開始される予定;
- 1 GB/分 340 Winston の価格上限が 11 月の価格移行まで実施される;
- チェックポイント(checkpoint)の深さが 50 ブロックから 18 ブロックに減少;
- 低影響のスパム攻撃を防ぐために、不必要な poa2 ブロックを事前に拒否。最悪のケースでも、この攻撃はブロックチェーンの膨張に対する影響は小さく、実際の脆弱性の利用ではありません。このベクトルを閉じるのは良好な衛生習慣の観点からです。
詳細については、関連文書を参照してください: https://github.com/ArweaveTeam/arweave/releases/tag/N.2.7.2