Filecoin – Precommit2 計算の紹介

Filecoin – Precommit2 計算の紹介

Filecoin – Precommit2 計算の紹介New

概要: セクター計算は、Precommit1 と Precommit2 の 2 つの部分に分かれています。これら 2 つの部分を合わせて SDR アルゴリズムと呼びます。 SDR アルゴリズム全体の関連する計算については、前回の記事で紹介しました。この記事ではPrecommit2の計算ロジックに焦点を当てます。

セクター計算部分は、Precommit1 と Precommit2 の 2 つの部分に分かれています。これら 2 つの部分を合わせて SDR アルゴリズムと呼びます。 SDR アルゴリズム全体の関連する計算については、前回の記事で紹介しました。この記事ではPrecommit2の計算ロジックに焦点を当てます。 Precommit2 の計算は、1/ 列ハッシュの計算と Merkle ツリーの構築、2/ レプリカの計算と Merkle ツリーの構築の 2 つの部分に分かれています。関連するロジックについては、rust-fil-proofs/storage-proofs/porep/src/stacked/vanilla/proof.rs の transform_and_replicate_layers 関数を参照してください。

1列ハッシュ計算

列ハッシュの計算は、generate_tree_c 関数で実装されています。具体的な実装は、CPU バージョンと GPU バージョンの 2 つのバージョンに分かれています。

設定::SETTINGS.lock().unwrap().use_gpu_column_builder {の場合
       セルフ::generate_tree_c_gpu::(
           レイヤー、
           ノード数、
           ツリー数、
           設定、
           ラベル、
        )
} それ以外 {
       自己::generate_tree_c_cpu::(
           レイヤー、
           ノード数、
           ツリー数、
           設定、
           ラベル、
       )
}

GPU バージョンのロジックは比較的複雑です。 GPU のロジックについて説明しましょう。

列計算を実行するには、ハードディスクの 11 層からデータを読み取り、列配置に統合する必要があります。 GPU バージョンはデータをバッチで処理します。列の一部を読み取ってソートした後、チャネルを介して GPU に送信され、処理 (列ハッシュと Merkle ツリーの構築) が行われます。コード ロジックは基本的に 2 つのスレッドで構成され、1 つはレイヤー データを読み取って列を並べ替え、もう 1 つは GPU で処理します。各バッチのデフォルトのノード数は 400,000 で、約 135M です。列の計算が完了すると、GPU は Merkle ツリーを構築します。

2 レプリカ計算

レプリカは、最後のレイヤーのデータと元のデータをエンコードした結果です。レプリカの一部がエンコードされるたびに、チャネルを介して GPU に送信されます (Merkle ツリーを構築するため)。各バッチのデフォルトのノード数は 700,000 で、約 2200 万です。バッチはエンコードの結果であることに注意してください。

3 マークルツリーの構築

Merkle ツリーの構築にはすべて merkletree ライブラリが使用されます。このライブラリは、一般的な Merkle ツリーの構築と計算を実装します。一般的な Merkle ツリーとは、Merkle が通常理解されている単なるバイナリ ツリーではなく、トップ、サブ、ベースの 3 つのレイヤーに分かれていることを意味します。

上記の例に示すように、トップは 1 つのフォーク、サブは 3 つのフォーク、ベースは 4 つのフォークです。 Precommit2 の計算では、tree_c と tree_r_last は両方とも octree です。

タイプ Tree = storage_proofs::merkle::OctMerkleTree;
pub タイプ OctMerkleTree = DiskTree;

4 GPUアクセラレーション

Precommit2 の計算では、列ハッシュの計算と Merkle ツリーの構築が GPU によって高速化されます。関連するコードは、Neptune コード ベースにあります。興味深いことに、この部分のコードは cuda や opencl ではなく、新しい高水準言語である Futhark を使用して実装されています。

5 関連するマクロ定義

FIL_PROOFS_USE_GPU_COLUMN_BUILDER – 列ハッシュを計算するために GPU を使用する

FIL_PROOFS_MAX_GPU_COLUMN_BATCH_SIZE – 各列計算のバッチサイズ。デフォルトは400000です。

FIL_PROOFS_COLUMN_WRITE_BATCH_SIZE – 各列データ更新のバッチサイズ。デフォルトは 262144 です。

FIL_PROOFS_USE_GPU_TREE_BUILDER – GPU を使用して Merkle ツリーを構築する

FIL_PROOFS_MAX_GPU_TREE_BATCH_SIZE – 各エンコード計算のバッチサイズ。デフォルト値は 700000 です。

要約:

Precommit2 フェーズでは、主に列ハッシュを計算し、レプリカを生成し、対応する Merkle ツリーを構築します。その中で、列ハッシュの計算とマークルツリーの構築は、GPU によって高速化できます。 GPU は、新しい高級言語である Futhark を使用して実装されています。

出典: スター・リー

<<:  Filecoin はどのような世界を構築したいのでしょうか?

>>:  市場分析:ビットコインのショートは強く抑制されており、価格は下落すると予想される

推薦する

マイナーは「強制寄付」を拒否、BCHは再びフォークする

予期せぬ事態が発生しなければ、BCH は 11 月 15 日に 2 回目のフォークを迎えることになり...

ビットヤードがオーストラリア金融サービスライセンスを取得、グローバルコンプライアンス戦略が実を結ぶ

最近、BityardはオーストラリアのAUSTRAC(オーストラリア取引報告分析センター)が発行する...

コピーキャットの季節が到来しましたが、これらのトラックに希望はあるのでしょうか?

1. 背景: レバレッジのクリーンアップ後も模倣シーズンは続く12月10日、暗号通貨市場が暴落し、...

Digix は DGD 保有者に 465,000 ETC を返還すると発表

興味深い展開として、シンガポールを拠点とする Digix Global 社(物理的な金担保トークンを...

連続凍結?イーサリアム パリティ ウォレットの脆弱性は依然として存在、簡単な解決策はまだない

イーサリアムウォレット「Parity」で1億6000万ドル相当のイーサが凍結されてから3週間が経過し...

XBIT の第 2 回 AMA ハイライト |一般投資家はマイニングや暗号通貨取引に適している

みなさんこんにちは。私はXBITのCOO、タオ・マオウェンです。後ほど始まるこのライブ放送の司会者で...

Bitcoin Reserve が全面刷新され、正式名称が「Uphold」に変更

Bitreserve は本日、プラットフォームに大きな変更を加え、新しい名前「Uphold」でリニュ...

新しいViperマイニングマシンのテスト、Bitmainのクラウドマイニングサービスがデビュー

9月になり、自宅に配備されたマイニングマシンでも大規模なマイニングファームでも、マイニングに適した天...

パニック指数11、限界に近づいている

米国株の継続的な下落はすでに米国の年金に影響を及ぼしている。今年、401k ファンドのいずれもプラス...

英国のブロックチェーン企業ストラティス、ブロックチェーンアプリケーション開発のため10万ユーロを調達

クレイジーレビュー:ロンドンのブロックチェーンソリューション企業であるStratisは、ブロックチェ...

目標は数万ビットコイン以上ですが、なぜAcchainはそんなに興奮しているのでしょうか?

デジタル通貨業界にとって、ICO がもたらすメリットは資金調達だけに反映されるものではありません。プ...

ブロックチェーンゲームギルド部門は頻繁に資金を調達しています。その理由は何でしょうか?

2021年後半にはGameFiがDeFiを追い越し、暗号通貨界で最もホットなトラックになることは間...

SEPA即時送金が欧州ビットコイン取引市場に与える影響

少し前に、欧州中央銀行は、2017 年 11 月までにヨーロッパ全域で即時決済をサポートすると発表し...

中央銀行とブロックチェーンの愛憎関係:中央銀行は本当にデジタル通貨を発行するのか?

ビットコインとブロックチェーン技術は世界を変えるほどの力を持っています。ブロックチェーン技術を迅速か...