Back to list
Obelisk: Skycoin 合意形成アルゴリズム | 情報ページ
合意形成の要点
合意形成の理由
Skycoin 合意形成アルゴリズム(“Obelisk”)は、すべてのネットワークノードでSkycoinブロックチェーンの状態を同期させます。 これにより、一貫した会計処理が行われます。 すなわち、所与の公開鍵(またはアドレス)のコインバランスを計算すると、計算を実行した各ノードで同じ値が得られます。
高いスケーラビリティと低消費電力
設計により、アルゴリズムはスケーラブルで計算コストがかからず、Proof-of-Workに代わるものです。 したがって、低価格でエネルギー消費の少ない予算のハードウェアで合意形成アルゴリズムとブロック生成の両方を実行できるため、暗号通貨ネットワークを集権化の可能性に対してより堅牢にします。(すなわち、一般市民に手頃な価格のノードにより利用可能)
集団攻撃に対する堅牢性
我々の合意形成アルゴリズムは、(i)収束が速く、(ii)最小のネットワークトラフィックを必要とし、(iii)組織化された悪意のあるネットワークによる大規模な集団攻撃に耐えることができます。 このアルゴリズムは反復性がなく、高速であり、最近接の接続性(例えばメッシュネットワーク上)のみを有するスパースネットワーク上で実行することができ、接続グラフ内のサイクルの存在下でうまく動作します。(すなわち、DAGタイプの接続性は必要ありません。)
「51%攻撃」
限られた意味においては、このアルゴリズムのベースバージョンはこの攻撃の対象となる可能性があります。 具体的には、改変された、または悪意のある多数を占めるノードがプロトコル準拠およびUTXO準拠の候補ブロックを送ると、このようなブロックで合意形成を獲得してしまいます。 しかし、ある種の違反のブロックが合意形成トライアルに参加する機会を得る前に、(未修正の)アルゴリズムによって、このブロックは削除されます。 合意形成ノードは、未知のノード(すなわち、信頼されていない公開鍵によって署名された)から来る合意形成関連のメッセージが無視されるような方法で、Web-of-Trust(信用の輪)概念を任意に利用することができます。
大多数の信用の輪メンバーが、無意識に悪意のあるノードを信頼できるノードのローカルリストに含める場合を除き、信用の輪モードを有効にすると、(a)ブロックチェーンフォークを引き起こしたり、(b)合意形成プロセスを中断させたりするために、非常に多数の悪意ある合意形成ノードを投入することはほとんど効果がありません。
非表示のIPアドレス
ノードは、それらの暗号化公開鍵によってアドレス指定されます。 ノードのIPアドレスは、ノードが直接接続されているノードにのみ認識されます。
クロック同期の独立性
アルゴリズムは「ウォールクロック」(すなわちカレンダーの日付/時刻)を使用しません。 代わりに、検証された合意形成およびブロックチェーン関連のメッセージから抽出されたブロックシーケンス番号が、ノードの内部時間を計算するために使用されます。 これは非公式に「ブロッククロック」と呼ばれることがあります。
2つのタイプのノード:合意形成とブロック生成
合意形成ノードは、1つまたは複数のブロック生成ノードから入力を受け取ります。 合意形成とブロック生成のアルゴリズムは別々ですが、どちらも同じデータ構造で動作します。 ここでは、合意形成アルゴリズムを理解するのに役立つブロック生成と、それがシステムの他の部分とどのように統合されるかについて説明します。
どちらのタイプのノードも、常に入力者の検証と詐欺の検出を行います。 不正または無効なメッセージは検出され、破棄され、伝播されません。 疑わしい動きをするピアノードは切断され、その公開鍵はアクセス禁止されます。
Skycoin合意形成アルゴリズムはどのように動くか
以下の説明は、 (i)各ノードがブロック生成者かつ合意形成の参加者であり、 (ii)非信頼ノードによって生成された合意形成関連メッセージが受け入れられている、すなわち信用の輪に基づくフィルタリングがない という状況を仮定します。 Skycomin GitHubリポジトリでは、完全な実装(仮定を単純化していない)を利用できます。 シミュレーション結果と詳細、1つの合意形成トライアルの図の例については、[1]を参照してください。 Skycoinアルゴリズムとは異なりますが、信頼関係を持つネットワークのシミュレーションは、[2]で見つけることができます。 Skycoin合意形成アルゴリズムは以下の通りです。
1. ブロックの生成 各ブロック生成ノードは、新しいトランザクションを収集し、それらを所望のシーケンス番号のUTXOと照合し、対応するトランザクションを新しいブロックにパッケージ化し、ブロックをネットワークに流します。
2. ブロックの収集 各合意形成ノードは、ブロック生成者によって生成されたブロックを収集し、それらをブロックのシーケンス番号で紐付けられたされたコンテナ(ブロックチェーンとは別)に配置します。
3. 勝利ブロックの選択 各合意形成ノードは、十分に大きな数1の候補ブロックを受信するか、または他の基準を満たした時点で、最も多数のブロック生成者によって作られたブロックを見つけます。 結びつきは決定論的に計算されます。 このようなブロックは 「ローカル勝者」 2とラベル付けされ、ローカルブロックチェーンに追加されます。 ローカル勝者のブロックシーケンス番号に対応するキー - 値ペアは削除され、ストレージが再利用されます。 また、ローカル勝者のハッシュコードは流され、発表されます。
4. 検証ステップ 各ノードは、他のノードによって報告されたローカル勝者に関する統計を保持します。 ローカル勝者がノードのすべてまたは大部分3によって報告されたとき、ノードは特定のシーケンス番号のグローバル勝者を決定します。 グローバル勝者がローカル勝者である場合、ノードは上記のように機能し続けます。 そうでなければ、ノードは、(a)ネットワークと再同期する、または(b)合意形成および/またはブロック生成への参加から脱落する、または(c)ブロックチェーンを維持し、緊急停止を要求すること、の3つの中から、外部データおよびローカルログに基づいて決定します。
参考
[1] johnstuartmill et al. A Distributed Consensus Algorithm for Cryptocurrency Networks. https://github.com/skycoin/whitepapers/blob/master/whitepaper_skycoin_consensus_v01_jsm.pdf 2016
[2] Houwu Chen and Jiwu Shu. Sky: an Opinion Dynamics Framework and Model for Consensus over P2P Network. https://github.com/skycoin/whitepapers/blob/master/Sky-%20Opinion%20Dynamics%20Based%20Consensus%20for%20P2P%20Network%20with%20Trust%20Relationships.pdf 201?
Read more: