
https://bitcoin20xx.xyz/未来を変える暗号通貨を作っていこう
先回の続きで,ブロックチェーンのスケーラビリティ解決策を記していきます.
4)シャーディング
ブロックチェーンの分割は,従来のデータベースの分割と似ています.従来のデータベースでは,負荷分散のためサーバーを分割しました.
同様に,ブロックチェーンの分割でも,ブロックチェーンの全体的な状態がさまざまな部分に分割され,各部分はネットワーク内のさまざまなノードによって格納されます.
ネットワーク上で発生するトランザクションは,どのシャードが影響を受けるかに応じて,各ノードに送信されます.各部分は状態のごく一部を並行的に処理します.このとき,シャード間で通信するためには,何らかのメッセージ受け渡しメカニズムになります.
例えば,シャード内のトランザクションが実行されると,ローカルシャードを更新し,同時にレシート(更新した証拠)を生成します.このレシートは,共有メモリに記録されます.
ブロックチェーンを分割するには,高いセキュリティを維持しながら,すべてのノードがすべてのトランザクションのごく一部しか処理しないネットワークを構築する必要があります.これは極めて難しことです.
それは,ブロックチェーンプロトコルでは、ネットワーク内のすべてのノードが互いに信頼し合うとは限らないと想定しています.それでも、トランザクションは異なるコンピューターで処理されるにもかかわらず,共通の状態について合意している必要があるからです.これを解決するには,多くの権限を持つ可能性のある攻撃者に機会を生み出すことなく,どのノードが安全な方法でどの断片を検証するかを決定するメカニズムを見つける必要があります.
分割を実装するのが難しいもう1つの理由は,ブロックチェーン上で実行されるトランザクションがブロックチェーン内の前の状態のどの部分にも依存する可能性があるため,並行して処理するのが困難になるためです.さらに、並列化を使用すると,競合状態などを緩和するための絶対確実な方法が必要になります.