(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024161407
(43)【公開日】2024-11-19
(54)【発明の名称】シャード化された許可型の分散型台帳
(51)【国際特許分類】
G06F 16/27 20190101AFI20241112BHJP
【FI】
G06F16/27
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024123347
(22)【出願日】2024-07-30
(62)【分割の表示】P 2022104925の分割
【原出願日】2018-05-16
(31)【優先権主張番号】15/605,689
(32)【優先日】2017-05-25
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】モイア,マーク・エス
(72)【発明者】
【氏名】カー,ハロルド
(72)【発明者】
【氏名】ハーリヒー,モーリス・ピィ
(72)【発明者】
【氏名】シェフ,アイザック
(57)【要約】 (修正有)
【課題】シャード化された許可型の分散型台帳を実現するシステム、方法及び記憶媒体を提供する
【解決手段】システムは、台帳システム全体の参加者とみなせる複数のノードを含み、ノードは、1つ以上のディスパッチャ、メンバシップ代表及びベリファイアを介して、台帳システムに参加し、複数のシャードに分割でき、シャード化された許可型の分散型台帳を全体として管理する。複数のクライアントは、ネットワークを介して通信することで、シャード化された許可型の分散型台帳システムとやり取りする。さらに各ノードは、クライアントからのメッセージをベリファイアに導く役割を担い、ディスパッチャの1つ以上の特別のディスパッチャプロセスを有する。システムはさらに、台帳システムの実行中に利用される各種判断に関する情報を決定及び/又は分配するメンバシップ及び構成サービスと、台帳におけるデータのうちの一部を管理するストレージサービスとを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
シャード化された許可型の分散型台帳システムであって、前記システムは、
前記分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイスを備え、前記複数のノードは、1つ以上のトランザクションに関する情報を格納するように構成された複数の台帳シャードを含む分散型台帳を管理するように構成されており、
各ノードは、
前記複数の台帳シャードのうちの個々の台帳シャードに対して個々のトランザクションに関する情報をアペンドするためにコンセンサスプロトコルに従って参加するように構成された、1つ以上のベリファイアサービスと、
ディスパッチャサービスとを含み、
前記ディスパッチャサービスは、クライアントからトランザクション要求を受けるように構成されており、前記トランザクション要求は、特定のトランザクションと前記複数の台帳シャードのうちのターゲットシャードとを示す情報を含み、かつ
前記ディスパッチャサービスは、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられた、前記ベリファイアサービスのうちの1つに転送するように構成されている、シャード化された許可型の分散型台帳システム。
【請求項2】
前記ベリファイアサービスは、前記転送された要求によって指定されるトランザクションに関する情報を、前記ターゲットシャードにアペンドするように構成されている、請求項1に記載のシャード化された許可型の分散型台帳システム。
【請求項3】
前記ディスパッチャサービスはさらに、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたリーダーベリファイアに転送するように構成されており、
前記リーダーベリファイアは、前記コンセンサスプロトコルに従い、前記ターゲットシャードに対応付けられた前記ベリファイアサービスに対して前記特定のトランザクションを提案するように構成されている、請求項1に記載のシャード化された許可型の分散型台帳システム。
【請求項4】
構成サービスをさらに備え、前記構成サービスは、各対応するノードごとに、前記複数の台帳シャードのうちの個々の台帳シャードに対してアクティブになる、前記対応するノード上の前記ベリファイアサービスのサブセットを決定するように構成され、所定の台帳シャードに対してアクティブであるベリファイアサービスが、コンセンサスに参加して新たなトランザクションを前記台帳シャードにアペンドする、請求項1に記載のシャード化された許可型の分散型台帳システム。
【請求項5】
前記構成サービスはさらに、ランダムネスのシャード化ソースに少なくとも一部基づいて前記ベリファイアサービスのサブセットを決定するように構成されており、前記ランダムネスのシャード化ソースは、前記複数のノードが制御できないランダムデータを提供する、請求項4に記載のシャード化された許可型の分散型台帳システム。
【請求項6】
前記複数の台帳シャードのうちの個々の台帳シャードにアペンドされるトランザクションのカウント、
前記台帳シャードのうちの1つ以上についての状態情報の暗号ハッシュ、および、
前記台帳シャードのうちの個々の台帳シャードに対応付けられたベリファイアサービスに関する情報、
のうちの1つ以上を記録するように構成された分散型構成台帳をさらに備える、請求項1に記載のシャード化された許可型の分散型台帳システム。
【請求項7】
前記複数の台帳シャードに関する指令を前記ノードのうちの1つ以上にブロードキャストするように構成された構成サービスをさらに備える、請求項6に記載のシャード化された許可型の分散型台帳システム。
【請求項8】
コンピュータが実施する方法であって、
分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイス上で、1つ以上のトランザクションに関する情報を格納する複数の台帳シャードを含む分散型台帳を管理するステップと、
前記ノードのうちの1つのノード上のディスパッチャプロセスが、クライアントからトランザクション要求を受けるステップとを含み、前記トランザクション要求は、特定のトランザクションと前記複数の台帳シャードのうちのターゲットシャードとを示す情報を含み、
前記ディスパッチャプロセスが、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたベリファイアプロセスに転送するステップを含み、前記ベリファイアプロセスは複数のベリファイアプロセスのうちの1つであり、前記複数のベリファイアプロセスは各々、前記複数の台帳シャードのうちの個々の台帳シャードに個々のトランザクションに関する情報をアペンドするためにコンセンサスプロトコルに従い1つ以上の他のベリファイアプロセスとともに参加するように構成されている、コンピュータが実施する方法。
【請求項9】
前記ベリファイアプロセスが、前記転送された要求によって指定されるトランザクションに関する情報を、前記ターゲットシャードにアペンドするステップをさらに含む、請求項8に記載のコンピュータが実施する方法。
【請求項10】
前記ターゲットシャードに対してアクティブである前記ベリファイアプロセスのセットの中からリーダーベリファイアを決定するステップをさらに含み、
前記転送するステップは、前記ディスパッチャサービスが、前記受けたトランザクション要求を、前記リーダーベリファイアに転送するステップを含み、
前記リーダーベリファイアが、前記コンセンサスプロトコルに従い前記ターゲットシャードに対してアクティブである前記ベリファイアプロセスのセットに、前記特定のトランザクションを提案するステップをさらに含む、請求項8に記載のコンピュータが実施する方法。
【請求項11】
構成サービスが、各対応するノードごとに、前記複数の台帳シャードのうちの個々の台帳シャードに対してアクティブになる、前記対応するノード上の前記ベリファイアプロセスのサブセットを決定するステップをさらに含む、請求項8に記載のコンピュータが実施する方法。
【請求項12】
前記ベリファイアプロセスのサブセットを決定するステップは、ランダムネスのシャード化ソースに少なくとも一部基づいており、前記ランダムネスのシャード化ソースは、前記複数のノードが制御できないランダムデータを提供する、請求項11に記載のコンピュータが実施する方法。
【請求項13】
前記複数の台帳シャードのうちの個々の台帳シャードにアペンドされるトランザクションのカウント、
前記台帳シャードのうちの1つ以上についての状態情報の暗号ハッシュ、および、
前記台帳シャードのうちの個々の台帳シャードに対応付けられたベリファイアプロセス関する情報、
のうちの1つ以上を、分散型構成台帳に記録する、請求項8に記載のコンピュータが実施
する方法。
【請求項14】
構成サービスが、前記複数の台帳シャードに関する指令を、前記ノードのうちの1つ以上にブロードキャストするステップをさらに含む、請求項13に記載のコンピュータが実施する方法。
【請求項15】
1つ以上のコンピュータ上で実行されると前記1つ以上のコンピュータに以下のステップを実行させるプログラム命令を格納する非一時的なコンピュータ読取可能記憶媒体であって、前記ステップは、
分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイス上で、1つ以上のトランザクションに関する情報を格納する複数の台帳シャードを含む分散型台帳を管理するステップと、
前記ノードのうちの1つのノード上のディスパッチャプロセスが、クライアントからトランザクション要求を受けるステップとを含み、前記トランザクション要求は、特定のトランザクションと前記複数の台帳シャードのうちのターゲットシャードとを示す情報を含み、
前記ディスパッチャプロセスが、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたベリファイアプロセスに転送するステップを含み、前記ベリファイアプロセスは複数のベリファイアプロセスのうちの1つであり、前記複数のベリファイアプロセスは各々、前記複数の台帳シャードのうちの個々の台帳シャードに個々のトランザクションに関する情報をアペンドするためにコンセンサスプロトコルに従い1つ以上の他のベリファイアプロセスとともに参加するように構成されている、非一時的なコンピュータ読取可能記憶媒体。
【請求項16】
前記ベリファイアプロセスが、前記転送された要求によって指定されるトランザクションに関する情報を、前記ターゲットシャードにアペンドするステップをさらに含む、請求項15に記載の非一時的なコンピュータ読取可能記憶媒体。
【請求項17】
前記台帳シャードに対応付けられた前記ベリファイアプロセスのセットの中からリーダーベリファイアを決定するステップをさらに含み、
前記転送するステップは、前記ディスパッチャプロセスが、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたリーダーベリファイアに転送するステップを含み、
前記リーダーベリファイアが、前記コンセンサスプロトコルに従い前記ターゲットシャードに対応付けられた前記ベリファイアプロセスに、前記特定のトランザクションを提案するステップをさらに含む、請求項15に記載の非一時的なコンピュータ読取可能記憶媒体。
【請求項18】
構成サービスが、前記複数のノードのうちの個々のノードについて、前記複数の台帳シャードのうちの個々の台帳シャードに対してアクティブになる、前記対応するノード上の前記ベリファイアプロセスのサブセットを決定するステップをさらに含む、請求項15に記載の非一時的なコンピュータ読取可能記憶媒体。
【請求項19】
前記ベリファイアプロセスのサブセットを決定するステップは、ランダムネスのシャード化ソースに少なくとも一部基づいており、前記ランダムネスのシャード化ソースは、前記複数のノードが制御できないランダムデータを提供する、請求項18に記載の非一時的なコンピュータ読取可能記憶媒体。
【請求項20】
前記複数の台帳シャードのうちの個々の台帳シャードにアペンドされるトランザクションのカウント、
前記台帳シャードのうちの1つ以上についての状態情報の暗号ハッシュ、および、
前記台帳シャードのうちの個々の台帳シャードに対応付けられたベリファイアプロセス関する情報、
のうちの1つ以上を、分散型構成台帳に記録するステップをさらに含む、請求項15に記載の非一時的なコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
背景
開示の分野
本開示は、概して分散型台帳に関し、より具体的にはシャード化された許可型の分散型台帳に関する。
【背景技術】
【0002】
関連技術の説明
従来、分散型台帳(ブロックチェーンを含む)は典型的にはスケーリングせず、スループットは基本的に、すべての参加者がすべてのトランザクションの伝達、処理および格納を行う必要があるために、限定される。結果として、追加のリソースはスループットの改善につながらないことが多い。「台帳」は、一連のトランザクションを記録するアペンドオンリー(append-only)のデータ構造とみなすことができる。「分散型台帳」は、連続
するトランザクションについて合意される共通プロトコルに従うノードの集まりによって管理される台帳である場合がある。「クライアント」は、上記ノードのうちの1つ以上に対してトランザクションをサブミットし得る。いくつかの分散型台帳は、トランザクションをブロックチェーンと呼ばれるブロックに集めることができる。各トランザクション、またはトランザクションのブロックは、台帳内の前のトランザクションのハッシュ(たとえば暗号ハッシュ)を含むことにより、台帳が改ざんされるリスクを最小にすることができる。言い換えると、誰も(またはどのノードも)トランザクションを不正に追加、削除、または変更できない。なぜなら、そうすると、後続のすべてのハッシュも変更することになるからである。Bitcoin(登録商標)は、分散型台帳の1つの周知例である。
【0003】
従来、多くのブロックチェーンおよび分散型台帳システムは十分にスケーリングしない。本明細書において、「ブロックチェーン」という用語は、広く分散型台帳を、たとえ事実上ブロックからなるチェーンとして表されていなくても、意味するために使用される。そのスループットは、参加者の大部分(すなわち場合によってはリソースによって重み付けされる)が、すべてのトランザクションを受信、検証および格納しなければならないという条件によって制限される可能性がある。結果として、追加のリソースはスループットの改善につながらないことが多い。
【0004】
非許可型ブロックチェーンは典型的に、参加者が台帳の管理に貢献するためにエネルギを費やさねばならないようにすることを確実にすること等によって、故意に非効率的になることがある。Bitcoin(登録商標)等の非許可型台帳は一般的に、参加するプロトコルに従うことを希望するいかなるノードも認める。誰もがトランザクションを提案することができ、誰もがどのトランザクションが台帳に記入されるかを決定するプロトコルに参加することができる。一方、許可型の実装例では、特定のノードのみが参加を認められる。たとえば、管轄機関が、どのノードが許可型台帳に参加できるかを制御する場合がある。この管轄機関は、1つの組織、コンソーシアムなどのような各種形態を取ることができる。許可型台帳は、台帳プロトコルを更新するための、または「顧客確認(know your customer)」という金融規則に従うための、整理された手順を提供すること等により、管理を容易にするものとみなすことができる。
【0005】
正当なノードは、システムのプロトコルに忠実に従うノードとみなすことができ、一方、不正なノード、すなわち敵の制御下にあるノードは、何等かの利益を求めてプロトコルから逸脱する可能性がある。
【0006】
許可付与は、不正ノードの挙動を、これらを所有するまたはこれらに対する責任を負うアイデンティティに対応付けることを可能にすることが多く、したがって、これらの責任追跡性を保つ可能性を開く。これは、技術的および/または非技術的な手段によって達成し得る。たとえば、あるノードが、明らかに不正をはたらいた場合、プロトコルは、たとえば第三者に寄託されたセキュリティ保証金を没収することまたは不正ノードのさらなる参加を許さないこと等により、ペナルティが自動的に適用されることを可能にし得る。これに代えてまたは加えて、不正行為のエビデンスは法的、規制またはビジネスプロセスに知らされて、有罪の判決およびシステム外で行われるペナルティの決定を可能にする。
【0007】
当然、完全に独立した複数のブロックチェーンを用いることができる。非許可型ブロックチェーンの場合、この方策には問題があるかもしれない。なぜなら、最も人気のある小数のブロックチェーンを除いて、ほとんどのブロックチェーンには、その管理専用のリソースが少ししかなく、その場合、これらを適度のリソースで圧迫するのは簡単であり、その完全性を損なうであろう。
【0008】
ブロックチェーンに対する圧力を軽減する2つの方法は、ライトニングネットワークとサイドチェーンである。いずれの場合も、参加者は、「オフチェーン」でやり取りを行い、ごくたまにブロックチェーンに対するトランザクションを実行する。これらの方策は、ブロックチェーンに対する負担を緩和するのに役立つかもしれないが、プライマリチェーンはスケーリングしないという事実を変えることはない。
【0009】
非許可型の台帳も許可型の分散型台帳も、いくつかのトランザクションを他のトランザクションよりも好む参加者による操作を受けることができる場合がある。ほとんどの台帳プロトコルの中心となるものは、広く一般に合意された一連のトランザクションを確立するために使用されるコンセンサスアルゴリズムであろう。多くの分散型台帳は、実際のところ従来のコンセンサス問題を解決しないが、それでもなおコンセンサスアルゴリズムを実現すると一般的には言われる。いくつかの前のコンセンサスアルゴリズムは、プルーフ・オブ・ワーク(proof-of-work)(PoW)システムに基づいており、このシステムに
おいて参加者は暗号パズルを解くためにリソースを費やす。しかしながら、PoWには周知の欠点が2つある。従来、PoWは、不経済で低速であり、無視できない量のエネルギを消費するよう、かつ台帳にトランザクションをアペンドできるレートを制限するよう、故意に設計されている。この方策は、未知のエンティティの影響を制限することを目的としており、そのコストは許可型台帳において回避し得る。PoWコンセンサスは確率的補償を提供するだけである。一般的に、PoWコンセンサスプロトコルの台帳は、2以上の参加者が同時に異なるトランザクションをチェーンにアペンドすると、分岐する(fork)可能性がある。最後には、互換性がないこれらのチェーンのほとんどが放棄されるかもしれないが、どれが存続するかが不確かな期間が存在し得る。結果として、トランザクションは、その後十分な数の後のトランザクションがアペンドされて初めて信頼するに足るとみなすことができる(たとえば台帳が分岐していないことまたはこのトランザクションが分岐に耐えて放棄されなかったことを保証する)。
【0010】
PoWコンセンサスに関係するリスクおよび遅延は、許可型台帳において回避できる。なぜなら、参加者は明示的に認証されるので、未知のエンティティによる参加を制限する必要がないからである。これは、非許可型台帳では適用できないさまざまなコンセンサス機構の可能性を開く。
【0011】
たとえば、許可型の分散型台帳のあるコンセンサス機構は、台帳にアペンドするトランザクション(またはそのブロック)について参加者が提案し投票するプラクティカル・ビザンチン・フォールト・トレランス(Practical Byzantine Fault Tolerance)(PBF
T)である。PBFTは、参加者のうちの特定の割合(たとえば2/3を上回る)が正当
であれば、参加者は台帳に対する有効な追加について合意することを保証し得る。言い換えると、PBFTは、参加者のうちの特定の割合(すなわち1/3)未満が、ビザンチンと言われる、たとえばプロトコルから外れて任意に行動する不正な参加者であれば、正当性を保証し得る。しかしながら、PBFTは一般的に、n個のノードが合意に達するためにO(n2)個のメッセージを必要とし、これは、たとえトランザクションがブロックになるようバッチ処理されても、多数のノードへのスケーラビリティを妨げるとみなし得る。
【0012】
もう1つのコンセンサスアルゴリズムは、トランザクションをその台帳にアペンドしこれらをその他の参加者にブロードキャストするリーダーを含み、これは、それらの台帳にこれらを追加し、確認を台帳に送信する。このようなコンセンサスアルゴリズムの一例はRaftである。リーダーが参加者の大半からの確認を受けると、トランザクションはコミットされたとみなされる。リーダーが反応しなくなった場合、他の参加者が、新たなリーダーを選ぶ選挙を開始できる。一般的な場合、Raftは合意に達するのにO(n)個のメッセージしか必要としないので、PBFTよりも多数のノードにさらにスケーラブルである。しかしながら、Raftはビザンチン故障に対する耐性がない。たとえば、これは、参加者が互いになりすますこと、腐敗したリーダーが他を騙すことなどを認める。よって、これは、分散型台帳の実装例において使用するのにそのままでは適切でない場合がある。
【発明の概要】
【課題を解決するための手段】
【0013】
概要
シャード化された許可型の分散型台帳を実現するための、方法、技術、装置およびシステムについて説明する。本明細書に記載のシャード化された許可型の分散型台帳は、各参加者が必要とする作業および通信の量を減じることにより、以前の分散型台帳実装例には固有であり得るスケーラビリティのボトルネックを場合によっては回避することができ、スループットの増加につながる追加のリソースの使用を場合によっては可能にすることができる。本明細書に記載の方法、技術および/または機構は、複数の「シャード(shard
)」からなる台帳をサポートするためのスケーラブルなインフラストラクチャを実現するための方策を提供することができる。上記シャードは各々、それ自体、分散型台帳とみなすことができ、分散型台帳として実現することができる。いくつかの実施形態では、複数のシャードが並列に動作し得る。
【0014】
シャード化された許可型の分散型台帳への参加は、いくつかの実施形態において、コンソーシアム等の管轄機関の許可によってのみ認められ得る。管轄機関による許可は、このような許可付与の判断が暗に示している信用を活用することを認める場合があるが、誰かまたは何かを完全に信用することはない。また、各種実施形態に従うと、このような許可付与を活用することにより、技術的な各種機構および非技術的な各種機構双方のうちのいずれかを介し、不正をはたらく参加者を検出しその責任追跡性を保つことを、場合によっては保証することができる。
【0015】
本明細書に記載の方法、技術および/または機構は、シャード化された許可型の分散型台帳を実現するシステムが、所望の行動を指図する(たとえばどの参加者が任意の時点で所定のシャードをアクティブに管理しているかを判断する)、および/または、従わない(たとえば台帳プロトコルおよび/またはコンセンサスアルゴリズムに従わない)ものの責任追跡性を保つ機会を、提供し得る。いくつかの実施形態に従い、本明細書に記載の、シャード化された許可型の分散型台帳は、シャードを管理する参加者からシャードを切り離すことによってサービスの提供を仮想化するスケーラブルインフラストラクチャを利用する(および/または含む)ことにより、場合によっては容量および作業量を互いに独立
して増大させることができる。
【図面の簡単な説明】
【0016】
【
図1】一実施形態に係るシャード化された許可型の分散型台帳を実現するシステムを示す論理ブロック図である。
【
図2】一実施形態に係るシャード化された許可型の分散型台帳を管理する責任があるいくつかのノード上のベリファイアを示す論理ブロック図である。
【
図3】シャード化された許可型の分散型台帳においてシャードにトランザクションを追加する方法の一実施形態を示すフローチャートである。
【
図4】受信メッセージをディスパッチする方法の一実施形態を示すフローチャートである。
【
図5】一実施形態に係る、ベリファイアがアクティブになったときにシャードスナップショットを利用する方法の一実施形態を示すフローチャートである。
【
図6】一実施形態に係るコーディネーションシャードを備えたメンバシップサービスを示す論理図である。
【
図7】いくつかの実施形態に係るシャード化された許可型の分散型台帳システムを実現するように構成されたコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0017】
本開示は、本明細書において、いくつかの実施形態および説明のための図面について、例示のために記載されているが、当業者は、本開示が記載されている実施形態または図面に限定されないことを理解するであろう。なお、本明細書の図面および詳細な説明は、本開示を開示された特定の形態に限定することを意図しているのではなく、むしろ、本開示は、以下の請求項によって定められる精神および範囲に含まれるすべての修正、均等物、および代替形をカバーするものであることが、理解されねばならない。本明細書で使用されるいずれの見出しも、専ら整理のためであり、本明細書の記載または請求項の範囲を限定することを目的としているのではない。本明細書で使用される「してもよい、し得る(may)」という単語は、義務の意味(すなわち、~ねばならない(must)を意味する)で
はなく、許容の意味(すなわち、可能性があることを意味する)で用いられる。同様に、「含む(「include」、「including」、および「includes」)」という単語は、含むことを意味するが、それに限定される訳ではない。
【0018】
実施形態の詳細な説明
シャード化された許可型の分散型台帳システムを実現するための、方法、技術、装置およびシステムについて説明する。いくつかの実施形態において、シャード化された許可型の分散型台帳は、各参加者が必要とする作業および通信の量を減じることにより、以前の分散型台帳実装例に固有のスケーラビリティのボトルネックを場合によっては回避することができ、かつ、追加のリソースの使用を可能にすることにより、場合によってはスループットを増加させることができる。
【0019】
モノリシック台帳(たとえば一例はBitcoin(登録商標))において、台帳におけるトランザクションは、1つの線形シーケンスに配置される。結果として、モノリシック台帳は概ね、本質的に連続しており、新たなトランザクションを台帳に追加することを提案するすべてのノードは、共通コンセンサスプロトコルに参加することによって他のそのようなノードすべてと競合しなければならず、全システムスループットおよびレイテンシは、参加者の数が増えると悪化する傾向がある。
【0020】
これに対し、シャード化された台帳では、1つの台帳を分割してシャードの集まりにすることができ、各シャードはそれ自体線形台帳であってもよい。関連するトランザクションは同一のシャードにアペンドすることができ、関連していないトランザクションは異な
るシャードに並列にアペンドすることができる。関連していないトランザクションを並列にアペンドする機能により、シャード化された台帳を、本質的によりスケーラブルなものであるとみなすことができる。さらに、各シャードは、利用できるリソースのサブセットによって管理することができる。1つの台帳(またはシャード化された台帳の場合は個々のシャード)を管理するために使用されるコンセンサス機構は、スケーリングが参加者の数にともなって悪化することが多いので、このようにシャード間でリソースを分割することは、個々のシャード各々のスループットを高めることにもなり得る。複数のシャードに対してトランザクションを並列にアペンドするという利点と個々のシャードのスループットを高めるという利点とを組み合わせることにより、結果として、同一のリソースセットが管理するモノリシック台帳と比較して、実質的にスループットを改善することができる。
【0021】
単純に、完全に互いに独立している台帳のセットを作成しリソースを割り当てることにより各々を管理することには、本明細書に記載のシャード化された許可型の分散型台帳が共有しないいくつかの短所がある。たとえば、台帳と、完全に独立した台帳のセットを管理するリソースとの間の、固定されたマッピングは、柔軟性を欠き、一般的に、台帳間の自動負荷平衡を排除する。さらに、独立した各台帳を管理するリソースのセットがスタティックな状態のままであった場合、たとえば台帳の履歴の変更に同意することにより、台帳を腐敗させる可能性がある十分な数のこれらリソース間の連携が形成される可能性があるかもしれない。
【0022】
いくつかの実施形態において、シャード化された許可型の分散型台帳は、シャードと、これらのシャードを管理するリソースとの間のマッピングを、動的に変更し得る。これは、いくつかの実施形態において、たとえば負荷平衡を実施する一般ポリシーを可能にすることができ、また、システムがリソースを定期的に再割り当てすることを可能にすることにより、場合によっては所定のシャードを管理するリソース間の連携を形成するための労力を混乱させる。加えて、1つのシャードの状態に関する情報を、他の1つ以上のシャードの台帳に含めることができる。1つのシャードの状態に関する情報を別のシャードの台帳に含めることは、以下でより詳細に説明するように、所定のシャードを腐敗させることを潜在的に一層困難にする「エンタングルメント(entanglement)」技術の一例とみなす
ことができる。
【0023】
いくつかの実施形態において、シャード化された許可型の分散型台帳はまた、シャード間トランザクション(すなわち複数のシャードの状態に影響するまたは依存するトランザクション)をサポートする機会を提供し得る。
【0024】
加えて、各種実施形態に従うと、本明細書に記載の方法、技術および/または機構は、さまざまなブロックチェーンおよび分散型台帳システムに適用可能であろう。
【0025】
シャード化された許可型の分散型台帳の実現
先に述べたように、いくつかの実施形態に従うと、本明細書に記載の方法、技術および/または機構は、1つの台帳を管理するためにすべてのノードを相互に通信させるのではなく、1つの台帳を複数のシャードに分割しノードのサブセットに配置することによって各台帳を管理する。
図1は、一実施形態に係る、シャード化された許可型の分散型台帳を実現するように構成されたシステムを示す論理ブロック図である。
【0026】
いくつかの実施形態において、シャード化された許可型の分散型台帳は、完全なシャード化された許可型の分散型台帳を全体として表し得る複数のシャードを含み得る。加えて、1つのシャードはそれ自体が台帳であってもよい。言い換えると、情報のサブセットが台帳全体に含まれるが、1つのシャードは、完全な台帳と同じように機能およびやり取り
することができる。
【0027】
システム100のような、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、台帳システム全体の参加者とみなし得る、ノード120A~N等の複数のノードを含み得る。各種実施形態に従うと、ノード120A~Nは、1つ以上のアプリケーション、モジュール、プロセス、スレッドなどを介して、たとえばディスパッチャ130A~N、メンバシップ代表140A~N、およびベリファイア150A~Nを介して、台帳システムに参加するように構成することができる。加えて、いくつかの実施形態において、ノード120A~Nは、複数のシャードに分割し得る、シャード化された許可型の分散型台帳を全体として管理するように構成することができる。
【0028】
クライアント180A~M等のクライアントは、ネットワーク110を介して通信することにより、シャード化された許可型の分散型台帳システムとやり取りする、たとえば台帳に追加するトランザクションを提示することができる。各種実施形態に従うと、ネットワーク110は、事実上任意の種類の通信媒体を介し事実上任意の通信プロトコルに従って動作する、事実上任意の種類の有線または無線ネットワークを表し得る。加えて、いくつかの実施形態において、各ノード120は、クライアントからのメッセージをベリファイアに導く役割を担うことができる、ディスパッチャ130A~N等の1つ以上の特別の「ディスパッチャ」プロセスを有し得る。ノードごとに1つだけディスパッチャ130が示されているが、いくつかの実施形態において、各ノードが複数のディスパッチャを含む場合もある。
【0029】
このシステムは、いくつかの実施形態において、台帳システムの実行中に利用される各種判断に関する情報を決定するおよび/または分配するように構成された、メンバシップおよび構成サービス170を含み得る。上記判断は、たとえば、任意の時点においてどのシャード上のどのノードがアクティブであるか、ストレージサービスが格納すべき各シャードのデータのコピーはいくつであるか、シャードに対してアクティブになる前に参加者(たとえばノード)が準備すべき事前通知はどれだけか、などの判断であり、詳細は以下で説明する。1つのエンティティとして示されているが、メンバシップサービス170は、いくつかの実施形態において、メンバシップ用、(たとえばシャードに対する)ノード割り当て用、システム構成用などの、複数のサービスを表し得る。
【0030】
いくつかの実施形態において、このシステムはまた、台帳における(および/または台帳に対応付けられた)すべてのデータ(たとえばトランザクション)のうちの一部を管理するように構成されたストレージサービス190を含み得る。ノード120にシャードのデータに対する責任だけを負わせるのではなく、独立したストレージデバイス190を利用してもよく、詳細は後に説明する。いくつかの実施形態において、シャードはノード120A~N上に格納されてもよいが、他の実施形態において、システムのシャード(と、したがって台帳と)は、ノード120A~Nとは別に、ノード120A~Nと異なるストレージデバイス上に、たとえばストレージデバイス190に、格納することができる。その他の実施形態において、シャードのデータは、ノード120A~Nと、別のストレージデバイス、たとえばストレージデバイス190との両方に、格納してもよい。
【0031】
複数のクライアント、たとえばクライアント180A~Mは、たとえば台帳に追加するトランザクションをサブミットするために、シャード化された許可型の分散型台帳システムとやり取りすることができる。クライアント180が台帳システムに対してトランザクションを提示するとき、このクライアントは、このトランザクションを導く先であるシャード(すなわち台帳を構成するシャードのうちの1つ)を指定することができる。クライアント180は、さまざまなやり方のうちのいずれかで、ターゲットシャード(すなわちトランザクションを導く先であるシャード)を示すことができる。たとえば、一実施形態
において、クライアント180と台帳システム100との通信を媒介する通信プロトコルは、クライアント180がターゲットシャードを示すことを媒介する機構(たとえばメッセージタイプ、フィールドなど)を提供し得る。加えて、トランザクションを、さまざまなやり方のうちのいずれかでシャードに割り当てることができ、これらのやり方は、サーバに対する負荷を平衡させる割り当て、地理的に近くにあるサーバを優先する割り当て、および/または関連するトランザクションを1つのシャードに集約させる割り当てを含むが、これらに限定されない。一般的に、シャードに対してトランザクションを割り当てるために使用される特定のやり方および/または機構は、実施形態によって異なり得る。
【0032】
システム組織および信用モデル
先に述べたように、各シャードは、単一台帳システムと同様に管理し得る台帳として組織することができる。たとえば、一実施形態において、任意のノード120を割り当てることにより任意のシャードを管理することができる。しかしながら、他の実施形態において、ノード120A~Nのサブセットのみが、任意の時点でいずれかの所定のシャードを管理できるようにしてもよい(たとえばスケーラビリティのため等)。本明細書には、シャード化された許可型の分散型台帳を実現するシステム内で、どの時点でどのシャードの管理にどのノードが参加するかを判断するさまざまな技術が記載される。
【0033】
シャード化された許可型の分散型台帳は、台帳を妨害しようとするまたは腐敗させようとする敵から保護することができる。説明し易くするために、各ノードを1つのエンティティの制御下にあるとみなすことができる。また、さらに、敵は個々のノードの粒度で腐敗する可能性があると想定することができる。たとえば、あるノードの1つのプロセスが腐敗すると、そのノードのすべてのプロセスが不正をはたらくことになる。逆に、1つのノード上の複数のプロセスは互いを信用しているが異なる別々のノード上のプロセスは互いを信用していないとみなしてもよい。
【0034】
本明細書では、各ノードがシャードごとに1つのベリファイアプロセスを有するシステムという観点で説明しているが、いくつかの実施形態において、シャード化された許可型の分散台帳システムを、各ノードがシャードごとにスレッドを有し得るように実現してもよい。さらに他の実施形態において、プロセスおよび/またはスレッドは異なる時点で異なるシャードを管理してもよい。よって、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、ノード120A~N等の複数のノードを含み得る。各ノードはシャードごとにベリファイア150A~N等のプロセスを含み得る。加えて、各ベリファイア150は、自身がそれに対してアクティブであるシャードのみの管理に参加してもよい。
【0035】
図2は、一実施形態に係るシャード化された許可型の分散型台帳のシャードの管理に参加するベリファイアを示す論理図である。
図2に示されているのは、いくつかの実施形態において、ノード120A~Nのうちの個々のノードと同一の(または個々のノードを表す)ノード210、220および230である。なお、説明を容易にするために3つのノードのみが示されているが、いくつかの実施形態において、本明細書に記載のシャード化された許可型の分散型台帳システムには多数のノードが含まれ当該システムに参加してもよい。加えて、図示されていないが、ノード210、220および230は、ディスパッチャ、メンバシップ代表などのようなその他のアプリケーション、モジュール、プロセスおよび/またはスレッドを含み得る。
【0036】
いずれかの所定の時点で、ノードは所定のシャードに対してアクティブまたは非アクティブである可能性がある。ベリファイアからシャードまでの点線で示されているように、あるノードが所定のシャードに対してアクティブである場合、そのノードの、そのシャードに対するベリファイアプロセスは、このシャードの台帳に新たなトランザクションをア
ペンドするコンセンサスに参加する。たとえば、ベリファイア215Aからシャード265Aまでの点線で示されるようにノード210のベリファイア215Aがシャード265Aに対してアクティブである場合がある。同様に、ベリファイア215Nからシャード265Sまでの点線で示されるようにベリファイア215Nがシャード265Sに対してアクティブである場合がある。加えて、ノード220のベリファイア225A~Nおよびノード230のベリファイア235A~Nのうちの各種ベリファイアは、ベリファイアからシャードまでの点線で示されるように、シャード265A~Sのうちの対応するシャードに対してアクティブである場合がある。なお、図示のベリファイアとシャードとの論理的配置は、説明を容易にするためのものであって、ノード、ベリファイアおよび/またはシャードの実際の物理的配置を表しているのではないことに、注意されたい。
【0037】
シャードを管理するとき、この所定のシャードに対するアクティブなベリファイアは、さまざまな方策および/またはコンセンサスプロトコルのうちのいずれかに従い得る。たとえば、一実施形態において、ノード210、220および230(および/またはノード120A~N)のベリファイアは、ビザンチン行動に対する耐性を有するように「硬化」させることができるRaftのバージョン(本明細書ではBFT Raftと呼ぶ場合がある)に基づくコンセンサスアルゴリズムに従い得る。よって、いくつかの実施形態において、ベリファイアは、以下のうちの1つ以上のような各種方策を含むコンセンサスプロトコル(またはアルゴリズム)に従い得る。
・すべてのメッセージが送信者によって署名されて認証を可能にすることが必要である。・一連のトランザクションのインクリメンタルハッシュを含み、ノードが全トランザクションシーケンスについて合意することを確認することを可能にし、他にとって明らかにならないよう台帳の履歴を改訂することを事実上不可能にする。
・リーダーだけでなくすべての参加者に確認をブロードキャストする。
【0038】
これらの方策は結果としてO(n2)のメッセージの複雑さをもたらし得るものの、このようなコンセンサスプロトコルは、より多くの数のノードにスケーリングすることができ、より高いトランザクションスループットを達成することができる(たとえば異なるノードがそれぞれ異なるレートで進行することを可能にするからである)。
【0039】
加えて、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、リーダー240等のリーダーベリファイアを含み得る。リーダー240は台帳にアペンドする新たなトランザクションを提案することができる。
【0040】
図3は、シャード化された許可型の分散型台帳にトランザクションを追加する方法の一実施形態を示すフローチャートである。ブロック300に示されるように、リーダー240は、提案されたトランザクションをこの台帳のシャードに追加すると判断することができる。各種実施形態に従うと、リーダー240は、各種方法のうちのいずれか、たとえば、クライアントがサブミットしたトランザクションを受けることにより、提案するトランザクションを決定することができる。ブロック310のように、リーダー240は、台帳にアペンドする新たなトランザクションの提案を、提案されたトランザクションおよびサポート情報(たとえばリーダーの権限および/または真正性)を他のアクティブベリファイアに送信することにより、行うことができる。たとえば、いくつかの実施形態において、リーダーは、リーダーとしての妥当性を示す投票を表示する(または表す)情報、新たなトランザクションをアペンドする場所の前にある台帳インデックスなどを含むサポート情報を利用することができる。ブロック320のように、提案されるトランザクションを受けたベリファイアは、当該トランザクションおよびサポート情報が有効であることを確かめることができる。判断ブロック330の肯定出力が示すように、サポート情報(および/または提案されるトランザクションの他の側面)が有効である場合、ブロック340に示されるように、ベリファイアはこの事実の確認を発行することができる。(たとえば
トランザクションに対するターゲットシャードに対してアクティブである、および/または提案されたトランザクションを受ける)各ベリファイアは、リーダー240からの、提案されたトランザクションおよび/またはサポート情報を独立して検証し、確認を発行することができる。いくつかの実施形態において、リーダー240はまた、(たとえば他のベリファイアと一致する)確認を公開してもよいが、その他の実施形態において提案されるトランザクションの送信は、リーダー240による確認を表し得る。
【0041】
いくつかの実施形態において、判断ブロック350の肯定出力およびブロック360に示されるように、ノードは、特定数のアクティブなベリファイアから確認を受けると、提案されたトランザクションはコミットされたとみなすことができる。したがって、ノードは、定数のアクティブなベリファイアから、台帳内の所定のインデックスにおけるトランザクションについての確認を受けると、そのインデックスまでのトランザクションはコミットされたとみなしてもよい。加えて、いくつかの実施形態において、より低いインデックスにおけるすべてのトランザクションもコミットされたとみなすことができる。
【0042】
いくつかの実施形態に従うと、定数は、シャード上のアクティブノードの過半数とみなすことができる。
図2は1シャード当たり2つのアクティブベリファイアのみを示しているが(すなわち図示および説明を容易にするために)、その他の実施形態において、1シャード当たり奇数のベリファイアを用いて、明確な大多数に達するようにしてもよい。したがって、定数のアクティブノードが、提案されたトランザクションを、台帳内の次のトランザクションとして確認すると、(少なくとも1つのアクティブベリファイアが、詐欺である決定的なプルーフを提供する、矛盾する確認に署名しない限り)別の定数がそのインデックスにおける異なるトランザクションを確認することは不可能となり得る。
【0043】
いくつかの実施形態において、現在のリーダーが不正をはたらいた場合または反応しなくなった場合、定数のアクティブベリファイアは、リーダーを辞任させて新たなリーダーを選ぶことができる。定数のベリファイアによって辞任させられると、元のリーダーの任期が終了したとみなされ、別の、新たなリーダーの任期が始まる。
【0044】
シャードに対するトランザクションの追加に関連するメッセージの複雑さは、システム内のノードの総数に応じて決まるのではなく、そのシャードに対するアクティブノードの数に応じて決まると考えることができる。いくつかの実施形態に従うと、これは、複数のシャードが並列に動作することを可能にし、さらに、各シャードが、すべてのノードによって管理される1つのシャードのスループットよりも高いスループットを実現できるようにする。
【0045】
ディスパッチャ
先に述べたように、各ノードは、クライアントからアクティブベリファイアにメッセージを導く役割を担うことができる、ディスパッチャ130A~N等の1つ以上のディスパッチャプロセスを有し得る。
図4は、受信メッセージをディスパッチする方法の一実施形態を示すフローチャートである。ブロック400のように、ディスパッチャ130は、ターゲットシャードを示すクライアントからのメッセージを受信することができる。いくつかの実施形態において、ディスパッチャ130A~Nは、クライアント180A~Mからトランザクション要求を受けることができる。クライアントからの要求は、ターゲットシャードと、コマンドおよび/またはトランザクション(たとえばターゲットシャードに追加/適用する、提案されたトランザクション)とを、指定することができる。ディスパッチャは、ターゲットシャードに対してアクティブであるベリファイア150等のプロセスに対し、受信した要求を転送する役割を担うことができる。判断ブロック410の肯定出力が示すように、ディスパッチャと同じノード(たとえばディスパッチャが実行しているノード)上のベリファイアがターゲットシャードに対してアクティブである(たとえばタ
ーゲットシャードを管理する役割を担う)場合、ブロック340のように、ディスパッチャはこの要求をディスパッチャ自身のノード上のプロセス(たとえばベリファイア)に転送することができる。
【0046】
判断ブロック410の否定出力が示すように、ディスパッチャと同じノード上に、ターゲットシャードに対してアクティブであるベリファイアがない場合、ブロック430のように、ディスパッチャは、ターゲットシャードに対してアクティブである別のノード(すなわちディスパッチャ自身のノードから離れている)上のプロセス(たとえばベリファイア)に要求を送ることができる。いくつかの実施形態において、アクティブなベリファイアへのすべての要求の転送においてディスパッチャが完璧に正確である必要はない場合がある。それでもなお、できるかぎり頻繁にそうすることによって不必要な転送は避けることができる。
【0047】
いくつかの実施形態において、ディスパッチャは、ターゲットシャードに対してアクティブであるプロセスの識別をサポートするために状態情報を管理することができる。いくつかの実施形態において、ディスパッチャが管理するこの状態情報は、少なくとも、所定のシャードを管理するベリファイア等のプロセスのセット、そのシャードに対して現在アクティブであるプロセスのサブセット、および/またはそのシャードを管理するディスパッチャ自身のノード上のプロセスのアイデンティティを、含み得る。各種実施形態に従うと、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、各種やり方のうちのいずれかで、プロセス、ベリファイアおよび/またはシャードを識別することができる。たとえば、一実施形態において、固有の識別子を各プロセス、ベリファイア、シャードなどに対応付けてもよく、これらの識別子(名称、数値ID、英数字IDなど)を状態情報内で利用してもよい。その他の実施形態において、ポインタ(たとえばプログラマティックメモリポインタ)を用いて、プロセス、ベリファイア、シャードなどを識別する、その位置を求める、および/またはそれと通信することができる。
【0048】
ディスパッチャは、ターゲットシャードに対してアクティブであるローカルプロセスがある場合は、状態情報を用いて要求をローカルに転送することができる。ターゲットシャードに対してアクティブであるローカルプロセスがない場合、ディスパッチャは、状態情報を用いて、ターゲットシャードに対してアクティブである遠隔プロセスを識別することができる。いくつかの実施形態において状態情報はディスパッチャ自身のノード上でローカルに管理することができ、他の実施形態においてディスパッチャは遠隔の場所に格納されている(がアクセス可能である)状態情報に依拠することができる。各種実施形態に従うと、アクティブなベリファイアおよびシャードに関する状態情報は、メンバシップサービスからのディレクティブに応じて更新することができる。
【0049】
シャード割当
いくつかの実施形態において、各シャードに対するアクティブプロセスは、初期化時間において判断することができ、システムの寿命にわたってスタティックなままであってもよい。しかしながら、いくつかの実施形態において、スタティックプロセス割当の使用には、以下のようないくつかの短所がある場合がある。
・シャードの追加を認めない。
・ノードの追加を認めない。
・シャードに対するアクティブな参加者の交替を認めない(たとえば役目を果たさなくなるまたは不正をはたらいていることが観察される場合)。
・常に所定のシャードに対して同一ノードセットがアクティブなままであり、所定のシャードを管理する不正ノード間の連携が発生する可能性を許す。
【0050】
他の実施形態において、ノード(および/またはベリファイア)をシャードに対して動
的に割り当てることができる。
【0051】
各種実施形態において、いつプロセスがそのシャードに対してアクティブになるかを判断するためにさまざまな仕組みを用いることができる。たとえば、いくつかの実施形態において、ベリファイア等のプロセスは、シャードに対するアクティベーションの固定されたスケジュールに従うことができる。たとえば、所定のシャードに対してアクティブであるベリファイアは、そのシャードの台帳が特定の長さに達した場合/とき、そのシャードに対して非アクティブになる場合がある。しかしながら、いくつかの実施形態において、非アクティブなプロセス/ベリファイアは、条件(台帳が特定の長さに達する等)がそれを要求しないときは直ちにアクティブになることができない場合がある。なぜなら、これらの条件に気が付かない場合があるからである。代わりに、いくつかの実施形態において、プロセス/ベリファイアが「起こされ」、所定のシャードに対して現時点でアクティブであることを知らされてもよい。いくつかの実施形態において、起こすプロセスは、そのシャードに対してまもなく非アクティブになるプロセス等の別のアクティブプロセスが実行してもよい。他の実施形態において、ディスパッチャに、その状態情報を更新させプロセスを目覚めさせるおよび/または現時点でアクティブであることをプロセスに通知することができる関連イベント(しきい値長さに達するシャード等)を通知してもよい。また、新たにアクティブになったプロセスは、シャードがしきい値長さ(たとえばプロセスがアクティブになることをトリガするしきい値)に達したことを知っているシャードに対してアクティブである別のプロセスからメッセージを受信することによって起こされてもよい。さらに他の実施形態において、メンバシップサービス170の参加者により、プロセスが、シャードに対してアクティブになったことを知らされてもよい。
【0052】
固定されたスケジュールで(たとえば台帳が特定数のトランザクションに達したときに)プロセス/ベリファイアをアクティブにする代わりに、いくつかの実施形態では、プロセス/ベリファイアが、以下の情報、すなわち
・シャードに対する負荷に関する情報、
・そのシャードに対してアクティブであるプロセスの可用性および反応性に関する情報、・そのシャードに対してアクティブであるプロセスの(疑われる)不正に関する情報、および
・サービスレベル要件、制約などのようなポリシー入力に関する情報、
のうちのいずれかまたはすべてを含む各種情報の組み合わせの影響を受ける可能性がある定期的な再割り当てに基づいてアクティブ/非アクティブになってもよい。
【0053】
いくつかの実施形態において、参加者(たとえばノード、プロセス、ベリファイアなど)がシャード割当を制御できないことは重要であろう。そうでなければ、ノードのグループが共謀して、シャード(このシャード内の他のすべてのアクティブ参加者に得票数で勝つことができる)への十分なアクティブ参加を実現することにより、(たとえば私利的におよび/または不法目的のために)そのシャードを制御する能力を有効に獲得することができるかもしれない。これが理由で、いくつかの実施形態において、シャード割当判断は、場合によっては追加情報とともに、参加者が制御できないランダム(たとえば疑似ランダム)シーケンスの決定的関数として実現されるポリシーにより、推進されてもよい。
【0054】
シャード割当判断に対してランダム情報を使用することにより、敵(たとえば不正をはたらくノード)が、1つ以上のシャードの支配権を獲得することを可能にし得る選択を一貫して行うことを防止することができ、責任追跡性を提供することもできる。たとえば、決定論的ポリシーおよびランダムネスソースによって指図された選択から逸脱しようとする試みを検出することができ(すなわち直ちにまたは事後に)、不正ノードの責任追跡性を保つことができる。
【0055】
一般的に、ランダムネスソース、たとえば暗号ランダムネスソースは、決定論的シャード割当ポリシーに対し、各種のやり方のうちのいずれかで、利用することができる。各種実施形態に従うと、いくつかの例は以下を含む。
・周期的にシャードをランダムに選択し、そのシャードに対してアクティブな1つのプロセスを選択し、これを非アクティブにした後で、同じノードのプロセスがそれに対して非アクティブであるシャードをランダムに選択し、これをアクティブにするポリシー、
・繰り返し2つのシャードをランダムに選択し、その後、異なるシャードに対してアクティブであるノードのペアを選択し、これらの役割を入れ替えるポリシー、および/または・所望のどのようなポリシーにも適合する新たなシステムワイドの割当を周期的に生成するポリシー(たとえば各シャードが十分なアクティブプロセスを有することおよびノード全体に負荷が均等に平衡であることを保証する)。
【0056】
上記ポリシーの第1の例は、それに対して所定のノードがアクティブであるシャードの数を一定に保つ一方で、アクティブなシャード割当において何らかの転換(または「解約(churn)」)を生じさせることができる。しかしながら、いくつかの実施形態において
、これは、進歩し各シャードに対する特定数のビザンチンノードに耐えるのに十分なアクティブノードを各シャードが常に有することを保証しないかもしれない。上記ポリシーの第2の例は、各ノードに対する負荷および1シャード当たりのアクティブプロセスの数を保存することができる。
【0057】
一般的に、各種実施形態に従うと、特定の目的に最も有効であるポリシーの選択に影響を与え得るトレードオフ、課題および/または制約が存在し得る。たとえば、再割り当てが十分に頻繁でなければ、所定のシャードに参加するノードは連携を形成する機会を有することができ、そのシャードの支配権を得ようとすることができる。一方、いくつかの実施形態において、シャードに対する再割当プロセスは、さまざまなオーバヘッドを伴い得る。たとえば、いくつかの実施形態において、プロセスは、あるシャードに対して非アクティブである場合、最近のトランザクションに関する最新情報を持つことはなく、新たなトランザクションのアペンドに参加できるようになる前に通信してこの情報を得る必要があるかもしれない。したがって、プロセスを過剰に頻繁に再割り当てすることは望ましくない場合がある。
【0058】
シャード再割当の数および頻度等のパラメータは実施形態によって異なり得る。たとえば、一実施形態において、このようなパラメータは初期化時間パラメータによって決定することができ、他の実施形態において、このようなパラメータは、シャードに対する観察された負荷(たとえばトランザクションの数)および/または責任追跡性情報、たとえば、シャードに対するしきい値数のアクティブ参加者が、別のアクティブ参加者が反応がないまたは不正をはたらいたことをいつ報告するか等の、各種入力に基づいて、変化し得る。
【0059】
まもなくアクティブになるプロセスの準備
より多くのトランザクションをシャードに追加するためのコンセンサスに参加するために、ノード上のアクティブプロセスは、そのシャードに対する以前のトランザクションの最新情報を持っていなければならないであろう。これは、このノードが、以前のすべてのトランザクションの文脈においてトランザクションの妥当性を確認できるようにするために、必要であろう。加えて、いくつかの実施形態において、アクティブプロセスは、新たなトランザクションを構成するときに(たとえば台帳の耐タンパー性を保証するのに役立つようにするために)最新トランザクションの暗号ハッシュを使用できるよう、最新でなければならないであろう。プロセスが過去に非アクティブであった場合、このプロセスは、シャード(それに対してプロセスが現在アクティブである)に対するいくつかまたはすべてのトランザクションを欠いている場合がある。
【0060】
各種実施形態において、参加者(たとえばベリファイア)は、いくつかの方策のうちのいずれかに従い、最新になることができる。たとえば、いくつかの実施形態において、コンセンサスアルゴリズム(たとえばBFT Raftコンセンサスアルゴリズム等)は、後方の参加者が遥か前方の他の参加者に「追い着く」ためのプロビジョンを有し得る。しかしながら、とりわけ、ノードがあるシャードに対して長時間非アクティブであった場合、(追い着こうとしながら)参加者が必要なすべてのトランザクションを取得している間に、相当な遅延が生じる可能性がある。
【0061】
これに代えて、他の実施形態において、ベリファイ可能なシャード「スナップショット」がさまざまなポイントにおけるシャードの状態を要約することにより、新たにアクティブになったベリファイアがそのシャードに対するすべてのトランザクションをリプレイしなくてもスナップショットを採用することを場合によっては可能にする。なぜなら、これはシャード上で最後のアクティブなものであるからである(または、ベリファイアが過去にこのシャードについてアクティブになったことがない場合はシャードに対するすべてのトランザクション)。一実施形態において、参加者は、スナップショットの妥当性確認および署名を行い、十分な数の参加者がスナップショットの妥当性確認および署名を行った場合は、これらのうちの少なくとも1つが正当であることを保証できる。
【0062】
図5は、ベリファイアがアクティブになったときにシャードスナップショットを利用する方法の一実施形態を示すフローチャートである。ブロック500のように、ベリファイアが所定のシャードに対してアクティブになったときに、ブロック510の否定出力が示すようにベリファイアがシャードに対して最新でない場合(通常はそうであろう)、ベリファイアはこの所定のシャードに対してスナップショットを利用できるか否かを判断することができる。たとえば、スナップショットが所定のシャードに対して生成される前にベリファイアはアクティブになっているので、利用できるスナップショットはない場合がある。ブロック520の否定出力が示すようにシャードに対してスナップショットを利用できない場合、ブロック560のようにベリファイアはシャード台帳に対して前のトランザクションをリプレイすることができる。各種実施形態に従うと、シャード台帳に対してトランザクションをリプレイするとき、ベリファイアは、各種のやり方のうちのいずれかで、たとえば、必要とする、最近アクティブになったベリファイアまたはストレージサービス190からの追加のトランザクションデータを要求することによって、トランザクションを取得することができる。他の実施形態において、トランザクションまたはスナップショットデータは、その他のベリファイアおよび/または参加者(ストレージサービスの参加者等)が、ベリファイアがアクティブになった(またはアクティブになるであろう)ことを観察したことに応じて、事前に送信してもよい。
【0063】
代わりに、判断ブロック520の肯定出力が示すように利用できるスナップショットがある場合、ブロック530のように、ベリファイアはシャードに対するこのスナップショットを取得し認証することができる。各種実施形態に従うと、ベリファイアは、各種のやり方のうちのいずれかで、スナップショットを取得する、またはスナップショットにアクセスすることができる。一実施形態において、スナップショット(またはスナップショットのコピー)は、ベリファイア自身のノードに格納することができる。他の実施形態において、ベリファイアは、遠隔ノードからの、またはストレージデバイス190からのスナップショットを要求および/またはスナップショットにアクセスするように構成し得る。
【0064】
加えて、いくつかの実施形態に従うと、ベリファイアは、たとえば少なくとも特定数の他の参加者がスナップショットの妥当性を確認しスナップショットに署名したことをチェックすることにより、スナップショットを認証することができる。いくつかの実施形態において、「エビデンス」をトランザクションまたはスナップショットデータとともに格納
することにより、受け手がその正確さをベリファイすることを可能にしてもよい。このようなエビデンスは、トランザクションまたはスナップショットが有効であることを受信ベリファイアがチェックできるようにする、トランザクションもしくはスナップショット、暗号ハッシュおよび/またはマークルプルーフ(Merkle proof)に対して投票したベリファイアの署名を含み得る。そうすると、ブロック540のように、ベリファイアは、スナップショットからトランザクションを適用することができる。
【0065】
判断ブロック550の肯定出力が示すように、スナップショットに含まれないシャードに対するその他の(追加の)トランザクションがある場合、ブロック560のように、ベリファイアはシャードからのこれらのトランザクションをリプレイすることができる。たとえば、追加のトランザクションは、ベリファイアがスナップショットを取得し使用している間にシャードにコミットされているであろう。
【0066】
先に述べたように、スナップショットという方策は、追い着くのに必要な時間を短縮するかもしれないが、それを完全になくすことはできない。なぜなら、スナップショットの取得および妥当性確認には時間がかかる可能性があり、新たなトランザクションの追加への参加を開始するのに十分ベリファイアが追いつく前に、スナップショット後に適用するトランザクションが存在し得るからである。したがって、いくつかの実施形態において、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、近い将来シャードに対してアクティブになるであろうという事前の警告をプロセス/ベリファイアに与えるように、構成することができる。よって、いくつかの実施形態において、あるプロセスは、所定のシャードに対してアクティブになることを要求される前に、追い着き始めることができるであろう。たとえば、ベリファイアは、最近アクティブになったベリファイアから、またはストレージデバイス190から、必要な追加トランザクションデータを要求することができる
いくつかの実施形態において、将来の参加者が遠過ぎることが予めわかっている場合、悪意のある連携が形成される機会が発生する可能性がある。一方、与えられる通知が不十分である場合、参加を開始するのに必要なデータを新たにアクティブになったノード/ベリファイアが取得する間に(たとえば追い着く間に)遅延が発生している可能性がある。一般的に、与えられる通知の量は実施形態によって異なり得る。各種実施形態に従うと、たとえば、与えられる通知の量は、初期化時間パラメータに基づく、および/または観察(たとえば、アクティブな参加の開始前にノードが追い着くために要する長さ等)に基づいて動的に適合化/調整される可能性がある。
【0067】
ストレージ
従来のモノリシックなブロックチェーンシステムにおいて、すべての参加者は、すべてのトランザクションおよび関連するメタデータ(たとえばブロック、ブロックヘッダ、スナップショットなど)を受信し、その妥当性を確認し、格納することができる。いくつかの実施形態において、シャード化された許可型の分散型台帳システムでは、アクティブでないベリファイアはトランザクションの最新記録を保持していない可能性があり、そうすると、先に述べたように、これらのベリファイアが再びアクティブになったときには、追い着く間に遅延がある可能性がある。他の実施形態において、非アクティブノードおよび/またはベリファイアは、コンセンサスの完了後に(たとえば、トランザクションがシャードにコミットされたときに)アクティブノードにトランザクションをブロードキャストさせることにより、最新状態を保つことができる。このような実施形態において、アクティブノードは、コンセンサスプロセスの一部として他のアクティブ参加者から受けた署名された(たとえば認証された)メッセージを格納することができる。
【0068】
加えて、いくつかの実施形態に従うと、アクティブでないベリファイアにブロードキャストされるトランザクションは、その時点でアクティブであった参加者間でコンセンサス
が得られたというプルーフを伴い得る。よって、いくつかの実施形態において、すべてのノードはすべてのシャードの(少なくとも比較的)最新の情報を保持している可能性があり、一方で、コンセンサスに関連する通信を、全参加者よりも少ない参加者を含み得るアクティブな参加者のグループに限定する。しかしながら、アクティブでないベリファイアに対して事前にブロードキャストすると、結果としてストレージおよび処理オーバヘッドが追加され、たとえばすべてのノードがすべてのシャードに対するすべてのトランザクションを格納しそれに対して少なくとも何等かの処理を実行していることになるであろう。
【0069】
アクティブでないベリファイアへのブロードキャストによって生じる追加のオーバヘッドの量を減じるために、それに対して所定のノードがアクティブになる可能性があるシャードのセットは制限されてもよい。たとえば、あるノードは、特定のシャードセットの外部のシャードには決して参加せずしたがってそれらのトランザクション(たとえば特定のセットに含まれないシャードに対するトランザクション)を格納および処理する必要は決してないであろう。いくつかの実施形態において、ノードを特定のシャードに限定することは、多数のノードおよび多数のシャードを有する大型ネットワークにおいては望ましいであろう。そうすると、所定のシャードに参加するために利用できる十分なノードがあり、共謀の試みを打ち砕く通常の再割り当てを可能にする。
【0070】
加えて、いくつかの実施形態において、個々のノードに、専らシャードデータの格納および(たとえばノードがシャードに追い着くことを容易にするスナップショットに対する)要求への応答という役割を担わせるのではなく、ストレージデバイス190等の別個のストレージサービスを用いてもよい。シャードを管理するノードと同様に、ストレージサービスへの参加者が、許可されてもよく、利用できることおよび/または格納することを要請されていたデータを提供できることについて、責任追跡性を保つことができる。
【0071】
いくつかの実施形態において、非アクティブになったシャードベリファイアは、先ず、シャードに関するデータ(たとえばトランザクション、コンセンサス、および/またはその他のデータ)がストレージサービス109において十分利用できるようにされることを保証することが求められる可能性がある。たとえば、ベリファイアは、ストレージサービス190の1つ以上のストレージノードにこのデータを送信するように構成することができる。加えて、いくつかの実施形態において、ベリファイアはまた、このデータが格納されたという署名付きの確認を受信する(および/または認証する)ように構成することができる。いくつかの実施形態において、(たとえば別個のストレージサービス190を用いて)ストレージを処理から切り離すことは、データを十分な回数レプリケートすることにより利用できるようになる見込みを高める一方で、過剰な要求(たとえばすべての参加者にすべてのデータを格納させる等)を場合によっては避けることを可能にする。
【0072】
各種実施形態に従うと、シャード化された許可型の分散型台帳システムのその他の構成可能な側面と同様に、ストレージサービスが格納すべきデータのコピーの数等のパラメータは、初期化時間パラメータによって決定されてもよく、または、参加者からおよび/または認可されたアドミニストレータからの入力によって通知された決定論的ポリシーによって駆動される、動的なパラメータであってもよい。これらおよびその他の入力を収集し使用する1つのやり方は、以下で説明する特別の「コーディネーションシャード」を介するやり方であってもよい。
【0073】
メンバシップおよび構成サービス
先に述べたように、各種実施形態に従うと、シャード化された許可型の分散型台帳システムは、さまざまな構成および/または動作に関する判断を行うように構成することができる。この判断は、たとえば、所定の時点でどのシャードに対しどのノードがアクティブであるかに関する、(たとえばストレージサービスが)格納すべき各シャードのデータの
コピーの数に関する、および/または参加者がシャードに対してアクティブになることを要求される前に受信すべき事前通知の量等に関する判断である。各種シナリオおよび実施形態においてその他多くの可能な種類の判断が関連し得る。いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、このような判断を行うように構成されたメンバシップサービス170を含み得る。いくつかの実施形態において、メンバシップサービス170は、メンバシップサービス、アクティブノードをシャードに割り当てるためのサービス、および/または構成サービス等の、複数のサービスに分解することができる。よって、異なる実施形態に従うと、メンバシップサービス170は、本明細書では1つのサービスとして記載されているが、複数の異なる(が場合によっては相互に関連がある)サービスを含み得るおよび/または表し得る。
【0074】
ノードは、さまざまなやり方でメンバシップサービス170とインターフェイスすることができる。たとえば、一実施形態において、各ノードは、メンバシップサービス170に参加するように構成されディスパッチャおよび/またはベリファイア等の、そのノードにおける他のプロセスと通信し得る、特別の「メンバシップ代表」プロセス140を含み得る。いくつかの実施形態において、メンバシップサービス170は、(たとえばノードから分離された)別個のモジュールを表していなくてもよく、代わりに、メンバシップサービス170は、複数のノードの複数のメンバシップ代表140が集合的に提供するサービスを表していてもよい。
【0075】
各種実施形態に従うと、一般的に、各種機構のうちのいずれかを利用して、メンバシップサービスを実現する、メンバシップサービスと通信する、および/またはメンバシップサービスに参加することができる。たとえば、本明細書では独立したモジュール/として示され説明されているが、一実施形態ではノードを代表するディスパッチャおよびメンバシップの役割を組み合わせて1つのプロセスにしてもよい。
【0076】
各種実施形態に従うと、メンバシップサービス170は、メンバシップ、どのノードがどのシャードに対してアクティブかについての割り当て、および/またはその他のシステム構成変更に関する、さまざまな判断を行うように構成することができる。メンバシップ代表は、これらの判断に基づいて、指令をディスパッチャおよび/またはベリファイア等のその他の参加者に伝えることができる。たとえば、いくつかの実施形態において、メンバシップ代表140は、指令を、関連する指令をベリファイアに転送するように構成することができるディスパッチャに伝えるように、構成することができる。
【0077】
いくつかの実施形態において、メンバシップサービスの重要な要件は、正当なすべての参加者が同じ判断シーケンス(したがってその結果生じる指令)を観察することであろう。たとえば、一実施形態において、決定論的スケジュール(たとえば初期化時間に固定)に従ってもよい。しかしながら、このような固定された決定論的スケジュールは、不正をはたらくまたは反応しなくなったノード等の、特定のイベントに対しては反応できないかもしれない。別の実施形態において、反応しないこと、不正行為、構成変更などの報告のような入力およびイベントに基づいて判断を行う決定論的ポリシーを用いることができる。
【0078】
いくつかの実施形態において、メンバシップサービス170はコーディネーションシャードを含み得る。これは、システム内の他のシャードのための技術と同様の技術を用いて実現し得る。
図6は、一実施形態に係るメンバシップサービスをコーディネーションシャードとともにを示す論理図である。たとえば、メンバシップサービス170はコーディネーションシャード610を含み得る。コーディネーションシャード610は、メンバシップ/シャード情報630等の関連する入力およびイベントを記録する(たとえばそうすることによってすべて正当な参加者が入力およびイベントの同じビューを持つようにする)
ことにより、コーディネーションシャード610の参加者が、たとえば場合によってはこれらの入力およびイベントを入力として採用する決定論的ポリシーに基づいて、メンバシップディレクティブ620を伝えられるように、構成し得る。
【0079】
一例として、各シャードに対する1のアクティブな参加者を、そのシャードに対するTのトランザクションの完了ごとに、入れ替えることにより、どのシャードに対してどのノードがアクティブであるかを判断するための単純な仕組みについて考える。そのために、コーディネーションシャード610に、いつシャード265等のシャードsがTのトランザクションを完了したかを知らせることができる。これは、シャードsに対してアクティブであるベリファイア150等の参加者によってコーディネーションシャード610にサブミットされるトランザクション640を介して行われてもよい。これに代えて、ベリファイア150が、そのローカルな(したがって信頼される)ディスパッチャ130にシャード265の進行を知らせてもよく、ディスパッチャ130は、関連イベントをメンバシップサービス170に伝えてもよい(そうするとメンバシップサービス170はイベントをコーディネーションシャードにサブミットすることができる)。加えて、いくつかの実施形態において、ディスパッチャ130はトランザクション640を通信シャード610にサブミットしてもよく、他の実施形態において、ディスパッチャ130はローカルメンバシップ代表と通信してもよく、そうするとローカルメンバシップ代表はメンバシップ/シャード情報630をメンバシップサービス170および/またはコーディネーションシャード610に伝えてもよい。いくつかの実施形態において、トランザクション640は、シャード265がT以上のトランザクションをコミットしたという表示を含んでいてもよく、また、トランザクションがコミットされたエビデンスとしてノードの1つ以上の投票が現在アクティブであるという表示を含んでいてもよい。
【0080】
いくつかの実施形態において、追加情報がたとえばトランザクションを介してコーディネーションシャード610にサブミットされてもよい。このような追加情報は、限定されないが、以下を含む。
・他のノードの挙動に関する観察。これは、反応性がないこと、明らかにプロトコルに違反するように実施していること、および/または、直接的に不正行為を実証する訳ではないが注目すべきやり方で実施していることを含む。
・シャードの負荷(たとえば直近のTのトランザクションにかかる時間)に関する観察。・状態情報のサマリー(たとえば、場合によっては、簡潔で偽造不可能なサマリー)。これはたとえば、シャードの特定のインデックスまでのトランザクションの正味効果、またはメンバシップサービスもしくはその他のサービスから受けた指令のストリームの場合と同様のものである。これらは以下でより詳細に説明する「エンタングルメント」の例とみなし得る。
・パラメータを調整するための、特別に認証されたパーティからの指令。たとえば、コンソーシアムの統治委員会の5メンバーのうちの3メンバーが署名したトランザクションであり、これは、そのシャードに対するトランザクションがストレージサービスによって少なくとも3回レプリケートされねばならないことを示す。
・システムの参加者を追加または解任するための、特別に認証されたパーティからの指令。
・不正をはたらいたと思われる参加者に対してペナルティを課すための、特別に認証されたパーティからの指令(おそらく一部はコーディネーションシャードに以前含まれていた観察に基づく)。
【0081】
いくつかの実施形態において、どのような間隔でどのシャードに対してどの参加者がアクティブであるか等の情報を含む、所定の時点におけるシステムの現在の構成(たとえばある参加者は、シャードに対して、そのシャードに対するトランザクションNからトランザクションN+Tまで、アクティブであり得る)は、コーディネーションシャードの台帳
における情報の、決定論的関数であってもよく、またはこの情報に基づいていてもよい。よって、特定数の正当なノードがコーディネーションシャードの台帳の状態に同意する場合/とき、これらはシステムの構成について得られた共通のビューを有するとみなすことができる。
【0082】
コーディネーションシャード610に参加し得るプロセスおよび/またはプロセスの数は、実施形態によって異なり得る。一実施形態において、たとえば構成変更が十分にまれである場合に、すべてのベリファイアおよびディスパッチャが参加してもよい。その他の実施形態において各ノードのディスパッチャが参加してもよく、その他の実施形態においてディスパッチャのアクティブなサブセットのみが参加してもよい。いくつかの実施形態に従うと、アクティブな割り当て、またはコーディネーションシャードに対してどのプロセスがアクティブであり得るかは、通常のシャードに対して実現されるやり方と同様に、判断されてもよい。一般的に、コーディネーションシャードへの参加のためにプロセスを割り当てる(プロセスがアクティブになる)やり方は、実施形態によって異なり得るものであり、変更の頻度、必要な反応性の程度、脅威のレベルなどといったさまざまな要素に応じて決まり得る。
【0083】
いくつかの実施形態において、コーディネーションシャード610に対してコミットされたトランザクションは、すべてのメンバシップ代表(および/またはディスパッチャ)にブロードキャストされねばならないであろう。たとえば、利用できるすべての正当なノードが、たとえばコーディネーションシャードに維持されているかもしれない、最新のメンバシップおよび構成情報を有していることを保証することが必要であろう。加えて、いくつかの実施形態において、システム全体のさまざまな側面の制御におけるコーディネーションシャードの潜在的な重要性を考慮すると、通常のシャード(たとえばシャード265)のアクティブな参加者よりも多数のコーディネーションシャード610のアクティブな参加者を有することが望ましいであろう。他の構成パラメータと同様、コーディネーションシャードのアクティブな参加者の数および/またはコーディネーションシャードにサブミットされるトランザクションの頻度を含むトレードオフは、実施形態によって異なり得る。たとえば、コーディネーションシャードに関連する構成パラメータは、初期化時に固定されてもよく、動的に適合させ/調整してもよい(たとえばコーディネーションシャードに記録される入力およびイベントに対して作用する決定論的ポリシーを介して)。
【0084】
加えて、いくつかの実施形態において、コーディネーションシャードの役割は複数の特別シャードによって実現されてもよい。たとえば、ある特別シャードはどのエンティティがシステムへの参加を認可されるかを判断してもよく、別の特別シャードはどのノードがどのシャードに対してアクティブかを判断してもよく、別の特別シャードはアクティブメンバシップの変更が発生する前にシャードにコミットされるべきトランザクションの数等の構成パラメータを管理する。各種実施形態に従うと、一般的にコーディネーションシャードはさまざまなやり方のうちのいずれかで実現し得る。
【0085】
エンタングルメント
本明細書に記載のエンタングルメントは、シャード化された許可型の分散型台帳システムをより腐敗しにくくする技術とみなすことができる。たとえば、エンタングルメントは、ある場所からの情報の簡潔で偽造不可能なサマリーを、別の場所に含めることを含み得る。たとえば、台帳に記録されるときにトランザクション(またはトランザクションのブロック)に含まれる暗号ハッシュは、エンタングルメントの1つの基本形態とみなすことができる。暗号ハッシュは、台帳上の1ブロックまたはトランザクションの内容の変更を、続くすべてのブロックまたはトランザクションも変更することなく、行うことを、不可能にする(たとえば、各トランザクションは前のトランザクションの暗号ハッシュに基づいている可能性があるためである)。
【0086】
各種実施形態に従うと、エンタングルメントはこの基本形態を超える他のさまざまなやり方で使用することができる。たとえば、一実施形態において、あるシャードにサブミットされたトランザクションは、別のシャードの現在または最近の状態(たとえば状態情報)の暗号ハッシュを含むことにより、たとえある連携が第2のシャードの履歴を改訂できるようにするのに十分に第2のシャードを支配しようとしても、これは第1のシャードに含まれるハッシュによって第2のシャードはもはや正確に要約されないことを立証することなどにより、検出可能である(および/または照明可能である)ことを、場合によっては保証することができる。その軌跡をカバーするために、あるシャードを改訂しようと試みる連携は、改定すべきデータのサマリーを記録した1つ以上の他のシャードを支配し改訂することも必要であろう。複数の他のシャードに対する通常のエンタングルメントを保証することにより、たとえシャードの支配に成功する連携であっても、シャードの内容を検出されずに改訂することは極めて困難である。
【0087】
よって、いくつかの実施形態において、ベリファイアが、シャードの現在の状態の暗号ハッシュを計算、判断、または取得するように構成されてもよく、さらにトランザクションを別のシャードにサブミットするときにその暗号ハッシュを含むように構成されてもよい。
【0088】
別の例において、一実施形態では、コーディネーションシャード(たとえばメンバシップサービスを実現するために使用されるシャード)にサブミットされるトランザクションは、追加情報を、たとえば暗号ハッシュまたは別のシャードの状態の表現のマークルルート(Merkle root)を、含み得る。このようなエンタングルメントは、複数の通常シャー
ド間のエンタングルメントと同様の利点、および/または追加の利点(たとえば、コーディネーションシャードが、システム内におけるその重要な役割のために、より大きな定数サイズ、精査などを有する場合)を有するとみなし得る。
【0089】
さらに別の例において、メンバシップサービス170がその他の参加者(ディスパッチャ130および/またはベリファイア150など)に送る指令のストリームは、場合によっては通常のシャードに対する各トランザクションとともに含まれるハッシュと同様であるかもしれない、累積ハッシュ(たとえば指令のストリームにおけるすべての情報のハッシュ)を含み得る。したがって、これらのハッシュは、場合によってはこの指令のストリームが腐敗させられることなく受信されたエビデンスとして、メンバシップサービス170に報告され(たとえばコーディネーションシャード610に)記録されてもよい。いくつかの実施形態において、報告されたハッシュにおけるいずれのミスマッチも、直ちに問題を提起し得るものであり、不正をはたらいている可能性がある参加者を特定することができる。いくつかの実施形態に従うと、逆に、参加者のうちの一部、大部分、またはすべてから受けた、マッチするハッシュは、メンバシップサービス170が発行した指令について、不一致または曖昧さがないという信頼を高めると考えられる。
【0090】
いくつかの実施形態において、エンタングルメントは定期的に必要となり得るものであり、実現されるエンタングルメントの正確な性質は、コーディネーションシャード610が実現するポリシーによって推進することができる。先に述べたように、ある参加者がエンタングルメント要件に従わないことにより、フラグが立てられる、調査が引き起こされる、および/または疑わしい参加者によるさらなる参加などが防止される。加えて、いくつかの実施形態に従うと、メンバシップサービス指令のサマリーは、複数のパーティを必要とし得る。たとえば、一実施形態において、指令はディスパッチャ130に送信されてもよく、関連する指令はディスパッチャ130からローカルベリファイア150に転送されてもよく、これらのベリファイア150はコーディネーションシャード610にトランザクションを(直接または間接的に)サブミットすることにより、指令が腐敗させられて
いない(たとえばトランジットにおいておよび/または中間参加者のいずれかによって)ことを場合によっては証明する。いくつかの実施形態において、シャードごとのサマリーをメンバシップサービス170およびベリファイア150が計算することで、ベリファイア150が自身のシャードに対する指令しか受けないかもしれない場合でも、ベリファイアの状態の妥当性確認が可能である。
【0091】
責任追跡性および信用
先に述べたように、シャード化された許可型の分散型台帳への参加は、許可のみによるものであってもよい。したがって、許可付与は、参加者が不正をはたらいた場合に備えて参加者の責任追跡性を保つ機会を生み出すことができる。たとえば、いくつかの実施形態において、そのシャードに対してアクティブにされていない不正ノードがどうしてもシャードのコンセンサスに投票しようと試みた場合、これは、不正行為を証明できるかもしれない他のノードによって検出される場合がある(たとえば、コンセンサスラウンドの署名された投票を、送信者がそのラウンドのシャードに対してアクティブにされなかったというプルーフとともに、示すことによって)。結果として、システムにより、および/または既存の機構により、法的ペナルティ、訴訟などのペナルティが自動的に課される場合がある。よって、ノードは、プロトコル(たとえばシステムが実現するコンセンサスプロトコル)に従う、または、特に証明できるのであれば、検出できる何らかの不正行為を少なくとも回避する、強い動機を有し得る。
【0092】
いくつかの実施形態において、アクティブな正当シャード参加者は、たとえば、アクティブである振りをする腐敗した非アクティブ参加者からのメッセージを正当参加者が無視できるよう、他のどのシャード参加者がアクティブであるかを見分けることができなければならない。たとえば、いくつかの実施形態において、正当ノードのアクティブベリファイアは、少なくとも、所定のトランザクションインデックスにおいてアクティブであるノードのサブセットがわかっているであろう。そうでなければ、腐敗したノードのセットが、参加することを認められることなく、シャードのコンセンサスプロトコルにおける定数を形成するのに足りる投票を送ることにより、シャードを乗っ取る可能性がある。先に述べたように、メンバシップサービス170は、限定されないが特別なコーディネーションシャード610、決定論的スケジュール、またはその他の機構を含む、各種実施形態に係るさまざまなやり方で、実現することができる。さらに、いくつかの実施形態において、メンバシップサービス170は、すべての正当なメンバシップ代表が同じ指令シーケンスを対応するディスパッチャ130および/またはベリファイア150に伝えることを保証するように、構成することができる。
【0093】
たとえば、ベリファイアv1が、インデックス1,500におけるトランザクションについて、ベリファイアv2から投票を受けた場合、ベリファイアv1は、ベリファイアv2がそのインデックスにおいてアクティブであることを示す命令をメンバシップサービスが発行したと判断した後に、インデックス1,500におけるベリファイアv2の投票をカウントすることができる。いくつかの実施形態に従うと、ベリファイアv1がそのような命令を入手できない場合、ベリファイアv1は、ベリファイアv2がそのインデックスにおいてアクティブであるという確認を受けるまで、その投票のカウントを延期するように、構成されてもよい。
【0094】
いくつかの実施形態において、ベリファイアv2は、アクティブであることを求めるその要求を支持する「エビデンス」を提供することが求められる場合がある。たとえば、メンバシップサービス指令は「命令シーケンス番号」を含むことができ、ベリファイアv2はその投票とともに、1,500を含む間隔に対してそれをアクティブにする指令のシーケンス番号を含み得る。その後ベリファイアv1がメンバシップサービス命令をそのシーケンス番号とともに受けたとき、ベリファイアv1は、この指令が実際ベリファイアv2
をインデックス1,500を含む間隔に対してアクティブにすることを確認することができ、そうでなければ、ベリファイアv1は、その投票とともに無効なエビデンスを提供することによって、ベリファイアv2が不正をはたらいたという警告を発することができる。いくつかの実施形態において、各投票とともに指令のシーケンス番号を含めることは、無効な証拠がそのように特定される前の時間の問題にすぎないことを保証し、よって、そのような不正行為を阻止することができる。
【0095】
他の実施形態に係るより精巧な仕組みは、指定された指令を待つことなくベリファイアv1が要求を確認できるようにし得るより多くのエビデンスを含み得る。たとえば、一実施形態において、このエビデンスは、メンバシップサービス170が下した判断のシーケンスが示唆する状態が、トランザクションインデックス1,500におけるそのシャードに対してベリファイアv2がアクティブであることを反映することを示す、マークルプルーフを含み得る。これは、ベリファイアv1が、そのプルーフをチェックすることを可能にするとともに、メンバシップサービスからの追加の指令を待つことなくベリファイアv2の要求を確認することができる。
【0096】
しかしながら、このような手法は多くの場合不必要であるかもしれない。先に述べたように、参加者がアクティブになる前に少なくとも何らかの事前通知を受けていることが望ましい。その場合、上記の状況、すなわち、ベリファイアv2が投票するときまでベリファイアv2がアクティブになるという判断にベリファイアv1がまだ気付いていないという状況は、比較的まれであるかもしれない。最悪の場合とは、(その時点において)ベリファイアv1がベリファイアv2の投票をカウントすることができない場合である。いくつかの実施形態に従うと、不正なノードの数および/または遅延している指令の数に応じて、これは潜在的に、より多くの指令を受けるまでトランザクションを受け入れるために十分な投票をノードが確認することを妨げる可能性がある。
【0097】
いくつかの実施形態において、たとえばベリファイアv2は自身が偽っていれば将来発見され場合によってはぺナルディが課されるおよび/またはそうでなければ責任追跡性を保たれることが、わかっているので、ベリファイアv2がアクティブであることを求める要求を、ベリファイアv1は文字通り受け入れることができる。いくつかの実施形態において、構成パラメータは、このような「投機的」投票がいくつカウントされ得るかを判断することができる。しかしながら、いくつかの実施形態において、1つの投機的投票をカウントした場合でも、定数の正当にアクティブなノードの投票なしで、不正な投票によりトランザクションが確認される場合がある。いくつかの実施形態において、これは全く受け入れられないかもしれず、したがって、投票を、その送信者が正当にアクティブであることをベリファイする前にカウントしないように、ノードを構成してもよい。
【0098】
各種実施形態に従うと、そのようなベリフィケーションは、遅延した指令が到着するのを単に待つこと以外のやり方で、実現することが可能である。たとえば、一実施形態において、エビデンスを(たとえばストレージサービス190によっておよび/またはメンバシップサービス170の参加者によって)格納することにより、場合によっては、エビデンスをオンデマンドで要求できるようにすることが可能である。よって、いくつかの実施形態において、上記例に従い、ベリファイアv2は、その署名された投票とともに、それがアクティブであることを証明するエビデンスの識別子(たとえばハッシュ)を含んでいてもよく、ベリファイアv1は、v2の要求をベリファイするためにこのエビデンスを要求するように構成されてもよい。
【0099】
その他詳細および/または最適化
いくつかの実施形態において、(たとえばディスパッチャがそのメンバシップ代表から受ける指令等の)データのクエリを、それがベリファイされおよび/または信用されるソ
ースから受けられた後に最適化するための各種技術のうちのいずれかを使用するように、参加者が構成されてもよい。たとえば、一実施形態において、ディスパッチャは、各々がノード、シャード、および間隔(たとえば開始、終了)を特定するMakeActive指令のストリームを受けることができる。各指令がベリファイされると(たとえば、最低、それを送信した信用されるローカルメンバシップ代表の署名をベリファイ/認証することによって)、その指令は、ローカルデータ構造に格納することができる。このような指令をローカル格納することにより、共通動作のスピードを改善することができる。いくつかの実施形態において、ベリファイアは、たとえばその共通動作を容易にするために、(たとえばローカルディスパッチャまたはメンバシップ代表から)指令を受けたときに適切なデータ構造を同様に更新するように、構成されてもよい。
【0100】
いくつかの実施形態において、アクティブベリファイアは、そのシャードに対する現在のトランザクションインデックスにおいて他のどのベリファイアがアクティブであるかを判断するように構成されてもよく、また、コンセンサスに関連するメッセージをそれらにブロードキャストするように構成されてもよい。加えて、別のベリファイアからコンセンサスに関連するメッセージ(たとえばトランザクションに対する投票等)を受けると、アクティブベリファイアは、受信者の現在のインデックスとは同一でない可能性がある、この投票が特定するトランザクションインデックスに対し、送信者がアクティブであることを確認するように、構成されてもよい。
【0101】
いくつかの実施形態において、現在のトランザクションに対してどのベリファイアがアクティブであるかという判断に関連し、かつ、特定のトランザクションインデックスに対して送信者がアクティブであるという確認に関連するクエリは、受けた各命令に対する「間隔マップ」を更新することにより、サポートすることができる。いくつかの実施形態において、間隔マップは、キーが間隔であるキーと値のマップをサポートすることができ、クエリは、特定された間隔などと重なる、特定されたポイントを含む間隔に対応付けられているのはどの値かを判断することができる。いくつかの実施形態において、間隔マップは間隔ツリーを用いて実現することができる。
【0102】
引続き上記例において、ベリファイアv1は、間隔マップを保持するように構成されてもよく、さらに、(値の)ペアを、間隔[1000,2000]をベリファイアv2を特定する記録にマッピングするその間隔マップに挿入するように構成されてもよい。データを間隔マップに挿入するとき、ベリファイアv1はまた、ベリファイアv2のパブリックキー等の、必要になる見込みがあるその他の情報を含み得る(このような情報は他の場所で入手できる可能性があるが、これを間隔マップに格納することにより、頻繁にアクセスされる情報へのアクセスを高速化することができる)。いくつかの実施形態に従うと、間隔マップを保持することにより、ベリファイアv1は、投票を受けたインデックスで、間隔マップをクエリすることができ、それにより、場合によっては、そのインデックスにおいてアクティブであるベリファイアのセットを識別する。
【0103】
他の最適化は当業者にとって明らかであろう。たとえば、いくつかの実施形態において、ベリファイアは、一度だけその現在のトランザクションインデックスについて間隔マップをクエリし、そのインデックスについてのコンセンサス関連のメッセージを処理するときに繰り返し使用するために結果をキャッシュするように、構成されてもよく、新たな指令がこの結果に影響する場合に備えて、キャッシュされた結果を無効にするかまたは更新する。その他の実施形態において、このような最適化は、たとえば関数の結果を記憶する関数型言語で実現されるので、「無料」になる場合がある。
【0104】
いくつかの実施形態に従うと、ディスパッチャも同様に、その共通動作を高速化するためにデータ構造を保持してもよい。たとえば、ディスパッチャは、ベリファイアのための
上記間隔マップと同様の、シャードごとの間隔マップを保持するように構成されてもよい。しかしながら、先に述べたように、ディスパッチャの主な役割は、クライアントからトランザクションを受けて適切なベリファイアに送ることであろう。いくつかの実施形態において、ディスパッチャは、各シャードに対してどのベリファイアがアクティブであるかに関する正確な情報を有する(または取得する)必要はない。たとえば、ディスパッチャ130が、現在アクティブではないというメッセージ(たとえばクライアントトランザクション)をベリファイア150に送った場合に、ベリファイア150はそのメッセージをローカルディスパッチャ139に転送するように構成されてもよい。
【0105】
しかしながら、いくつかの実施形態において、パフォーマンスのためには、ディスパッチャがシャードに対するアクティブなベリファイアを特定することが望ましい場合がある。さらに、ディスパッチャがメッセージをアクティブではないベリファイアに対して繰り返し送る場合、これらのベリファイアは上記メッセージをディスパッチャに送り返してもよく、台帳における全体の進行は低速になるかもしれない。よって、いくつかの実施形態において、ベリファイアは、そのシャード上で見た最も高いトランザクションインデックスをディスパッチャに(たとえば定期的に)知らせることにより、ディスパッチャがその間隔マップをクエリすることを場合によっては可能にし、どのベリファイアが現在アクティブであるかを(たとえば妥当な正確性を伴って)場合によっては判断できるように、構成されてもよい。
【0106】
ランダムネス
先に述べたように、いくつかの実施形態に従うと、どの時点でどのシャードに対しどの参加者がアクティブであるかを求めるための、および、さまざまな構成パラメータの現在の値を求めるための、ポリシーおよび/または判断は、少なくとも一部、ランダムな選択に基づき得る。よって、いくつかの実施形態において、このようなポリシーが決定論的でありいずれかの参加者が独立して計算できることを保証するために、共有される、ランダムネスのソースが必要であろう。ポリシーの結果の操作を避けるために、誰も(たとえばどのノードも、またはどの他の参加者も)、ランダムネスソースを制御できないようにしなければならない。さらに、敵が前もって計画する機会を打ち消すために、使用するいずれのランダムデータも、必要なときよりも長時間前に知られてはならない。したがって、いくつかの実施形態において、初期化時にランダムシード(seed)を選択しそれを永遠に使用することは十分ではない場合がある。代わりに、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、シャード化されたランダムネスソースを定期的に交換するように構成されてもよい。
【0107】
いくつかの実施形態において、ランダムネスソースは、コーディネーションシャードに対するリーダーの任期の間使用されてもよく、次のリーダーの任期のために新たなランダムネスソースに交換されてもよい。たとえば、一実施形態に従い、決定論的疑似ランダム数生成器の新たなシードが、各リーダーの任期ごとに生成されてもよい。しかしながら、各種実施形態に従い本明細書で説明するように、一般的に、ランダムネスを提供するための各種機構のうちのいずれかを、シャード化された許可型の分散型台帳を実現するときに利用してもよい。加えて、各種実施形態に従い、ランダムネスソースは、より高い頻度で(より高いセキュリティを提供)またはより低い頻度で(必要な作業が少ない)更新されてもよく、(たとえばリーダーに基づくコンセンサスを使用しないシステムのような)リーダーシップ変更以外のイベントによって推進されてもよい。
【0108】
たとえば、いくつかの実施形態において先に述べたように、ランダムネスは、決定論的疑似ランダム数生成器の「良好な」シードを生成することによって生成することができる。明らかに、シードの選択をいずれかの参加者が制御可能であってはならない。加えて、いくつかの実施形態において、シードは予め相当前に予測可能でなくてよい。シャードの
ベリファイアのうちのいずれが遠い将来においてアクティブにされるかを敵が前もって見分けることができる場合、敵は、これらのベリファイアを腐敗させようとして作業を始めることができる。
【0109】
一実施形態において、リーダーの任期が終了すると、リーダーは、前もって予測されないかもしれないコミットされた最後のトランザクションの暗号ハッシュを取るように構成されてもよい。しかしながら、このハッシュはリーダーによって操作されるかもしれない。たとえば、不正なリーダーは、たとえば腐敗させようとするシャードに「友好的な」参加者を割り当てるなど、生成されたハッシュが所望のプロパティを有するように、トランザクションを選択しオーダーすることができる。したがって、いくつかの実施形態において、現在のランダムネスソースは、仲間(buddy)ノードを各リーダーに決定論的に割り
当てる。その任期の終了時に、リーダーは、この仲間ノードを、コミットされた最後のトランザクションのインクリメンタルハッシュに送ることができ、仲間ノードは、そのプライベートキーでハッシュに署名し署名されたハッシュをリーダーに返すように構成されてもよく、リーダーはそうすると、自身の署名で結果をXORし、そうすると、どのパーティーにも制御されないシードが得られる。
【0110】
加えて、いくつかの実施形態において、リーダーに複数の仲間ノード(たとえば、システムが許容し得る腐敗ノードと少なくとも同数)を割り当ててもよい。割り当てられた数のノードだけが腐敗すると仮定すると、これにより、少なくとも1つ(リーダーまたは仲間のうちの1つ)が正当でありしたがって「トライアル・アンド・エラー」共謀に加わることはないことを、保証することができる。いくつかの実施形態に従うと、ランダムシードがすべての署名の関数(たとえばこれらすべてのXOR)によって選択された場合、1参加者が正当であることを保証することは、ランダムネスソースを制御する誰をも除外することになる。
【0111】
いくつかの実施形態において、リーダーまたはその仲間のうちのいいずれかがこのプロトコルに参加しない場合、リーダーは最終的に退けられるかもしれず、新たなリーダーが選ばれる。そうすると、新たなリーダーは、同様のプロトコルに参加することにより、その1または複数の仲間(前のランダムネスソースの関数によって決まる)と協働して新たなランダムシードを生成することができる。いくつかの実施形態において、最終的に、その仲間がすべて反応し少なくとも1の仲間が正当であるリーダーが見出される見込みが高く、これは、新たな信頼できるランダムネスソースが生成されプロトコルを通常に進めることができることを意味する。
【0112】
上記手法は、結果として得られたランダムネスをリーダーが気に入らない場合に備えてリーダーが失敗する振りをすることができるようにするが、これは、次のリーダーおよびその仲間が選択するランダムネスに何の影響も及ぼさないであろう。さらに、この失敗は、他から見えるものであるため、この失敗が結果を故意に操作しようとする試みであると疑われる場合に備えて評価できるエビデンスに寄与し得る。
【0113】
コンピューティングシステムの一例
本明細書に記載の、シャード化された許可型の分散型台帳システムを提供するための技術および方法の実施形態のさまざまなコンポーネントは、その他さまざまなデバイスとやり取りし得る1つ以上のコンピュータシステムまたはコンピューティングデバイス上で実行することができる。1つのこのようなコンピュータシステムまたはコンピューティングデバイスを
図7に示す。示されている実施形態において、コンピュータシステム1000は、入出力(I/O)インターフェイス1030を介してシステムメモリ1020に結合された1つ以上のプロセッサ1010を含む。コンピュータシステム1000はさらに、I/Oインターフェイス1030に結合されたネットワークインターフェイス1040と
、カーソルコントロールデバイス1060、キーボード1070、音声デバイス1090、およびディスプレイ1080等の1つ以上の入出力デバイス1050とを含む。いくつかの実施形態では、実施形態をコンピュータシステム1000の1つのインスタンスを用いて実現することが意図されているが、他の実施形態では、複数のこのようなシステムまたはコンピュータシステム1000を構成する複数のノードが、実施形態の異なる部分、コンポーネント、またはインスタンスをホストするように構成されてもよい。たとえば、一実施形態において、いくつかの要素は、他の要素を実現するノードとは異なるコンピュータシステム1000の1つ以上のノードを介して実現されてもよい。
【0114】
各種実施形態において、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステムであってもよく、または、いくつかのプロセッサ1010(たとえば2、4、8、または別の好適な数)を含むマルチプロセッサシステムであってもよい。プロセッサ1010は、命令を実行可能な任意の好適なプロセッサであればよい。たとえば、各種実施形態において、プロセッサ1010は、x86、PowerPC、SPARC、もしくはMIPS ISA、またはその他好適なISA等の、さまざまな命令セットアーキテクチャ(ISA)のうちのいずれかを実現する、汎用または埋め込みプロセッサであってもよい。マルチプロセッサシステムにおいて、プロセッサ1010は各々、一般に、必然的にではないが、同じISAを実現し得る。
【0115】
いくつかの実施形態において、少なくとも1つのプロセッサ1010はグラフィックス処理ユニットであってもよい。グラフィック処理ユニットまたはGPUは、パーソナルコンピュータ、ワークステーション、ゲーム機またはその他のコンピュータシステムのための専用グラフィックレンダリングデバイスとみなされてもよい。現代のGPUは、コンピュータグラフィックスの操作および表示において非常に効率が高い場合があり、その高度な並列構造が、これらを、グラフィカルアルゴリズムの範囲において典型的なCPUよりも効果的にしている。たとえば、グラフィックプロセッサは、ホスト中央処理装置(CPU)を用いて画面に直接描画するよりもはるかに速くこれらを実行するように、複数のグラフィック基本動作を実現することができる。GPUは、プログラマーがGPUの機能を呼び出すことを許可する1つ以上のアプリケーションプログラマーインターフェイス(API)を実現し得る。好適なGPUは、NVIDIA社、ATIテクノロジーズ、およびその他等の販売業者から市販されているであろう。
【0116】
システムメモリ1020は、プログラム命令および/またはプロセッサ1010からアクセス可能なデータを格納するように構成し得る。各種実施形態において、システムメモリ1020は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、または任意のその他の種類のメモリ等の任意の好適なメモリ技術を用いて実現し得る。示されている実施形態において、たとえば、
図2~
図6に示されるように送信側ノードおよび/または受信側ノードとして分散型台帳メッセージを処理するための方法を含むがこれらの方法に限定されない、分散型台帳の責任追跡性および信頼を高めるための方法の各種実施形態について先に述べたような、所望の機能を実現するプログラム命令およびデータは、システムメモリ1020に、プログラム命令1025およびデータストレージ1035としてそれぞれ格納されるものとして示されている。他の実施形態において、プログラム命令および/またはデータは、異なる種類のコンピュータアクセス可能媒体に、またはシステムメモリ1020またはコンピュータシステム1000とは別の同様の媒体において、受信、送信、または格納されてもよい。一般的には、たとえば、コンピュータアクセス可能媒体は、I/Oインターフェイス1030を介してコンピュータシステム1000に結合されたディスクまたはCD/DVD-ROMである、磁気または工学媒体等の、ストレージ媒体またはメモリ媒体を含み得る。コンピュータアクセス可能媒体を介して格納されるプログラム命令およびデータは、たとえばネットワークインターフェイス1040を介して実現し得る
、ネットワークおよび/または無線リンク等の通信媒体を介して変換し得る、電気、電磁、またはデジタル信号等の送信媒体または信号によって、送信されてもよい。
【0117】
一実施形態において、I/Oインターフェイス1030は、ネットワークインターフェイス1040、または入出力デバイス1040等の他の周辺インターフェイスを含む、デバイス内の任意の周辺デバイスと、システムメモリ1020と、プロセッサ1010との間のI/Oトラフィックを調整するように構成し得る。いくつかの実施形態において、I/Oインターフェイス1030は、あるコンポーネント(たとえばシステムメモリ1020)からのデータ信号を、別のコンポーネント(たとえばプロセッサ1010)が使用するのに適したフォーマットに変換するために、任意の必要なプロトコル、タイミングまたはその他のデータ変換を実行し得る。いくつかの実施形態において、I/Oインターフェイス1030は、たとえば、周辺コンポーネント相互接続(PCI)バス標準規格またはユニバーサルシリアルバス(USB)標準規格の変形等の、各種の周辺バスを通して装着されたデバイスに対するサポートを含み得る。いくつかの実施形態において、I/Oインターフェイス1030の機能を、たとえばノースブリッジおよびサウスブリッジ等の2つ以上の別々のコンポーネントに分割してもよい。加えて、いくつかの実施形態において、システムメモリ1020へのインターフェイス等のI/Oインターフェイス1030の機能のうちの一部またはすべてを直接プロセッサ1010に組み込んでもよい。
【0118】
ネットワークインターフェイス1040は、コンピュータシステム1000と、その他のコンピュータシステム等の、ネットワークに装着されたその他のデバイスとの間で、または、コンピュータシステム1000のノード間で、データをやり取りできるように構成し得る。各種実施形態において、ネットワークインターフェイス1040は、たとえば任意の好適な種類のイーサネット(登録商標)ネットワーク等の無線または有線汎用データネットワークを介して、アナログ音声ネットワークもしくはデジタルファイバー通信ネットワーク等の電気通信/電話ネットワークを介して、ファイバーチャネルSAN等のストレージエリアネットワークを介して、または、任意の他の好適な種類のネットワークおよび/またはプロトコルを介して、通信をサポートし得る。
【0119】
入出力デバイス1050は、いくつかの実施形態において、1つ以上の表示端末、キーボード、キーパッド、タッチパッド、スキャンデバイス、音声もしくは光認識デバイス、または1つ以上のコンピュータシステム100によって入力または取り出すのに適した任意の他のデバイスを、含み得る。複数の入出力デバイス1050がコンピュータシステム1000内にあってもよく、コンピュータシステム1000の各種ノード上に分散されていてもよい。いくつかの実施形態において、同様の入出力デバイスが、コンピュータシステム1000から分離されていてもよく、有線または無線接続を介して、たとえばネットワークインターフェイス1040を介して、コンピュータシステム1000の1つ以上のノードとおやり取りしてもよい。
【0120】
図7に示されるように、メモリ1020は、分散型台帳の責任追跡性および信頼を高めるための方法の実施形態を実現するように構成されたプログラム命令1025と、プログラム命令1025からアクセス可能な各種データを含むデータストレージ1035とを含み得る。一実施形態において、プログラム命令1025は、上記図面に示される、分散型台帳の責任追跡性および信頼を高めるための方法の実施形態のソフトウェア要素を含み得る。データストレージ1035は、実施形態で使用し得るデータを含み得る。その他の実施形態において、その他のまたは異なるソフトウェア要素およびデータが含まれていてもよい。
【0121】
コンピュータシステム1000は例示されているにすぎず本明細書に記載の分散型台帳の責任追跡性および信頼を高めるための方法の範囲を限定することを意図していないこと
を、当業者は理解するであろう。特に、コンピュータシステムおよびデバイスは、コンピュータ、ネットワークデバイス、インターネット機器、PDA、無線電話、ポケットベルなどを含む、示された機能を実行できるハードウェアまたはソフトウェアの任意の組み合わせを含み得る。コンピュータシステム1000は、図示されていないその他のデバイスに接続されてもよく、代わりにスタンドアロンシステムとして動作してもよい。加えて、示されているコンポーネントが提供する機能は、いくつかの実施形態において、より少ないコンポーネントになるように組み合わせれてもよく、その他のコンポーネントに分散されてもよい。同様に、いくつかの実施形態において、示されているコンポーネントのうちのいくつかの機能は提供されなくてもよく、および/またはその他の追加機能が利用できるようにされてもよい。
【0122】
また、さまざまなアイテムは、使用中、メモリまたはストレージに格納されているものとして示されているが、これらのアイテムまたはその一部は、メモリ管理およびデータ完全性のために、メモリと他のストレージデバイスとの間で転送され得ることを、当業者は理解するであろう。これに代えて、その他の実施形態において、ソフトウェアコンポーネントのうちの一部またはそのすべてが、メモリにおいてまたは別のデバイス上で実行され、示されているコンピュータシステムと、コンピュータ間通信を介して通信してもよい。システムコンポーネントまたはデータ構造のうちの一部またはそのすべても、(たとえば命令または構造データとして)コンピュータアクセス可能媒体上に、または、その各種の例は先に述べた通りである、適切なドライブによって読み出されるポータブル商品上に、格納されてもよい。いくつかの実施形態において、コンピュータシステム1000とは別のコンピュータアクセス可能媒体に格納される命令は、ネットワークおよび/または無線リンク等の通信媒体を介して伝達される、電気、電磁、またはデジタル信号等の信号または送信媒体を介して、コンピュータシステム1000に送信されてもよい。各種実施形態はさらに、上記説明に従い実現される命令および/またはデータを、受信、送信、またはコンピュータアクセス可能媒体に格納することを含み得る。したがって、本発明は、その他のコンピュータシステム構成でも実施し得る。
【0123】
図面に示され本明細書に記載されている各種方法は、方法の実施形態の例を表す。これらの方法は、ソフトウェア、ハードウェア、またはその組み合わせにおいて実現し得る。方法の順序は変更してもよく、各種要素の追加、再配置、組み合わせ、削除、修正などが可能である。
【0124】
各種修正および変更は、本開示の恩恵を受ける当業者にとって明らかになるようにすることができる。本発明がこのような修正および変更をすべて包含し、したがって上記説明は制限的ものではなく例示的なものとみなされることが、意図されている。
【手続補正書】
【提出日】2024-08-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータが実現する方法であって、前記方法は、
分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイス上で、分散型台帳の1つ以上のトランザクションに関する情報を管理することを含み、前記分散型台帳は、少なくとも第1のシャードと第2のシャードとを含む複数の台帳シャードを含み、前記方法はさらに、
前記複数のノードのうちの1つのノード上のディスパッチャプロセスが、前記第1のシャードに向けられたクライアントトランザクション要求を受信することと、
前記ディスパッチャプロセスが、前記第2のシャードの現在の状態のサマリーがアペンドされた、受信した前記クライアントトランザクション要求を含む、シャードトランザクションを、前記第1のシャードに対応付けられたベリファイアプロセスに送信して前記クライアントトランザクション要求を実行することとを含む、方法。
【請求項2】
前記第2のシャードの前記現在の状態のサマリーは偽造不可能である、請求項1に記載の方法。
【請求項3】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードに含まれる、前のトランザクションの、暗号ハッシュを含む、請求項1または2に記載の方法。
【請求項4】
前記シャードトランザクションの完了の成功の表示を受信することをさらに含み、前記完了の成功は、前記第2のシャードの前記現在の状態のコピーを前記第1のシャードに格納することを含み、前記方法はさらに、
前記表示の受信後に、前記第2のシャードに含まれる前記前のトランザクションの改訂を検出することを含み、前記検出することは、
前記現在の状態の変更されたサマリーを前記第2のシャードから読み出すことと、
前記変更されたサマリーが、前記第1のシャードに格納された前記現在の状態のサマリーの前記コピーと一致しないことをベリファイすることとを含む、請求項3に記載の方法。
【請求項5】
前記シャードトランザクションは前記第1のシャードのリーダーベリファイアに送信され、前記方法はさらに、前記リーダーベリファイアが、コンセンサスプロトコルに従い、前記第1のシャードに対してアクティブであるベリファイアプロセスのセットに、前記シャードトランザクションを提案することを含む、請求項1から4のいずれかに記載の方法。
【請求項6】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードの他のベリファイアプロセスに関する情報を含む、請求項5に記載の方法。
【請求項7】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードに含まれるトランザクションのカウントを含む、請求項1から6のいずれかに記載の方法。
【請求項8】
シャード化された許可型の分散型台帳システムであって、
前記分散型台帳システムは複数のコンピューティングデバイスを備え、前記複数のコンピューティングデバイスは、少なくとも1つのプロセッサとメモリとを含み、分散型台帳システムに複数のノードとして参加するように構成され、前記分散型台帳システムは、少なくとも第1のシャードと第2のシャードとを含む複数の台帳シャードを含む分散型台帳を格納し、前記複数の台帳シャードのうちの個々の台帳シャードは、前記分散型台帳の1つ以上のトランザクションに関する情報を管理し、前記分散型台帳システムはさらに、
前記複数のノードのうちのノードを備え、前記ノードは前記ノードの前記メモリにプログラム命令を格納し、前記プログラム命令は、前記ノードの前記少なくとも1つのプロセッサ上で実行されると、前記少なくとも1つのプロセッサに、前記シャード化された許可型の分散型台帳システムのディスパッチャプロセスを実現させ、前記ディスパッチャプロセスは、
前記第1のシャードに向けられたクライアントトランザクション要求を受信し、
前記第2のシャードの現在の状態のサマリーがアペンドされた、受信した前記クライアントトランザクション要求を含む、シャードトランザクションを、前記第1のシャードに対応付けられたベリファイアプロセスに送信して前記クライアントトランザクション要求を実行するように、構成される、シャード化された許可型の分散型台帳システム。
【請求項9】
前記第2のシャードの前記現在の状態のサマリーは偽造不可能である、請求項8に記載のシャード化された許可型の分散型台帳システム。
【請求項10】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードに含まれる、前のトランザクションの、暗号ハッシュを含む、請求項8または9に記載のシャード化された許可型の分散型台帳システム。
【請求項11】
前記ディスパッチャプロセスは、
前記シャードトランザクションの完了の成功の表示を受信するように構成され、前記完了の成功は、前記第2のシャードの前記現在の状態のコピーを前記第1のシャードに格納することを含み、
前記ディスパッチャプロセスまたは前記シャード化された許可型の分散型台帳システムの別のプロセスは、
前記ディスパッチャプロセスが前記表示を受信した後に、前記第2のシャードに含まれる前記前のトランザクションの改訂を検出するように構成され、前記検出することは、
前記現在の状態の変更されたサマリーを前記第2のシャードから読み出すことと、
前記変更されたサマリーが、前記第1のシャードに格納された前記現在の状態のサマリーの前記コピーと一致しないことをベリファイすることとを含む、
請求項10に記載のシャード化された許可型の分散型台帳システム。
【請求項12】
前記シャードトランザクションは前記第1のシャードのリーダーベリファイアに送信され、
前記リーダーベリファイアは、コンセンサスプロトコルに従い、前記第1のシャードに対してアクティブであるベリファイアプロセスのセットに、前記シャードトランザクションを提案するように構成される、請求項8から11のいずれかに記載のシャード化された許可型の分散型台帳システム。
【請求項13】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードの他のベリファイアプロセスに関する情報を含む、請求項12に記載のシャード化された許可型の分散型台帳システム。
【請求項14】
前記第2のシャードの前記現在の状態のサマリーは、前記第2のシャードに含まれるトランザクションのカウントを含む、請求項8から13のいずれかに記載のシャード化された許可型の分散型台帳システム。
【請求項15】
請求項1から7のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【外国語明細書】