What is Sharding?(和訳)

シャーディングって何?

著:Radix DLT — The Decentralized Finance Protocol

 簡単に言うと、シャーディングとは、1つのデータベースを"より小さく管理しやすいチャンクに分割"し、"そのチャンクを複数のサーバーに分散させること"で、負荷を分散させて高いスループットを維持することです。
データベースを分割する方法には、主に"垂直方向"と"水平方向"のパーティショニングがあります。

画像1

 垂直方向のパーティショニングは、同じデータベース内の異なるテーブルが、異なるインスタンスに格納されている場合におこります。各テーブルは個別のシャードが必要です。
 簡単な例としては、北米からの全てのトランザクションをある1つのテーブルに、ヨーロッパからの全てのトランザクションを別のテーブルに格納することが挙げられます。

画像2

 水平方向のパーティショニングでは、データベース上のテーブルを別々の行のセットに分割し、これらの行を異なるデータベースインスタンスに格納します。各行のセットはシャードとなります。
 例えば、"サーバ1"が1行目から10,000行目までを、"サーバ2"が10,001行目から20,000行目までを、というように分割します。

 水平方向のパーティショニングは、垂直方向のそれと比べて2つの利点があります。

1.データをどのように分割するかを事前に計画する必要はありません。
2.データの分割方法を事前に計画する必要がなく、データベースの"塊"がなくなること。

 なぜシャーディングが重要なのか?

 要求された数の操作をサーバが処理できない場合、そのデータセットを分割して別の保存することができます。
 たとえば、1つのテーブルを2つのパーティションに分割した場合、各ホストは元のホストの半分の操作を処理する必要があります。操作要求が増えれば、データベースをより多くのパーツに分割することができます。

画像3

 シャーディングは、大規模なデータセットや高スループットの処理を行うシステムのためのスケーリングソリューションとして確立されています。

DLT(Distributed Ledger Technology)"分散型台帳技術"とは?

画像4

 DLTネットワークは、ピアツーピア方式であり、中央管理者機能や、中央データストアは存在しません。DLTの代表的な例としては、ビットコインやイーサリアムなどのパブリックブロックチェーンが挙げられるでしょう。

画像5

 DLTでは、独立した機械(ノード)が、それぞれの台帳に取引を記録し、同期させ、共有する必要があります。

 分散型台帳は、ノードが台帳を変更する際に許可を必要とするかどうかによって、許可制と無許可制の2種類があります。また、誰もが(ネットワーク内のノードだけではなく)台帳にアクセスできるかどうかによって、台帳は"パブリック"か"プライベート"かが決まります。

画像6

DLTは何に使われているの?

DLTは次のようなものを作るのに利用できます。

・デジタル通貨
・デジタル的にユニークなオブジェクト
・(チケットのような)本質的な価値を持つデジタルオブジェクト

 ここから、暗号資産、公証人サービス、予測市場、スマートコントラクト、監査証跡、規制当局への報告、精算・決算の合理化、デジタルアイデンティティなど、多くの関連するユースケースを推定することができます。そして、それはまだ始まったばかりです。

 基本的に、分散型台帳は、記録システムを介してデジタル関係を保護する必要があり、中央機関による管理が望まれない場合に、何らかの形で使用することができます。言い換えると、DLTは、インセンティブや価値の交換のために、トラストレスなピアツーピアのネットワークが必要な場合に役立ちます。

DLTをシャーディングすることで、どのような不正の可能性が出てきますか?

 分散型台帳を理解するには、ネットワークのある場所で使われたものが、別の場所で得られるという"消費"の概念を理解する必要があります。パブリックなDLTをシャーディングすることはこんなんです。なぜなら、ある支出がネットワーク全体で一度しか起こらないことを保証しなければならないからです。これはシャーディング"なしでも"難しいことですが、複数のシャーディングがあると"更に難しくなります"。

 一度しか起こらないはずのトランザクションが、ネットワーク全体で2回以上行われたと記録されると"二重支出"と呼ばれる自体が発生します。

 考えてみてください。DLTを複数のシャードに分割することで、悪意のあるものがより少ないコンピューティングリソースでネットワークの一部を選挙することが可能になります。例えば、DLTを2つのシャードに分割し、ノードの半分を1つのシャードに、残り半分を別のシャードに割り当てた場合、2つのシャードのうち1つを攻撃するために必要なハッシュパワーは25%で済みます。この偽の支出を反映する順分なノードがあれば、二重の支出が可能になります。

 DLTで二重支出が可能になると、不正行為の一形態が可能になります。2018年5月下旬、ビットコインゴールド取引所に対して、二重支出攻撃が行われました。この攻撃では、悪質な行為者がネットワークの総ハッシュパワーの50%以上を獲得することができ、ブロックから自分のコインの取引を修正・省略することができました。その後、以前に確認した取引を消すことができました。

画像7

 二重支出の仕組みを理解することで、DLTのシャーディングが以下に不正の可能性をもたらすかがわかります。台帳は取引の記録であり、各支出が一度しか起こらないようにするために存在します。分散型台帳では、台帳を形成するシャードは全て同じ場所にあるわけではないので、すぐには一貫性がありません。

結論

 これらの問題は、分散型台帳をシャーディングすることの難しさを示しています。台帳は取引記録であり、1回の使用が1回しか起こらないようにするために存在しています。
 分散型台帳では、台帳を構成するシャードが全て同じ場所にあるわけではありません。分散データベースのCAP定理によると、分散データストア(ここでは台帳)は、次の3つの保証のうち2つ以上を同時に提供することは出来ません。それは、Consistency(一貫性)、Availability(可用性)、Partion tolerance(分割耐性)です。

 もっとシンプルに言うと、ある支出がネットワーク全体で一度しか発声していないことを確認する必要がありますが、多くのシャードがあるとこれが難しくなります。

 次回は、ブロックチェーンをシャーディングする際に、51%攻撃がどのような問題を引き起こすかを説明します。

 これらの具体的な問題、特にシャーディング、いくつかの攻撃ツールとベクター、そしてRadix DLTでどのように解決されるかについては、今後もご期待ください。

オリジナル記事:https://www.radixdlt.com/post/what-is-sharding

Radixについて質問がありますか?会話に参加してください。

1)テレグラム:https://t.me/radixdlt
2) ディスコード: https://discord.gg/fS6F9NP


この記事が気に入ったらサポートをしてみませんか?