ブロックチェーンコンセンサスメカニズムは、メカニズムの証拠、証拠、証拠の証拠に分類できます。 作業メカニズム、プールの確認、CHI株の認可の証明。
ブロックチェーンは、1つのブロックで構成されるチェーンです。 多くの情報が各ブロックに保存され、それらは独自の順序でチェーンに接続されています。 このチェーンはすべてのサーバーに保存されています。 これらのサーバーは、ブロックチェーンシステムのノードと呼ばれ、ブロックチェーンシステム全体のストレージおよびコンピューティングパワーサポートを提供します。
blockchain ---コンセンサスアルゴリズム
POWアルゴリズムは、乱用および放棄されたサービス攻撃から分配されたサービスソースを防ぐためのメカニズムです。 それに応じて時間とリソースを要する複雑な操作を実行するノードが必要であり、それらの計算結果は、実際のニーズでサービスとリソースが使用されることを保証するために、他のノードによって迅速に確認できます。
POWアルゴリズムの最も基本的な技術原則は、ハッシュアルゴリズムを使用することです。 ハッシュ(r)の値を見つけ、元のデータがr(raw)の場合、計算結果はr(結果)であるとします。
r = hash(r)
ハッシュハッシュ機能機能()は任意の入力値rに対して、R収益が取得され、元の入力がRから逆転することはできません。 Rは1ビットと同じくらい変更され、Rの値は完全に変更されます。 POWビットコインアルゴリズムでは、以下の式を取得するために導入されたアルゴリズムの難易度とランダム値n:
rd = hash(r+n)
n値の場合、最初のRD計算結果のBYTは0でなければなりません。 ハッシュの不明な特性のため、各マイナーは正しい結果を得る前に多くの操作を実行する必要があります。 。 POWアルゴリズムは、この方法を使用してソースを使用して計算を行い、検証には時間がかかります。
?
ポストアルゴリズムには、ノード検証が必要な特定の資金を採掘と包装の資格を得るために特定の資金を約束する必要があり、地域のチェーンシステムは、ファンドパッケージノードを選択するときにランダムな方法を使用する必要があります。
ポストモードでは、各通貨は毎日1つの通貨年齢を生成します。 現在、ポストブロックを確認すると、通貨年齢が0に清掃され、対応するデジタル通貨の重要性がブロックから取得されます。
ポストアルゴリズムを介したブロック生成のノードプロセスは次のとおりです。 ブロック生成ノードになるには、通常のノードは最初に資産を誓約する必要があります。 彼らはネットワーク全体にいます。
?
DPOSアルゴリズムはポストアルゴリズムに似ており、株式と株式誓約も使用します。
しかし、違いは、DPOSアルゴリズムが、人々の代表者を選択してアカウントとブロックを記録するスーパーノードを選択するように、委任された誓約方法を採用していることです。
有権者はノードの投票に投票します。
ノードノードnは交代でブロックをリリースし、ノードは互いに監視します。
少数の正直なノードを信頼することにより、ブロック署名プロセスの不必要なステップを削除することができ、これによりトランザクションの速度が向上します。
?
ビザンチンの問題:
ビザンチンは古代ローマ帝国の首都であり、将軍が率いる軍隊を擁護することは、あらゆる領土にあります。 戦争では、すべての将軍がコンセンサスに到達し、一緒に戦争を始めるかどうかを決定しなければなりません。
しかし、軍隊には裏切り者がいるかもしれません。 - この人は将軍に影響を与えてコンセンサスに到達します。 ビザンチン将軍の問題は、残りの将軍が裏切り者として知られているときに合意された決定にどのように到達したかという問題を指します。
bft:
bftはビザンチンのエラートレランスです。 ビザンチン仮説は、ハードウェア、コンピューター、ネットワークエラーがネットワークの輻輳や混乱、悪意のある攻撃のために不確実な行動を経験する可能性があるため、実際の世界モデルです。 ビザンチンのエラートレランステクノロジーは、この異常を処理し、解決する必要がある問題の規範的ニーズを満たすように設計されています。
ビザンチンエラー許容システム:
損傷したノードはビザンチンノードと呼ばれ、通常のノードは非ビザンチンノードです。
分散システムにはNノードがあると仮定し、システム全体がm nod(n≥3m+1)を超えていないと仮定して、ビザンチンのエラートレランスシステムは次の2つの条件を満たす必要があります。 >
さらに、ビザンチンエラー許容システムは、次の2つの指標を達成する必要があります。 元々は許容範囲アルゴリズムである障害。 マシンのアルゴリズムレプリカレプリカ、およびすべてのレプリカは操作のビュー(ビュー)で回転します。 メインノードは、ディスプレイ番号とノードの数によって決定されます。 つまり、メインノードP = VMOD | r | V:数字を表示、| r | ノードの数、P:親ノード番号。 PBFTアルゴリズムのコンセンサスプロセスは次のとおりです。 顧客はメッセージ要求を開始し、各レプリカノード(レプリカ)に進み、親ノードの1つ(リーダー)がプレペアメッセージの提案を開始し、ブロードキャストを開始します。 他のノードは元のメッセージを取得し、確認が完了した後に提供されるメッセージを送信します。 各ノードは2F+1を受信し、メッセージを提供します。 つまり、準備されており、コミットされたメッセージが送信されます。 ノードが2F+1メッセージを受信し、顧客が同じ返信メッセージを受信すると、これは顧客によって開始された需要がネットワーク全体でコンセンサスに達したことを意味します。
特定のプロセスは次のとおりです。
顧客Cは、親ノードにリクエストを送信します。 O:需要 - 特定の操作、T:リクエスト中にクライアントに接続されたタイムスタンプ、C:顧客識別。 リクエスト:Mメッセージのコンテンツを含み、メッセージD(M)を消化します。 顧客はリクエストに署名しました。
ノードマスターは顧客からのリクエストを受信し、次の確認を実行する必要があります。
a。
違法リクエストが削除されます。 適切なリクエストについては、主にクライアントのリクエストを手配するために使用されるN番号を提供します。 次に、前処理メッセージv、n、d、mを別のレプリカノードに投稿します。 V:数字を表示、Dカスタマーメッセージの概要、メッセージコンテンツM Pre-Prepare、V、N、Dは、親ノードの署名を実行します。 nは[h、h]は特定の範囲内である必要があります。
レプリカノード親ノードから前処理メッセージを受信し、次の確認を実行する必要がありました。
a。 右。
b。
c.d要約がmと一致しているかどうか。
d.nは間隔[h、h]ですか?
違法リクエストが削除されます。 適切なリクエストのために、私が提供したレプリカノード、V、n、D、私は親ノード、v、n、d、mを含む他のノードにメッセージを送信します。 現在のレプリカノード番号です。 V、N、Dを提供します。 レプリカノード署名を行います。 プレペア前のログとログにメッセージを設定して、ViewChange中に保留中の操作を復元します。
ノードマスターとノードのレプリカは、次の確認を実行することと実行するメッセージを受信します。
a。
b。
c.nが間隔[H、H]があるかどうか。
d.dはd inに等しくなります現在受け入れられているPrepre pare
違法リクエストは削除されます。 私のレプリカノードが2F+1検証メッセージを受信した場合、それはコミットメント、v、n、d、親ノードを含む別のノードにメッセージを送信します。 メッセージの。 コミット、v、n、d、私はレプリカノードサインを行います。 ログメッセージをログにコミットします。 これは、ViewChange中に未完成の要求操作を復元するために使用されます。 別のレプリカノードによって送信された提供されたメッセージをログに記録します。
ノードマスターとノードのレプリカは、コミットされたメッセージを受信し、次の確認を実行する必要があります。
a。
b。
c.d要約がmと一致しているかどうか。
d.nは間隔[H、H]です。
違法リクエストが削除されます。 私のレプリカノードが2F+1検証コミットメントメッセージを受信した場合、これは現在のノードのほとんどがコンセンサスに達し、クライアント需要操作を実施し、返信v、t、c、i、rを顧客に返すことを意味します。 操作要求の結果です。 親ノードへのリクエスト。 別のレプリカノードから送信されたコミットメッセージをログに投稿します。
?
親ノードが悪である場合、異なるリクエストに同じシーケンス番号を与えるか、シーケンス番号を配布するか、次のシーケンス番号を非連続します。 バックアップノードには、このシリアル番号の妥当性を積極的に調べる責任があるはずです。
親ノードが遮断されているか、クライアントのリクエストを公開しない場合、顧客はエンディングメカニズムを設定します。 レプリカノードは、親ノードが犯罪を行うか、オフラインにしてViewChangeプロトコルを開始することを検出します。
プロトコルViewChange:
Replica Node投稿ビュー、V+1、N、C、P、I別のノードへのメッセージ。 nは最新のStableCheckpoint番号であり、Cは認定された2F+1のチェックアップセットであり、Pは事前準備であり、現在のレプリカノードによる未完成のリクエストのための規定のメッセージを提供します。
親ノードp = v+1modの場合| r | Vは、視野の変化の有効なコレクションです。 oは、親ノードによって再起動される保留中の前処理メッセージのコレクションです。 プレペア前のメッセージコレクションの選択ルール:
レプリカノード親ノードの新しいビューを受信し、有効性を確認します。 有効な場合、V+1状態を入力し、メッセージの事前計算を開始します処理プロセス。
?
上記のアルゴリズムプロセスでは、ViewChange中に以前の要求を復元できるようにするために、各レプリカノードはローカルログにいくつかのメッセージを記録します。 、レプリカノードは、リクエストの以前のレコードメッセージをクリアする必要があります。
最も簡単な方法は、返信メッセージの後に現在のコンセンサス同期を実行することです。 このステータス同期メッセージは、チェックインメッセージです。
私のレプリカノードは、n、d、iを別のノードに送信します。 ログの中心に。 私のレプリカノードが認定された2F+1チェックインメッセージを受信した場合、前のログメッセージがクリアされ、nが現在のStableCheckpointとして使用されます。
これは理想的な状況です。 それはそれに従います。
処理需要が速すぎないようにするために、この問題を解決するために上記の高および低水位の間隔[H、H]を設定します。 低水位hは、以前のStableCheckPointの数と高水位H = H+Lに等しく、ここで、Lは指定した値です。 これは、期間の処理期間からの需要数の二重整数に似ています。 、l = 2kに設定できます。 私のレプリカノードが高水位hを超える需要を処理すると、この時点で停止し、StableCheckpointが変更する前に変更するのを待ちます。
?
ブロックチェーンシナリオでは、一般的に個人チェーンに適していますそして、強い一貫性を必要とするアリアンシチェーンのシナリオ。 たとえば、IBM主導のブロックチェーンハイパーレッドジャープロジェクトでは、PBFTは好ましいコンセンサスプロトコルです。 Hyperledger Fabric Projectでは、コンセンサスモジュールはプラグ可能なモジュールとして設計されており、PBFTやRAFTなどのコンセンサスアルゴリズムをサポートしています。
?
? グループとリーダーは、すべてのRAFTクラスター間の複製ログを管理する責任があります。
?
次の図では、クラスターリーダー(S1)が最初に選択され、クライアントからのすべての指示/リクエストにサービスを提供します。 Raftクラスター内のすべてのノードは、顧客が発行した指示(ログエントリ)を保存および送信するために、分散ログ(レプリカログ)を維持します。 リーダーは、クライアントからログの参加を受け、ラフトグループのすべてのフォロワー(S2、S3、S4、S5)間でそれらをコピーします。
ラフトクラスターでは、Quorumとしても知られる予想されるコンセンサス保証レベルを提供するために、ノードの最小数が必要です。 RAFTクラスターでの操作を実行するために必要な最小投票数は(n/2+1)です。 ここで、nはグループ内のメンバーの数、少なくとも半分の投票であり、クラスターノードは通常奇妙です。 したがって、上記の例では、コンセンサス保証があるために少なくとも3つのノードが必要です。
法定仲裁ノードが何らかの理由で利用できない場合、つまり投票は半分以下である場合、この交渉には合意がなく、新しいログを提出できません。
?
データストレージ:TIDB/TIKV
log:dledger alibaba
サービスディスカバリー:susulletcd
クラスタースケジューリング:hashicorpnomad
?
大会シナリオ
?
RAFTは、リーダーの選択を取り巻く3つの主要なサブプロフェットを解決し、分散ログとアルゴリズムのセキュリティ関数を管理することにより、分配された契約を解決します。
新しいRAFTクラスターまたは利用できないリーダーを開始すると、グループ内のすべてのメンバーノード間の交渉を通じて新しいリーダーが選択されます。 したがって、1つの例では、RAFTクラスターノードは、フォロワー、候補者、またはリーダーのいずれかの状態にあります。
システムが開始されると、すべてのノードはフォロワーです。 候補者のノードはほとんどのノードのチケットを受け取るため、候補者はリーダーに変換され、別の候補者のノードがフォロワー国に戻ります。
リーダーがシステムにリーダーのノードが彼よりもあることを発見した後。
ラフトは、心臓ベースのRPCメカニズムを使用して、新しい選挙がいつ開始されるかを検出します。 通常の期間中、リーダーは利用可能なすべてのフォロワーに心メッセージを送信します(実際には、ログと心拍数を一緒に送信できます)。 したがって、他のノードはフォロワーの国で始まり、現在のリーダーから定期的な鼓動を受け取る限り、フォロワーにとどまります。
フォロワーが終了すると、次のように選挙プロセスが開始されます。
グループ内の他のノードから候補者が受け取った回答に基づいて3つの選挙を取得できます。
コンセンサスアルゴリズムの実装は、一般に複製された国内機械に基づいています。 異なるノードは、現地時間などの予測不可能な値を導入するのではなく、同じ関数と決定論的な入力を処理する必要があります。 ReplicatedLogを使用することは非常に良いメモです。
リーダーの場合、クライアントのすべての同時要求は、リーダーが注文処理順序を表すように命令する注文(ステータス)を形成する場合があります。 その後、リーダーはフォロワーに独自のログシーケンスを送信して、システム全体のグローバルな一貫性を維持します。 強い一貫性ではなく、最終的な一貫性であることに注意してください。
ログ注文番号(logindex)のログエントリで構成されています。 各ログエントリには、作成されたときの長期数(用語)が含まれており、ログに含まれるデータは、単純なブロックからブロックチェーンブロックまでのタイプにすることができます。 各ログエントリは、マッサージペア[用語、インデックス、データ]で表すことができます。 この用語は用語を表し、インデックスはインデックスを表し、ログデータを表すデータを表します。
リーダーは、クラスター内のほとんどのノードで複製順序を実行しようとします。 複製が成功した場合、注文はグループに送信され、応答は顧客に返送されます。 2段階の提出(2PC)と同じですが、2PCとの違いは、リーダーが(労働条件で)ノードの半分以上を必要とすることです。
リーダーとフォロワーがクラッシュする可能性があります。 WERによって維持されるジャディログは、リーダーとフォロワーが矛盾している場合、リーダーと比較して次の状況を持つ場合があります。 リーダーはフォロワーに自分のコピーを強制しますログとリーダーは、追加のたびに後ろから前後に試みます。 リーダーは、フォロワーに自分のログをコピーするように強制します。 次の場所の後に次のエントリを1つずつ閉じます。 したがって、不足している、または追加のエントリは数回続くことができます。
?
少なくとも最新のノードと同じくらい最新の候補ログに尋ねます。 それ以外の場合、フォロワーノードは候補者に投票しません。
これは、提出された各エントリがこれらのサーバーの少なくとも1つに存在する必要があることを意味します。 候補者のログが少なくとも多数派ログの他のログと同じである場合、ログロールバックイベントを避けて、すべてのコミットされたエントリを保存します。
つまり、ほとんどのリーダーは任意の期間に選択されます。 これは非常に重要です。 レプリケーションセットにはいつでもリーダーが1つしかありません。 システムには、Brainplit(Brainplit)と呼ばれる追加のリーダーが同時にあります。 これは非常に深刻な問題であり、データ損失につながります。 ラフトでは、2つのポイントがこの属性を保証します:
したがって、一定期間にわたってリーダーは1つしかありません。
?
クラスターのノード条件(クラスター構成の変更)の場合、システムはシステム障害に対して脆弱です。 したがって、これを回避するために、Raftは2つのステージと呼ばれる方法を使用してクラスターメンバーシップを変更します。 したがって、このアプローチでは、新しいメンバーシップ構成を実装する前に、最初のクラスターが中国に変更されました(連邦コンセンサスと呼ばれます)。 共同コンセンサスにより、構成間を変換しても、システムはクライアントの需要に応答できます。 その主な目的は、分散システムの可用性を高めることです。
ブロックチェーンコンセンサスとは何ですか?So -Caledの「コンセンサスメカニズム」は、特別なノード投票を通じて非常に短時間でトランザクションの検証と検証を完了することです。 ネットワーク全体もこれに関する合意に達する可能性があると考えられています。 明確に言えば、米国の仮想プレーヤーであるアフリカの学生でありヨーロッパの旅行者である中国のワイボ・ビッグVがお互いを知りませんが、彼らはあなたが良い人であることに同意します。
ブロックチェーンは、年代順にデータを格納するデータ構造として、さまざまなコンセンサスメカニズムをサポートできます。 コンセンサスメカニズムは、ブロックチェーンテクノロジーの重要な要素です。 ブロックチェーンコンセンサスメカニズムの目標は、2つのプロパティを満たすときに、すべての正直なノードが一貫したブロックチェーンビューを維持できるようにすることです:
1)一貫性。 すべての正直なノードによって保存されているブロックチェーンプレフィックスセクションは同じです。
2)妥当性。 正直なノードによって公開された情報は、最終的にすべての正直なノードによって独自のブロックに記録されます。