断片化テクノロジー - ブロックチェーン TPS を向上させる鋭いエッジ
哈希未来
2018-08-06 07:48
本文约3702字,阅读全文需要约15分钟
説得力を持たせるには、大規模ネットワークで長期間にわたってテストおよび検証し、厳密な理論的解決策の証明を組み合わせる必要があります。

レポートの概要:

レポートの概要:

フラグメンテーションはデータベースから派生した拡張テクノロジーであり、ブロックチェーン システムのスケーラビリティを向上させるために使用できます。基本的な考え方は、ネットワーク内のノードを異なるフラグメントに分割し、各フラグメントが異なるトランザクションを並行して処理できるようにすることです。ネットワークの同時実行性を高めるために、それらの間の接続が確立されていないトランザクション。ノード数が増えるとネットワークのスループットが向上するのが特徴です。主要な問題は、データシャードの主要な特性値の決定と、シャード間のメタデータ通信の遅延によって引き起こされる不整合にあり、シャード間通信が頻繁に行われると、ブロックチェーンネットワークのパフォーマンスが大幅に低下します。各シャード内のデータは個別に更新されるため、アプリケーションロジックを設計する際には情報が確実に更新されるようにする必要があると同時に、プロセス内で発生する可能性のある不整合に対処するためにある程度の堅牢性を確保する必要があります。最終的な一貫性を達成すること。

ブロックチェーンにおけるシャーディングは、目的に応じてトランザクションシャーディング、ネットワークシャーディング、ステートシャーディングに分けられますが、注目すべき点は、ネットワークシャーディング技術がブロックチェーン内で使用されていること、つまりマイナーがいくつかのサブネットワークに分割されていることです。シャード上のトランザクションを検証するには、悪意のあるノードの数が十分に少ないことを確認する必要があるため、マイナーを割り当てるルールのランダム性を確保するように注意する必要があります。ブロックチェーンにおけるシャーディング技術の適用において考慮すべき問題は、シビル攻撃、DDOS攻撃、ダブルスペンド攻撃などの様々な攻撃に対する防御であり、各シャードの総ノード数を確保する必要がある。十分な数の誠実なノードが大部分を占め、シャーディング技術には非常に高いセキュリティ要件が必要であると同時に、ブロックチェーン システムのノード数は従来のデータベースよりも多く、帯域幅の制限に直面しています。遅延による不整合によるパフォーマンスやセキュリティの問題を十分に考慮する必要があるため、実現している関連プロジェクトはほとんどありません。説得力を持たせるには、大規模ネットワークで長期間にわたってテストおよび検証し、厳密な理論的解決策の証明を組み合わせる必要があります。

従来の概念におけるフラグメンテーション テクノロジは、データベースを複数のフラグメントに分割し、それらを異なるサーバーに配置することです。最新のクラウド サービスでは、データはさまざまなサイトでホストされ、分割されることがよくあります。このアプローチの理由には、スケーラビリティを向上させるための複数のコンピューター間の負荷分散、可用性を向上させるための複数のサイトにわたるデータの保存などが含まれます。ブロックチェーンシャーディング技術は、データベースシャーディングの概念に基づいた拡張技術です。

ブロックチェーンやデータベースの分野に関係なく、シャーディングの最初のステップは、データの主要な特性値を抽出し、特定のルールに従って処理するためにその主要な特性値をさまざまなフラグメントに分割することです。主要な特徴値の選択は非常に重要であり、データ表現の一意性の保証と断片化の影響に関係します。固有値の選択方法に関しては、簡潔な基準があります。つまり、主要なアクセス パターンが何であると思われるかに基づいて (基本的なデータ パターンが何であると思われるかに基づいて) ということです。したがって、ブロックチェーン プロジェクトでは、シャーディングがユーザーの秘密キー/アカウント アドレスなどに基づいていることがよく見られます。これらの値は一意であり、時間の経過とともに変化せず、シャーディングのロジックが比較的明確であるためです。

従来のデータベース テクノロジでは、データをシャーディングする主な方法が 3 つあります。

1. ハッシュ モード、直接モジュロ:たとえば、シャードが 3 つある場合、データはハッシュ化され、モジュロ 3 が実行され、その結果に応じて特定のシャードに割り当てられますが、一部の主要な特徴値は負荷の量に関連しているため、不規則性が状況を打破します。さまざまなシャード間で均等に分散される可能性が高くなります。反例としては、データの主要な特性値が登録時間順であれば、新しく登録されたデータの方が活性が高く、特定のシャードに割り当てることが可能です。ただし、この方法の欠点は、新しいシャードが追加された場合にシャードのバランスを再調整するのが難しいことです。利点は、追加の状態情報を維持する必要がないことです。

2. 一貫したハッシュ:仮想ノードを使用しない一貫したハッシュ方式とは、データが特性値に従ってエンドツーエンドのハッシュ リングにマッピングされ、ノードも特定のルールに従ってマッピングされることを意味します。データによって時計回りに見つかった最初のノードがノードです。どこに保管されているか。仮想ノードを使用した一貫性のあるハッシュは、仮想ノードがハッシュ リングにマッピングされることを除いて類似しているため、実際の物理ノードはハッシュ リング上の複数の範囲を占有することができます。この方法では、データがどのノードに割り当てられているかという状態情報を維持する必要がありますが、シャードの数を増やす必要がある場合にシャードの再バランスが容易になるという利点があります。ただし、シャード状態情報の保守には一貫性の問題を考慮する必要があり、これはより複雑です。

3. Range based:主要な特徴量に応じて異なる区間に分割され、各ノードは 1 つ以上の区間に対応しており、コンシステント ハッシュと同様に状態情報も保持する必要があります。

ブロックチェーン システムでは、どのノードがどのシャードを実装しているかを知るためのメカニズムが必要です。従来のデータベース システムでは、シャード情報 (つまり、どのデータがどのシャードに分割されているかを示すメタデータ) には通常、専用のサーバー ストレージが必要です。メタデータ サーバーの負荷を軽減するため、分散システムではメタデータが他のノードにキャッシュされます。ブロックチェーンにおける考え方もほぼ同様で、ノード間でキャッシュされたメタデータの一貫性を確保するか、パフォーマンスを確保するために同様のマスターサーバーを導入する必要がありますが、どちらも一貫性の課題を伴います。

複数のレプリカの一貫性と可用性は CAP 理論の議論の範囲であり、利用可能な解決策は主に 2 つあります。

1つ目はマスタ・スレーブ同期であり、まずマスタ・サーバを選択し、マスタ・サーバのみが外部サービスを提供し、マスタ・サーバはメタデータの更新情報をログ形式で共有記憶領域に保存し、スレーブ サーバーは共有ストレージ スペースから読み取ります。ログを取得して適用し、マスター サーバーと一致する状態を実現します。マスター サーバーに障害があることが検出された場合 (ハートビートなど)、新しいマスター サーバーが再選択されます。ネットワーク分割の場合、誰もが元のマスター サーバーがダウンし、新しいマスター サーバーが選出されると考える可能性がありますが、リアルタイムでは元のマスター サーバーがサービスを提供し続けているため、 「デュアルマスターサーバー」現象を解決するには、古いマスターサーバーを隔離して外部サービスを正常に提供できないようにする必要があります。メタデータの強力な一貫性を確保するために、切り替えの準備時に、新しいプライマリ サーバーは外部サービスの提供を続行する前に、メタデータが完全に同期されていることを確認する必要があります。この目標を達成するための 1 つの方法は、メタデータが変更されたときにすぐにすべてのキャッシュ サーバーに通知し、データをロックすることです。たとえば、システムによって完了するタスクが複数のフラグメントで同時にステータスを更新する必要がある場合、アップデートが完了する前はアクセスが拒否されます。スケーラビリティの高い NoSQL データベースでよく実現される、レプリケートされたデータ間の高度な一貫性を維持するもう 1 つの方法は、読み取り/書き込みクォーラムとバージョン管理を使用することです。このアプローチでは、データの読み取りと書き込みがさらに複雑になりますが、データのロックは回避されます。

2 番目の方法は、Paxos プロトコルや Raft プロトコルなどの分散コンセンサス プロトコルを通じて複数のレプリカの一貫性を実現することで、すべてのバックアップが外部サービスを提供し、強力な一貫性を確保できることを実現します。

ブロックチェーンの状態シャーディングとは、各ノードがブロックチェーンの状態情報の一部のみを保存することを意味し、どのスライスに必要な状態が保存されているかを知るために状態情報を維持するには同様のメカニズムが必要です。解決する必要がある一貫性の問題は上記と同様ですが、トランザクションの断片化の実装はより簡単です。アカウントベースのブロックチェーン システムでは、各トランザクションには送信者のアドレスがあり、システムは送信者のアドレスに基づいてシャードを割り当てることができます。これにより、2 つの二重支出トランザクションが同じシャード内で確実に検証されるため、システムはシャード間通信を行わずに二重支出トランザクションを簡単に検出できます。ノードが決定的であれば、上で説明したメタデータの更新によって引き起こされる問題はほとんどありません。ただし、トランザクションの検証にシャード間の通信が含まれる場合、通常、オーバーヘッド コストが高くなり、ネットワークのスループットと経済的メリットに影響します。

ブロックチェーンのネットワークシャーディングとは、マイナーをいくつかのグループに分割し、トランザクションを同時に検証し、トランザクションを並行して処理するシステムの能力を向上させ、それによって TPS を向上させることを指します。通常、定期的に乱数を生成することでコンセンサス ノードの選択を決定できますが、すでに番号が付けられているシャードにマッピングされている限り、問題への対処が非常に簡単になります。ただし、ノードがダウンし、ノードが再割り当てされる場合は、フラグメント間で合意を形成する必要があります。ネットワーク シャーディング テクノロジがブロックチェーンで使用されていることは注目に値します。つまり、マイナーはシャード上のトランザクションの検証を担当するいくつかのサブネットワークに分割されています。悪意のあるノードの数が十分に少ないことを確認する必要があります。したがって、マイナーを割り当てるルールはランダム性を確保するために注意する必要があります。

参考文献:

    

参考文献:

1.「質問を使って分散システムのデータ断片化を学ぶ」、https://www.cnblogs.com/xybaby/p/7076731.html

2.「シャーディングテクノロジー(シャーディング) - ブロックチェーン拡張の問題に対する優れた解決策」、http://www.8btc.com/sharding-blockchain-scalability

3. 《sharding》,https://docs.mongodb.com/manual/sharding/

4. 《Sharding pattern》,https://docs.microsoft.com/en-us/azure/architecture/patterns/sharding

5. 《Database sharding explained in plain English》,https://www.citusdata.com/blog/2018/01/10/sharding-in-plain-english/

6. Lu Xiaoming、「パブリック チェーンの未来としてのシャーディング テクノロジは、私​​たちからどのくらい遠いと考えられていますか?」 "、https://www.odaily.com/post/5132394

7. Coin Academy、「シャーディングの概要、Zilliqa、QuarkChain」、http://8btc.com/article-4660-1.html


哈希未来
作者文库