合意形成と障害


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

分散システムアプローチ

Casper CBCは,分散システム問題として合意形成の問題に取り組んでいます.

まずはじめに,分散システムにおける障害とは,なんでしょうか.

コンセンサスメカニズムの前提は,「障害の数が十分に少なければ,すべて問題ない」ということです.これは,「十分に障害がある場合にのみ,問題が発生する」と言い換えることができます.

コンセンサスメカニズム

さて,わかりにくい専門用語に慣れましょう.

バリデータ:合意を形成するノードのことをバリデータと呼ばれます.
メッセージ:メッセージは、合意に達することを試みる努力の中でバリデータによって生成され伝えられます.

メッセージ

メッセージは,合意形成プロセスに参加している間にバリデータによって生成され,伝えられる情報です.Casper CBC合意形成メカニズムでは,メッセージは以下の構造を持ちます.

メッセージ構造 =(値、バリデータ、正当化)

メッセージ構造を説明します.

値:値は,バリデータが合意に達するようにネットワークに提案する値のことです.
バリデータ:これはメッセージを生成しているバリデータです.
正当化:メッセージの正当化は,バリデータがその特定のメッセージを生成している間に確認および確認した一連のメッセージです.後で見るように,その正当化は提案された値を文字通り「正当化する」ことになっています.

ここで,メッセージに関わる2つの重要な概念を見てみましょう.

後のメッセージ:メッセージAがメッセージBの正当性を説明するものである場合,メッセージBはメッセージAよりも後になります.
推定関数:推定関数は,正当化を入力として,入力によって「正当化された」値を返します.

合意規則

提案された値は,正当化に対する推定関数の適用によって返された合意形成値と同じでなければなりません.
バリデータは2つのメッセージを作ることができないようになっています.

合意規則違反

バリデータが,受け取ったメッセージの時点差により,分離されるかもしれません.

意思決定保証

十分な数のバリデータが提案する有効な値を含むメッセージを作成した後に,多数のバリデータがフォルトを生成することなしに矛盾する値について合意形成することは不可能であることを合意規則は保証します.

したがって,十分な数のバリデータが有効な値を含むメッセージ見た後で,ノードは合意値を決定します.この「十分に高い」数は、そのノードのフォールトトレランス閾値によって異なります(この十分という部分は未定義です).

合意形成プロトコルCBCについて


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

合意プロトコルは,通信ノード同士が何かに同意することを保証するメカニズムです.ブロックチェーンで新しいブロックをダウンロードするノードは,システムの履歴としてトランザクションに確実に同意することを望みます.作業証明(PoW)では,ノードがあるトランザクションでハッシングを解くと,標準チェーンに含まれることを意味します.

PoWの欠点は,非常に多くのエネルギー消費と,ブロックチェーンを維持するセキュリティとを満たしながら,スループットを増加させることが可能かどうかが定かではないところです.それでは,他の合意プロトコルはあるでしょうか?,作業料分だけ手数料を受け取るのは,理にかなっています.

それでも,Proof of Stake(PoS)という手法もあります.それは,ある量の資本を(例えば暗号通貨)を持つノードを信用して,次のブロックの選択権を得るというものです.

ここでは,合意プロトコルの概念を確認していきましょう.

CBCというプロトコルを説明していきます.

システムを設計するとき,セキュリティは重要です.システムを徹底的にテストすることは,システムが意図したとおりに機能することを確認する1つの方法です.それは予測可能な方法で機能しているでしょうか.与えられた入力は,内部的な矛盾を引き起こしませんか.

ここで,紹介するCBCという手法は,次のようなことも許容します.システムの部分が,未定義のままにされるかもしれません,これはよく言えば仕様が変更できるということです.ある性質Pがある空間Sに存在するメカニズムとして成立することを証明することができれば,Sのサブセット上でのメカニズムS’で,性質P’を証明できるかもしれません.たとえば,Sをブロックチェーン合意メカニズムのSとします.最長のチェーンフォーク選択するというこというメカニズムがS’になるように考えましょう.フォークの選択へある規則制をもちこむことによって一貫性が得らます.それは,S’におけるプロパティP’を得ることでもあります.

ノードがやり取りするメッセージは,可能な合意値を見出し,この値について合意を達するために送信されます.

合意値
検証(送信者)への参照
プロトコルによる状態の参照(正当化)

例えば,AとBという2つの検証があり,常にメッセージに値1を送信します.プロトコルは,最初は何もしません.だれでも送信できるメッセージは,名前,値1、および前の状態への参照,空集合だけです.この時点でネットワークのノードから見えるものは,空集合ø,Aからのメッセージ,Bからのメッセージ、またはAとBからのメッセージです.

私たちは,新たなメッセージが構築される以前のプロトコルによる状態を参照できるようにするために各メッセージを必要とします .プロトコルによって送られのは,単なるメッセージであり,それぞれのメッセージは以前のプロトコルによる状態を参照します.

プロトコルによって,タイミングにより,状態は分岐するかもしれません.

その場合,ノードはどちらが正しいのかを決定できなければなりません.つまり,合意値が0と1の両方であると決定することはできないいうことです.これが安全性の保証となります.

このような安全性を保つことは,2つのノードにとっては簡単です.2つのノードによって決定された合意値はお互いに明白です(常識的には片方が決まれば,もう片方決まります)が,例えば,3つの合意値が一致しないことがあります.
ライトを点灯させるには2つのスイッチをオンにする必要があるとします.2つのノードがスイッチを観察し,3つめのノードはライトを観察します.1つのスイッチがオンになっていても,必ずしもライトが点灯しているとは限りません.つまり,ライトが消えている間は,2つのノードは両方のスイッチがオンになっているのを観察することはできません.これは,両方のスイッチがオンになっていても,ライトが点灯していないことも許します.

このようなことは,ひとつのスイッチとライトの点灯の有無は明白です.

そこでCBCは,メッセージに重みづけ(合意値0のようなメッセージは重みをなくす)をして,重みがある閾値よりも大きい限り一貫した決定を下せるようにします.

これまでのところ,決定はプロトコルによる状態に依って行われて,プロトコルによる状態から合意値に向かう関数を私たちはもっていません.ここで,注目すべきは,推定量という概念の導入です.プロトコルによる状態が与えられると,推定量は合意値を返します.CBCでは,推定量は未定義のままです.

ブロックチェーンのスケーラビリティ 4


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

先回の続きで,ブロックチェーンのスケーラビリティ解決策を記していきます.

4)シャーディング

ブロックチェーンの分割は,従来のデータベースの分割と似ています.従来のデータベースでは,負荷分散のためサーバーを分割しました.

同様に,ブロックチェーンの分割でも,ブロックチェーンの全体的な状態がさまざまな部分に分割され,各部分はネットワーク内のさまざまなノードによって格納されます.

ネットワーク上で発生するトランザクションは,どのシャードが影響を受けるかに応じて,各ノードに送信されます.各部分は状態のごく一部を並行的に処理します.このとき,シャード間で通信するためには,何らかのメッセージ受け渡しメカニズムになります.

例えば,シャード内のトランザクションが実行されると,ローカルシャードを更新し,同時にレシート(更新した証拠)を生成します.このレシートは,共有メモリに記録されます.

ブロックチェーンを分割するには,高いセキュリティを維持しながら,すべてのノードがすべてのトランザクションのごく一部しか処理しないネットワークを構築する必要があります.これは極めて難しことです.

それは,ブロックチェーンプロトコルでは、ネットワーク内のすべてのノードが互いに信頼し合うとは限らないと想定しています.それでも、トランザクションは異なるコンピューターで処理されるにもかかわらず,共通の状態について合意している必要があるからです.これを解決するには,多くの権限を持つ可能性のある攻撃者に機会を生み出すことなく,どのノードが安全な方法でどの断片を検証するかを決定するメカニズムを見つける必要があります.

分割を実装するのが難しいもう1つの理由は,ブロックチェーン上で実行されるトランザクションがブロックチェーン内の前の状態のどの部分にも依存する可能性があるため,並行して処理するのが困難になるためです.さらに、並列化を使用すると,競合状態などを緩和するための絶対確実な方法が必要になります.

ブロックチェーンとAI


https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう

ブロックチェーンとAIは,分散システムとデータが集中するシステムとして対照的です,短いですが,ここでは,AIとブロックチェーンがどのように相互作用するのか説明します.

AIは,計算速度において,学習データを集中させるという性格から,ブロックチェーンでそのまま実行することはできません.

AIは学習のために膨大な量のデータを必要としますが,素早くコミュニケーションさえできれば分散システムで学習させうことができるでしょう.深層学習では,データを集中的に収集することなくAIに学習を行わせることができるでしょうか?,これは,ブロックチェーンで実行されているAIが直面している課題です.AIに何らかの方法で学習を分散させる必要があります.現在の深層学習は単純にそのような分散性と互換性がないため,ブロックチェーン技術は,データが分散するIoTのデバイスから,AIアプリケーションがデータを集中させるまでの過程で,ブロックチェーン技術は有用ではないでしょうか.

AIは,ブロックチェーン技術を使用して,学習に使用されるデータの出所を確認し,バイアスの原因を特定して修正するのに役立つ可能性があります.ただし,現在のAIシステムでは,学習済みのデータを他のモデルに組み込んだ場合は,素早くデータを追加または削除できません.ただしデータの出所とその出所を追跡する透明なシステムと,その品質と真実性の透明な評価は,偽のニュース,誤ったデータ,低品質の情報が誤ってAIに組み込まれないようにするのに役立ちます.

現在のコンセンサスメカニズム – 主に作業証明に基づいている – は,広範囲に利用するAIにとって大規模に利用するには余りにも作業への要求が高すぎます.計算上無駄があり,エネルギーのかかるプロセスを必要とせずに分散元帳の値に安全に同意する方法があることを達成するには,利害関係の証明や権限の証明(または何らかのハイブリッド)などの代替合意メカニズムに関する作業が必要です.無駄なエネルギーをこれ以上使うことは許されないでしょう.

AIは,ブロックチェーン元帳に含まれる膨大な量のデータをユーザが容易に理解できるようにすることで,またプロセスをより効率的にしてトランザクション全体のコストを削減することで,ブロックチェーンアプリケーションに付加価値をもたらします.スマートコントラクトにおけるAIおよびブロックチェーンは最も魅力的な分野の1つであり,私たちにとって有益な,制御され制限された方法でAIをグローバル経済に統合する新しい方法を切り開らくかもしれません.