指の証明の仕事。 スマートブロックチェーンに向けて

ブロックチェーンプロトコルは、分散システムのノード間でコンセンサスを提供する必要があります。 おそらく最もよく知られているコンセンサスアルゴリズムは、「速度は低下しますが、信頼性が高いため、作業速度が低下しているため」のProof-of-Workアルゴリズムと考えることができます。 ブロック内のすべてのトランザクションが有効であり、ブロックヘッダーのハッシュ関数に一般的に受け入れられている機能(たとえば、ビットコインのように先頭のゼロの数)がある場合、ブロックは有効と見なされます。



Hash( Block{transaction,nonce,…} ) = 000001001...
      
      





ご存知のように、ブロックチェーンはブロックのチェーンです。 前のブロックのID(通常はヘッダーからのハッシュ)が各ブロック内に書き込まれるため、チェーンです。 その後の推論のために、簡略化された形式のブロックチェーンは次のように表すことができます。



画像



ノードを他のノードと同期するプロセスでは、その近隣が送信したすべてのブロックを検証する必要があります-すべての新しいブロックのハッシュとトランザクションをチェックし、最初の接続の場合は最初のブロック(ジェネシスブロック)にチェックします。 これはかなり長くて費用のかかるプロセスであると推測するのは簡単です...



隣接ノードから最後の数ブロックを要求し、信頼できるものとして有効なものとして受け入れるオプションがあります。 しかし、このオプションは「誰も誰も信頼していない環境」のセキュリティ精神を満たしていません



PoPoWノード。



ブロックヘッダーのハッシュ関数はそのIDです。 前述のように、ビットコインネットワークでは、他の多くのネットワークと同様に、ブロックの有効性を決定する機能は、IDレコードの先頭のゼロの数です。 これは、マイニングT(マイニングターゲット)の複雑さと呼ばれる、すべてのマイナーにとってよく知られている一般的なゼロの数です。 先頭にTゼロがある有効なハッシュは、先頭にTより多くのゼロを持つことができます。具体的には、ブロックの半分には先頭にTゼロしかありません。 ブロックの半分は、最初にT + 1ゼロを持ちます。 ブロックの4分の1 T + 2ゼロなど たとえば、T = 5の有効なブロックのセットは次のようになります。



 000000101… (6 ) 000001110… (5 ) 000001111… (5 ) 000000010… (7 ) 000000101… (6 ) 000001110… (5 ) 000001111… (5 )
      
      





ブロックのidでTを超えるゼロの数はレベルµと呼ばれ、レベルµのブロックはµ-スーパーブロックと呼ばれます。 ブロックがµ-スーパーブロックである場合、

(µ -1)-スーパーブロック。 したがって、何も変更せずに、入力されたパラメーターµのみを使用して、次のµレベル形式でブロックのチェーンを表すことができます。



画像



ブロックには説明を簡単にするために番号が付けられますが、番号付けには意味的な負荷はかかりません。



それでは、どのように使用できるか考えてみましょう。 各ブロックのヘッダーに前のブロックのIDだけでなく、各レベルのすべての最後のブロックのIDも書き込む場合、各ブロックが前のブロックよりも多くの「古代」ブロックを参照できるようにします。 ブロックの各レベルでのすべての後者のセットは、インターリンク(マルチリンク)と呼ばれます。 たとえば、ブロック8のインターリンクは次のようになります。



画像



これにより何が得られますか? 新しいノードを接続し、安全に同期したいとします。 既に述べたように、新しいブロックを完全に検証するために、ノードはジェネシス(ブロックチェーン全体のブロック)に「ステップスルー」する必要があります。 ただし、検証済みブロックに「サポート」ブロックへのリンクがある場合、ジェネシスブロックに「歩いて」、ブロックチェーン全体ではなく、他のノードからのリクエストのみをリクエストできます。最初のブロック。 サブチェーンのブロックは互いに連続して参照するため、ルート自体はブロックチェーン自体の有効なサブチェーンになります。



画像



プルーフは、以前のいくつかのブロックからのタイトルのコレクションです。 厳密に言えば、この証明には「短いルート」だけでなく、他のブロックの見出しもいくつか含まれています。 これは、指定されたセキュリティパラメータm、kなどを使用して証拠を検証するために行われます(詳細な説明は、元の記事の最後のリンクに記載されています)。



ブロックチェーン全体を保存するのではなく、履歴全体を保存するフルノードからの証明のみを要求するノードは、PoPoW-ノードと呼ばれます。 理論的には、このようなノードは低電力のコンピューターであるスマートフォンに展開できます。



PoPoWプロトコルのアルゴリズムは次のとおりです。



1. PoPoWノードは、フルノードからブロックの証明を要求します。

2.完全-ノード(proover)がプルーフを形成して送信します。

3. PoPoWノード(検証者)は証明をチェックし、他のノードの証明と比較し、ブロックの有効性について結論を出します。



PoPoW証明の作成の複雑さは、有効なヘッダーの完全なチェーンの作成の複雑さより劣っていないことも注目に値します(ヘッダーのハッシュ関数にはInterlinkが含まれているため、不正ノードはµレベルの階層を考慮してブロックを「偽造」する必要があります)。 したがって、PoPoWブロックを検証するために証拠を使用しても、セキュリティが失われることはありません。



NiPoWPoW-アルゴリズム



NiPoPoWアルゴリズム-非インタラクティブなProof-of-Work of Work-高度なエビデンスの生成と検証を含み、PoPoWの影響を受けやすいいくつかの攻撃に耐性があります。 著者からの元の記事へのリンクも最後にあります。



これは何のためですか?



これらのアルゴリズムを使用して、効果的なトランザクション検証とサイドチェーンの効果的な証明という2つの局所的な問題が解決されます。



前者の場合、このアルゴリズムを使用すると、「ライト」ノードをネットワークに接続でき、ネットワークと迅速に同期できます。



2番目のケースでは、アルゴリズムにより、他のブロックチェーンネットワークで発生したイベントを保存および参照できます。これは、複数のブロックチェーンで動作するクライアントおよびウォレットに役立ちます。 PoPoW証明は、トランザクションに適合するのに十分短いです。 たとえば、ブロックチェーンAでスマートコントラクトを記述できます。これは、ブロックチェーンBのいくつかのイベントに依存します。



このレビューは、 Unblock Hackathon hackathonに参加した後に新たにまとめられました。タスクの1つはこのプロトコルを実装することでした。 タスクの作成者は、このアルゴリズムが使用されているErgoプラットフォームのハッカソンのパートナーでした。



テキストは元の記事に基づいています。

PoPoW: 準線形複雑性を備えた作業証明の証明。 Aggelos Kiayias、Nikolaos Lamprou、およびAikaterini-Panagiota Stouka

NiPoPoW: 非インタラクティブなProof of Workの証明。 アゲロス・キアヤス、アンドリュー・ミラー、ディオニシス・ジンドロス



All Articles