JP7098660B2 - シャード化された許可型の分散型台帳 - Google Patents

シャード化された許可型の分散型台帳 Download PDF

Info

Publication number
JP7098660B2
JP7098660B2 JP2019564902A JP2019564902A JP7098660B2 JP 7098660 B2 JP7098660 B2 JP 7098660B2 JP 2019564902 A JP2019564902 A JP 2019564902A JP 2019564902 A JP2019564902 A JP 2019564902A JP 7098660 B2 JP7098660 B2 JP 7098660B2
Authority
JP
Japan
Prior art keywords
ledger
verifier
shard
shards
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019564902A
Other languages
English (en)
Other versions
JP2020521252A5 (ja
JP2020521252A (ja
Inventor
モイア,マーク・エス
カー,ハロルド
ハーリヒー,モーリス・ピィ
シェフ,アイザック
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2020521252A publication Critical patent/JP2020521252A/ja
Publication of JP2020521252A5 publication Critical patent/JP2020521252A5/ja
Priority to JP2022104925A priority Critical patent/JP2022141684A/ja
Application granted granted Critical
Publication of JP7098660B2 publication Critical patent/JP7098660B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Description

背景
開示の分野
本開示は、概して分散型台帳に関し、より具体的にはシャード化された許可型の分散型台帳に関する。
関連技術の説明
従来、分散型台帳(ブロックチェーンを含む)は典型的にはスケーリングせず、スループットは基本的に、すべての参加者がすべてのトランザクションの伝達、処理および格納を行う必要があるために、限定される。結果として、追加のリソースはスループットの改善につながらないことが多い。「台帳」は、一連のトランザクションを記録するアペンドオンリー(append-only)のデータ構造とみなすことができる。「分散型台帳」は、連続するトランザクションについて合意される共通プロトコルに従うノードの集まりによって管理される台帳である場合がある。「クライアント」は、上記ノードのうちの1つ以上に対してトランザクションをサブミットし得る。いくつかの分散型台帳は、トランザクションをブロックチェーンと呼ばれるブロックに集めることができる。各トランザクション、またはトランザクションのブロックは、台帳内の前のトランザクションのハッシュ(たとえば暗号ハッシュ)を含むことにより、台帳が改ざんされるリスクを最小にすることができる。言い換えると、誰も(またはどのノードも)トランザクションを不正に追加、削除、または変更できない。なぜなら、そうすると、後続のすべてのハッシュも変更することになるからである。Bitcoin(登録商標)は、分散型台帳の1つの周知例である。
従来、多くのブロックチェーンおよび分散型台帳システムは十分にスケーリングしない。本明細書において、「ブロックチェーン」という用語は、広く分散型台帳を、たとえ事実上ブロックからなるチェーンとして表されていなくても、意味するために使用される。そのスループットは、参加者の大部分(すなわち場合によってはリソースによって重み付けされる)が、すべてのトランザクションを受信、検証および格納しなければならないという条件によって制限される可能性がある。結果として、追加のリソースはスループットの改善につながらないことが多い。
非許可型ブロックチェーンは典型的に、参加者が台帳の管理に貢献するためにエネルギを費やさねばならないようにすることを確実にすること等によって、故意に非効率的になることがある。Bitcoin(登録商標)等の非許可型台帳は一般的に、参加するプロトコルに従うことを希望するいかなるノードも認める。誰もがトランザクションを提案することができ、誰もがどのトランザクションが台帳に記入されるかを決定するプロトコルに参加することができる。一方、許可型の実装例では、特定のノードのみが参加を認められる。たとえば、管轄機関が、どのノードが許可型台帳に参加できるかを制御する場合がある。この管轄機関は、1つの組織、コンソーシアムなどのような各種形態を取ることができる。許可型台帳は、台帳プロトコルを更新するための、または「顧客確認(know your customer)」という金融規則に従うための、整理された手順を提供すること等により、管理を容易にするものとみなすことができる。
正当なノードは、システムのプロトコルに忠実に従うノードとみなすことができ、一方、不正なノード、すなわち敵の制御下にあるノードは、何等かの利益を求めてプロトコルから逸脱する可能性がある。
許可付与は、不正ノードの挙動を、これらを所有するまたはこれらに対する責任を負うアイデンティティに対応付けることを可能にすることが多く、したがって、これらの責任追跡性を保つ可能性を開く。これは、技術的および/または非技術的な手段によって達成し得る。たとえば、あるノードが、明らかに不正をはたらいた場合、プロトコルは、たとえば第三者に寄託されたセキュリティ保証金を没収することまたは不正ノードのさらなる参加を許さないこと等により、ペナルティが自動的に適用されることを可能にし得る。これに代えてまたは加えて、不正行為のエビデンスは法的、規制またはビジネスプロセスに知らされて、有罪の判決およびシステム外で行われるペナルティの決定を可能にする。
当然、完全に独立した複数のブロックチェーンを用いることができる。非許可型ブロックチェーンの場合、この方策には問題があるかもしれない。なぜなら、最も人気のある小数のブロックチェーンを除いて、ほとんどのブロックチェーンには、その管理専用のリソースが少ししかなく、その場合、これらを適度のリソースで圧迫するのは簡単であり、その完全性を損なうであろう。
ブロックチェーンに対する圧力を軽減する2つの方法は、ライトニングネットワークとサイドチェーンである。いずれの場合も、参加者は、「オフチェーン」でやり取りを行い、ごくたまにブロックチェーンに対するトランザクションを実行する。これらの方策は、ブロックチェーンに対する負担を緩和するのに役立つかもしれないが、プライマリチェーンはスケーリングしないという事実を変えることはない。
非許可型の台帳も許可型の分散型台帳も、いくつかのトランザクションを他のトランザクションよりも好む参加者による操作を受けることができる場合がある。ほとんどの台帳プロトコルの中心となるものは、広く一般に合意された一連のトランザクションを確立するために使用されるコンセンサスアルゴリズムであろう。多くの分散型台帳は、実際のところ従来のコンセンサス問題を解決しないが、それでもなおコンセンサスアルゴリズムを実現すると一般的には言われる。いくつかの前のコンセンサスアルゴリズムは、プルーフ・オブ・ワーク(proof-of-work)(PoW)システムに基づいており、このシステムにおいて参加者は暗号パズルを解くためにリソースを費やす。しかしながら、PoWには周知の欠点が2つある。従来、PoWは、不経済で低速であり、無視できない量のエネルギを消費するよう、かつ台帳にトランザクションをアペンドできるレートを制限するよう、故意に設計されている。この方策は、未知のエンティティの影響を制限することを目的としており、そのコストは許可型台帳において回避し得る。PoWコンセンサスは確率的補償を提供するだけである。一般的に、PoWコンセンサスプロトコルの台帳は、2以上の参加者が同時に異なるトランザクションをチェーンにアペンドすると、分岐する(fork)可能性がある。最後には、互換性がないこれらのチェーンのほとんどが放棄されるかもしれないが、どれが存続するかが不確かな期間が存在し得る。結果として、トランザクションは、その後十分な数の後のトランザクションがアペンドされて初めて信頼するに足るとみなすことができる(たとえば台帳が分岐していないことまたはこのトランザクションが分岐に耐えて放棄されなかったことを保証する)。
PoWコンセンサスに関係するリスクおよび遅延は、許可型台帳において回避できる。なぜなら、参加者は明示的に認証されるので、未知のエンティティによる参加を制限する必要がないからである。これは、非許可型台帳では適用できないさまざまなコンセンサス機構の可能性を開く。
たとえば、許可型の分散型台帳のあるコンセンサス機構は、台帳にアペンドするトランザクション(またはそのブロック)について参加者が提案し投票するプラクティカル・ビザンチン・フォールト・トレランス(Practical Byzantine Fault Tolerance)(PBFT)である。PBFTは、参加者のうちの特定の割合(たとえば2/3を上回る)が正当であれば、参加者は台帳に対する有効な追加について合意することを保証し得る。言い換えると、PBFTは、参加者のうちの特定の割合(すなわち1/3)未満が、ビザンチンと言われる、たとえばプロトコルから外れて任意に行動する不正な参加者であれば、正当性を保証し得る。しかしながら、PBFTは一般的に、n個のノードが合意に達するためにO(n)個のメッセージを必要とし、これは、たとえトランザクションがブロックになるようバッチ処理されても、多数のノードへのスケーラビリティを妨げるとみなし得る。
もう1つのコンセンサスアルゴリズムは、トランザクションをその台帳にアペンドしこれらをその他の参加者にブロードキャストするリーダーを含み、これは、それらの台帳にこれらを追加し、確認を台帳に送信する。このようなコンセンサスアルゴリズムの一例はRaftである。リーダーが参加者の大半からの確認を受けると、トランザクションはコミットされたとみなされる。リーダーが反応しなくなった場合、他の参加者が、新たなリーダーを選ぶ選挙を開始できる。一般的な場合、Raftは合意に達するのにO(n)個のメッセージしか必要としないので、PBFTよりも多数のノードにさらにスケーラブルである。しかしながら、Raftはビザンチン故障に対する耐性がない。たとえば、これは、参加者が互いになりすますこと、腐敗したリーダーが他を騙すことなどを認める。よって、これは、分散型台帳の実装例において使用するのにそのままでは適切でない場合がある。
概要
シャード化された許可型の分散型台帳を実現するための、方法、技術、装置およびシステムについて説明する。本明細書に記載のシャード化された許可型の分散型台帳は、各参加者が必要とする作業および通信の量を減じることにより、以前の分散型台帳実装例には固有であり得るスケーラビリティのボトルネックを場合によっては回避することができ、スループットの増加につながる追加のリソースの使用を場合によっては可能にすることができる。本明細書に記載の方法、技術および/または機構は、複数の「シャード(shard)」からなる台帳をサポートするためのスケーラブルなインフラストラクチャを実現するための方策を提供することができる。上記シャードは各々、それ自体、分散型台帳とみなすことができ、分散型台帳として実現することができる。いくつかの実施形態では、複数のシャードが並列に動作し得る。
シャード化された許可型の分散型台帳への参加は、いくつかの実施形態において、コンソーシアム等の管轄機関の許可によってのみ認められ得る。管轄機関による許可は、このような許可付与の判断が暗に示している信用を活用することを認める場合があるが、誰かまたは何かを完全に信用することはない。また、各種実施形態に従うと、このような許可付与を活用することにより、技術的な各種機構および非技術的な各種機構双方のうちのいずれかを介し、不正をはたらく参加者を検出しその責任追跡性を保つことを、場合によっては保証することができる。
本明細書に記載の方法、技術および/または機構は、シャード化された許可型の分散型台帳を実現するシステムが、所望の行動を指図する(たとえばどの参加者が任意の時点で所定のシャードをアクティブに管理しているかを判断する)、および/または、従わない(たとえば台帳プロトコルおよび/またはコンセンサスアルゴリズムに従わない)ものの責任追跡性を保つ機会を、提供し得る。いくつかの実施形態に従い、本明細書に記載の、シャード化された許可型の分散型台帳は、シャードを管理する参加者からシャードを切り離すことによってサービスの提供を仮想化するスケーラブルインフラストラクチャを利用する(および/または含む)ことにより、場合によっては容量および作業量を互いに独立して増大させることができる。
一実施形態に係るシャード化された許可型の分散型台帳を実現するシステムを示す論理ブロック図である。 一実施形態に係るシャード化された許可型の分散型台帳を管理する責任があるいくつかのノード上のベリファイアを示す論理ブロック図である。 シャード化された許可型の分散型台帳においてシャードにトランザクションを追加する方法の一実施形態を示すフローチャートである。 受信メッセージをディスパッチする方法の一実施形態を示すフローチャートである。 一実施形態に係る、ベリファイアがアクティブになったときにシャードスナップショットを利用する方法の一実施形態を示すフローチャートである。 一実施形態に係るコーディネーションシャードを備えたメンバシップサービスを示す論理図である。 いくつかの実施形態に係るシャード化された許可型の分散型台帳システムを実現するように構成されたコンピューティングデバイスのブロック図である。
本開示は、本明細書において、いくつかの実施形態および説明のための図面について、例示のために記載されているが、当業者は、本開示が記載されている実施形態または図面に限定されないことを理解するであろう。なお、本明細書の図面および詳細な説明は、本開示を開示された特定の形態に限定することを意図しているのではなく、むしろ、本開示は、以下の請求項によって定められる精神および範囲に含まれるすべての修正、均等物、および代替形をカバーするものであることが、理解されねばならない。本明細書で使用されるいずれの見出しも、専ら整理のためであり、本明細書の記載または請求項の範囲を限定することを目的としているのではない。本明細書で使用される「してもよい、し得る(may)」という単語は、義務の意味(すなわち、~ねばならない(must)を意味する)ではなく、許容の意味(すなわち、可能性があることを意味する)で用いられる。同様に、「含む(「include」、「including」、および「includes」)」という単語は、含むことを意味するが、それに限定される訳ではない。
実施形態の詳細な説明
シャード化された許可型の分散型台帳システムを実現するための、方法、技術、装置およびシステムについて説明する。いくつかの実施形態において、シャード化された許可型の分散型台帳は、各参加者が必要とする作業および通信の量を減じることにより、以前の分散型台帳実装例に固有のスケーラビリティのボトルネックを場合によっては回避することができ、かつ、追加のリソースの使用を可能にすることにより、場合によってはスループットを増加させることができる。
モノリシック台帳(たとえば一例はBitcoin(登録商標))において、台帳におけるトランザクションは、1つの線形シーケンスに配置される。結果として、モノリシック台帳は概ね、本質的に連続しており、新たなトランザクションを台帳に追加することを提案するすべてのノードは、共通コンセンサスプロトコルに参加することによって他のそのようなノードすべてと競合しなければならず、全システムスループットおよびレイテンシは、参加者の数が増えると悪化する傾向がある。
これに対し、シャード化された台帳では、1つの台帳を分割してシャードの集まりにすることができ、各シャードはそれ自体線形台帳であってもよい。関連するトランザクションは同一のシャードにアペンドすることができ、関連していないトランザクションは異なるシャードに並列にアペンドすることができる。関連していないトランザクションを並列にアペンドする機能により、シャード化された台帳を、本質的によりスケーラブルなものであるとみなすことができる。さらに、各シャードは、利用できるリソースのサブセットによって管理することができる。1つの台帳(またはシャード化された台帳の場合は個々のシャード)を管理するために使用されるコンセンサス機構は、スケーリングが参加者の数にともなって悪化することが多いので、このようにシャード間でリソースを分割することは、個々のシャード各々のスループットを高めることにもなり得る。複数のシャードに対してトランザクションを並列にアペンドするという利点と個々のシャードのスループットを高めるという利点とを組み合わせることにより、結果として、同一のリソースセットが管理するモノリシック台帳と比較して、実質的にスループットを改善することができる。
単純に、完全に互いに独立している台帳のセットを作成しリソースを割り当てることにより各々を管理することには、本明細書に記載のシャード化された許可型の分散型台帳が共有しないいくつかの短所がある。たとえば、台帳と、完全に独立した台帳のセットを管理するリソースとの間の、固定されたマッピングは、柔軟性を欠き、一般的に、台帳間の自動負荷平衡を排除する。さらに、独立した各台帳を管理するリソースのセットがスタティックな状態のままであった場合、たとえば台帳の履歴の変更に同意することにより、台帳を腐敗させる可能性がある十分な数のこれらリソース間の連携が形成される可能性があるかもしれない。
いくつかの実施形態において、シャード化された許可型の分散型台帳は、シャードと、これらのシャードを管理するリソースとの間のマッピングを、動的に変更し得る。これは、いくつかの実施形態において、たとえば負荷平衡を実施する一般ポリシーを可能にすることができ、また、システムがリソースを定期的に再割り当てすることを可能にすることにより、場合によっては所定のシャードを管理するリソース間の連携を形成するための労力を混乱させる。加えて、1つのシャードの状態に関する情報を、他の1つ以上のシャードの台帳に含めることができる。1つのシャードの状態に関する情報を別のシャードの台帳に含めることは、以下でより詳細に説明するように、所定のシャードを腐敗させることを潜在的に一層困難にする「エンタングルメント(entanglement)」技術の一例とみなすことができる。
いくつかの実施形態において、シャード化された許可型の分散型台帳はまた、シャード間トランザクション(すなわち複数のシャードの状態に影響するまたは依存するトランザクション)をサポートする機会を提供し得る。
加えて、各種実施形態に従うと、本明細書に記載の方法、技術および/または機構は、さまざまなブロックチェーンおよび分散型台帳システムに適用可能であろう。
シャード化された許可型の分散型台帳の実現
先に述べたように、いくつかの実施形態に従うと、本明細書に記載の方法、技術および/または機構は、1つの台帳を管理するためにすべてのノードを相互に通信させるのではなく、1つの台帳を複数のシャードに分割しノードのサブセットに配置することによって各台帳を管理する。図1は、一実施形態に係る、シャード化された許可型の分散型台帳を実現するように構成されたシステムを示す論理ブロック図である。
いくつかの実施形態において、シャード化された許可型の分散型台帳は、完全なシャード化された許可型の分散型台帳を全体として表し得る複数のシャードを含み得る。加えて、1つのシャードはそれ自体が台帳であってもよい。言い換えると、情報のサブセットが台帳全体に含まれるが、1つのシャードは、完全な台帳と同じように機能およびやり取りすることができる。
システムような、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、台帳システム全体の参加者とみなし得る、ノード120A~N等の複数のノードを含み得る。各種実施形態に従うと、ノード120A~Nは、1つ以上のアプリケーション、モジュール、プロセス、スレッドなどを介して、たとえばディスパッチャ130A~N、メンバシップ代表140A~N、およびベリファイア150A~Nを介して、台帳システムに参加するように構成することができる。加えて、いくつかの実施形態において、ノード120A~Nは、複数のシャードに分割し得る、シャード化された許可型の分散型台帳を全体として管理するように構成することができる。
クライアント180A~M等のクライアントは、ネットワーク110を介して通信することにより、シャード化された許可型の分散型台帳システムとやり取りする、たとえば台帳に追加するトランザクションを提示することができる。各種実施形態に従うと、ネットワーク110は、事実上任意の種類の通信媒体を介し事実上任意の通信プロトコルに従って動作する、事実上任意の種類の有線または無線ネットワークを表し得る。加えて、いくつかの実施形態において、各ノード120は、クライアントからのメッセージをベリファイアに導く役割を担うことができる、ディスパッチャ130A~N等の1つ以上の特別の「ディスパッチャ」プロセスを有し得る。ノードごとに1つだけディスパッチャ130が示されているが、いくつかの実施形態において、各ノードが複数のディスパッチャを含む場合もある。
このシステムは、いくつかの実施形態において、台帳システムの実行中に利用される各種判断に関する情報を決定するおよび/または分配するように構成された、メンバシップおよび構成サービス170を含み得る。上記判断は、たとえば、任意の時点においてどのシャード上のどのノードがアクティブであるか、ストレージサービスが格納すべき各シャードのデータのコピーはいくつであるか、シャードに対してアクティブになる前に参加者(たとえばノード)が準備すべき事前通知はどれだけか、などの判断であり、詳細は以下で説明する。1つのエンティティとして示されているが、メンバシップサービス170は、いくつかの実施形態において、メンバシップ用、(たとえばシャードに対する)ノード割り当て用、システム構成用などの、複数のサービスを表し得る。
いくつかの実施形態において、このシステムはまた、台帳における(および/または台帳に対応付けられた)すべてのデータ(たとえばトランザクション)のうちの一部を管理するように構成されたストレージサービス190を含み得る。ノード120にシャードのデータに対する責任だけを負わせるのではなく、独立したストレージデバイス190を利用してもよく、詳細は後に説明する。いくつかの実施形態において、シャードはノード120A~N上に格納されてもよいが、他の実施形態において、システムのシャード(と、したがって台帳と)は、ノード120A~Nとは別に、ノード120A~Nと異なるストレージデバイス上に、たとえばストレージデバイス190に、格納することができる。その他の実施形態において、シャードのデータは、ノード120A~Nと、別のストレージデバイス、たとえばストレージデバイス190との両方に、格納してもよい。
複数のクライアント、たとえばクライアント180A~Mは、たとえば台帳に追加するトランザクションをサブミットするために、シャード化された許可型の分散型台帳システムとやり取りすることができる。クライアント180が台帳システムに対してトランザクションを提示するとき、このクライアントは、このトランザクションを導く先であるシャード(すなわち台帳を構成するシャードのうちの1つ)を指定することができる。クライアント180は、さまざまなやり方のうちのいずれかで、ターゲットシャード(すなわちトランザクションを導く先であるシャード)を示すことができる。たとえば、一実施形態において、クライアント180と台帳システムの通信を媒介する通信プロトコルは、クライアント180がターゲットシャードを示すことを媒介する機構(たとえばメッセージタイプ、フィールドなど)を提供し得る。加えて、トランザクションを、さまざまなやり方のうちのいずれかでシャードに割り当てることができ、これらのやり方は、サーバに対する負荷を平衡させる割り当て、地理的に近くにあるサーバを優先する割り当て、および/または関連するトランザクションを1つのシャードに集約させる割り当てを含むが、これらに限定されない。一般的に、シャードに対してトランザクションを割り当てるために使用される特定のやり方および/または機構は、実施形態によって異なり得る。
システム組織および信用モデル
先に述べたように、各シャードは、単一台帳システムと同様に管理し得る台帳として組織することができる。たとえば、一実施形態において、任意のノード120を割り当てることにより任意のシャードを管理することができる。しかしながら、他の実施形態において、ノード120A~Nのサブセットのみが、任意の時点でいずれかの所定のシャードを管理できるようにしてもよい(たとえばスケーラビリティのため等)。本明細書には、シャード化された許可型の分散型台帳を実現するシステム内で、どの時点でどのシャードの管理にどのノードが参加するかを判断するさまざまな技術が記載される。
シャード化された許可型の分散型台帳は、台帳を妨害しようとするまたは腐敗させようとする敵から保護することができる。説明し易くするために、各ノードを1つのエンティティの制御下にあるとみなすことができる。また、さらに、敵は個々のノードの粒度で腐敗する可能性があると想定することができる。たとえば、あるノードの1つのプロセスが腐敗すると、そのノードのすべてのプロセスが不正をはたらくことになる。逆に、1つのノード上の複数のプロセスは互いを信用しているが異なる別々のノード上のプロセスは互いを信用していないとみなしてもよい。
本明細書では、各ノードがシャードごとに1つのベリファイアプロセスを有するシステムという観点で説明しているが、いくつかの実施形態において、シャード化された許可型の分散台帳システムを、各ノードがシャードごとにスレッドを有し得るように実現してもよい。さらに他の実施形態において、プロセスおよび/またはスレッドは異なる時点で異なるシャードを管理してもよい。よって、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、ノード120A~N等の複数のノードを含み得る。各ノードはシャードごとにベリファイア150A~N等のプロセスを含み得る。加えて、各ベリファイア150は、自身がそれに対してアクティブであるシャードのみの管理に参加してもよい。
図2は、一実施形態に係るシャード化された許可型の分散型台帳のシャードの管理に参加するベリファイアを示す論理図である。図2に示されているのは、いくつかの実施形態において、ノード120A~Nのうちの個々のノードと同一の(または個々のノードを表す)ノード210、220および230である。なお、説明を容易にするために3つのノードのみが示されているが、いくつかの実施形態において、本明細書に記載のシャード化された許可型の分散型台帳システムには多数のノードが含まれ当該システムに参加してもよい。加えて、図示されていないが、ノード210、220および230は、ディスパッチャ、メンバシップ代表などのようなその他のアプリケーション、モジュール、プロセスおよび/またはスレッドを含み得る。
いずれかの所定の時点で、ノードは所定のシャードに対してアクティブまたは非アクティブである可能性がある。ベリファイアからシャードまでの点線で示されているように、あるノードが所定のシャードに対してアクティブである場合、そのノードの、そのシャードに対するベリファイアプロセスは、このシャードの台帳に新たなトランザクションをアペンドするコンセンサスに参加する。たとえば、ベリファイア215Aからシャード265Aまでの点線で示されるようにノード210のベリファイア215Aがシャード265Aに対してアクティブである場合がある。同様に、ベリファイア215Nからシャード265Sまでの点線で示されるようにベリファイア215Nがシャード265Sに対してアクティブである場合がある。加えて、ノード220のベリファイア225A~Nおよびノード230のベリファイア235A~Nのうちの各種ベリファイアは、ベリファイアからシャードまでの点線で示されるように、シャード265A~Sのうちの対応するシャードに対してアクティブである場合がある。なお、図示のベリファイアとシャードとの論理的配置は、説明を容易にするためのものであって、ノード、ベリファイアおよび/またはシャードの実際の物理的配置を表しているのではないことに、注意されたい。
シャードを管理するとき、この所定のシャードに対するアクティブなベリファイアは、さまざまな方策および/またはコンセンサスプロトコルのうちのいずれかに従い得る。たとえば、一実施形態において、ノード210、220および230(および/またはノード120A~N)のベリファイアは、ビザンチン行動に対する耐性を有するように「硬化」させることができるRaftのバージョン(本明細書ではBFT Raftと呼ぶ場合がある)に基づくコンセンサスアルゴリズムに従い得る。よって、いくつかの実施形態において、ベリファイアは、以下のうちの1つ以上のような各種方策を含むコンセンサスプロトコル(またはアルゴリズム)に従い得る。
・すべてのメッセージが送信者によって署名されて認証を可能にすることが必要である。
・一連のトランザクションのインクリメンタルハッシュを含み、ノードが全トランザクションシーケンスについて合意することを確認することを可能にし、他にとって明らかにならないよう台帳の履歴を改訂することを事実上不可能にする。
・リーダーだけでなくすべての参加者に確認をブロードキャストする。
これらの方策は結果としてO(n)のメッセージの複雑さをもたらし得るものの、このようなコンセンサスプロトコルは、より多くの数のノードにスケーリングすることができ、より高いトランザクションスループットを達成することができる(たとえば異なるノードがそれぞれ異なるレートで進行することを可能にするからである)。
加えて、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、リーダー240等のリーダーベリファイアを含み得る。リーダー240は台帳にアペンドする新たなトランザクションを提案することができる。
図3は、シャード化された許可型の分散型台帳にトランザクションを追加する方法の一実施形態を示すフローチャートである。ブロック300に示されるように、リーダー240は、提案されたトランザクションをこの台帳のシャードに追加すると判断することができる。各種実施形態に従うと、リーダー240は、各種方法のうちのいずれか、たとえば、クライアントがサブミットしたトランザクションを受けることにより、提案するトランザクションを決定することができる。ブロック310のように、リーダー240は、台帳にアペンドする新たなトランザクションの提案を、提案されたトランザクションおよびサポート情報(たとえばリーダーの権限および/または真正性)を他のアクティブベリファイアに送信することにより、行うことができる。たとえば、いくつかの実施形態において、リーダーは、リーダーとしての妥当性を示す投票を表示する(または表す)情報、新たなトランザクションをアペンドする場所の前にある台帳インデックスなどを含むサポート情報を利用することができる。ブロック320のように、提案されるトランザクションを受けたベリファイアは、当該トランザクションおよびサポート情報が有効であることを確かめることができる。判断ブロック330の肯定出力が示すように、サポート情報(および/または提案されるトランザクションの他の側面)が有効である場合、ブロック340に示されるように、ベリファイアはこの事実の確認を発行することができる。(たとえばトランザクションに対するターゲットシャードに対してアクティブである、および/または提案されたトランザクションを受ける)各ベリファイアは、リーダー240からの、提案されたトランザクションおよび/またはサポート情報を独立して検証し、確認を発行することができる。いくつかの実施形態において、リーダー240はまた、(たとえば他のベリファイアと一致する)確認を公開してもよいが、その他の実施形態において提案されるトランザクションの送信は、リーダー240による確認を表し得る。
いくつかの実施形態において、判断ブロック350の肯定出力およびブロック360に示されるように、ノードは、特定数のアクティブなベリファイアから確認を受けると、提案されたトランザクションはコミットされたとみなすことができる。したがって、ノードは、定数のアクティブなベリファイアから、台帳内の所定のインデックスにおけるトランザクションについての確認を受けると、そのインデックスまでのトランザクションはコミットされたとみなしてもよい。加えて、いくつかの実施形態において、より低いインデックスにおけるすべてのトランザクションもコミットされたとみなすことができる。
いくつかの実施形態に従うと、定数は、シャード上のアクティブノードの過半数とみなすことができる。図2は1シャード当たり2つのアクティブベリファイアのみを示しているが(すなわち図示および説明を容易にするために)、その他の実施形態において、1シャード当たり奇数のベリファイアを用いて、明確な大多数に達するようにしてもよい。したがって、定数のアクティブノードが、提案されたトランザクションを、台帳内の次のトランザクションとして確認すると、(少なくとも1つのアクティブベリファイアが、詐欺である決定的なプルーフを提供する、矛盾する確認に署名しない限り)別の定数がそのインデックスにおける異なるトランザクションを確認することは不可能となり得る。
いくつかの実施形態において、現在のリーダーが不正をはたらいた場合または反応しなくなった場合、定数のアクティブベリファイアは、リーダーを辞任させて新たなリーダーを選ぶことができる。定数のベリファイアによって辞任させられると、元のリーダーの任期が終了したとみなされ、別の、新たなリーダーの任期が始まる。
シャードに対するトランザクションの追加に関連するメッセージの複雑さは、システム内のノードの総数に応じて決まるのではなく、そのシャードに対するアクティブノードの数に応じて決まると考えることができる。いくつかの実施形態に従うと、これは、複数のシャードが並列に動作することを可能にし、さらに、各シャードが、すべてのノードによって管理される1つのシャードのスループットよりも高いスループットを実現できるようにする。
ディスパッチャ
先に述べたように、各ノードは、クライアントからアクティブベリファイアにメッセージを導く役割を担うことができる、ディスパッチャ130A~N等の1つ以上のディスパッチャプロセスを有し得る。図4は、受信メッセージをディスパッチする方法の一実施形態を示すフローチャートである。ブロック400のように、ディスパッチャ130は、ターゲットシャードを示すクライアントからのメッセージを受信することができる。いくつかの実施形態において、ディスパッチャ130A~Nは、クライアント180A~Mからトランザクション要求を受けることができる。クライアントからの要求は、ターゲットシャードと、コマンドおよび/またはトランザクション(たとえばターゲットシャードに追加/適用する、提案されたトランザクション)とを、指定することができる。ディスパッチャは、ターゲットシャードに対してアクティブであるベリファイア150等のプロセスに対し、受信した要求を転送する役割を担うことができる。判断ブロック410の肯定出力が示すように、ディスパッチャと同じノード(たとえばディスパッチャが実行しているノード)上のベリファイアがターゲットシャードに対してアクティブである(たとえばターゲットシャードを管理する役割を担う)場合、ブロック420のように、ディスパッチャはこの要求をディスパッチャ自身のノード上のプロセス(たとえばベリファイア)に転送することができる。
判断ブロック410の否定出力が示すように、ディスパッチャと同じノード上に、ターゲットシャードに対してアクティブであるベリファイアがない場合、ブロック430のように、ディスパッチャは、ターゲットシャードに対してアクティブである別のノード(すなわちディスパッチャ自身のノードから離れている)上のプロセス(たとえばベリファイア)に要求を送ることができる。いくつかの実施形態において、アクティブなベリファイアへのすべての要求の転送においてディスパッチャが完璧に正確である必要はない場合がある。それでもなお、できるかぎり頻繁にそうすることによって不必要な転送は避けることができる。
いくつかの実施形態において、ディスパッチャは、ターゲットシャードに対してアクティブであるプロセスの識別をサポートするために状態情報を管理することができる。いくつかの実施形態において、ディスパッチャが管理するこの状態情報は、少なくとも、所定のシャードを管理するベリファイア等のプロセスのセット、そのシャードに対して現在アクティブであるプロセスのサブセット、および/またはそのシャードを管理するディスパッチャ自身のノード上のプロセスのアイデンティティを、含み得る。各種実施形態に従うと、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、各種やり方のうちのいずれかで、プロセス、ベリファイアおよび/またはシャードを識別することができる。たとえば、一実施形態において、固有の識別子を各プロセス、ベリファイア、シャードなどに対応付けてもよく、これらの識別子(名称、数値ID、英数字IDなど)を状態情報内で利用してもよい。その他の実施形態において、ポインタ(たとえばプログラマティックメモリポインタ)を用いて、プロセス、ベリファイア、シャードなどを識別する、その位置を求める、および/またはそれと通信することができる。
ディスパッチャは、ターゲットシャードに対してアクティブであるローカルプロセスがある場合は、状態情報を用いて要求をローカルに転送することができる。ターゲットシャードに対してアクティブであるローカルプロセスがない場合、ディスパッチャは、状態情報を用いて、ターゲットシャードに対してアクティブである遠隔プロセスを識別することができる。いくつかの実施形態において状態情報はディスパッチャ自身のノード上でローカルに管理することができ、他の実施形態においてディスパッチャは遠隔の場所に格納されている(がアクセス可能である)状態情報に依拠することができる。各種実施形態に従うと、アクティブなベリファイアおよびシャードに関する状態情報は、メンバシップサービスからのディレクティブに応じて更新することができる。
シャード割当
いくつかの実施形態において、各シャードに対するアクティブプロセスは、初期化時間において判断することができ、システムの寿命にわたってスタティックなままであってもよい。しかしながら、いくつかの実施形態において、スタティックプロセス割当の使用には、以下のようないくつかの短所がある場合がある。
・シャードの追加を認めない。
・ノードの追加を認めない。
・シャードに対するアクティブな参加者の交替を認めない(たとえば役目を果たさなくなるまたは不正をはたらいていることが観察される場合)。
・常に所定のシャードに対して同一ノードセットがアクティブなままであり、所定のシャードを管理する不正ノード間の連携が発生する可能性を許す。
他の実施形態において、ノード(および/またはベリファイア)をシャードに対して動的に割り当てることができる。
各種実施形態において、いつプロセスがそのシャードに対してアクティブになるかを判断するためにさまざまな仕組みを用いることができる。たとえば、いくつかの実施形態において、ベリファイア等のプロセスは、シャードに対するアクティベーションの固定されたスケジュールに従うことができる。たとえば、所定のシャードに対してアクティブであるベリファイアは、そのシャードの台帳が特定の長さに達した場合/とき、そのシャードに対して非アクティブになる場合がある。しかしながら、いくつかの実施形態において、非アクティブなプロセス/ベリファイアは、条件(台帳が特定の長さに達する等)がそれを要求しないときは直ちにアクティブになることができない場合がある。なぜなら、これらの条件に気が付かない場合があるからである。代わりに、いくつかの実施形態において、プロセス/ベリファイアが「起こされ」、所定のシャードに対して現時点でアクティブであることを知らされてもよい。いくつかの実施形態において、起こすプロセスは、そのシャードに対してまもなく非アクティブになるプロセス等の別のアクティブプロセスが実行してもよい。他の実施形態において、ディスパッチャに、その状態情報を更新させプロセスを目覚めさせるおよび/または現時点でアクティブであることをプロセスに通知することができる関連イベント(しきい値長さに達するシャード等)を通知してもよい。また、新たにアクティブになったプロセスは、シャードがしきい値長さ(たとえばプロセスがアクティブになることをトリガするしきい値)に達したことを知っているシャードに対してアクティブである別のプロセスからメッセージを受信することによって起こされてもよい。さらに他の実施形態において、メンバシップサービス170の参加者により、プロセスが、シャードに対してアクティブになったことを知らされてもよい。
固定されたスケジュールで(たとえば台帳が特定数のトランザクションに達したときに)プロセス/ベリファイアをアクティブにする代わりに、いくつかの実施形態では、プロセス/ベリファイアが、以下の情報、すなわち
・シャードに対する負荷に関する情報、
・そのシャードに対してアクティブであるプロセスの可用性および反応性に関する情報、
・そのシャードに対してアクティブであるプロセスの(疑われる)不正に関する情報、および
・サービスレベル要件、制約などのようなポリシー入力に関する情報、
のうちのいずれかまたはすべてを含む各種情報の組み合わせの影響を受ける可能性がある定期的な再割り当てに基づいてアクティブ/非アクティブになってもよい。
いくつかの実施形態において、参加者(たとえばノード、プロセス、ベリファイアなど)がシャード割当を制御できないことは重要であろう。そうでなければ、ノードのグループが共謀して、シャード(このシャード内の他のすべてのアクティブ参加者に得票数で勝つことができる)への十分なアクティブ参加を実現することにより、(たとえば私利的におよび/または不法目的のために)そのシャードを制御する能力を有効に獲得することができるかもしれない。これが理由で、いくつかの実施形態において、シャード割当判断は、場合によっては追加情報とともに、参加者が制御できないランダム(たとえば疑似ランダム)シーケンスの決定的関数として実現されるポリシーにより、推進されてもよい。
シャード割当判断に対してランダム情報を使用することにより、敵(たとえば不正をはたらくノード)が、1つ以上のシャードの支配権を獲得することを可能にし得る選択を一貫して行うことを防止することができ、責任追跡性を提供することもできる。たとえば、決定論的ポリシーおよびランダムネスソースによって指図された選択から逸脱しようとする試みを検出することができ(すなわち直ちにまたは事後に)、不正ノードの責任追跡性を保つことができる。
一般的に、ランダムネスソース、たとえば暗号ランダムネスソースは、決定論的シャード割当ポリシーに対し、各種のやり方のうちのいずれかで、利用することができる。各種実施形態に従うと、いくつかの例は以下を含む。
・周期的にシャードをランダムに選択し、そのシャードに対してアクティブな1つのプロセスを選択し、これを非アクティブにした後で、同じノードのプロセスがそれに対して非アクティブであるシャードをランダムに選択し、これをアクティブにするポリシー、
・繰り返し2つのシャードをランダムに選択し、その後、異なるシャードに対してアクティブであるノードのペアを選択し、これらの役割を入れ替えるポリシー、および/または
・所望のどのようなポリシーにも適合する新たなシステムワイドの割当を周期的に生成するポリシー(たとえば各シャードが十分なアクティブプロセスを有することおよびノード全体に負荷が均等に平衡であることを保証する)。
上記ポリシーの第1の例は、それに対して所定のノードがアクティブであるシャードの数を一定に保つ一方で、アクティブなシャード割当において何らかの転換(または「解約(churn)」)を生じさせることができる。しかしながら、いくつかの実施形態において、これは、進歩し各シャードに対する特定数のビザンチンノードに耐えるのに十分なアクティブノードを各シャードが常に有することを保証しないかもしれない。上記ポリシーの第2の例は、各ノードに対する負荷および1シャード当たりのアクティブプロセスの数を保存することができる。
一般的に、各種実施形態に従うと、特定の目的に最も有効であるポリシーの選択に影響を与え得るトレードオフ、課題および/または制約が存在し得る。たとえば、再割り当てが十分に頻繁でなければ、所定のシャードに参加するノードは連携を形成する機会を有することができ、そのシャードの支配権を得ようとすることができる。一方、いくつかの実施形態において、シャードに対する再割当プロセスは、さまざまなオーバヘッドを伴い得る。たとえば、いくつかの実施形態において、プロセスは、あるシャードに対して非アクティブである場合、最近のトランザクションに関する最新情報を持つことはなく、新たなトランザクションのアペンドに参加できるようになる前に通信してこの情報を得る必要があるかもしれない。したがって、プロセスを過剰に頻繁に再割り当てすることは望ましくない場合がある。
シャード再割当の数および頻度等のパラメータは実施形態によって異なり得る。たとえば、一実施形態において、このようなパラメータは初期化時間パラメータによって決定することができ、他の実施形態において、このようなパラメータは、シャードに対する観察された負荷(たとえばトランザクションの数)および/または責任追跡性情報、たとえば、シャードに対するしきい値数のアクティブ参加者が、別のアクティブ参加者が反応がないまたは不正をはたらいたことをいつ報告するか等の、各種入力に基づいて、変化し得る。
まもなくアクティブになるプロセスの準備
より多くのトランザクションをシャードに追加するためのコンセンサスに参加するために、ノード上のアクティブプロセスは、そのシャードに対する以前のトランザクションの最新情報を持っていなければならないであろう。これは、このノードが、以前のすべてのトランザクションの文脈においてトランザクションの妥当性を確認できるようにするために、必要であろう。加えて、いくつかの実施形態において、アクティブプロセスは、新たなトランザクションを構成するときに(たとえば台帳の耐タンパー性を保証するのに役立つようにするために)最新トランザクションの暗号ハッシュを使用できるよう、最新でなければならないであろう。プロセスが過去に非アクティブであった場合、このプロセスは、シャード(それに対してプロセスが現在アクティブである)に対するいくつかまたはすべてのトランザクションを欠いている場合がある。
各種実施形態において、参加者(たとえばベリファイア)は、いくつかの方策のうちのいずれかに従い、最新になることができる。たとえば、いくつかの実施形態において、コンセンサスアルゴリズム(たとえばBFT Raftコンセンサスアルゴリズム等)は、後方の参加者が遥か前方の他の参加者に「追い着く」ためのプロビジョンを有し得る。しかしながら、とりわけ、ノードがあるシャードに対して長時間非アクティブであった場合、(追い着こうとしながら)参加者が必要なすべてのトランザクションを取得している間に、相当な遅延が生じる可能性がある。
これに代えて、他の実施形態において、ベリファイ可能なシャード「スナップショット」がさまざまなポイントにおけるシャードの状態を要約することにより、新たにアクティブになったベリファイアがそのシャードに対するすべてのトランザクションをリプレイしなくてもスナップショットを採用することを場合によっては可能にする。なぜなら、これはシャード上で最後のアクティブなものであるからである(または、ベリファイアが過去にこのシャードについてアクティブになったことがない場合はシャードに対するすべてのトランザクション)。一実施形態において、参加者は、スナップショットの妥当性確認および署名を行い、十分な数の参加者がスナップショットの妥当性確認および署名を行った場合は、これらのうちの少なくとも1つが正当であることを保証できる。
図5は、ベリファイアがアクティブになったときにシャードスナップショットを利用する方法の一実施形態を示すフローチャートである。ブロック500のように、ベリファイアが所定のシャードに対してアクティブになったときに、ブロック510の否定出力が示すようにベリファイアがシャードに対して最新でない場合(通常はそうであろう)、ベリファイアはこの所定のシャードに対してスナップショットを利用できるか否かを判断することができる。たとえば、スナップショットが所定のシャードに対して生成される前にベリファイアはアクティブになっているので、利用できるスナップショットはない場合がある。ブロック520の否定出力が示すようにシャードに対してスナップショットを利用できない場合、ブロック560のようにベリファイアはシャード台帳に対して前のトランザクションをリプレイすることができる。各種実施形態に従うと、シャード台帳に対してトランザクションをリプレイするとき、ベリファイアは、各種のやり方のうちのいずれかで、たとえば、必要とする、最近アクティブになったベリファイアまたはストレージサービス190からの追加のトランザクションデータを要求することによって、トランザクションを取得することができる。他の実施形態において、トランザクションまたはスナップショットデータは、その他のベリファイアおよび/または参加者(ストレージサービスの参加者等)が、ベリファイアがアクティブになった(またはアクティブになるであろう)ことを観察したことに応じて、事前に送信してもよい。
代わりに、判断ブロック520の肯定出力が示すように利用できるスナップショットがある場合、ブロック530のように、ベリファイアはシャードに対するこのスナップショットを取得し認証することができる。各種実施形態に従うと、ベリファイアは、各種のやり方のうちのいずれかで、スナップショットを取得する、またはスナップショットにアクセスすることができる。一実施形態において、スナップショット(またはスナップショットのコピー)は、ベリファイア自身のノードに格納することができる。他の実施形態において、ベリファイアは、遠隔ノードからの、またはストレージデバイス190からのスナップショットを要求および/またはスナップショットにアクセスするように構成し得る。
加えて、いくつかの実施形態に従うと、ベリファイアは、たとえば少なくとも特定数の他の参加者がスナップショットの妥当性を確認しスナップショットに署名したことをチェックすることにより、スナップショットを認証することができる。いくつかの実施形態において、「エビデンス」をトランザクションまたはスナップショットデータとともに格納することにより、受け手がその正確さをベリファイすることを可能にしてもよい。このようなエビデンスは、トランザクションまたはスナップショットが有効であることを受信ベリファイアがチェックできるようにする、トランザクションもしくはスナップショット、暗号ハッシュおよび/またはマークルプルーフ(Merkle proof)に対して投票したベリファイアの署名を含み得る。そうすると、ブロック540のように、ベリファイアは、スナップショットからトランザクションを適用することができる。
判断ブロック550の肯定出力が示すように、スナップショットに含まれないシャードに対するその他の(追加の)トランザクションがある場合、ブロック560のように、ベリファイアはシャードからのこれらのトランザクションをリプレイすることができる。たとえば、追加のトランザクションは、ベリファイアがスナップショットを取得し使用している間にシャードにコミットされているであろう。
先に述べたように、スナップショットという方策は、追い着くのに必要な時間を短縮するかもしれないが、それを完全になくすことはできない。なぜなら、スナップショットの取得および妥当性確認には時間がかかる可能性があり、新たなトランザクションの追加への参加を開始するのに十分ベリファイアが追いつく前に、スナップショット後に適用するトランザクションが存在し得るからである。したがって、いくつかの実施形態において、シャード化された許可型の分散型台帳を実現するように構成されたシステムは、近い将来シャードに対してアクティブになるであろうという事前の警告をプロセス/ベリファイアに与えるように、構成することができる。よって、いくつかの実施形態において、あるプロセスは、所定のシャードに対してアクティブになることを要求される前に、追い着き始めることができるであろう。たとえば、ベリファイアは、最近アクティブになったベリファイアから、またはストレージデバイス190から、必要な追加トランザクションデータを要求することができる
いくつかの実施形態において、将来の参加者が遠過ぎることが予めわかっている場合、悪意のある連携が形成される機会が発生する可能性がある。一方、与えられる通知が不十分である場合、参加を開始するのに必要なデータを新たにアクティブになったノード/ベリファイアが取得する間に(たとえば追い着く間に)遅延が発生している可能性がある。一般的に、与えられる通知の量は実施形態によって異なり得る。各種実施形態に従うと、たとえば、与えられる通知の量は、初期化時間パラメータに基づく、および/または観察(たとえば、アクティブな参加の開始前にノードが追い着くために要する長さ等)に基づいて動的に適合化/調整される可能性がある。
ストレージ
従来のモノリシックなブロックチェーンシステムにおいて、すべての参加者は、すべてのトランザクションおよび関連するメタデータ(たとえばブロック、ブロックヘッダ、スナップショットなど)を受信し、その妥当性を確認し、格納することができる。いくつかの実施形態において、シャード化された許可型の分散型台帳システムでは、アクティブでないベリファイアはトランザクションの最新記録を保持していない可能性があり、そうすると、先に述べたように、これらのベリファイアが再びアクティブになったときには、追い着く間に遅延がある可能性がある。他の実施形態において、非アクティブノードおよび/またはベリファイアは、コンセンサスの完了後に(たとえば、トランザクションがシャードにコミットされたときに)アクティブノードにトランザクションをブロードキャストさせることにより、最新状態を保つことができる。このような実施形態において、アクティブノードは、コンセンサスプロセスの一部として他のアクティブ参加者から受けた署名された(たとえば認証された)メッセージを格納することができる。
加えて、いくつかの実施形態に従うと、アクティブでないベリファイアにブロードキャストされるトランザクションは、その時点でアクティブであった参加者間でコンセンサスが得られたというプルーフを伴い得る。よって、いくつかの実施形態において、すべてのノードはすべてのシャードの(少なくとも比較的)最新の情報を保持している可能性があり、一方で、コンセンサスに関連する通信を、全参加者よりも少ない参加者を含み得るアクティブな参加者のグループに限定する。しかしながら、アクティブでないベリファイアに対して事前にブロードキャストすると、結果としてストレージおよび処理オーバヘッドが追加され、たとえばすべてのノードがすべてのシャードに対するすべてのトランザクションを格納しそれに対して少なくとも何等かの処理を実行していることになるであろう。
アクティブでないベリファイアへのブロードキャストによって生じる追加のオーバヘッドの量を減じるために、それに対して所定のノードがアクティブになる可能性があるシャードのセットは制限されてもよい。たとえば、あるノードは、特定のシャードセットの外部のシャードには決して参加せずしたがってそれらのトランザクション(たとえば特定のセットに含まれないシャードに対するトランザクション)を格納および処理する必要は決してないであろう。いくつかの実施形態において、ノードを特定のシャードに限定することは、多数のノードおよび多数のシャードを有する大型ネットワークにおいては望ましいであろう。そうすると、所定のシャードに参加するために利用できる十分なノードがあり、共謀の試みを打ち砕く通常の再割り当てを可能にする。
加えて、いくつかの実施形態において、個々のノードに、専らシャードデータの格納および(たとえばノードがシャードに追い着くことを容易にするスナップショットに対する)要求への応答という役割を担わせるのではなく、ストレージデバイス190等の別個のストレージサービスを用いてもよい。シャードを管理するノードと同様に、ストレージサービスへの参加者が、許可されてもよく、利用できることおよび/または格納することを要請されていたデータを提供できることについて、責任追跡性を保つことができる。
いくつかの実施形態において、非アクティブになったシャードベリファイアは、先ず、シャードに関するデータ(たとえばトランザクション、コンセンサス、および/またはその他のデータ)がストレージサービス109において十分利用できるようにされることを保証することが求められる可能性がある。たとえば、ベリファイアは、ストレージサービス190の1つ以上のストレージノードにこのデータを送信するように構成することができる。加えて、いくつかの実施形態において、ベリファイアはまた、このデータが格納されたという署名付きの確認を受信する(および/または認証する)ように構成することができる。いくつかの実施形態において、(たとえば別個のストレージサービス190を用いて)ストレージを処理から切り離すことは、データを十分な回数レプリケートすることにより利用できるようになる見込みを高める一方で、過剰な要求(たとえばすべての参加者にすべてのデータを格納させる等)を場合によっては避けることを可能にする。
各種実施形態に従うと、シャード化された許可型の分散型台帳システムのその他の構成可能な側面と同様に、ストレージサービスが格納すべきデータのコピーの数等のパラメータは、初期化時間パラメータによって決定されてもよく、または、参加者からおよび/または認可されたアドミニストレータからの入力によって通知された決定論的ポリシーによって駆動される、動的なパラメータであってもよい。これらおよびその他の入力を収集し使用する1つのやり方は、以下で説明する特別の「コーディネーションシャード」を介するやり方であってもよい。
メンバシップおよび構成サービス
先に述べたように、各種実施形態に従うと、シャード化された許可型の分散型台帳システムは、さまざまな構成および/または動作に関する判断を行うように構成することができる。この判断は、たとえば、所定の時点でどのシャードに対しどのノードがアクティブであるかに関する、(たとえばストレージサービスが)格納すべき各シャードのデータのコピーの数に関する、および/または参加者がシャードに対してアクティブになることを要求される前に受信すべき事前通知の量等に関する判断である。各種シナリオおよび実施形態においてその他多くの可能な種類の判断が関連し得る。いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、このような判断を行うように構成されたメンバシップサービス170を含み得る。いくつかの実施形態において、メンバシップサービス170は、メンバシップサービス、アクティブノードをシャードに割り当てるためのサービス、および/または構成サービス等の、複数のサービスに分解することができる。よって、異なる実施形態に従うと、メンバシップサービス170は、本明細書では1つのサービスとして記載されているが、複数の異なる(が場合によっては相互に関連がある)サービスを含み得るおよび/または表し得る。
ノードは、さまざまなやり方でメンバシップサービス170とインターフェイスすることができる。たとえば、一実施形態において、各ノードは、メンバシップサービス170に参加するように構成されディスパッチャおよび/またはベリファイア等の、そのノードにおける他のプロセスと通信し得る、特別の「メンバシップ代表」プロセス140を含み得る。いくつかの実施形態において、メンバシップサービス170は、(たとえばノードから分離された)別個のモジュールを表していなくてもよく、代わりに、メンバシップサービス170は、複数のノードの複数のメンバシップ代表140が集合的に提供するサービスを表していてもよい。
各種実施形態に従うと、一般的に、各種機構のうちのいずれかを利用して、メンバシップサービスを実現する、メンバシップサービスと通信する、および/またはメンバシップサービスに参加することができる。たとえば、本明細書では独立したモジュール/として示され説明されているが、一実施形態ではノードを代表するディスパッチャおよびメンバシップの役割を組み合わせて1つのプロセスにしてもよい。
各種実施形態に従うと、メンバシップサービス170は、メンバシップ、どのノードがどのシャードに対してアクティブかについての割り当て、および/またはその他のシステム構成変更に関する、さまざまな判断を行うように構成することができる。メンバシップ代表は、これらの判断に基づいて、指令をディスパッチャおよび/またはベリファイア等のその他の参加者に伝えることができる。たとえば、いくつかの実施形態において、メンバシップ代表140は、指令を、関連する指令をベリファイアに転送するように構成することができるディスパッチャに伝えるように、構成することができる。
いくつかの実施形態において、メンバシップサービスの重要な要件は、正当なすべての参加者が同じ判断シーケンス(したがってその結果生じる指令)を観察することであろう。たとえば、一実施形態において、決定論的スケジュール(たとえば初期化時間に固定)に従ってもよい。しかしながら、このような固定された決定論的スケジュールは、不正をはたらくまたは反応しなくなったノード等の、特定のイベントに対しては反応できないかもしれない。別の実施形態において、反応しないこと、不正行為、構成変更などの報告のような入力およびイベントに基づいて判断を行う決定論的ポリシーを用いることができる。
いくつかの実施形態において、メンバシップサービス170はコーディネーションシャードを含み得る。これは、システム内の他のシャードのための技術と同様の技術を用いて実現し得る。図6は、一実施形態に係るメンバシップサービスをコーディネーションシャードとともにを示す論理図である。たとえば、メンバシップサービス170はコーディネーションシャード610を含み得る。コーディネーションシャード610は、メンバシップ/シャード情報630等の関連する入力およびイベントを記録する(たとえばそうすることによってすべて正当な参加者が入力およびイベントの同じビューを持つようにする)ことにより、コーディネーションシャード610の参加者が、たとえば場合によってはこれらの入力およびイベントを入力として採用する決定論的ポリシーに基づいて、メンバシップディレクティブ620を伝えられるように、構成し得る。
一例として、各シャードに対する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つ以上の投票が現在アクティブであるという表示を含んでいてもよい。
いくつかの実施形態において、追加情報がたとえばトランザクションを介してコーディネーションシャード610にサブミットされてもよい。このような追加情報は、限定されないが、以下を含む。
・他のノードの挙動に関する観察。これは、反応性がないこと、明らかにプロトコルに違反するように実施していること、および/または、直接的に不正行為を実証する訳ではないが注目すべきやり方で実施していることを含む。
・シャードの負荷(たとえば直近のTのトランザクションにかかる時間)に関する観察。
・状態情報のサマリー(たとえば、場合によっては、簡潔で偽造不可能なサマリー)。これはたとえば、シャードの特定のインデックスまでのトランザクションの正味効果、またはメンバシップサービスもしくはその他のサービスから受けた指令のストリームの場合と同様のものである。これらは以下でより詳細に説明する「エンタングルメント」の例とみなし得る。
・パラメータを調整するための、特別に認証されたパーティからの指令。たとえば、コンソーシアムの統治委員会の5メンバーのうちの3メンバーが署名したトランザクションであり、これは、そのシャードに対するトランザクションがストレージサービスによって少なくとも3回レプリケートされねばならないことを示す。
・システムの参加者を追加または解任するための、特別に認証されたパーティからの指令。
・不正をはたらいたと思われる参加者に対してペナルティを課すための、特別に認証されたパーティからの指令(おそらく一部はコーディネーションシャードに以前含まれていた観察に基づく)。
いくつかの実施形態において、どのような間隔でどのシャードに対してどの参加者がアクティブであるか等の情報を含む、所定の時点におけるシステムの現在の構成(たとえばある参加者は、シャードに対して、そのシャードに対するトランザクションNからトランザクションN+Tまで、アクティブであり得る)は、コーディネーションシャードの台帳における情報の、決定論的関数であってもよく、またはこの情報に基づいていてもよい。よって、特定数の正当なノードがコーディネーションシャードの台帳の状態に同意する場合/とき、これらはシステムの構成について得られた共通のビューを有するとみなすことができる。
コーディネーションシャード610に参加し得るプロセスおよび/またはプロセスの数は、実施形態によって異なり得る。一実施形態において、たとえば構成変更が十分にまれである場合に、すべてのベリファイアおよびディスパッチャが参加してもよい。その他の実施形態において各ノードのディスパッチャが参加してもよく、その他の実施形態においてディスパッチャのアクティブなサブセットのみが参加してもよい。いくつかの実施形態に従うと、アクティブな割り当て、またはコーディネーションシャードに対してどのプロセスがアクティブであり得るかは、通常のシャードに対して実現されるやり方と同様に、判断されてもよい。一般的に、コーディネーションシャードへの参加のためにプロセスを割り当てる(プロセスがアクティブになる)やり方は、実施形態によって異なり得るものであり、変更の頻度、必要な反応性の程度、脅威のレベルなどといったさまざまな要素に応じて決まり得る。
いくつかの実施形態において、コーディネーションシャード610に対してコミットされたトランザクションは、すべてのメンバシップ代表(および/またはディスパッチャ)にブロードキャストされねばならないであろう。たとえば、利用できるすべての正当なノードが、たとえばコーディネーションシャードに維持されているかもしれない、最新のメンバシップおよび構成情報を有していることを保証することが必要であろう。加えて、いくつかの実施形態において、システム全体のさまざまな側面の制御におけるコーディネーションシャードの潜在的な重要性を考慮すると、通常のシャード(たとえばシャード265)のアクティブな参加者よりも多数のコーディネーションシャード610のアクティブな参加者を有することが望ましいであろう。他の構成パラメータと同様、コーディネーションシャードのアクティブな参加者の数および/またはコーディネーションシャードにサブミットされるトランザクションの頻度を含むトレードオフは、実施形態によって異なり得る。たとえば、コーディネーションシャードに関連する構成パラメータは、初期化時に固定されてもよく、動的に適合させ/調整してもよい(たとえばコーディネーションシャードに記録される入力およびイベントに対して作用する決定論的ポリシーを介して)。
加えて、いくつかの実施形態において、コーディネーションシャードの役割は複数の特別シャードによって実現されてもよい。たとえば、ある特別シャードはどのエンティティがシステムへの参加を認可されるかを判断してもよく、別の特別シャードはどのノードがどのシャードに対してアクティブかを判断してもよく、別の特別シャードはアクティブメンバシップの変更が発生する前にシャードにコミットされるべきトランザクションの数等の構成パラメータを管理する。各種実施形態に従うと、一般的にコーディネーションシャードはさまざまなやり方のうちのいずれかで実現し得る。
エンタングルメント
本明細書に記載のエンタングルメントは、シャード化された許可型の分散型台帳システムをより腐敗しにくくする技術とみなすことができる。たとえば、エンタングルメントは、ある場所からの情報の簡潔で偽造不可能なサマリーを、別の場所に含めることを含み得る。たとえば、台帳に記録されるときにトランザクション(またはトランザクションのブロック)に含まれる暗号ハッシュは、エンタングルメントの1つの基本形態とみなすことができる。暗号ハッシュは、台帳上の1ブロックまたはトランザクションの内容の変更を、続くすべてのブロックまたはトランザクションも変更することなく、行うことを、不可能にする(たとえば、各トランザクションは前のトランザクションの暗号ハッシュに基づいている可能性があるためである)。
各種実施形態に従うと、エンタングルメントはこの基本形態を超える他のさまざまなやり方で使用することができる。たとえば、一実施形態において、あるシャードにサブミットされたトランザクションは、別のシャードの現在または最近の状態(たとえば状態情報)の暗号ハッシュを含むことにより、たとえある連携が第2のシャードの履歴を改訂できるようにするのに十分に第2のシャードを支配しようとしても、これは第1のシャードに含まれるハッシュによって第2のシャードはもはや正確に要約されないことを立証することなどにより、検出可能である(および/または照明可能である)ことを、場合によっては保証することができる。その軌跡をカバーするために、あるシャードを改訂しようと試みる連携は、改定すべきデータのサマリーを記録した1つ以上の他のシャードを支配し改訂することも必要であろう。複数の他のシャードに対する通常のエンタングルメントを保証することにより、たとえシャードの支配に成功する連携であっても、シャードの内容を検出されずに改訂することは極めて困難である。
よって、いくつかの実施形態において、ベリファイアが、シャードの現在の状態の暗号ハッシュを計算、判断、または取得するように構成されてもよく、さらにトランザクションを別のシャードにサブミットするときにその暗号ハッシュを含むように構成されてもよい。
別の例において、一実施形態では、コーディネーションシャード(たとえばメンバシップサービスを実現するために使用されるシャード)にサブミットされるトランザクションは、追加情報を、たとえば暗号ハッシュまたは別のシャードの状態の表現のマークルルート(Merkle root)を、含み得る。このようなエンタングルメントは、複数の通常シャード間のエンタングルメントと同様の利点、および/または追加の利点(たとえば、コーディネーションシャードが、システム内におけるその重要な役割のために、より大きな定数サイズ、精査などを有する場合)を有するとみなし得る。
さらに別の例において、メンバシップサービス170がその他の参加者(ディスパッチャ130および/またはベリファイア150など)に送る指令のストリームは、場合によっては通常のシャードに対する各トランザクションとともに含まれるハッシュと同様であるかもしれない、累積ハッシュ(たとえば指令のストリームにおけるすべての情報のハッシュ)を含み得る。したがって、これらのハッシュは、場合によってはこの指令のストリームが腐敗させられることなく受信されたエビデンスとして、メンバシップサービス170に報告され(たとえばコーディネーションシャード610に)記録されてもよい。いくつかの実施形態において、報告されたハッシュにおけるいずれのミスマッチも、直ちに問題を提起し得るものであり、不正をはたらいている可能性がある参加者を特定することができる。いくつかの実施形態に従うと、逆に、参加者のうちの一部、大部分、またはすべてから受けた、マッチするハッシュは、メンバシップサービス170が発行した指令について、不一致または曖昧さがないという信頼を高めると考えられる。
いくつかの実施形態において、エンタングルメントは定期的に必要となり得るものであり、実現されるエンタングルメントの正確な性質は、コーディネーションシャード610が実現するポリシーによって推進することができる。先に述べたように、ある参加者がエンタングルメント要件に従わないことにより、フラグが立てられる、調査が引き起こされる、および/または疑わしい参加者によるさらなる参加などが防止される。加えて、いくつかの実施形態に従うと、メンバシップサービス指令のサマリーは、複数のパーティを必要とし得る。たとえば、一実施形態において、指令はディスパッチャ130に送信されてもよく、関連する指令はディスパッチャ130からローカルベリファイア150に転送されてもよく、これらのベリファイア150はコーディネーションシャード610にトランザクションを(直接または間接的に)サブミットすることにより、指令が腐敗させられていない(たとえばトランジットにおいておよび/または中間参加者のいずれかによって)ことを場合によっては証明する。いくつかの実施形態において、シャードごとのサマリーをメンバシップサービス170およびベリファイア150が計算することで、ベリファイア150が自身のシャードに対する指令しか受けないかもしれない場合でも、ベリファイアの状態の妥当性確認が可能である。
責任追跡性および信用
先に述べたように、シャード化された許可型の分散型台帳への参加は、許可のみによるものであってもよい。したがって、許可付与は、参加者が不正をはたらいた場合に備えて参加者の責任追跡性を保つ機会を生み出すことができる。たとえば、いくつかの実施形態において、そのシャードに対してアクティブにされていない不正ノードがどうしてもシャードのコンセンサスに投票しようと試みた場合、これは、不正行為を証明できるかもしれない他のノードによって検出される場合がある(たとえば、コンセンサスラウンドの署名された投票を、送信者がそのラウンドのシャードに対してアクティブにされなかったというプルーフとともに、示すことによって)。結果として、システムにより、および/または既存の機構により、法的ペナルティ、訴訟などのペナルティが自動的に課される場合がある。よって、ノードは、プロトコル(たとえばシステムが実現するコンセンサスプロトコル)に従う、または、特に証明できるのであれば、検出できる何らかの不正行為を少なくとも回避する、強い動機を有し得る。
いくつかの実施形態において、アクティブな正当シャード参加者は、たとえば、アクティブである振りをする腐敗した非アクティブ参加者からのメッセージを正当参加者が無視できるよう、他のどのシャード参加者がアクティブであるかを見分けることができなければならない。たとえば、いくつかの実施形態において、正当ノードのアクティブベリファイアは、少なくとも、所定のトランザクションインデックスにおいてアクティブであるノードのサブセットがわかっているであろう。そうでなければ、腐敗したノードのセットが、参加することを認められることなく、シャードのコンセンサスプロトコルにおける定数を形成するのに足りる投票を送ることにより、シャードを乗っ取る可能性がある。先に述べたように、メンバシップサービス170は、限定されないが特別なコーディネーションシャード610、決定論的スケジュール、またはその他の機構を含む、各種実施形態に係るさまざまなやり方で、実現することができる。さらに、いくつかの実施形態において、メンバシップサービス170は、すべての正当なメンバシップ代表が同じ指令シーケンスを対応するディスパッチャ130および/またはベリファイア150に伝えることを保証するように、構成することができる。
たとえば、ベリファイアv1が、インデックス1,500におけるトランザクションについて、ベリファイアv2から投票を受けた場合、ベリファイアv1は、ベリファイアv2がそのインデックスにおいてアクティブであることを示す命令をメンバシップサービスが発行したと判断した後に、インデックス1,500におけるベリファイアv2の投票をカウントすることができる。いくつかの実施形態に従うと、ベリファイアv1がそのような命令を入手できない場合、ベリファイアv1は、ベリファイアv2がそのインデックスにおいてアクティブであるという確認を受けるまで、その投票のカウントを延期するように、構成されてもよい。
いくつかの実施形態において、ベリファイアv2は、アクティブであることを求めるその要求を支持する「エビデンス」を提供することが求められる場合がある。たとえば、メンバシップサービス指令は「命令シーケンス番号」を含むことができ、ベリファイアv2はその投票とともに、1,500を含む間隔に対してそれをアクティブにする指令のシーケンス番号を含み得る。その後ベリファイアv1がメンバシップサービス命令をそのシーケンス番号とともに受けたとき、ベリファイアv1は、この指令が実際ベリファイアv2をインデックス1,500を含む間隔に対してアクティブにすることを確認することができ、そうでなければ、ベリファイアv1は、その投票とともに無効なエビデンスを提供することによって、ベリファイアv2が不正をはたらいたという警告を発することができる。いくつかの実施形態において、各投票とともに指令のシーケンス番号を含めることは、無効な証拠がそのように特定される前の時間の問題にすぎないことを保証し、よって、そのような不正行為を阻止することができる。
他の実施形態に係るより精巧な仕組みは、指定された指令を待つことなくベリファイアv1が要求を確認できるようにし得るより多くのエビデンスを含み得る。たとえば、一実施形態において、このエビデンスは、メンバシップサービス170が下した判断のシーケンスが示唆する状態が、トランザクションインデックス1,500におけるそのシャードに対してベリファイアv2がアクティブであることを反映することを示す、マークルプルーフを含み得る。これは、ベリファイアv1が、そのプルーフをチェックすることを可能にするとともに、メンバシップサービスからの追加の指令を待つことなくベリファイアv2の要求を確認することができる。
しかしながら、このような手法は多くの場合不必要であるかもしれない。先に述べたように、参加者がアクティブになる前に少なくとも何らかの事前通知を受けていることが望ましい。その場合、上記の状況、すなわち、ベリファイアv2が投票するときまでベリファイアv2がアクティブになるという判断にベリファイアv1がまだ気付いていないという状況は、比較的まれであるかもしれない。最悪の場合とは、(その時点において)ベリファイアv1がベリファイアv2の投票をカウントすることができない場合である。いくつかの実施形態に従うと、不正なノードの数および/または遅延している指令の数に応じて、これは潜在的に、より多くの指令を受けるまでトランザクションを受け入れるために十分な投票をノードが確認することを妨げる可能性がある。
いくつかの実施形態において、たとえばベリファイアv2は自身が偽っていれば将来発見され場合によってはぺナルディが課されるおよび/またはそうでなければ責任追跡性を保たれることが、わかっているので、ベリファイアv2がアクティブであることを求める要求を、ベリファイアv1は文字通り受け入れることができる。いくつかの実施形態において、構成パラメータは、このような「投機的」投票がいくつカウントされ得るかを判断することができる。しかしながら、いくつかの実施形態において、1つの投機的投票をカウントした場合でも、定数の正当にアクティブなノードの投票なしで、不正な投票によりトランザクションが確認される場合がある。いくつかの実施形態において、これは全く受け入れられないかもしれず、したがって、投票を、その送信者が正当にアクティブであることをベリファイする前にカウントしないように、ノードを構成してもよい。
各種実施形態に従うと、そのようなベリフィケーションは、遅延した指令が到着するのを単に待つこと以外のやり方で、実現することが可能である。たとえば、一実施形態において、エビデンスを(たとえばストレージサービス190によっておよび/またはメンバシップサービス170の参加者によって)格納することにより、場合によっては、エビデンスをオンデマンドで要求できるようにすることが可能である。よって、いくつかの実施形態において、上記例に従い、ベリファイアv2は、その署名された投票とともに、それがアクティブであることを証明するエビデンスの識別子(たとえばハッシュ)を含んでいてもよく、ベリファイアv1は、v2の要求をベリファイするためにこのエビデンスを要求するように構成されてもよい。
その他詳細および/または最適化
いくつかの実施形態において、(たとえばディスパッチャがそのメンバシップ代表から受ける指令等の)データのクエリを、それがベリファイされおよび/または信用されるソースから受けられた後に最適化するための各種技術のうちのいずれかを使用するように、参加者が構成されてもよい。たとえば、一実施形態において、ディスパッチャは、各々がノード、シャード、および間隔(たとえば開始、終了)を特定するMakeActive指令のストリームを受けることができる。各指令がベリファイされると(たとえば、最低、それを送信した信用されるローカルメンバシップ代表の署名をベリファイ/認証することによって)、その指令は、ローカルデータ構造に格納することができる。このような指令をローカル格納することにより、共通動作のスピードを改善することができる。いくつかの実施形態において、ベリファイアは、たとえばその共通動作を容易にするために、(たとえばローカルディスパッチャまたはメンバシップ代表から)指令を受けたときに適切なデータ構造を同様に更新するように、構成されてもよい。
いくつかの実施形態において、アクティブベリファイアは、そのシャードに対する現在のトランザクションインデックスにおいて他のどのベリファイアがアクティブであるかを判断するように構成されてもよく、また、コンセンサスに関連するメッセージをそれらにブロードキャストするように構成されてもよい。加えて、別のベリファイアからコンセンサスに関連するメッセージ(たとえばトランザクションに対する投票等)を受けると、アクティブベリファイアは、受信者の現在のインデックスとは同一でない可能性がある、この投票が特定するトランザクションインデックスに対し、送信者がアクティブであることを確認するように、構成されてもよい。
いくつかの実施形態において、現在のトランザクションに対してどのベリファイアがアクティブであるかという判断に関連し、かつ、特定のトランザクションインデックスに対して送信者がアクティブであるという確認に関連するクエリは、受けた各命令に対する「間隔マップ」を更新することにより、サポートすることができる。いくつかの実施形態において、間隔マップは、キーが間隔であるキーと値のマップをサポートすることができ、クエリは、特定された間隔などと重なる、特定されたポイントを含む間隔に対応付けられているのはどの値かを判断することができる。いくつかの実施形態において、間隔マップは間隔ツリーを用いて実現することができる。
引続き上記例において、ベリファイアv1は、間隔マップを保持するように構成されてもよく、さらに、(値の)ペアを、間隔[1000,2000]をベリファイアv2を特定する記録にマッピングするその間隔マップに挿入するように構成されてもよい。データを間隔マップに挿入するとき、ベリファイアv1はまた、ベリファイアv2のパブリックキー等の、必要になる見込みがあるその他の情報を含み得る(このような情報は他の場所で入手できる可能性があるが、これを間隔マップに格納することにより、頻繁にアクセスされる情報へのアクセスを高速化することができる)。いくつかの実施形態に従うと、間隔マップを保持することにより、ベリファイアv1は、投票を受けたインデックスで、間隔マップをクエリすることができ、それにより、場合によっては、そのインデックスにおいてアクティブであるベリファイアのセットを識別する。
他の最適化は当業者にとって明らかであろう。たとえば、いくつかの実施形態において、ベリファイアは、一度だけその現在のトランザクションインデックスについて間隔マップをクエリし、そのインデックスについてのコンセンサス関連のメッセージを処理するときに繰り返し使用するために結果をキャッシュするように、構成されてもよく、新たな指令がこの結果に影響する場合に備えて、キャッシュされた結果を無効にするかまたは更新する。その他の実施形態において、このような最適化は、たとえば関数の結果を記憶する関数型言語で実現されるので、「無料」になる場合がある。
いくつかの実施形態に従うと、ディスパッチャも同様に、その共通動作を高速化するためにデータ構造を保持してもよい。たとえば、ディスパッチャは、ベリファイアのための上記間隔マップと同様の、シャードごとの間隔マップを保持するように構成されてもよい。しかしながら、先に述べたように、ディスパッチャの主な役割は、クライアントからトランザクションを受けて適切なベリファイアに送ることであろう。いくつかの実施形態において、ディスパッチャは、各シャードに対してどのベリファイアがアクティブであるかに関する正確な情報を有する(または取得する)必要はない。たとえば、ディスパッチャ130が、現在アクティブではないというメッセージ(たとえばクライアントトランザクション)をベリファイア150に送った場合に、ベリファイア150はそのメッセージをローカルディスパッチャ139に転送するように構成されてもよい。
しかしながら、いくつかの実施形態において、パフォーマンスのためには、ディスパッチャがシャードに対するアクティブなベリファイアを特定することが望ましい場合がある。さらに、ディスパッチャがメッセージをアクティブではないベリファイアに対して繰り返し送る場合、これらのベリファイアは上記メッセージをディスパッチャに送り返してもよく、台帳における全体の進行は低速になるかもしれない。よって、いくつかの実施形態において、ベリファイアは、そのシャード上で見た最も高いトランザクションインデックスをディスパッチャに(たとえば定期的に)知らせることにより、ディスパッチャがその間隔マップをクエリすることを場合によっては可能にし、どのベリファイアが現在アクティブであるかを(たとえば妥当な正確性を伴って)場合によっては判断できるように、構成されてもよい。
ランダムネス
先に述べたように、いくつかの実施形態に従うと、どの時点でどのシャードに対しどの参加者がアクティブであるかを求めるための、および、さまざまな構成パラメータの現在の値を求めるための、ポリシーおよび/または判断は、少なくとも一部、ランダムな選択に基づき得る。よって、いくつかの実施形態において、このようなポリシーが決定論的でありいずれかの参加者が独立して計算できることを保証するために、共有される、ランダムネスのソースが必要であろう。ポリシーの結果の操作を避けるために、誰も(たとえばどのノードも、またはどの他の参加者も)、ランダムネスソースを制御できないようにしなければならない。さらに、敵が前もって計画する機会を打ち消すために、使用するいずれのランダムデータも、必要なときよりも長時間前に知られてはならない。したがって、いくつかの実施形態において、初期化時にランダムシード(seed)を選択しそれを永遠に使用することは十分ではない場合がある。代わりに、いくつかの実施形態において、シャード化された許可型の分散型台帳システムは、シャード化されたランダムネスソースを定期的に交換するように構成されてもよい。
いくつかの実施形態において、ランダムネスソースは、コーディネーションシャードに対するリーダーの任期の間使用されてもよく、次のリーダーの任期のために新たなランダムネスソースに交換されてもよい。たとえば、一実施形態に従い、決定論的疑似ランダム数生成器の新たなシードが、各リーダーの任期ごとに生成されてもよい。しかしながら、各種実施形態に従い本明細書で説明するように、一般的に、ランダムネスを提供するための各種機構のうちのいずれかを、シャード化された許可型の分散型台帳を実現するときに利用してもよい。加えて、各種実施形態に従い、ランダムネスソースは、より高い頻度で(より高いセキュリティを提供)またはより低い頻度で(必要な作業が少ない)更新されてもよく、(たとえばリーダーに基づくコンセンサスを使用しないシステムのような)リーダーシップ変更以外のイベントによって推進されてもよい。
たとえば、いくつかの実施形態において先に述べたように、ランダムネスは、決定論的疑似ランダム数生成器の「良好な」シードを生成することによって生成することができる。明らかに、シードの選択をいずれかの参加者が制御可能であってはならない。加えて、いくつかの実施形態において、シードは予め相当前に予測可能でなくてよい。シャードのベリファイアのうちのいずれが遠い将来においてアクティブにされるかを敵が前もって見分けることができる場合、敵は、これらのベリファイアを腐敗させようとして作業を始めることができる。
一実施形態において、リーダーの任期が終了すると、リーダーは、前もって予測されないかもしれないコミットされた最後のトランザクションの暗号ハッシュを取るように構成されてもよい。しかしながら、このハッシュはリーダーによって操作されるかもしれない。たとえば、不正なリーダーは、たとえば腐敗させようとするシャードに「友好的な」参加者を割り当てるなど、生成されたハッシュが所望のプロパティを有するように、トランザクションを選択しオーダーすることができる。したがって、いくつかの実施形態において、現在のランダムネスソースは、仲間(buddy)ノードを各リーダーに決定論的に割り当てる。その任期の終了時に、リーダーは、この仲間ノードを、コミットされた最後のトランザクションのインクリメンタルハッシュに送ることができ、仲間ノードは、そのプライベートキーでハッシュに署名し署名されたハッシュをリーダーに返すように構成されてもよく、リーダーはそうすると、自身の署名で結果をXORし、そうすると、どのパーティーにも制御されないシードが得られる。
加えて、いくつかの実施形態において、リーダーに複数の仲間ノード(たとえば、システムが許容し得る腐敗ノードと少なくとも同数)を割り当ててもよい。割り当てられた数のノードだけが腐敗すると仮定すると、これにより、少なくとも1つ(リーダーまたは仲間のうちの1つ)が正当でありしたがって「トライアル・アンド・エラー」共謀に加わることはないことを、保証することができる。いくつかの実施形態に従うと、ランダムシードがすべての署名の関数(たとえばこれらすべてのXOR)によって選択された場合、1参加者が正当であることを保証することは、ランダムネスソースを制御する誰をも除外することになる。
いくつかの実施形態において、リーダーまたはその仲間のうちのいいずれかがこのプロトコルに参加しない場合、リーダーは最終的に退けられるかもしれず、新たなリーダーが選ばれる。そうすると、新たなリーダーは、同様のプロトコルに参加することにより、その1または複数の仲間(前のランダムネスソースの関数によって決まる)と協働して新たなランダムシードを生成することができる。いくつかの実施形態において、最終的に、その仲間がすべて反応し少なくとも1の仲間が正当であるリーダーが見出される見込みが高く、これは、新たな信頼できるランダムネスソースが生成されプロトコルを通常に進めることができることを意味する。
上記手法は、結果として得られたランダムネスをリーダーが気に入らない場合に備えてリーダーが失敗する振りをすることができるようにするが、これは、次のリーダーおよびその仲間が選択するランダムネスに何の影響も及ぼさないであろう。さらに、この失敗は、他から見えるものであるため、この失敗が結果を故意に操作しようとする試みであると疑われる場合に備えて評価できるエビデンスに寄与し得る。
コンピューティングシステムの一例
本明細書に記載の、シャード化された許可型の分散型台帳システムを提供するための技術および方法の実施形態のさまざまなコンポーネントは、その他さまざまなデバイスとやり取りし得る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つ以上のノードを介して実現されてもよい。
各種実施形態において、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステムであってもよく、または、いくつかのプロセッサ1010(たとえば2、4、8、または別の好適な数)を含むマルチプロセッサシステムであってもよい。プロセッサ1010は、命令を実行可能な任意の好適なプロセッサであればよい。たとえば、各種実施形態において、プロセッサ1010は、x86、PowerPC、SPARC、もしくはMIPS ISA、またはその他好適なISA等の、さまざまな命令セットアーキテクチャ(ISA)のうちのいずれかを実現する、汎用または埋め込みプロセッサであってもよい。マルチプロセッサシステムにおいて、プロセッサ1010は各々、一般に、必然的にではないが、同じISAを実現し得る。
いくつかの実施形態において、少なくとも1つのプロセッサ1010はグラフィックス処理ユニットであってもよい。グラフィック処理ユニットまたはGPUは、パーソナルコンピュータ、ワークステーション、ゲーム機またはその他のコンピュータシステムのための専用グラフィックレンダリングデバイスとみなされてもよい。現代のGPUは、コンピュータグラフィックスの操作および表示において非常に効率が高い場合があり、その高度な並列構造が、これらを、グラフィカルアルゴリズムの範囲において典型的なCPUよりも効果的にしている。たとえば、グラフィックプロセッサは、ホスト中央処理装置(CPU)を用いて画面に直接描画するよりもはるかに速くこれらを実行するように、複数のグラフィック基本動作を実現することができる。GPUは、プログラマーがGPUの機能を呼び出すことを許可する1つ以上のアプリケーションプログラマーインターフェイス(API)を実現し得る。好適なGPUは、NVIDIA社、ATIテクノロジーズ、およびその他等の販売業者から市販されているであろう。
システムメモリ1020は、プログラム命令および/またはプロセッサ1010からアクセス可能なデータを格納するように構成し得る。各種実施形態において、システムメモリ1020は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、または任意のその他の種類のメモリ等の任意の好適なメモリ技術を用いて実現し得る。示されている実施形態において、たとえば、図2~図6に示されるように送信側ノードおよび/または受信側ノードとして分散型台帳メッセージを処理するための方法を含むがこれらの方法に限定されない、分散型台帳の責任追跡性および信頼を高めるための方法の各種実施形態について先に述べたような、所望の機能を実現するプログラム命令およびデータは、システムメモリ1020に、プログラム命令1025およびデータストレージ1035としてそれぞれ格納されるものとして示されている。他の実施形態において、プログラム命令および/またはデータは、異なる種類のコンピュータアクセス可能媒体に、またはシステムメモリ1020またはコンピュータシステム1000とは別の同様の媒体において、受信、送信、または格納されてもよい。一般的には、たとえば、コンピュータアクセス可能媒体は、I/Oインターフェイス1030を介してコンピュータシステム1000に結合されたディスクまたはCD/DVD-ROMである、磁気または工学媒体等の、ストレージ媒体またはメモリ媒体を含み得る。コンピュータアクセス可能媒体を介して格納されるプログラム命令およびデータは、たとえばネットワークインターフェイス1040を介して実現し得る、ネットワークおよび/または無線リンク等の通信媒体を介して変換し得る、電気、電磁、またはデジタル信号等の送信媒体または信号によって、送信されてもよい。
一実施形態において、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に組み込んでもよい。
ネットワークインターフェイス1040は、コンピュータシステム1000と、その他のコンピュータシステム等の、ネットワークに装着されたその他のデバイスとの間で、または、コンピュータシステム1000のノード間で、データをやり取りできるように構成し得る。各種実施形態において、ネットワークインターフェイス1040は、たとえば任意の好適な種類のイーサネット(登録商標)ネットワーク等の無線または有線汎用データネットワークを介して、アナログ音声ネットワークもしくはデジタルファイバー通信ネットワーク等の電気通信/電話ネットワークを介して、ファイバーチャネルSAN等のストレージエリアネットワークを介して、または、任意の他の好適な種類のネットワークおよび/またはプロトコルを介して、通信をサポートし得る。
入出力デバイス1050は、いくつかの実施形態において、1つ以上の表示端末、キーボード、キーパッド、タッチパッド、スキャンデバイス、音声もしくは光認識デバイス、または1つ以上のコンピュータシステム100によって入力または取り出すのに適した任意の他のデバイスを、含み得る。複数の入出力デバイス1050がコンピュータシステム1000内にあってもよく、コンピュータシステム1000の各種ノード上に分散されていてもよい。いくつかの実施形態において、同様の入出力デバイスが、コンピュータシステム1000から分離されていてもよく、有線または無線接続を介して、たとえばネットワークインターフェイス1040を介して、コンピュータシステム1000の1つ以上のノードとおやり取りしてもよい。
図7に示されるように、メモリ1020は、分散型台帳の責任追跡性および信頼を高めるための方法の実施形態を実現するように構成されたプログラム命令1025と、プログラム命令1025からアクセス可能な各種データを含むデータストレージ1035とを含み得る。一実施形態において、プログラム命令1025は、上記図面に示される、分散型台帳の責任追跡性および信頼を高めるための方法の実施形態のソフトウェア要素を含み得る。データストレージ1035は、実施形態で使用し得るデータを含み得る。その他の実施形態において、その他のまたは異なるソフトウェア要素およびデータが含まれていてもよい。
コンピュータシステム1000は例示されているにすぎず本明細書に記載の分散型台帳の責任追跡性および信頼を高めるための方法の範囲を限定することを意図していないことを、当業者は理解するであろう。特に、コンピュータシステムおよびデバイスは、コンピュータ、ネットワークデバイス、インターネット機器、PDA、無線電話、ポケットベルなどを含む、示された機能を実行できるハードウェアまたはソフトウェアの任意の組み合わせを含み得る。コンピュータシステム1000は、図示されていないその他のデバイスに接続されてもよく、代わりにスタンドアロンシステムとして動作してもよい。加えて、示されているコンポーネントが提供する機能は、いくつかの実施形態において、より少ないコンポーネントになるように組み合わせれてもよく、その他のコンポーネントに分散されてもよい。同様に、いくつかの実施形態において、示されているコンポーネントのうちのいくつかの機能は提供されなくてもよく、および/またはその他の追加機能が利用できるようにされてもよい。
また、さまざまなアイテムは、使用中、メモリまたはストレージに格納されているものとして示されているが、これらのアイテムまたはその一部は、メモリ管理およびデータ完全性のために、メモリと他のストレージデバイスとの間で転送され得ることを、当業者は理解するであろう。これに代えて、その他の実施形態において、ソフトウェアコンポーネントのうちの一部またはそのすべてが、メモリにおいてまたは別のデバイス上で実行され、示されているコンピュータシステムと、コンピュータ間通信を介して通信してもよい。システムコンポーネントまたはデータ構造のうちの一部またはそのすべても、(たとえば命令または構造データとして)コンピュータアクセス可能媒体上に、または、その各種の例は先に述べた通りである、適切なドライブによって読み出されるポータブル商品上に、格納されてもよい。いくつかの実施形態において、コンピュータシステム1000とは別のコンピュータアクセス可能媒体に格納される命令は、ネットワークおよび/または無線リンク等の通信媒体を介して伝達される、電気、電磁、またはデジタル信号等の信号または送信媒体を介して、コンピュータシステム1000に送信されてもよい。各種実施形態はさらに、上記説明に従い実現される命令および/またはデータを、受信、送信、またはコンピュータアクセス可能媒体に格納することを含み得る。したがって、本発明は、その他のコンピュータシステム構成でも実施し得る。
図面に示され本明細書に記載されている各種方法は、方法の実施形態の例を表す。これらの方法は、ソフトウェア、ハードウェア、またはその組み合わせにおいて実現し得る。方法の順序は変更してもよく、各種要素の追加、再配置、組み合わせ、削除、修正などが可能である。
各種修正および変更は、本開示の恩恵を受ける当業者にとって明らかになるようにすることができる。本発明がこのような修正および変更をすべて包含し、したがって上記説明は制限的ものではなく例示的なものとみなされることが、意図されている。

Claims (15)

  1. シャード化された許可型の分散型台帳システムであって、前記システムは、
    前記分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイスを備え、前記複数のノードは、1つ以上のトランザクションに関する情報を格納するように構成された複数の台帳シャードを含む分散型台帳を管理するように構成されており、
    各ノードは、
    前記複数の台帳シャードのうちの個々の台帳シャードに対して個々のトランザクションに関する情報をアペンドするためにコンセンサスプロトコルに従って参加するように構成された、1つ以上のベリファイアサービスと、
    ディスパッチャサービスとを含み、
    前記ディスパッチャサービスは、クライアントからトランザクション要求を受けるように構成されており、前記トランザクション要求は、特定のトランザクションと前記複数の台帳シャードのうちのターゲットシャードとを示す情報を含み、かつ
    前記ディスパッチャサービスは、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられた、前記ベリファイアサービスのうちの1つに転送するように構成されている、シャード化された許可型の分散型台帳システム。
  2. 前記ベリファイアサービスは、前記転送された要求によって指定されるトランザクションに関する情報を、前記ターゲットシャードにアペンドするように構成されている、請求項1に記載のシャード化された許可型の分散型台帳システム。
  3. 前記ディスパッチャサービスはさらに、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたリーダーベリファイアに転送するように構成されており、
    前記リーダーベリファイアは、前記コンセンサスプロトコルに従い、前記ターゲットシャードに対応付けられた前記ベリファイアサービスに対して前記特定のトランザクションを提案するように構成されている、請求項1または2に記載のシャード化された許可型の分散型台帳システム。
  4. 構成サービスをさらに備え、前記構成サービスは、各対応するノードごとに、前記複数の台帳シャードのうちの個々の台帳シャードに対してアクティブになる、前記対応するノード上の前記ベリファイアサービスのサブセットを決定するように構成され、所定の台帳シャードに対してアクティブであるベリファイアサービスが、コンセンサスに参加して新たなトランザクションを前記台帳シャードにアペンドする、請求項1から3のいずれか1項に記載のシャード化された許可型の分散型台帳システム。
  5. 前記構成サービスはさらに、ランダムネスのシャード化ソースに少なくとも一部基づいて前記ベリファイアサービスのサブセットを決定するように構成されており、前記ランダムネスのシャード化ソースは、前記複数のノードが制御できないランダムデータを提供する、請求項4に記載のシャード化された許可型の分散型台帳システム。
  6. 前記複数の台帳シャードのうちの個々の台帳シャードにアペンドされるトランザクションのカウント、
    前記台帳シャードのうちの1つ以上についての状態情報の暗号ハッシュ、および、
    前記台帳シャードのうちの個々の台帳シャードに対応付けられたベリファイアサービスに関する情報、
    のうちの1つ以上を記録するように構成された分散型構成台帳をさらに備える、請求項1から5のいずれか1項に記載のシャード化された許可型の分散型台帳システム。
  7. 前記複数の台帳シャードに関する指令を前記ノードのうちの1つ以上にブロードキャストするように構成された構成サービスをさらに備える、請求項6に記載のシャード化された許可型の分散型台帳システム。
  8. コンピュータが実施する方法であって、
    分散型台帳システムに複数のノードとして参加するように構成された複数のコンピューティングデバイス上で、1つ以上のトランザクションに関する情報を格納する複数の台帳シャードを含む分散型台帳を管理するステップと、
    前記ノードのうちの1つのノード上のディスパッチャプロセスが、クライアントからトランザクション要求を受けるステップとを含み、前記トランザクション要求は、特定のトランザクションと前記複数の台帳シャードのうちのターゲットシャードとを示す情報を含み、
    前記ディスパッチャプロセスが、前記受けたトランザクション要求を、前記ターゲットシャードに対応付けられたベリファイアプロセスに転送するステップを含み、前記ベリファイアプロセスは複数のベリファイアプロセスのうちの1つであり、前記複数のベリファイアプロセスは各々、前記複数の台帳シャードのうちの個々の台帳シャードに個々のトランザクションに関する情報をアペンドするためにコンセンサスプロトコルに従い1つ以上の他のベリファイアプロセスとともに参加するように構成されている、コンピュータが実施する方法。
  9. 前記ベリファイアプロセスが、前記転送された要求によって指定されるトランザクションに関する情報を、前記ターゲットシャードにアペンドするステップをさらに含む、請求項8に記載のコンピュータが実施する方法。
  10. 前記ターゲットシャードに対してアクティブである前記ベリファイアプロセスのセットの中からリーダーベリファイアを決定するステップをさらに含み、
    前記転送するステップは、前記ディスパッチャプロセスが、前記受けたトランザクション要求を、前記リーダーベリファイアに転送するステップを含み、
    前記リーダーベリファイアが、前記コンセンサスプロトコルに従い前記ターゲットシャードに対してアクティブである前記ベリファイアプロセスのセットに、前記特定のトランザクションを提案するステップをさらに含む、請求項8または9に記載のコンピュータが実施する方法。
  11. 構成サービスが、各対応するノードごとに、前記複数の台帳シャードのうちの個々の台帳シャードに対してアクティブになる、前記対応するノード上の前記ベリファイアプロセスのサブセットを決定するステップをさらに含む、請求項8から10のいずれか1項に記載のコンピュータが実施する方法。
  12. 前記ベリファイアプロセスのサブセットを決定するステップは、ランダムネスのシャード化ソースに少なくとも一部基づいており、前記ランダムネスのシャード化ソースは、前記複数のノードが制御できないランダムデータを提供する、請求項11に記載のコンピュータが実施する方法。
  13. 前記複数の台帳シャードのうちの個々の台帳シャードにアペンドされるトランザクションのカウント、
    前記台帳シャードのうちの1つ以上についての状態情報の暗号ハッシュ、および、
    前記台帳シャードのうちの個々の台帳シャードに対応付けられたベリファイアプロセス関する情報、
    のうちの1つ以上を、分散型構成台帳に記録するステップをさらに含む、請求項8から12のいずれか1項に記載のコンピュータが実施する方法。
  14. 構成サービスが、前記複数の台帳シャードに関する指令を、前記ノードのうちの1つ以上にブロードキャストするステップをさらに含む、請求項13に記載のコンピュータが実施する方法。
  15. 請求項8から14のいずれか1項に記載の方法をコンピュータに実行させるプログラム。
JP2019564902A 2017-05-25 2018-05-16 シャード化された許可型の分散型台帳 Active JP7098660B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022104925A JP2022141684A (ja) 2017-05-25 2022-06-29 シャード化された許可型の分散型台帳

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/605,689 2017-05-25
US15/605,689 US10740733B2 (en) 2017-05-25 2017-05-25 Sharded permissioned distributed ledgers
PCT/US2018/032943 WO2018217511A1 (en) 2017-05-25 2018-05-16 Sharded permissioned distributed ledgers

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022104925A Division JP2022141684A (ja) 2017-05-25 2022-06-29 シャード化された許可型の分散型台帳

Publications (3)

Publication Number Publication Date
JP2020521252A JP2020521252A (ja) 2020-07-16
JP2020521252A5 JP2020521252A5 (ja) 2021-05-13
JP7098660B2 true JP7098660B2 (ja) 2022-07-11

Family

ID=62685127

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019564902A Active JP7098660B2 (ja) 2017-05-25 2018-05-16 シャード化された許可型の分散型台帳
JP2022104925A Pending JP2022141684A (ja) 2017-05-25 2022-06-29 シャード化された許可型の分散型台帳

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022104925A Pending JP2022141684A (ja) 2017-05-25 2022-06-29 シャード化された許可型の分散型台帳

Country Status (5)

Country Link
US (3) US10740733B2 (ja)
EP (1) EP3631722A1 (ja)
JP (2) JP7098660B2 (ja)
CN (2) CN110800005B (ja)
WO (1) WO2018217511A1 (ja)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160321751A1 (en) * 2015-04-28 2016-11-03 Domus Tower, Inc. Real-time settlement of securities trades over append-only ledgers
US10515409B2 (en) * 2016-03-23 2019-12-24 Domus Tower, Inc. Distributing work load of high-volume per second transactions recorded to append-only ledgers
US10523421B2 (en) * 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
CA3065319A1 (en) * 2017-06-01 2018-12-06 Schvey, Inc. d/b/a/ Axoni Distributed privately subspaced blockchain data structures with secure access restriction management
JP2019012415A (ja) * 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード
US11238164B2 (en) * 2017-07-10 2022-02-01 Burstiq, Inc. Secure adaptive data storage platform
US11146380B2 (en) * 2017-08-03 2021-10-12 Parity Technologies Ltd. Methods and systems for a heterogeneous multi-chain framework
US11871485B2 (en) * 2017-08-09 2024-01-09 Visa International Service Association Verification of interactions system and method
US11323258B2 (en) * 2017-08-28 2022-05-03 Visa International Service Association Layered recording networks
US10868673B2 (en) * 2017-09-25 2020-12-15 Sap Se Network access control based on distributed ledger
US11769150B2 (en) * 2017-10-11 2023-09-26 International Business Machines Corporation Transaction scheduling for block space on a blockchain
US10742612B2 (en) * 2017-10-16 2020-08-11 Cisco Technology, Inc. Determine payload integrity for traffic flowing across proxies
US10756904B1 (en) * 2018-02-22 2020-08-25 EMC IP Holding Company LLC Efficient and secure distributed ledger maintenance
US11531975B2 (en) * 2018-04-13 2022-12-20 International Business Machines Corporation Network node management on a blockchain
EP3785206A1 (en) * 2018-04-27 2021-03-03 Nchain Holdings Limited Partitioning a blockchain network
US11194837B2 (en) 2018-05-01 2021-12-07 International Business Machines Corporation Blockchain implementing cross-chain transactions
US11030217B2 (en) * 2018-05-01 2021-06-08 International Business Machines Corporation Blockchain implementing cross-chain transactions
CN110945831B (zh) 2018-05-08 2021-04-27 维萨国际服务协会 抗Sybil攻击身份的生成
JP6684850B2 (ja) * 2018-05-16 2020-04-22 株式会社日立製作所 分散台帳システム、分散台帳サブシステム、および、分散台帳ノード
US10764258B2 (en) * 2018-06-29 2020-09-01 Arm Ip Limited Blockchain infrastructure for securing and/or managing electronic artifacts
GB201811263D0 (en) * 2018-07-10 2018-08-29 Netmaster Solutions Ltd A method and system for managing digital using a blockchain
JP7056429B2 (ja) * 2018-07-18 2022-04-19 株式会社デンソー 履歴管理方法、及び履歴管理装置
JP7056430B2 (ja) * 2018-07-18 2022-04-19 株式会社デンソー 履歴管理方法、履歴管理装置及び履歴管理システム
CN109063049B (zh) * 2018-07-18 2020-12-08 百度在线网络技术(北京)有限公司 一种区块链网络的账号处理方法、装置、设备及存储介质
US11620152B2 (en) * 2018-07-20 2023-04-04 Ezblock Ltd. Blockchain sharding with parallel threads
US20200042635A1 (en) * 2018-08-06 2020-02-06 Factom Transactional Sharding of Blockchain Transactions
US11410174B2 (en) * 2018-08-07 2022-08-09 International Business Machines Corporation Custom blockchain for IoT devices
US10862908B2 (en) * 2018-08-09 2020-12-08 Hrl Laboratories, Llc System and method for consensus ordering of broadcast messages
WO2020041127A1 (en) * 2018-08-23 2020-02-27 Providentia Worldwide, Llc Systems and methods for blockchain interlinking and relationships
US11196542B2 (en) 2018-08-29 2021-12-07 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11334439B2 (en) 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US10901957B2 (en) * 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11314699B1 (en) 2018-09-06 2022-04-26 Side, Inc. Single-tier blockchain-based system and method for document transformation and accountability
US11336430B2 (en) 2018-09-07 2022-05-17 Sap Se Blockchain-incorporating distributed authentication system
CN109308658A (zh) * 2018-09-11 2019-02-05 北京永恒纪元科技有限公司 一种高效安全的去中心化资产托管清算平台系统
CN109274667B (zh) 2018-09-14 2020-06-23 阿里巴巴集团控股有限公司 一种基于区块链的版权事件存证方法及系统
CN109272385B (zh) * 2018-09-14 2021-03-23 创新先进技术有限公司 一种基于区块链的版权事件代理存证方法及系统
US11409734B2 (en) * 2018-10-29 2022-08-09 Electronics And Telecommunications Research Institute Blockchain system and operation method thereof
EP3651112A1 (en) * 2018-11-06 2020-05-13 Electricité de France Method for processing data and apparatuses for implementing the same
EP3888334A4 (en) * 2018-11-30 2022-08-24 Shaun Cutts DISTRIBUTED RESOURCE ALLOCATION SYSTEMS AND METHODS
CN110033363B (zh) * 2018-12-14 2024-01-23 创新先进技术有限公司 基于区块链的事件处理方法及装置、电子设备
US11048596B2 (en) * 2018-12-14 2021-06-29 Nokia Technologies Oy Hierarchical weighted consensus for permissioned blockchains
CN109792382B (zh) 2018-12-28 2022-07-12 创新先进技术有限公司 使用全局加速节点提高区块交易速度的方法、系统和存储介质
WO2019072307A2 (en) * 2018-12-28 2019-04-18 Alibaba Group Holding Limited ACCELERATION OF TRANSACTION DELIVERIES IN BLOCK CHAIN NETWORKS USING ACCELERATION NODES
JP6892514B2 (ja) 2018-12-28 2021-06-23 アドバンスド ニュー テクノロジーズ カンパニー リミテッド トランザクションの再送信を使用してブロックチェーンネットワークにおけるトランザクション配信の加速化
US20200236031A1 (en) * 2019-01-23 2020-07-23 Hewlett Packard Enterprise Development Lp Blockchain Routing Protocols
CN110870288B (zh) 2019-03-18 2022-05-27 创新先进技术有限公司 共识系统停机时间恢复
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
EP3580913B1 (en) 2019-03-18 2021-01-20 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
CN110648137B (zh) * 2019-04-26 2021-08-20 腾讯科技(深圳)有限公司 一种区块处理方法和节点以及系统
CN110149373B (zh) * 2019-04-28 2022-01-07 平安科技(深圳)有限公司 基于点对点网络的数据存储方法、装置、介质及服务器
US11416548B2 (en) * 2019-05-02 2022-08-16 International Business Machines Corporation Index management for a database
CN111915306B (zh) * 2019-05-08 2023-12-19 华控清交信息科技(北京)有限公司 业务数据的验证方法和验证平台
US11949691B2 (en) * 2019-05-24 2024-04-02 International Business Machines Corporation Malicious peer identification
US11943237B2 (en) * 2019-05-24 2024-03-26 International Business Machines Corporation Malicious peer identification for database block sequence
EP3701701A4 (en) 2019-06-05 2020-12-30 Alibaba Group Holding Limited CONSENSUS SYSTEM AND PROCESS
US20220353080A1 (en) * 2019-06-20 2022-11-03 INDIAN INSTITUTE OF TECHNOLOGY MADRAS (IIT Madras) Colosseum, a scalable and byzantine-fault tolerant consensus mechanism for permissioned systems
US10872367B1 (en) 2019-07-02 2020-12-22 Mythical, Inc. Systems and methods for controlling permissions pertaining to sales activities by users of an online game
US11062284B1 (en) 2019-08-05 2021-07-13 Mythical, Inc. Systems and methods for facilitating transactions of virtual items between users of an online game
US11695543B2 (en) * 2019-08-22 2023-07-04 Myndshft Technologies, Inc. Blockchain network control system and methods
CN110727731B (zh) 2019-09-05 2021-12-21 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
CN110730204B (zh) 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN114391241A (zh) * 2019-09-11 2022-04-22 维萨国际服务协会 具有可调整法定数量的区块链分片
US11288735B1 (en) 2019-10-31 2022-03-29 Mythical, Inc. Systems and methods for selling virtual items on multiple online sales platforms simultaneously, the virtual items being useable within an online game
US11641313B2 (en) * 2019-11-21 2023-05-02 Vmware, Inc. Asynchronous liveness boosting of state machine replication
US10708042B1 (en) * 2019-12-02 2020-07-07 Yield Solutions Group, LLC Computer-based systems including blockchains with differential permissioning and vaulting of tokens and token exchanges and methods of use thereof
WO2021113369A1 (en) 2019-12-02 2021-06-10 Schvey, Inc. D/B/A Axoni Cross-partition calls in partitioned, tamper-evident data stores
US11403281B2 (en) * 2020-01-09 2022-08-02 Eternal Paradise Limited Parallel blockchain processing
US11288645B1 (en) 2020-01-13 2022-03-29 Mythical, Inc. Systems and methods for buying virtual items from multiple online sales platforms, the virtual items being useable within an online game
US11379474B2 (en) * 2020-02-19 2022-07-05 International Business Machines Corporation Computation of containment relationships
US11295363B1 (en) 2020-03-04 2022-04-05 Mythical, Inc. Systems and methods for facilitating purchase offer selection across multiple online sales platforms
CN111324613B (zh) * 2020-03-13 2021-03-26 华东师范大学 一种面向联盟链的分片内数据组织管理方法
US11853291B2 (en) * 2020-07-06 2023-12-26 International Business Machines Corporation Privacy preserving architecture for permissioned blockchains
US20220036346A1 (en) * 2020-07-28 2022-02-03 Sensoriant, Inc. Systems and methods for re-organizing blockchains for efficient operations
US11522705B2 (en) * 2020-07-28 2022-12-06 Safelishare, Inc. Testing and other data communicated using trust models in decentralized and distributed systems
US10861095B1 (en) 2020-07-31 2020-12-08 Mythical, Inc. Systems and methods for an automated electronic networked central clearinghouse for clearing and reversing reversible exchanges of non-fungible digital assets
US10850202B1 (en) 2020-07-31 2020-12-01 Mythical, Inc. Systems and methods for distributions by an automated electronic networked central clearinghouse
CN114077637B (zh) * 2020-08-12 2022-12-27 北京航空航天大学 分片区块链实现方法
US11651096B2 (en) 2020-08-24 2023-05-16 Burstiq, Inc. Systems and methods for accessing digital assets in a blockchain using global consent contracts
US11514417B2 (en) * 2020-10-19 2022-11-29 Mythical, Inc. Systems and methods for operating a bridge server to support multiple shards of a blockchain
CN112202933B (zh) * 2020-12-08 2021-03-05 腾讯科技(深圳)有限公司 区块链网络的信息处理方法、装置及节点设备
US11651110B2 (en) * 2021-07-08 2023-05-16 Dell Products, L.P. Hardware device mutual authentication system and method for a baseboard management controller (BMC)
CN113395357B (zh) * 2021-08-16 2021-11-12 支付宝(杭州)信息技术有限公司 区块链系统的分片方法及装置
US20230081416A1 (en) * 2021-09-10 2023-03-16 International Business Machines Corporation Anonymous private shared partitions in blockchain networks

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170132625A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for use of a blockchain in a transaction processing network

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671821B1 (en) 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US7080123B2 (en) 2001-09-20 2006-07-18 Sun Microsystems, Inc. System and method for preventing unnecessary message duplication in electronic mail
US7953860B2 (en) * 2003-08-14 2011-05-31 Oracle International Corporation Fast reorganization of connections in response to an event in a clustered computing system
US8230253B2 (en) 2008-07-21 2012-07-24 International Business Machines Corporation Byzantine fault tolerant dynamic quorum using a trusted platform module
US9171044B2 (en) * 2010-02-16 2015-10-27 Oracle International Corporation Method and system for parallelizing database requests
US8849749B2 (en) * 2010-05-14 2014-09-30 Oracle International Corporation Load balancing in parallel database systems using multi-reordering
US9805108B2 (en) * 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US9740762B2 (en) * 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US8661449B2 (en) * 2011-06-17 2014-02-25 Microsoft Corporation Transactional computation on clusters
US8712879B2 (en) * 2011-09-20 2014-04-29 Oracle International Corporation Data portal for concurrent assessment
US10860563B2 (en) * 2012-01-06 2020-12-08 Microsoft Technology Licensing, Llc Distributed database with modular blocks and associated log files
US20140108421A1 (en) * 2012-10-04 2014-04-17 Codefutures Corporation Partitioning database data in a sharded database
KR101544356B1 (ko) * 2012-10-31 2015-08-13 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
US20150103383A1 (en) 2013-10-10 2015-04-16 Eric Morgan Dowling Network scanner for global document creation, transmission and management
US10303702B2 (en) * 2014-02-07 2019-05-28 Ignite Scalarc Solutions, Inc. System and method for analysis and management of data distribution in a distributed database environment
US9607071B2 (en) * 2014-03-07 2017-03-28 Adobe Systems Incorporated Managing a distributed database across a plurality of clusters
CN104951935B (zh) * 2014-03-25 2021-03-09 北京小米支付技术有限公司 一种分账方法及装置
US11093468B1 (en) * 2014-03-31 2021-08-17 EMC IP Holding Company LLC Advanced metadata management
US9712606B2 (en) 2014-05-21 2017-07-18 Nasdaq Technology Ab Efficient and reliable host distribution of totally ordered global state
US9811546B1 (en) * 2014-06-30 2017-11-07 EMC IP Holding Company LLC Storing data and metadata in respective virtual shards on sharded storage systems
US20170300877A1 (en) 2014-09-23 2017-10-19 Spondoolies Tech Ltd. System and method for providing shared hash engines architecture for a bitcoin block chain
CN104217362B (zh) * 2014-09-29 2017-12-08 深圳市淘淘谷信息技术有限公司 基于互联网通讯的清分系统及线下交易、在线即时分账的方法
US20160098723A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods
KR102458727B1 (ko) 2014-12-24 2022-10-24 인트린직 아이디 비브이 물리적 복제방지 기능으로부터 암호화 키 생성
US10185730B2 (en) * 2014-12-31 2019-01-22 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
US10515409B2 (en) * 2016-03-23 2019-12-24 Domus Tower, Inc. Distributing work load of high-volume per second transactions recorded to append-only ledgers
US20160321751A1 (en) 2015-04-28 2016-11-03 Domus Tower, Inc. Real-time settlement of securities trades over append-only ledgers
US11829349B2 (en) * 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
US10291707B1 (en) * 2015-05-18 2019-05-14 Twitter, Inc. Systems and methods for balancing storage resources in a distributed database
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
US10009044B1 (en) * 2015-06-17 2018-06-26 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US10713275B2 (en) * 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10402792B2 (en) * 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US11941588B2 (en) * 2015-11-06 2024-03-26 Cable Television Laboratories, Inc. Systems and methods for blockchain virtualization and scalability
US20170140375A1 (en) * 2015-11-15 2017-05-18 Michael Kunstel System and Method for Permissioned Distributed Block Chain
CN105488665A (zh) * 2015-11-25 2016-04-13 布比(北京)网络技术有限公司 一种去中心化的交易方法
CN106302720B (zh) * 2016-08-13 2019-12-13 青岛莱月网络科技有限公司 一种用于区块链可生存存储系统及其方法
US10282558B2 (en) * 2016-09-02 2019-05-07 The Toronto-Dominion Bank System and method for maintaining a segregated database in a multiple distributed ledger system
CN106548330B (zh) * 2016-10-27 2018-03-16 上海亿账通区块链科技有限公司 基于区块链的交易验证方法及系统
US10862959B2 (en) 2016-11-28 2020-12-08 Keir Finlow-Bates Consensus system and method for adding data to a blockchain
US10102265B1 (en) * 2017-04-12 2018-10-16 Vijay K. Madisetti Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
US20220284129A1 (en) * 2021-03-07 2022-09-08 Guardtime Sa Verifiable Splitting of Single-Instance Data Using Sharded Blockchain
US20230342774A1 (en) * 2022-03-28 2023-10-26 Guardtime Sa Atomic Multi-Unit Transfer of Single-Instance Data Units in Sharded Blockchain

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170132625A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for use of a blockchain in a transaction processing network

Also Published As

Publication number Publication date
US20230089896A1 (en) 2023-03-23
JP2020521252A (ja) 2020-07-16
JP2022141684A (ja) 2022-09-29
CN110800005A (zh) 2020-02-14
EP3631722A1 (en) 2020-04-08
CN110800005B (zh) 2023-09-08
US10740733B2 (en) 2020-08-11
US11538003B2 (en) 2022-12-27
US20180341930A1 (en) 2018-11-29
CN117237099A (zh) 2023-12-15
WO2018217511A1 (en) 2018-11-29
US20200410461A1 (en) 2020-12-31

Similar Documents

Publication Publication Date Title
JP7098660B2 (ja) シャード化された許可型の分散型台帳
CN110380858B (zh) 用于处理区块链的游戏共识协议的方法和系统
US11689362B2 (en) Distributed ledger for generating and verifying random sequence
US11387979B2 (en) Partially-ordered blockchain
WO2018172439A1 (en) Method for operating a blockchain
KR20210082194A (ko) 프라이버시 보호 유효성 검사 및 커밋 아키텍처
JP2020522927A (ja) 一般的な計算のためのブロックチェーン
US11876891B2 (en) Secure parameter merging using homomorphic encryption for swarm learning
US11269863B2 (en) Index structure for blockchain ledger
CN112241919A (zh) 具有数据流控制的多域区块链网络
Yadav et al. A comparative study on consensus mechanism with security threats and future scopes: Blockchain
US11303446B2 (en) Prevention of majority attacks
US11228424B2 (en) Blu-ray copy service
US20200389518A1 (en) Secure data dissemination
CN111698198B (zh) 秘密生成和份额分发
JP7231909B2 (ja) 情報処理装置及びプログラム
US11379594B2 (en) Media obfuscation
US11481222B2 (en) Computation and prediction of linked access
US11645074B2 (en) Computation and prediction of linked access
Fu et al. Soteria: A Provably Compliant User Right Manager Using a Novel Two-Layer Blockchain Technology (Extended Version)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210329

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210329

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220413

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220629

R150 Certificate of patent or registration of utility model

Ref document number: 7098660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150