JP7454616B2 - 分散型元帳におけるdagベースのトランザクション処理方法およびシステム - Google Patents

分散型元帳におけるdagベースのトランザクション処理方法およびシステム Download PDF

Info

Publication number
JP7454616B2
JP7454616B2 JP2022136003A JP2022136003A JP7454616B2 JP 7454616 B2 JP7454616 B2 JP 7454616B2 JP 2022136003 A JP2022136003 A JP 2022136003A JP 2022136003 A JP2022136003 A JP 2022136003A JP 7454616 B2 JP7454616 B2 JP 7454616B2
Authority
JP
Japan
Prior art keywords
transaction
transactions
bcs
fabric
ledger
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
JP2022136003A
Other languages
English (en)
Other versions
JP2022174127A (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 JP2022174127A publication Critical patent/JP2022174127A/ja
Application granted granted Critical
Publication of JP7454616B2 publication Critical patent/JP7454616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Description

著作権表示
この特許文献の開示の一部は、著作権によって保護される資料を含む。この特許文献または特許開示が特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人による複製に対して異議しないが、その他の場合には全ての著作権を保有する。
優先権主張
本願は、2019年1月29日に出願され、「分散型元帳におけるDAGベースのトランザクション処理方法およびシステム」と題された米国特許出願第16/261371号、および2018年8月24日に出願され、「分散型元帳におけるDAGベースのトランザクション処理方法およびシステム」と題された米国仮特許出願第62/722595号に基づく優先権の利益を主張し、各々の出願の全体が参照により本明細書に組み込まれる。
分野
本開示は、一般的に、分散型元帳(distributed ledger)を提供するためのシステムおよび方法に関する。より詳しくは、本開示は、分散型元帳における有向非循環グラフ(Directed Acyclic Graph:DAG)ベースのトランザクション処理方法およびシステム並びにそのコンポーネントを開示する。
背景
分散型元帳は、大まかに、資産所有権のデジタル記録として称される。元帳は、中央管理者を有しなく、中央データストアを有しない。代わりに、元帳は、コンピューティング環境において、複数の場所、複数の国、または複数の施設にわたって地理的に分布され得る多くの参加ノードにわたって複製される。コンセンサスプロトコルは、元帳の各ノードのコピーと他の全てのノードのコピーとの同一性を保証する。同様に、1組のコピーは、1つの共有元帳として見なされてもよい。資産所有者は、分散型元帳を用いて、例えば、暗号署名技術に基づいて、一部の資産所有者の口座の負債を記入し、別の資産所有者の口座の信用度を評価することができる。
ブロックチェーンは、改ざん防止の分散型元帳を実装するために使用することができるデータ構造である。複数のノードは、クライアントからのトランザクションをブロックにパッケージ化する共通プロトコルに従い、ノードは、コンセンサスプロトコルを使用して、次のブロックに合意する。ブロックは、累積暗号ハッシュを有するため、元帳の改ざんが困難である。各ブロックは、時間的に前のブロックの参照値(ハッシュ値)を有する。また、各ブロックは、自身のハッシュ値を有する。ブロックチェーンは、後方(例えば、チェーンの上方)にトラバースすることができる。
許可無し分散型元帳は、任意の単一のエンティティによる制御を回避しながら、匿名参加者が元帳を管理することを可能にする。しかしながら、匿名の場合、アイデンティティ(identity)、説明責任(accountability)および監査能力(auditability)は、困難である。対照的に、許可有り分散型元帳は、明示的に許可された当事者が元帳を管理するこ
とを可能にすることによって、信用レベルおよび説明責任を可能にする。許可型元帳は、より柔軟な管理およびコンセンサスメカニズムのより広い選択をサポートする。他のトランザクションよりも一部のトランザクションを好む参加者は、2種類の分散型元帳を容易に操作することができる。しかしながら、許可有り元帳の基礎となる説明責任は、参加者に制約を与える機会を提供する。
ブロックチェーンは、線形記録構造を用いてトランザクション履歴を記録することによって、分散型元帳問題を解決するための潜在的な解決策を提供する。しかしながら、分散システムの基本的な特性によって、多くの場合、複数の当事者が複数のトランザクションを同一の共有元帳に送信する場合、トランザクション競合がしばしば発生する。競合を緩和するための方法は、いくつかがあるが、いずれの方法は、良好な性能を提供するものではない。
典型的な公衆ブロックチェーン、暗号通貨に関連する公衆ブロックチェーンは、マイナー(miner)が順序付け(ordering)に基づいて維持すべきトランザクションまたは拒絶
すべきトランザクションを決定することを可能にする。これらのマイナーは、常により多くの報酬を有するトランザクションを好むため、事実上インセンティブモデルを選択する。しかしながら、部分的にインセンティブモデルによって、公衆ブロックチェーンは、非常に遅くなる。
典型的なエンタープライズブロックチェーンファブリックは、各ピアが単にオーダリングサービスからの一連のトランザクションの時間順序に基づいてトランザクションを提出するタイミングモデルを選択する。この場合、時間順序によって、多くのトランザクションが拒否される可能性がある。
概要
本明細書は、一実施形態に従って、分散型元帳におけるDAGベースのトランザクション処理システムおよび方法およびそのコンポーネントを記載する。
一実施形態によれば、本開示は、DAG構造を導入することによって、新しいトランザクション処理モデルを提供する。新しいモデルは、高いスループット性能を達成することができる。追加の重みメカニズムを用いて、様々なビジネス要件に基づいて最終性能を調節することができる。線形構造を使用した既存の作業とは異なり、より良好な性能を達成することができる。
ハイパーレッジャプロジェクトは、オープンソースのエンタープライズ級の分散型元帳フレームワークおよびコードベースを作成するように、Linux(登録商標)財団のプロジ
ェクトとして達成された共同成果である。ハイパーレッジャファブリックは、スマートコントラクトを実行するための分散型元帳プラットフォームの実装である。ハイパーレッジャファブリックは、コンテナ技術を利用して、システムのアプリケーションロジックを含む「チェーンコード」と呼ばれるスマートコントラクトをホストする。
一実施形態によれば、ハイパーレッジャの参加者は、元帳のコピーを複製する。元帳情報の共有に加えて、元帳を更新するプロセスも共有される。参加者のプライベートプログラムを用いて関連するプライベート元帳を更新する他のシステムとは異なり、ブロックチェーンシステムは、共有プログラムを用いて、共有元帳を更新する。共有元帳を介して参加者のビジネスネットワークを調整することによって、ブロックチェーンネットワークは、(信用性を増加しながら)プライベート情報を元帳に配布することに関連する時間、コストおよびリスク、並びに処理時間を低減することができる。ハイパーレッジャファブリックは、プライベートであり、許可型である。ハイパーレッジャファブリックネットワー
クのメンバが登録される。また、ハイパーレッジャファブリックは、チャネルを作成する機能を提供することができる。各チャネルは、特定のグループの参加者に可視である個別のトランザクション元帳を含むことができる。これによって、トランザクションプライバシを可能にする。
一実施形態によれば、ファブリックの分散型元帳プロトコルは、ピア(peer)によって実行される。ファブリックは、2種類のピアを識別する。検証ピアは、ネットワーク上で、コンセンサスの実行、トランザクションの検証、および元帳の管理に関与するノードである。一方、非検証ピアは、(トランザクションを発行する)クライアントを検証ピアに接続するためのプロキシとして機能するノードである。非検証ピアは、トランザクションを実行しないが、トランザクションを検証することができる。ファブリックのいくつかの特徴は、即時最終性を有し、チェーンコードと呼ばれる任意のスマートコントラクトを実行する許可型ブロックチェーンを含む。ユーザによって定義されたチェーンコードのスマートコントラクトは、コンテナの中でカプセル化され、システムチェーンコードは、ピアと同様のプロセスに実行される。ネットワークの全体において元帳トランザクションを同期状態に保持する(例えば、適切な参加者がトランザクションを承認する場合のみ、元帳を更新し、元帳を更新する場合、同様のトランザクションと共に同様の順序で元帳を更新することを保証する)ためのプロセスは、コンセンサスと称されてもよい。ファブリックは、TLS(トランスポート層セキュリティ)証明書、登録証明書、およびトランザクション証明書を認証するための認証局(CA)をサポートすることによって、コンセンサスプロトコルおよびセキュリティを実装する。
一実施形態に従って、ブロックチェーンクラウドサービスシステムのファブリック内のトランザクションフローを示す図である。 一実施形態に従って、ブロックチェーンクラウドサービスシステムを示す図である。 一実施形態に従って、BCSシステムを示す図である。 一実施形態に従って、BCSシステムを示す図である。 一実施形態に従って、ブロックチェーンクラウドサービスシステムのゲートウェイを示す図である。 一実施形態に従って、ブロックチェーンクラウドサービスシステムの永続化を示す図である。 BCS上のファブリックの例示的な配置を示す図である。 一実施形態に従って、チェーンコードアーキテクチャを示す図である。 一実施形態に従って、管理コンソールを提供するためのシステムを示す図である。 一実施形態に従って、BCSコンソールUI内のユーザインターフェイスの一例を示す図である。 一実施形態に従って、BCSコンソールUI内のユーザインターフェイスの一例を示す図である。 一実施形態に従って、BCSインスタンスにおいてRESTプロキシを提供するためのシステムを示す図である。 一実施形態に従って、シングルサインオン用の典型的なIDCS使用ケースを示す図である。 一実施形態に従って、ファブリッククライアント認証用のIDCS使用ケースを示す図である。 一実施形態に従って、分散型元帳におけるDAGベースのトランザクション処理方法およびシステムを示す図である。 一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラフを示す図である。 一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラフを示す図である。 一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラフを示す図である。 一実施形態に従って、分散元帳における有向非循環グラフ(DAG)ベースのトランザクション処理方法の一例を示すフローチャートである。
詳細な説明
一実施形態によれば、本明細書は、ブロックチェーンファブリックにおいてSQLベースのリッチクエリをサポートするためのシステムおよび方法を記載する。一実施形態によれば、本明細書に記載されたシステムおよび方法は、SQLクエリを実行することによって、より容易およびより管理可能な方法で複雑なスマートコントラクトを作成することができる。また、データ選別を(スマートコントラクトレベルで実行するではなく)ストレージエンジンに戻すことおよびデータの同時読み出しおよび書き込みアクセスをサポートするリレーショナルエンジンに依存することによって、性能を改善することができる。また、ワールドデータベースのステートは、同時読み出し/書き込みアクセスを提供することができる。
一実施形態によれば、ブロックチェーンファブリックにおいてSQLベースのリッチクエリをサポートする例示的なブロックチェーンファブリックは、クラウドサービスとして提供することができる。一実施形態によれば、エンタープライズ級のフレームワークは、クラウド技術を使用する様々なクライアントアプリケーションの拡張性、管理、設定、永続化、および互換性を含む。特定の実施形態において、許可型ブロックチェーン元帳およびブロックチェーンファブリックは、ブロックチェーンクラウドサービス(BCS)として提供される。
以下の説明では、本開示は、限定ではなく例示として添付の図面に示される。本開示に言及された様々な実施形態は、必ずしも同様の実施形態を指すものではなく、このような言及は、少なくとも1つを意味する。具体的な実装例を説明するが、これらの実装例は、例示という目的のために提供される。当業者は、本開示の範囲および精神から逸脱することなく、他のコンポーネントおよび構成を使用できることを認識できるであろう。本開示の説明は、請求される方法をサポートおよび開示する例示および実施形態を提供する。
また、特定の場合に、多数の具体的な詳細を記載することによって、本開示の完全な説明を提供する。しかしながら、当業者なら、これらの具体的な詳細がなくても、本開示に教示された方法の結果および利点を達成することができ、本開示に教示された発想を実施することができることを理解するであろう。場合によって、本開示を曖昧にしないために、周知の特徴を詳細に記載しない。
特定の機能の性能およびそれらの関係を示す機能的な構築ブロックを用いて、本開示の教示を説明する。これらの機能的な構築ブロックの境界は、説明の都合上、本開示において任意に定義されることが多い。したがって、代替的な実施形態において、同様の要素によって実行される機能は、異なる要素によって実行されてもよい。機能を実行する各々の要素は、1つの要素に合併されてもよい。特定の機能およびそれらの関係を適切に実行できる限り、代替的な境界を定義してもよい。したがって、これらの任意の代替的な境界は、本開示の範囲および精神に含まれる。
図面および詳細な説明全体において、同様の参照番号を用いて、同様の要素を示す。し
たがって、要素が他の場所に記載されている場合、図面に使用された参照番号は、その図面に関連する詳細な説明において、言及されてもよく、言及されなくてもよい。
ブロックチェーン技術は、利用者のエコシステムにおいてトランザクションをほぼリアルタイムで分散し、安全で改ざん防止データ共有を可能にすることによって、企業ビジネス価値を劇的に向上させることができる。ハイパーレッジャファブリックブロックチェーンは、モジュラアーキテクチャ、平形/共通型産業技術サポート、および企業需要に対するサポートを組み込む。
序論
一実施形態によれば、ハイパーレッジャファブリック(hyperledger fabric)は、高度の機密性、回復性、柔軟性、および拡張性を提供するモジュラアーキテクチャによって支持される分散型元帳ソリューションのプラットフォームである。ハイパーレッジャファブリックは、異なるコンポーネントのプラグ可能な実装をサポートし、実用のエコシステムに存在する複雑性および混雑性に適応するように設計される。
一実施形態によれば、ハイパーレッジャファブリックは、代替的なブロックチェーン解決策と異なり、柔軟で拡張可能なアーキテクチャを提供する。
ブロックチェーン-分散型元帳
一実施形態によれば、ブロックチェーンネットワークは、ネットワーク上で行われている全てのトランザクションを記録する分散型元帳を含むことができる。
ブロックチェーン元帳は、多くのネットワーク参加者によって複製され、各々のネットワーク参加者の協働によって管理されるため、しばしば分散型元帳と称される。分散および協働は、企業が実世界において商品およびサービスを交換する方法を反映する属性である。
分散および協働に加えて、ブロックチェーンに記録される情報は、暗号技術を用いて追加されるのみである。すなわち、いったんトランザクションを元帳に追加すると、このトランザクションは、変更できない。この不変性によって、情報の事後変更ができないため、参加者は、情報の出所を容易に決定することができる。したがって、ブロックチェーンは、証明システムとして考えられてもよい。
ブロックチェーン-スマートコントラクト
一実施形態によれば、情報の一貫した更新および特定の元帳機能(トランザクション、クエリなど)をサポートするために、ブロックチェーンネットワークは、スマートコントラクトを使用することによって、元帳へのアクセスを制御する。
一実施形態によれば、スマートコントラクトは、情報をカプセル化し、ネットワーク全体にわたってその情報を簡単に維持するための重要なメカニズムだけでなく、参加者がトランザクションの特定部分を自動的に実行できるように書かれてもよい。
スマートコントラクトは、例えば、品物の到着時間に応じて出荷コストを変化するように書かれてもよい。両方の当事者によって合意され、元帳に記載された条件に基づいて、品物を受け取った時に、対応の資金が自動的に譲渡される。
ブロックチェーン-コンセンサス
一実施形態によれば、ネットワークの全体において元帳トランザクションを同期状態に保持する(例えば、適切な参加者がトランザクションを承認する場合のみ、元帳を更新し
、元帳を更新する場合、同様のトランザクションと共に同様の順序で元帳を更新することを保証する)ためのプロセスは、コンセンサスと称されてもよい。
一実施形態によれば、ブロックチェーンは、共有且つ複製されたトランザクションシステムとして考えられてもよい。このトランザクションシステムは、スマートコントラクトを介して更新され、コンセンサスと呼ばれる協働プロセスを介して一貫して同期状態に保持される。
ブロックチェーンの利点
一実施形態によれば、現在利用可能なトランザクションネットワークは、ビジネス記録を保持する時に存在していたバージョンのネットワークである。ビジネスネットワークのメンバが互いに取引をするが、各メンバは、各自の取引記録を管理する。同様に、品物を販売する企業がその品物の所有権を確認するための権原連鎖を保有することを保証するために、取引の対象物を販売する度に、出所を確認することができる。
現在のビジネスネットワークがコンピューティングシステムによって近代化されているにも関わらず、ネットワーク参加者のアイデンティティを管理するための統一システムが存在しておらず、(数兆ドルにも昇る世界規模の)証券取引を決済するのに数日がかかり、契約を手動で署名し実行しなければないため、出所の確認は、困難である。また、システム内の各データベースが固有の情報を含むため、1つの欠点を表す。
一実施形態によれば、ブロックチェーンは、ネットワーク上でアイデンティティを確立し、トランザクションを実行し、データを記憶するための標準方法を提供することによって、多くの非効率な標準トランザクションシステムの代替案を提供する。
一実施形態によれば、ブロックチェーンネットワークの各参加者は、各自の元帳のコピーを有する。元帳情報の共有に加えて、元帳を更新するプロセスも共有される。参加者のプライベートプログラムを用いて関連するプライベート元帳を更新する他のシステムとは異なり、ブロックチェーンシステムは、共有プログラムを用いて、共有元帳を更新する。
一実施形態によれば、共有元帳を介して参加者のビジネスネットワークを調整することによって、ブロックチェーンネットワークは、信用性および可視性を増加しながら、プライベート情報の配布に関連する時間、コストおよびリスク、並びに処理時間を低減することができる。
ハイパーレッジャファブリック
ハイパーレッジャファブリックは、他のブロックチェーン技術と同様に、元帳を有し、スマートコントラクトを使用し、参加者がトランザクションを管理するシステムである。
ハイパーレッジャファブリックは、プライベートであり許可型であるため、いくつかの他のブロックチェーンシステムとは異なる。いくつかのブロックチェーンネットワークは、「プルーフオブワーク」の代わりに、アイデンティティを使用して認証する(基準を満たす人がネットワークの参加を許可する)。ハイパーレッジャファブリックネットワークのメンバは、メンバシップサービスプロバイダを介して登録する。
また、ハイパーレッジャファブリックは、いくつかのプラグ可能なオプションを提供する。元帳データを複数のフォーマットで格納することができ、コンセンサスメカニズムをインおよびアウトに切り替ることができ、異なるMSP(メンバシップサービスプロバイダ)をサポートすることができる。
さらに、ハイパーレッジャファブリックは、チャネルを作成する機能を提供することによって、参加者グループが別々のトランザクション元帳を作成することを可能にする。これによって、ネットワーク上の一部の参加者が競合者であり、全てのトランザクションを参加者の全員に公開しないこと(例えば、一部の参加者に特別価格を提供し、他の参加者に提供していないこと)を可能にする。2人の参加者がチャネルを作成する場合、他の参加者を除き、この2人の参加者は、そのチャネルの元帳のコピーを有する。
共有元帳
一実施形態によれば、ハイパーレッジャファブリックは、2つのコンポーネント、すなわち、ワールドステートおよびトランザクションログを含む元帳サブシステムを有する。各参加者は、所属する全てのハイパーレッジャファブリックネットワークの元帳のコピーを有する。
ワールドステートというコンポーネントは、所定の時点における元帳の状態を記述する。ワールドステートは、元帳のデータベースである。トランザクションログというコンポーネントは、ワールドステートの現在値をもたらした全てのトランザクションを記録する。トランザクションログは、ワールドステートの更新履歴である。したがって、元帳は、ワールドステートデータベースとトランザクションログ履歴との組み合わせである。
共有元帳は、ワールドステートの交換可能なデータストアを有する。デフォルトでは、共有元帳は、レベルDBキー値ストアデータベースである。トランザクションログは、プラグ可能ではなくてもよい。トランザクションログは、単に、ブロックチェーンネットワークによって使用される前後の元帳データベースの値を記録するものである。
スマートコントラクト
ハイパーレッジャファブリックスマートコントラクトは、チェーンコードで書かれ、ブロックチェーンの外部のアプリケーションが元帳と対話する必要があるときに、そのアプリケーションによって呼び出される。殆どの場合、チェーンコードは、トランザクションログではなく、ワールドステートである元帳のデータベースコンポーネントのみと対話する(例えば、データベースを検索する)。
コンセンサス
一実施形態によれば、トランザクションは、ネットワーク内の異なるセットの参加者の間に実行されても、実行される順序で元帳に書き込まれる。このため、トランザクションの順序が確立され、誤った(または悪意で)元帳に挿入される悪いトランザクションを拒否することができる。
ハイパーレッジャファブリックによって、ネットワークエンティティ(例えば、ネットワークユーザ、ピア、スタータ)は、参加者の間の関係を最もよく表すコンセンサスメカニズムを選択することができる。プライバシと同様に、参加者の間の関係で高度に構造化されたネットワークからよりピアツーピアであるネットワークまでの広範囲のネットワークが必要である。
チェーンコード
一実施形態によれば、チェーンコードは、1つ以上の資産と、資産を変更するためのトランザクション命令(ビジネスロジック)とを定義するソフトウェアを含むことができる。チェーンコードは、キー値対または他の状態データベース情報を読み取るまたは変更するための規則を実行する。チェーンコードの機能は、元帳の現在の状態データベースに対して実行され、トランザクション提案によって作動される。チェーンコードの実行は、ネットワークに提出され、全てのピア上の元帳に適用される一組のキー値の書き込み(書き
込みセット)をもたらす。
元帳の特徴
一実施形態によれば、元帳は、ファブリック内の全ての状態遷移のひと続きの耐タンパー性の記録である。状態遷移は、参加者がチェーンコードを実行すること(トランザクション)によってもたらした結果である。各トランザクションは、作成、更新、または削除として元帳にコミットする一組の資産キー値対を生成する。
元帳は、変更できないひと続きの記録をブロックに格納するブロックチェーン、および現在のファブリック状態を保持するための状態データベースから構成される。各チャネルは、1つの元帳を含み、各チャネルは、特定の参加者グループに可視であるトランザクションの別個の元帳を含む。各ピアは、メンバとして所属する各チャネルの元帳のコピーを保持する。
チャネルのプライバシ
一実施形態によれば、ハイパーレッジャファブリックは、チャネルごとに不変の元帳、および資産の現在の状態を処理および変更する(すなわち、キー値対を更新する)ことができるチェーンコードを利用する。元帳は、チャネルの範囲に存在する。元帳は、(全ての参加者が1つの共通チャネル上で動作している場合)ネットワーク全体にわたって共有されてもよく、または特定組の参加者のみを含むように私有化されてもよい。
後者の場合、参加者は、別個のチャネルを作成することによって、トランザクションおよび元帳を分離/隔離することができる。完全な透明度とプライバシとの間のギャップを埋めることを可能にするために、チェーンコードは、読み取りおよび書き込みを実行するために資産状態にアクセスする必要があるピアのみにインストールされてもよい(すなわち、チェーンコードをピアにインストールしない場合、ピアは、元帳と適切にインターフェイスすることができない)。データをさらに不明瞭にするために、AES(高度暗号化標準)などの通常の暗号アルゴリズムを用いて、チェーンコード内の値を(部分的または全体的に)暗号化してから、元帳に追加する。
一実施形態によれば、チャネルプライバシよりも小さい概念である「プライベートコレクション」を用いて、プライバシを改善することができる。
セキュリティおよびメンバシップサービス
一実施形態によれば、ハイパーレッジャファブリックは、全ての参加者が既知のアイデンティティを有するトランザクションネットワークを提供する。パブリックキーインフラストラクチャを用いて、組織、ネットワークコンポーネント、およびエンドユーザまたはクライアントアプリケーションに関連付ける暗号化証明書を作成する。したがって、より広いネットワークおよびチャネル上でデータのアクセスを制御および管理することができる。ハイパーレッジャファブリックのこの「許可」概念は、チャネルの存在および特性と共に、プライバシおよび機密性が重要であるシナリオに対処することができる。
コンセンサス
一実施形態によれば、分散型元帳において、コンセンサスは、単にトランザクションの順序に対する合意よりも多くのものを含むことができる。この区別は、提案およびエンドースメントから、順序付け、検証およびコミットメントまでのハイパーレッジャファブリックのトランザクションフロー全体における基本的な役割によって強調される。コンセンサスは、ブロックを含む一組のトランザクションの正当性の完全検証として定義される。
トランザクションブロックの順序および結果が明示的なポリシ基準チェックを満たした
ときに、コンセンサスが最終的に達成される。これらのチェックおよびバランスは、トランザクション中に行われ、特定のトランザクションに署名しなければならない特定のメンバを決定するためのエンドースメントポリシの使用、およびこれらのポリシを実行および遵守することを保証するためのシステムチェーンコードを含む。コミットメントの前に、ピアは、これらのシステムチェーンコードを利用して、エンドースメントが確実に存在し且つ適切なエンティティからのものであることを確認することができる。また、トランザクションを含む任意のブロックを元帳に付加する前に、元帳の現在の状態に合意または同意している間に、バージョンチェックを実行する。この最終チェックは、データの完全性を損なう可能性のある二重使用および他の脅威に対する保護を提供すると共に、非静的変数に対する関数の実行を可能にする。
エンドースメント、検証およびバージョンチェックに加えて、トランザクションフローに行われる継続的なアイデンティティ検証を含む。アクセス制御リストは、ネットワークの(オーダリングサービスからチャネルまでの)階層上で実装され、トランザクション提案が異なるアーキテクチャコンポーネントを通過する際に、ペイロードは、繰り返して署名され、検証され、認証される。コンセンサスは、合意された一連のトランザクションの順序に限定されず、むしろ、提案からコミットメントまでのトランザクションフローに行われる継続的な検証の副産物として達成されたプロセスである。
ブロックチェーンクラウドサービス-アーキテクチャ
一実施形態によれば、クラウドシステム(例えば、ブロックチェーンクラウドサービス(BCS))などのシステムは、上述したハイパーレッジャファブリックを出発点として利用することができる。このようなシステムは、高度に進歩した特異なエンタープライズ級の分散型元帳クラウドプラットフォームを提供することによって、新しいブロックチェーンベースのアプリケーションの作成および/または既存のSaaS、PaaSおよびIaaS並びにオンプレミスアプリケーションの拡張を可能にする。
一実施形態によれば、システムは、拡張性、安全性、ロバスト性、統一性、およびパフォーマンスなどのミッションクリティカル企業需要をサポートすることによって、作成中ブロックチェーンアプリケーションの採択およびサポートに対する障壁を取り除くことができる。システムは、BCSをクラウドPaaS(Platform as a Service)として提供
することによって、ユーザがブロックチェーンを配置、設定、管理および監視することおよびブロックチェーンを企業に配置するためのコストを低減することを可能にする。また、システムは、ブロックチェーンアプリケーションの開発および他のプラットフォームとの統合を加速する。このシステムによって、SaaSクラウド利用者は、ブロックチェーンクラウドプラットフォームを使用する第三者アプリケーションおよび外部分散型元帳技術を用いて、調達、支払、貿易金融、会計、HR、CXなどの企業プロセスのデータを安全に共有することができ、分散トランザクションを実行することができる。
一実施形態によれば、システムは、PaaSマネージャ(例えば、オラクル(登録商標)PaaSサービスマネージャ(PSM)プラットフォーム)に基づくクラウドサービスである。通常、このようなシステムは、計算スペース(例えば、外部計算スペース)に動作するクラウド管理サービスである。一実施形態において、システムは、オラクルアイデンティティクラウドサービス(IDCS)、オラクルロードバランササービス(LBaaS)、オラクルイベントハブクラウドサービス、およびオラクルクラウドストレージを用いて、階層化したオラクルアプリケーションコンテナクラウドサービス(ACCS)を含むPSMプラットフォームの特徴を利用する。各クライアントのブロックチェーンを作成することができ、テナントとして実行することができる。システムは、複数のブロックチェーンをサポートすることができ、各ブロックチェーンは、マルチテナント環境内の各々のテナントとして作成され、動作する。
したがって、このシステムによって、アプリケーションまたはクライアントアプリケーションは、必要または所望に応じて、スマートコントラクトを含む分散型元帳を実装することができる。このようなシステムのクライアントおよびユーザは、クラウド(ブロックチェーン信用)の内部であってもよく、または外部であってもよい。いくつかのブロックチェーンネットワークは、クラウド環境外部のコンポーネントを含んでもよく、または特定のクラウドに限定されてもよい。
一実施形態によれば、このシステムは、多種多様な応用、特に信用およびアイデンティティを解決しなければならないマルチパーティトランザクションに有用である。他のブロックチェーンシステムとは異なり、本開示のシステムサービスは、匿名ではない。実際に、アイデンティティおよび監査能力は、基本的な統合要素である。したがって、BCSは、例えば、資本市場、越境トランザクション、金融サービス、資産トランザクション、法律規制、ヘルスケア記録、公開、ロジスティック、変更追跡、および偽造防止において応用されてもよい。
上述したように、ブロックチェーン上の各当事者は、(元帳が特定の当事者に作成/私有化されない限り)全てのデータベースおよび全ての履歴にアクセスすることができる。各当事者は、データまたは情報を制御することができない。また、全ての当事者は、仲介人なしで、トランザクション相手の記録を直接に検証することができる。通信は、中心ノードを介せず、ピア間で直接に行われる。各ノードは、情報を記憶すると共に、情報を全ての他のノードに転送する。いったんトランザクションがデータベースに入力され、アカウントが更新されると、記録は、その前に入力された全てのトランザクションの記録にリンクされる(したがって、「チェーン」と呼ばれる)ため、変更することができない。トランザクションにエラーが存在する場合、新しいトランザクションを用いてエラーを訂正することができる。両方のトランザクションは、提供されたユーザに可視である。新しい有効なトランザクションを追加するために、参加者は、コンセンサスメカニズムを介してトランザクションの有効性に合意することができる。ブロックチェーンの参加者は、資産の出所、および資産所有権の時間的な変化を検証することができる。デジタル署名を用いて文書を認証することができ、デジタル署名をアクセス制御(許可レベルの変更)およびプログラマビリティ(実行可能なビジネスルール)に追加することができる。
多くのマルチパーティトランザクションにおいて、当事者は、資産またはサービスを受け取った時に、金銭を交換する。通常、トランザクション時間によって、一方の当事者は、他方の当事者よりも先に商品または金銭を提供しなければならない。いくつかの環境では、信用は、仲介人が契約の条件が成立するまで資金を預託することによって解決される。この方法は、当事者間の信用を解決する。しかしながら、この方法は、信用しなければならない別の集権者を追加するため、複雑性を増加すると共に、トランザクションのコストを増加する。本開示のシステムの一部としてスマートコントラクトを使用することによって、仲介人を排除することができる。これによって、当事者は、仲介人を介することなく、ブロックチェーン上で信用できるトランザクションを行うことができる。
一実施形態によれば、BCSなどの本開示のシステムの利点は、システム内の情報を分散することを含む。監査能力を利用できると共に、アクセスを制御することができ、いくつかのプライバシを管理することができる。また、ブロックチェーン元帳は、本質的に変更することができず、拒否することができない。元帳は、複数のブロックから構成される。各トランザクションブロックは、ブロックID、過去のハッシュ、データハッシュ、タイムスタンプ、トランザクションIDリスト、動作(1~n)、チェーンコードID、チェーンコード提案、応答(r/wセット、イベント、成功または失敗)、およびエンドーサを含む。各ブロックは、過去のハッシュおよびそれ自体のハッシュを含むため、いった
ん公開/配布されると、本質的に順序付けられ、不変である(なお、現在ブロックのハッシュは、過去ブロックのハッシュと現在ブロック内の他のデータとのハッシュであるため、チェーン内のブロックをリンクする)。コンセンサスは、矛盾を解消することができる。集中型データベースまたは仲介人と比較して、集中型権威者に過度の権限を与える必要はない。また、元帳の分散性質は、分散コピーおよびコンセンサスを使用することによって、(アルゴリズム的に可能であっても)変更が難しいため、ブロックチェーン記録技術の基本的な不変性を強化する。したがって、トランザクションの順序が一定であるため、誰かがチェーンの最新のブロックのコピーを有する場合、元帳のハッキングは、ほぼ不可能である。
特定の実施形態において、以下で説明するように、本開示のシステムは、オラクルPaaSサービスマネージャ(PSM)プラットフォームに基づくことができ、ファブリックベースのブロックチェーンの作成、監視および設定を単純化/容易化/自動化する管理コンソールを含むこによって強化される。また、アプリケーションとブロックチェーンファブリックとの間の接触を簡単化するために、1つのREST APIを含むRESTプロキシサービスが提供される。開発者は、スマートコントラクトを構築し、管理コンソールを用いてスマートコントラクトを配置し、次いで、アプリケーションを用いて、ブロックチェーン上でスマートコントラクトを(デフォルトの場合)非同期的にまたは(即時応答が要求される場合)同期的に呼び出すことができる。RESTプロキシサービスおよびAPIは、プラットフォームの需要に応じて、同期および非同期の両方の能力を提供する。
一実施形態によれば、ファブリックCAサーバは、ファブリックのメンバシップサービスを提供することができる。ファブリックCAサーバは、以下の3つの部分、すなわち、ユーザの認証、ブロックチェーン(ピアおよびオーダのグループ)にアクセスするための認可、並びにアプリケーションクライアント、ピア(peer)およびオーダ(order)に証
明書を配信するCAサーバを含むことができる。ファブリックCAは、証明書を利用して、認証および許可を実施することができる。証明書は、以下の2つの種類、すなわち、認証用登録証明書および認可用トランザクション証明書を含む。一実施形態によれば、IDCSなどのアイデンティティサービスは、認証および認可を提供することもできる。
ハイパーレッジャファブリック
上述したように、一実施形態において、本開示のシステムは、スマートコントラクトを実行するための分散型元帳プラットフォームを提供するハイパーレッジャファブリックを実装することができる。ハイパーレッジャファブリックは、コンテナ技術を利用して、システムのアプリケーションロジックを含む「チェーンコード」と呼ばれるスマートコントラクトをホストする。代替的な実施形態において、ブロックチェーンクラウドサービスは、例えば、2016年5月31日に出願され、参照により本明細書に組み込まれる米国特許出願第15/169622号「分散型元帳システムにおける説明責任および信用」に記載された「Tendermint」元帳システムを含む代替的な分散型元帳プラットフォームを実装する。
ハイパーレッジャファブリックの分散型元帳プロトコルは、ピアによって実行される。従来のブロックチェーン技術の1つの欠点は、全てのピアが全てのトランザクションを記録する必要があることである。このことは、実質的にI/Oおよびプロセッサのオーバーヘッドを引き起こし、エンタープライズ級のシステムに応じて簡便に拡張することができない。ハイパーレッジャファブリックは、2種類のピアを識別する。コミッタピアは、エンドースメントを確認し、トランザクションをブロックチェーンにコミットする前にトランザクション結果を検証し、および元帳を管理するためのネットワーク上のノードである。一方、非検証ピアは、(トランザクションを発行する)クライアントを検証ピアに接続するためのプロキシとして機能するノードである。非検証ピア(またはエンドーサピア)
は、トランザクションを実行しないが、トランザクションをシミュレートし、署名することができる。ピアの種類/機能の分離は、システムの拡張性を改善する。オーダリングサービスは、署名済みトランザクションを受信し、ブロックに順序付け、ブロックをコミッタピアに送信することができる。このような分散型元帳システムにおいて、コンセンサスは、元帳に追加される次のトランザクションセットの合意を形成するプロセスである。ハイパーレッジャファブリックにおいて、コンセンサスは、3つの別個のステップ、すなわち、トランザクションのエンドースメント、順序付け、並びに検証およびコミットメントを含む。
一実施形態によれば、ハイパーレッジャの特徴は、即時最終性を有し、チェーンコードと呼ばれる任意のスマートコントラクトを実行する許可型ブロックチェーンである。ユーザによって定義されたチェーンコードのスマートコントラクトは、コンテナの中でカプセル化され、システムチェーンコードは、ピアと同様のプロセスに実行される。チェーンコードの実行は、トランザクションの順序で分割されるため、必要とされるノード間の信用レベルおよび検証レベルを制限し、ネットワークのオーバーヘッドを低減する。
一実施形態によれば、ハイパーレッジャファブリック内のチャネルは、共通のネットワーク上で資産を交換する競合ビジネスおよび規制産業によって要求された高度なプライバシおよび機密性で、多者トランザクションを行うことを可能にする。変更できない共有元帳は、各チャネルの全てのトランザクション履歴を暗号化し、監査および紛争を効率的に解決するためのクエリ機能を含む。元帳は、チャネルの範囲に作成される。元帳は、(全ての参加者が1つの共通チャネル上で動作している場合)ネットワーク全体にわたって共有されてもよく、または特定組の参加者のみを含むように私有化されてもよい。
一実施形態によれば、ハイパーレッジャファブリックは、TLS証明書、登録証明書およびトランザクション証明書を認証するための認証局(CA)をサポートすることによって、セキュリティを実装する。パブリックキーインフラストラクチャを用いて、組織、ネットワークコンポーネント、およびエンドユーザまたはクライアントアプリケーションに関連付ける暗号証明書を作成する。したがって、より広いネットワークおよびチャネル上でデータのアクセスを制御および管理することができる。ハイパーレッジャファブリックのこの「許可」特徴は、チャネルの存在および能力と共に、多者企業システムのプライバシおよび機密性の要求を満たす。
一実施形態によれば、ハイパーレッジャファブリックは、チェーンコードトランザクションを用いて資産を変更することができる。上述したように、チェーンコードは、1つ以上の資産と、資産を変更するためのトランザクション命令とを定義するソフトウェアである。
一体化コンセンサスメカニズムは、提案およびエンドースメントから、順序付け、検証およびコミットメントまでのハイパーレッジャファブリックのトランザクションフローにおいて、基本的な役割を有する。コンセンサスは、上述したように、ブロックを含むトランザクションセットの有効性の検証である。コンセンサスは、トランザクションブロックの順序および結果が明示的なポリシ基準チェックを満たしたときに最終的に達成される。
図1Aは、ブロックチェーンサービスを提供するシステムのファブリックに行われたトランザクションフローを示す。より具体的には、図1Aは、一実施形態に従って、ブロックチェーンクラウドサービス(BCS)システムを示す。1において、クライアント160は、ファブリックSDK162を用いて、ファブリック認証局170、172、174にアクセスして登録する。1.1において、ファブリックCAは、登録証明書をクライアント160に送付する。2において、クライアント160は、ファブリックSDK162
を用いて、ピアコンテナ180にアクセスすることによって、エンドーサ182からの署名を要求する。2.1において、エンドーサ182は、署名済みRWセット(読み出し/書き込みセット)を返信する。3において、クライアント160のファブリックSDK162は、RWセットおよびエンドーサの署名を含む署名済みTX(トランザクション)を、オーダリングコンテナ190のオーダリングサービスに提出する。4において、オーダ(orderer)192は、TXバッチをピアコンテナ180内のコミッタ184に配信する
。オーダは、トランザクションをブロックに順序付けるノードの所定集合である。オーダリングサービスは、ピアプロセスとは無関係に存在し、先着順でネットワーク上の全てのチャネルのトランザクションを順序付ける。コミッタ184は、5および5.1において、元帳186およびワールドステート188を変更する。ファブリック認証局170を用いて、ピアコンテナ180、スマートコントラクトコンテナ166およびスマートコントラクト168、並びにオーダ192の署名および認可を確認することができる。さらに、スマートコントラクト168は、エンドーサ182と通信することができる。
一実施形態において、システムは、カフカ(Kafka)クラスタをオーダリングサービス
として利用することができる。カフカは、セマンティクスの公開および加入をサポートする分散型ストリーミングサービスである。カフカクラスタは、複数のサーバ上で動作し、一連の記録をトピックと呼ばれるカテゴリに記憶する。各記録は、キー、値およびタイムスタンプを含む。したがって、カフカは、オーダリングサービスノード(OSN-n)およびカフカクラスタを含むオーダリングサービスとして使用されてもよい。オーダリングサービスクライアントは、複数のOSNに接続されてもよい。OSNは、互いに直接に通信しない。これらのオーダリングサービスノード(OSN)は、(1)クライアント認証を行い、(2)クライアントが簡単なインターフェイスを用いてチェーン1に書き込むことまたはチェーン1から読み取ることを可能にし、および(3)既存のチェーンを再構成するまたは新しいチェーンを作成するための構成トランザクションに対してトランザクションの選別および検証を行う。カフカ内のメッセージ(記録)は、トピックパーティションに書き込まれる。カフカクラスタは、複数のトピックを有してもよく、各トピックは、複数のパーティションを有してもよい。各パーティションは、継続的に付加される、順序づけられた不変のひと続きの記録である。OSNは、クライアント認証およびトランザクション選別を実行した後、特定のチェーンに所属する入来クライアントトランザクションを対応するチェーンのパーティションに中継することができる。次いで、クライアントトランザクションは、そのパーティションで実行され、全てのオーダリングサービスノードに対して共通なトランザクションの順序づけられたリストを返信することができる。
一実施形態によれば、各ピアは、エンドーサおよびコミッタになることができる。設定項目(例えば、CORE_PEER_ENDORSER_ENABLED)は、ピアをエンドーサにすることができる。ピアがチャネルに参加すると、このピアは、このチャネルのコミッタになる。チェーンコードがピアにインストールされると、このピアは、このチェーンコードのエンドーサ候補になる。クライアントがトランザクションを提案する場合、クライアントは、(エンドーサ候補から)エンドーサになるピアを選択することができる。
一実施形態によれば、オーダがブロックをピアに配布するための順序付けメカニズムは、以下の通りである。まず、ピア(例えば、リーダピア)は、自身のバージョン(最後のブロック番号)を送信することによって、オーダから新しいブロックを要求する。次に、オーダは、ピアのバージョンをチェックする。a)ピアのバージョンがオーダのバージョンよりも大きい場合、オーダの元帳が無くしており、イベントハブ(EventHub)から回復することができないことを示すエラーをピアに返信する(このシナリオにおいて、オーダは、適切な動作を継続することができない)。b)ピアのバージョンがオーダのバージョンより小さい場合、オーダは、RAMまたはローカルファイル内のローカル元帳からブロックを取り出し、ピアに返信する。c)両者が同様のバージョンを有する場合、オーダは
、新しいブロックが利用可能になるまで中止する。イベントハブから切り出した新しいブロックが利用可能になると、オーダは、このブロックをローカルブロックファイルまたはRAMに入れ、次に、元帳からこのブロックを読み出す配布スレッドをピアに返信する。ピアは、このブロックを入手し、ローカル元帳にコミットし、ブロックの最新バージョンを他のピアにブロードキャストすることができる。
BCSシステムアーキテクチャ
図1Bは、ブロックチェーンサービスを提供するシステムのファブリックに行われたトランザクションフローを示す。より具体的には、図1Bは、一実施形態に従って、ブロックチェーンクラウドサービス(BCS)システムを示す。図示のように、ブロックチェーンクラウドサービスコンポーネントは、例えば、オラクルPaaSサービスマネージャ(PSM)プラットフォーム上で、計算スペース120(例えば、外部計算スペース)に作成される。システムへのアクセスは、PSM API122およびブロックチェーンREST API124によって仲介される。外部計算スペース120は、負荷分散サービスLBaaS(load balancing as a service)126を利用して、入来トランザクション
を利用可能なリソースに適切に分散する。
一実施形態によれば、BCSは、アプリケーションコンテナクラウドサービス128上のPSMプラットフォームを用いて構築されたアプリケーションコンテナ階層サービスである。BCSエンティティの各々は、別個のコンテナ上で動作する。各BCSエンティティは、1対1でアプリケーションコンテナと対応する。ブロックチェーンクラウドサービスは、上述したハイパーレッジャファブリックの特徴を実装する。基本的なファブリックネットワークを構築するコンポーネントに加えて、ブロックチェーンクラウドサービスにおいてハイパーレッジャファブリックを活用するためのいくつかのコンポーネントが開発されている。別個の挙動およびバイナリを用いて、これらのコンポーネントを配置する必要がある。クラウドスタックマネージャを用いて、ユーザに権限を与えることによって、ブループリントによってスタックと呼ばれる単一のユニットとして定義された全てのサービスを自動的に作成することができる。
一実施形態において、BCSは、スマートコントラクトを実行するための分散型元帳プラットフォームを実装するためのハイパーレッガファブリック実装を提供する。BCSは、コンテナ技術を利用して、システムのアプリケーションロジックを含む「チェーンコード」と呼ばれるスマートコントラクトをホストする。
一実施形態によれば、ファブリックの分散型元帳プロトコルは、ピアによって実行される。ファブリックは、2種類のピアを識別する。検証ピアは、コンセンサスの実行、トランザクションの検証、および元帳の管理に関与するネットワーク上のノードである。一方、非検証ピアは、(トランザクションを発行する)クライアントを検証ピアに接続するためのプロキシとして機能するノードである。非検証ピアは、トランザクションを実行しないが、トランザクションを検証することができる。ファブリックのいくつかの重要な特徴は、即時最終性を有し、チェーンコードと呼ばれる任意のスマートコントラクトを実行する許可型ブロックチェーンを含む。ユーザによって定義されたチェーンコードのスマートコントラクトは、コンテナの中でカプセル化され、システムチェーンコードは、ピアと同様のプロセスに実行される。ファブリックは、TLS証明書、登録証明書、およびトランザクション証明書を認証するための認証局(CA)をサポートすることによって、コンセンサスプロトコルおよびセキュリティを実装する。
一実施形態によれば、BCSエンティティは、ACCS128を用いて階層化されたコンテナインスタンスで動作する。コンテナは、PSMの作成動作によって作成および/または作動される。ファブリックCAコンテナ130は、BCSファブリックCA(認証局
)コンポーネントを提供するコンテナである。BCSピアコンテナ132は、元帳コンポーネントに対して読み出し/書き込み動作を実行するために、元帳コンポーネントを管理し、チェーンコードコンテナを実行するためのBCSピアネットワークエンティティが動作するコンテナである。BCSオーダコンテナ134は、トランザクションを全てのチャネルのブロックチェーンに順序付けるためのBCSオーダが動作するコンテナである。BCSチェーンコード実行コンテナ139は、ピアエンティティによって作成され、作動されるコンテナである。コンテナにおいて、チェーンコード実行ユニットは、親ピアエンティティと通信し、資産とブロックチェーン内の資産を変更するためのトランザクション命令との符号化を実行する。
一実施形態によれば、BCSチェーンコードビルダコンテナ140は、ピアエンティティによって作成され、作動されるコンテナである。チェーンコード構築環境は、コンテナに設置および展開され、チェーンコード実行ユニットは、コンテナに構築される。ファブリックSDKクライアント106は、BCSにアクセスするための機能を提供する。また、ブロックチェーンクラウドサービスは、イベントハブクラウドサービス150、クラウドストレージサービス152、およびアイデンティティサービス154を利用する。オラクル(登録商標)ストレージクラウドサービスは、BCSのストレージサービスとして使用される。
一実施形態によれば、ドッカ/ウイーブ(Docker/Weave)141は、コンテナサービスである。コンテナは、共有オペレーティングシステム上で単独に実行できるフォーマットでソフトウェアをパッケージ化する方法である。VMとは異なり、コンテナは、完全なオペレーティングシステムをバンドルせず、その代わりに、ソフトウェアの動作に必要なライブラリおよび設定を使用してバンドルする。これによって、効率的且つ軽量な自己内蔵型システムを作成することができ、ソフトウェアが配置場所に関係なく常に同様に動作することができる。
一実施形態によれば、各BCSインスタンスは、異なる種類のノードから構成される。BCSインスタンスは、少数(例えば、0以上)から多くのピアノードを含むことができ、少数(例えば、0)から多くのオーダノードを含むことができる。各VMは、1つのBCSインスタンスを含み、各BCSインスタンスは、1つから複数のファブリックCAノードを含む。BCSゲートウェイについて、BCSインスタンスは、少数(例えば、0)から多くのBCSゲートウェイを含むことができる。BCSコンソールは、BCSインスタンスのコンポーネントである。各BCSインスタンスは、1つのみのBCSコンソールを含む。
一実施形態によれば、以下でより詳細に説明するように、BCS管理サーバ(コンソール)136は、多くの監視機能、管理機能および表示機能をBCSスタックインスタンスに提供するためのBCSコンポーネントである。以下でより詳細に説明するように、BCSゲートウェイ(RESTプロキシ)138は、新しいBCSコンポーネントであり、REST APIインターフェイスを利用者/クライアントに提供する。利用者/クライアントは、REST APIインターフェイスを用いて、ファブリックにアクセスすることによって、トランザクションを実行する。
一実施形態によれば、公衆アクセスクライアント100のPSMコンソールUI102は、プラットフォームサービスマネージャの管理を可能にする。BCSコンソールUI104は、BCS管理サーバの制御を可能にする。ファブリックSDKクライアント106、BCS RESTクライアント108、およびファブリックメンバシップクライアント110を含む様々な異なる種類のクライアントは、BCSサービスにアクセスすることができる。
一実施形態によれば、上記に列挙した各種類のコンテナに、ブループリントを独立サービスタイプとして定義することができる。オラクルクラウドスタックマネージャは、ブループリントを用いて、単一のスタックユニットで全ての独立サービタイプの作成を自動化する。各BCSエンティティをサービスタイプとして定義する利点は、様々な実行エンティティを容易に更新および管理することである。アプリケーションコンテナ階層サービスは、4種類の動作、すなわち、作成サービス(CREATE_SERVICE)、削除サービス(DELETE_SERVICE)、スケールサービス(SCALE_SERVICE)、起動/停止/再起動(Start/Stop/Restart)をサポートする。これらの動作は、サービスごとに適用することが可能である。
一実施形態によれば、ハイパーレッガファブリックネットワークにおいて、オーダリングサービスコンポーネントは、アパッチカフカ(Apache Kafka)を用いて、クラッシュフォールトトレラント方法でオーダリングサービスを提供し、複数のチェーンをサポートする。したがって、BCSクラウドサービスにおいて、オーダリングサービスコンポーネントは、(カフカのパワーを処理済みストリーミングデータプラットフォームとして配布し、オラクルの残りのクラウドと一体化することができる)オラクルイベントハブクラウドサービス(OEHCS)を使用する。
図1Cは、実施形態に従って、BCSシステムを示す。より具体的には、図1Cは、BCSランタイムを示す。
一実施形態によれば、ゲートウェイベースのアプリケーション103および/またはファブリックベースのアプリケーション105などのクライアントは、インターネット107などのネットワークおよび(後述する)クラウドゲートを含むロードバランサLBaaS126などのフロントエンドを介して、AACSインスタンス128と通信することができる。入来コールは、(図面において太い破線として示された)REST通信、または特定の状況では(図では淡い破線として示された)入来gRPC通信を含むことができる。入来REST通信は、(REST API/RESTプロキシを含み得る)ゲートウェイ138、コンソール136、または(上述した)エージェントファブリックCA130に転送されてもよい。内部コール(gRPC)に変形/変換されたREST通信は、(エージェント/ピア132、エージェント/オーダ134、チェーンコード142、およびチェーンコードビルダ140を含む)ブロックチェーンファブリック/ハイパーレッジャのインスタンスとインターフェイスすることができる。一方、入来gRPC通信は、例えば、エージェント/ピア132およびエージェント/オーダ134に直接に転送され、ブロックチェーン/ハイパーレッジャとインターフェイスすることができる。
一実施形態によれば、ACCSインスタンスにトランザクションが行われると、ACCSインスタンスは、例えば、REST通信を介して元帳をクラウドストレージに永続化することができ、またはREST通信を介してイベントハブと通信することができる。
一実施形態によれば、図面は、1つのACCSインスタンスのみを示しているが、当業者なら、(例えば、ゲートウェイベースのアプリケーション103および/またはファブリックベースのアプリケーション105などの)クライアントが上述したBCSランタイムを介して通信することができるACCSインスタンスが1つ以上であってもよいことを容易に理解するであろう。
図1Dは、一実施形態に従って、BCSシステムを示す。より具体的には、図1Dは、BCSシステム内のコンポーネント濃度、すなわち、各BCSインスタンスに対するコンポーネントの比を示す。
一実施形態によれば、各BCSインスタンス100aに対して、オーダ101aは、1:Nの比で提供され、ファブリックCAメンバシップ102aは、1:Nの比で提供され、BCS RESTプロキシ103aは、1:Nの比で提供され、BCSコンソール104aは、1:1の比で提供され、ピアコンテナ105aは、1:Nの比で提供されてもよい。
各ピアコンテナは、トランザクションをシミュレートすることができるエンドーサと、同一のピアコンテナに形成され、元帳に変更を適用することができるコミッタとを含むことができる。
一実施形態によれば、チェーンコード109aは、ピアコンテナに対して1:Nの比で提供されてもよい。また、ストレージ106aは、ピアコンテナおよびオーダに対してN:1の比で提供されてもよい。同様に、イベントハブ107aは、ピアコンテナおよびオーダに対してN:1の比で提供されてもよい。IDCS108aは、ファブリックCAメンバシップに対してN:1の比で提供されてもよい。
ブロックチェーンクラウドサービス(BCS)ゲートウェイ
一実施形態によれば、BCSゲートウェイ(BCSGW)は、ファブリックSDKを用いて、ファブリックネットワークと通信するネットワークノードを含む。BCSゲートウェイは、HTTPS REST APIをクライアント側利用者に提供することによって、クライアントアプリケーションとBCSのファブリック要素との対話を可能にする。
図2は、一実施形態に従って、ブロックチェーンクラウドサービスシステムのゲートウェイを示す。図2に示すように、エンドユーザ200は、HTTPSを用いてアプリケーションアダプタ202と対話することによって、認証および認可を行う。アプリケーションアダプタ202は、クラウドゲート212(すなわち、LBaaS)などのLBaaSへのHTTPSを用いて、パブリッククラウド210にアクセスする。負荷分散サービス(LBaaS)は、入来トランザクションに対して実行される。クラウドゲート212は、HTTPSを用いて、トランザクションをBCSゲートウェイ222に渡す。BCSゲートウェイは、BCSファブリック220へのインターフェイスを提供する。このインターフェイスは、gRPCリモートプロシージャコールプロトコルを使用して通信する。
一実施形態によれば、クラウドゲート212は、例えばOAuth2およびOpenIDコネクト規格を用いてウェブブラウザおよびREST APIリソースを保護する逆方向プロキシ「アクセス強制モジュール」または「ポリシ強制ポイント」である。IDCSは、内部でクラウドゲートを使用することによって、自身の管理UIおよびREST API(「IDCSウェブ層」と呼ばれる)を保護する。別の応用として、クラウドゲートOTDは、非IDCSまたはスタンドアローンとして知られるセミサポート/暫定セットアップにおいて、追加のインスタンスとして配置される。
一実施形態によれば、OAuth/OpenIDベースの認証は、HTTP要求が「ユーザエージェント」ヘッダを含む場合、すなわち、HTTP要求がブラウザまたはモバイルアプリのようなUIからの場合にトリガされる(UIクライアントの)ユーザブラウザフローをサポートする。クラウドゲートは、ユーザにクレデンシャル(ユーザ名/パスワード)を提示し、クレデンシャルを検証し、その後、ブラウザからの後続のHTTP要求によって使用され得るOAuthセッションクッキを作成してユーザに返送する。また、OAuth/OpenIDベースの認証は、(プログラムクライアントの)リソースサーバフローをサポートする。このフローは、HTTP要求が認証「ベアラ」トークンヘッダを含む場合にトリガされる。クラウドゲートは、認証のためにトークンを検証する。
一実施形態によれば、HTTP基本認証のために、クレデンシャル(ユーザ名/パスワード)は、各HTTP要求のHTTP認証「基本」ヘッダに含まれなければならない。クラウドゲートは、各HTTP要求のクレデンシャルを検証する。この方法は、UIクライアントおよびプログラムクライアントの両方に適用される。
一実施形態によれば、マルチトークンフローは、特定のHTTP要求をカバーする自己適応方法である。HTTP要求が認証「基本」ヘッダを含む場合、クラウドゲートは、HTTP基本挙動を行う。HTTP要求が認証「ベアラ」ヘッダを含む場合、クラウドゲートは、リソースサーバフローと同様の挙動を行う。
一実施形態において、BCSコンソールブラウザクライアントは、ユーザブラウザフローを利用する。実施形態において、システムは、BCSコンソールおよびゲートウェイプログラムクライアントに対して、クラウドゲートマルチトークン認証方法を使用することができる。プログラムクライアントは、HTTP基本認証を介してBCS REST APIを呼び出すことができる。
一実施形態によれば、BCSゲートウェイ222は、元帳への読み取り/書き込み動作を実行するために、元帳を管理し且つチェーンコードコンテナを実行するネットワークエンティティであるピア224と通信する。ピアは、メンバによって所有され、管理される。BCSゲートウェイ222およびピア224は、オーダ226と通信する。オーダは、オーダリングサービスを提供する。オーダは、トランザクションをブロックに順序付けるノードの所定の集合である。オーダリングサービスは、ピアプロセスとは無関係に存在し、先着順でネットワーク上の全てのチャネルのトランザクションを順序付ける。ピア224およびオーダ226は、ファブリック認証局228と通信する。また、BCSゲートウェイ222は、BCS管理サーバ/コンソール230へのアクセスを提供する。
一実施形態によれば、BCSは、オラクルクラウドなどのクラウドシステムに配置される。ゲートウェイは、ACCSコンテナに動作することができる。ゲートウェイは、ステートレスである。古いゲートウェイを強制終了して、新しいゲートウェイを起動することによって、ゲートウェイを更新することができる。BCSゲートウェイは、クライアントクエリを許可することができ、またはRESTfulプロトコルを介してファブリックチェーンコードを呼び出すことができる。BCSゲートウェイは、クライアントがHTTPS/RESTfulサービスを介してオラクルクラウド内のファブリックネットワークにアクセスすることを可能にする。BCSゲートウェイは、ファブリックSDKを用いてファブリックネットワークと通信するネットワークノードである。ファブリック内の通信は、gRPCを通信プロトコルとして使用する。BCSゲートウェイは、HTTPS/RESTful APIをクライアント側のクライアントに提供する。REST APIは、クライアントがファブリックSDKを用いてファブリック内で関数を呼び出すことを可能にする。
一実施形態によれば、ゲートウェイは、ファブリックユーザに対して1対1の関係で提供されてもよい。全てのゲートウェイユーザは、1つの組織に所属し、全てのゲートウェイユーザは、1つのゲートウェイ内の1つのファブリックユーザにマッピングされる。1つのゲートウェイは、1つのみのファブリックユーザを構成する。
一実施形態によれば、IDCSは、ゲートウェイ証明書およびゲートウェイユーザ(「アプリアダプタ」)証明書を発行する。これらの証明書は、組織CAによって署名される。ゲートウェイおよびゲートウェイユーザは、組織CAと共に配置されるため、HTTPSを用いて互いに検証することができる。
一実施形態によれば、各エンドユーザは、「アプリアダプタ」を介してBCSGWにアクセスする。認証は、3段階である。すなわち、エンドユーザ200は、アプリアダプタ202によって認証され、アプリアダプタ202は、BCSゲートウェイ222によって、クライアント証明書を用いて認証され、BCSゲートウェイは、ファブリックネットワーク220内のピア224およびオーダ226によって認証される。
一実施形態によれば、1つのコンテナは、1つのトムキャット(tomcat)サーバを稼働し、1つのファブリックユーザにマッピングされる1つのBCSゲートウェイを配置する。複数のアプリアダプタは、1つのゲートウェイに接続することができる。
一実施形態によれば、異なるゲートウェイは、異なるファブリックユーザに関連付けられてもよい。1つのゲートウェイに接続するアプリアダプタのエンドユーザは、1つのファブリックユーザにマッピングされてもよい。
一実施形態によれば、BCSGWは、オラクルクラウドで実行され、設定は、JSONファイルを用いてBCSコンソールによって設定される。管理者ユーザは、ピア、チャネルおよびチェーンコードの一部をゲートウェイに公開することができる。管理者ユーザは、コンソールを介してゲートウェイを起動する。ゲートウェイは、起動後に設定をリフレッシュしない。管理者ユーザは、チェーンコードのエンドーサを設定することができる。エンドユーザは、ポリシを知らず、ゲートウェイは、チェーンコードポリシをチェックしない。
一実施形態によれば、BCSGWは、BCSコンソールによって起動される。BCSコンソールは、BCSGW設定ファイルを作成し、BCSGWパッケージを用いて新しいゲートウェイを起動する。起動時に、起動スクリプトは、BCSGW設定ファイルをチェックし、トムキャット用の設定ファイル(例えば、トムキャット設定ファイル)を変更してから、トムキャットを起動する。トムキャットは、BCSGWのスレッドを起動し、このスレッドは、各チャネルの設定ファイルを読み出すことによって、チャネルオブジェクトを作成し、オーダ、ピアおよびイベントハブとの接続を作成する。異なるチャネルは、オーダ/ピア/イベントハブへの異なる接続を有する。イベントハブは、ピアの第2のポートである。ゲートウェイは、このポートに接続することによって、トランザクションの結果を取得する。トムキャットサーブレットコンテナは、クライアント要求をリッスンすることができる。チェーンコードクエリ方法の場合、BCSGWは、要求をチャネルの全てのピアに送信し、第1の結果のみを使用する。チェーンコード呼び出し方法の場合、BCSGWは、要求をチャネルの全てのエンドサに送信し、全てのエンドサのうちの1つが成功を返信する場合、BCSGWは、トランザクションをチャネルの全てのオーダに送信する。
一実施形態によれば、非同期APIをサポートすることができる。ピアは、2つのポートを開放することができる。1つのポートは、イベントを交換するためのポートである。ゲートウェイは、ピアのイベントポートに接続することができる。ゲートウェイは、1つのチャネルの1つのイベントポートに接続すればよい。通常のクライアントAPIは、同期している。トランザクションは、数秒かかる場合があり、クライアントは、応答を待つ必要がある。非同期イベントをクライアントに送信することは、V1プランに含まれない。同期トランザクションAPIに加えて、ゲートウェイは、非同期トランザクションAPI「非同期呼び出し」を提供する。
一実施形態において、非同期APIは、以下のように動作することができる。クライアント要求のパラメータをチェックした後、ゲートウェイは、トランザクションIDをクライアントに返信する。したがって、クライアントは、起動されたトランザクションが終了
していないことを認識することができる。ゲートウェイは、トランザクションを継続して処理するために、バックグラウンドスレッドを起動する。クライアントは、未完了トランザクションを追跡することができる。ゲートウェイは、クライアントがトランザクションIDを用いてトランザクション状態をクエリするための「トランザクション」APIを提供することができる。
一実施形態によれば、クライアントログインをサポートすることができる。BCSGWは、HTTPSプロトコルをサポートすることができ、安全でないHTTPアクセスを拒否することができる。BCSGWは、証明書を用いてアプリアダプタまたはSALTを認証する。アプリアダプタは、エンドユーザを認証することができる。HTTPSクライアント証明書認証を使用するように、トムキャットを設定する必要がある。キーストアファイルは、クライアントがBCSコンソールによって提供されることを検証するためのBCSGW証明書およびCA証明書を含む。BCSゲートウェイは、クライアントがアクセスするためのBCS RESTインターフェイスを提供する。
永続化-ストレージクラウド
一実施形態によれば、ハイパーレッジャファブリックプロジェクトコードは、元帳をローカルファイルシステムに格納するためのブロック、および他のランタイムデータ、例えば、ブロックインデックス、ワールドステート、履歴、および(全ての元帳IDおよび回復ステータスを保持する)元帳プロバイダデータベースを同一のローカルファイルシステムに格納されているレベルDBに格納するためのブロック含む。ACCSにおいて、コンテナファイルシステムは、一過性である。これは、何らかのハードウェア障害によって、コンテナが停止され、新しいVM上で新しいコンテナが再起動される場合、ファイルシステムの内容が失われる可能性があることを意味する。全てのコンテナが失われた場合、元帳を回復することができない。したがって、元帳データをACCSコンテナの外部に格納しなければならない。このため、永続化ソリューションは、上述したハイパーレッジャファブリックのコンポーネントによって使用されるオブジェクト格納サービスとして提供される。
一実施形態によれば、BCSにおいて、永続化ソリューションは、ストレージクラウドサービス、例えば、オラクルストレージクラウドサービスを利用する。元帳は、オブジェクトストアにバックアップされる。元帳は、コンテナファイルシステムに書き込まれないが、オブジェクトストレージにバックアップされる。インデックスおよびワールドステートは、コンテナファイルシステムを用いて記録され、コンテナを再起動する場合、ストレージクラウドサービスから回復されることができる。オラクルストレージクラウドは、インフラストラクチャサービス(IaaS)製品であり、ファイルおよび非構造化データを記憶するためのエンタープライズ級の大規模なオブジェクト記憶ソリューションを提供する。
図3は、一実施形態に従って、ブロックチェーンクラウドサービスシステムの永続化を示す。図3に示すように、ACCSインスタンス300は、複数のコンテナを含む。コンテナは、例えば、元帳/ブロックチェーン312、314を有するオーダコンテナ302、304を含む。元帳/ブロックチェーン312および314は、RESTインターフェイスを介してオブジェクトストレージ320にバックアップされる。オブジェクトストレージ320は、例えば、クラウドストレージサービスであってもよい。
オブジェクトストレージは、各オーダの元帳を永続化するために使用される。オーダがブロックをピアに配布するための現行メカニズムは、以下の通りである。まず、ピアは、自身のバージョン(最後のブロック番号)を送信することによって、オーダから新しいブロックを要求する。次に、オーダは、ピアのバージョンをチェックする。a)ピアのバー
ジョンがオーダのバージョンよりも大きい場合、オーダの元帳が無くしており、イベントハブ(EventHub)から回復することができないことを示すエラーをピアに返信する(このシナリオにおいて、オーダは、適切な動作を継続することができない)。b)ピアのバージョンがオーダのバージョンより小さい場合、オーダは、RAMまたはローカルファイル内のローカル元帳からブロックを取り出し、ピアに返信する。c)両者が同様のバージョンを有する場合、オーダは、新しいブロックが利用可能になるまで遮断する。イベントハブから切り出した新しいブロックが利用可能になると、オーダは、このブロックをローカルブロックファイルまたはRAMに入れ、次に、元帳からこのブロックを読み出す配布スレッドをピアに返送する。ピアは、このブロックを入手し、ローカル元帳にコミットし、ブロックの最新バージョンを他のピアにブロードキャストすることができる。
一実施形態によれば、上記のプロセスによって、オーダまたはイベントハブのいずれかは、全てのブロックを永続化することができる。上述したように、イベントハブは、時間制限保持をサポートする。イベントハブがブロックの保存を実行することができる場合、オーダは、元帳タイプをRAMまたはファイルに設定することができる。オーダが再起動され、元帳が失われた場合、オーダは、イベントハブから記録を再生し、バッチメッセージをブロックに切断することによって、元帳を再構築することができる。イベントハブが時間制限保持のみをサポートする場合、いったんオーダが再起動され、元帳が失われると、イベントハブ内の最初の記録が元帳の真の記録ではないため、元帳を正しく再構築することはできない。この場合、オーダは、チャネル情報を含む最初のブロックが失われ、バージョン番号(最後のブロック番号)も正しくないため、古いチャネルを起動することができない。
一実施形態によれば、各オーダは、全てのチャネルIDをオブジェクトストレージに永続化すると共に、各ブロックをオラクルストレージに保存することができる。ピアは、チャネル情報を有するジェネシスブロック(genesis block)のみを永続化する。他のブロ
ックデータが失われると、ピアは、オーダから他のブロックデータを読み取ることができる。
一実施形態によれば、ACCSインスタンス300は、元帳316およびインデックス326を含むピアコンテナ306と、元帳318およびインデックス328を含むピアコンテナ308とを含むことができる。ピアは、5種類のランタイムデータ、すなわち、トランザクションログ(ブロックファイル)、ブロックファイルインデックス(レベルDB)、元帳プロバイダDB(レベルDB)、状態データベース(レベルDBまたはカウチDB)、および履歴(レベルDB)を生成する。全てのトランザクションデータは、ローカルファイル内のリンク付きブロックとしてトランザクションログに格納され、オラクルストレージクラウドサービスに永続化される。元帳プロバイダDBは、全ての元帳IDおよびステータスをレベルDBに永続化する。元帳IDは、ピアが所属するチャネルを識別するための特有IDであり、オラクルストレージクラウドサービスに保存されなければならない。実行時に、ピアは、他のものを自動的に回復することができ、ローカルファイルシステムに保存することができる。
一実施形態によれば、オラクルストレージクラウドサービスは、ファイルをオブジェクトにアップロードするまたはオブジェクトからファイルをダウンロードするためのREST APIを提供する。新しいブロックを作成する場合、まず、従来と同様にブロックをローカルブロックファイルに書き込むが、各ファイルに1つのみのブロックを書き込むことで異なる。次に、このブロックファイルをオブジェクトとしてオラクルストレージにアップロードする。アップロードが失敗した場合、ローカルファイルの変化は、ロールバックされ、エラーを発信者に返信する。
一実施形態によれば、オーダがブロックファイルインデックスの最新チェックポイントを更新するときに、その情報をオラクルストレージに永続化してから、ローカルレベルDBを更新する。この操作が失敗した場合、エラーを発信者に返信することができる。この情報は、ブロックファイルインデックスの回復に使用される。オラクルストレージにおいて、各ピアおよびオーダは、MSP IDおよびノードIDの組み合わせからなる固有のコンテナ名を有する。オブジェクト名は、プレフィックスとしてのチャネル名とブロックファイル名との組み合わせである。さらなる詳細は、オラクルストレージの命名規則を参照する。
一実施形態によれば、オプションとして、元帳プロバイダDBをオラクルストレージに保存することができる。元帳プロバイダDBが更新されると、レベルDBの全体をオラクルストレージクラウドサービスに複製することができる。このファイルが非常に小さく且つ更新が頻繁ではないため、複製によるオーバーヘッドを無視することができる。コンテナを再起動する場合、オラクルストレージクラウドサービスからコンテナをダウンロードすることができる。新しいコンテナからオーダを再起動する場合、まず、オーダは、ストレージオブジェクトからチャネルIDをダウンロードし、その後、オーダは、チャネルIDに従って、ストレージから最新のチェックポイントを取得する。次に、オーダは、最初のブロックから最後のブロックまでのブロックインデックスを回復する。この間、ブロックファイルは、1つずつダウンロードされる。その後、オーダは、状態DBおよび履歴DBを回復する。新しいコンテナからピアを再起動する場合、まず、ピアは、元帳プロバイダDBをダウンロードし、その後、全ての元帳IDを取得することができる。次に、ピアは、元帳IDに従って、ストレージから関連するジェネシスブロックを取得する。ピアは、ジェネシスブロック内の設定で開始し、クエストをオレンダに送信することによって、他のブロックデータを取得する。ピアは、これらのブロックを入手した後、ブロックインデックス、状態DBおよび履歴DBを回復する。
一実施形態によれば、ローカルブロックファイルは、読み取りキャッシュとして機能する。クエリは、まずローカルからデータを読み取り、データがローカルに存在しない場合、オブジェクトストレージからデータをダウンロードする。元帳のほかに、チェーンコードのソースコードをオラクルストレージに永続化する必要がある。チェーンコードを現行のファブリックにインストールした後、ソースコードは、符号化され、ピアに格納される。ピアは、各呼び出しまたはインスタンスのチェーンコードコンテナをチェックし、コンテナが存在しない場合、ソースコードからコンテナを再構築する。したがって、各チェーンコードをインストールするたびに、ソースコードをオラクルストレージにアップロードすることができ、ディスク障害からピアを再起動するときに、オラクルストレージからソースコードをダウンロードすることができる。
BCS:SDKベース設定ファイルの操作および作成後の配置
一実施形態によれば、設定ファイルおよび配置機能は、ピア、オーダ、CAサーバ、およびチェーンコードを含むアプリケーションを配置または更新するときに、アプリケーションに関する設定を配置、生成、更新、および取得する。これらの機能は、BCSコンソール(Node.js)およびファブリックコンテナ(ピア/オーダ/チェーンコードコンテナ
)の両方に常駐する。UIから要求されると、これらの機能は、設定を取得/更新し、必要に応じてSDK APIを呼び出すことによって、設定を変更する。BCSコンソールバックエンドの一部としてのこのコンポーネントは、BCSコンソールUI、IDCSバックエンドSDK、および全てのBCSアプリケーションと対話することによって、UIを操作するためSDKを提供し、要求された設定を取得/更新する。また、このコンポーネントは、BCSアプリケーションの作成を補助する。BCS作成コンポーネントは、BCSアプリケーションを、PSMを用いて作成されたVMのドッカ(docker)コンテナに配置する。この特徴は、BCSコンソールUIのSDK APIを実装し、BCS作成コ
ンポーネントは、後期作成段階において、BCSアプリケーション構成を取得または更新し、配置する。作成システムは、後期作成段階において、CAサーバ、オーダ、ピアなどのBCSアプリケーションをドッカ/スウォーム(swarm)に配置する。VMは、起動時
に、起動スクリプトを呼び出すことによって、後期作成作業およびVM初期作業を行う。
一実施形態によれば、設定ファイルは、ピア、オーダ、ファブリックCA、およびBCSゲートウェイを含むファブリックコンポーネントに提供される。BCSアプリケーションパッケージ、設定、およびチェーンコードは、クライアントのストレージクラウドサービスに保存される。
一実施形態によれば、作成システムは、全てのリソースの割り当てを行う。リソースは、VM、ネットワーク、およびストレージを含む。
一実施形態によれば、作成システムは、全てのリソース割り当て情報をストレージサービスに保存する。この情報は、VM番号および関連するネットワークアドレス/アカウント証明、各VM内のBCSアプリケーションの番号および種類、公衆IPおよび内部IPを含む。また、作成システムは、(VM間でアクセス可能な)コンテナ用の十分な内部IPアドレスを有する。
一実施形態によれば、BCS作成コンポーネントが作成作業を完了した場合、VM起動スクリプトは、起動してスウォームを呼び出すことによってアプリケーションコンテナを配置し、コンテナ起動シェルスクリプトは、コンテナ内で初期動作を実行する。
一実施形態によれば、BCSコンソールは、作動すると、ストレージサービスから設定を取得し、UIからのユーザ入力をストレージサービスに保存し、その後、再起動コマンドをスウォームに送信する。
一実施形態によれば、必要なセキュリティ証明書は、IDCSに保存されてもよく、IDCSから取得されてもよい。
一実施形態によれば、BCSコンソールバックエンドは、スウォームを用いて、BCSアプリケーションと通信することができる。
一実施形態によれば、BCSアプリケーションコンテナが起動されると、BCSアプリケーションは、設定の詳細を収集することによって、アプリケーション種類(ピア、チェーンコードコンテナまたは他のもの)を判断し、必要な設定をロードすることができる。
一実施形態によれば、このコンポーネントは、設定を更新し、BCSアプリケーション起動シェルコードを提供する。BCSによる設定ファイルの取得/更新動作は、いくつかのステップを含む。まず、BCSコンソールは、起動されると、ストレージから設定を取得し、更新を必要とする場合、設定(シェルおよびnode.js)をストレージに保存する。
BCSアプリケーションコンテナが起動されると、まず、(各ドッカコンテナ内の)起動スクリプトが起動し、その後、アプリケーションの種類に関する設定を取得し、IDCS(シェル)からアプリ証明書を取得する。BCSコンソールUIは、BCSアプリケーションを再起動する場合、コンテナ内のアプリケーションを再起動するためのメッセージをドッカ/スウォームに送信する。
一実施形態によれば、BCSコンソールは、ステートレスであり、起動されると、全てのBCSインスタンス設定を収集し、BCSアプリケーションに接続すると共に、BCSアプリケーションを監視することができる。設定は、バックエンドAPIを介してストレ
ージサービスから取得される。設定が変更されると、BCSコンソールは、バックエンドAPIを呼び出すことによって、設定をストレージサービスに保存し、関連するアプリケーションを再起動する。クライアントがBCSコンソールUIを介して設定項目を変更すると、UIは、設定をキー/値データにエンコードし、バックエンドコードは、それをファイルに変換し、ストレージサービスに保存する。BCSコンソールは、BCSアプリケーションを監視、起動および停止することができる。起動コマンドおよび停止コマンドは、ドッカ/スウォームAPIを用いて、この機能を実現する。
ファブリックネットワークの配置
一実施形態によれば、ファブリックネットワークは、以下のエンティティ、すなわち、ピア、クライアント、オーダリングサービス、およびこれらのエンティティ間の通信を容易にするためのプロトコルセットを含む。組織は、ファブリックネットワークの関係者を構成する論理エンティティまたは企業である。ファブリックネットワークは、複数の参加組織を有する。メンバは、ネットワークの固有のルート証明書を所有する法的に独立するエンティティである。ピアノードおよびアプリケーションクライアントなどのネットワークコンポーネントは、メンバにリンクされる。各組織は、1つ以上のメンバを有してもよい。1つの組織は、オーダおよびピアの両方を構成することができ、オーダのみまたはピアのみを構成することができる。
ファブリックネットワークを配置するための第1のステップは、参加者を定義することである。このステップは、ファブリックネットワークの帯域外で行われる。ファブリックネットワークの全ての参加組織は、ネットワークの構成、例えば、オーダノードを構成する組織またはピアノードを構成する組織を協議し、決定する。オーダノードを構成する各組織は、オーダサーバのルート証明書を公開する。ピアノードを構成する各組織は、ピアサーバのルート証明書を公開する。クライアントを含む各組織は、クライアントのルート証明書を公開する。クライアントは、1つの組織においてピアから異なるメンバに分けることができる。
一例として、4つのバンク(バンク1、バンク2、バンク3、およびバンク4)は、バンク1およびバンク2によって所有されているオーダノードを含むオーダリングサービスを用いて、ブロックチェーンネットワークを配置するとする。バンク1は、このネットワークのオーダのみを構成する。各バンクは、ファブリックネットワークの組織である。すなわち、バンク1は、1つのメンバ、オーダ(ルート証明書1)を有する。バンク2は、3つのメンバ、すなわち、クライアント(ルート証明書21)、ピア(ルート証明書22)、およびオーダ(ルート証明書23)を有する。バンク3は、2つのメンバ、すなわち、クライアント(ルート証明書31)およびピア(ルート証明書32)を有する。バンク4は、2つのメンバ、すなわち、クライアント(ルート証明書41)およびピア(ルート証明書42)を有する。
参加者を定義した後、オーダおよびピアの証明書を作成する。各オーダまたはピアは、それ自体を識別するための(秘密キーおよび署名証明書)対を必要とする。各メンバは、ルート証明書を用いて、それ自体のファブリックCAサーバを構成および起動し、CLIまたはSDKを用いて、CAサーバに要求することによって、当該メンバの各オーダ/ピアサーバの(秘密キーおよび署名証明書)を作成することができる。BCSは、証明書を作成することができるファブリックCAサーバを提供する。しかしながら、ファブリックCAサーバは、証明書を作成するための唯一の手段ではない。ユーザは、他のCAシステムを用いて、証明書を作成することができる。したがって、ファブリックCAサーバは、ファブリックネットワークの必須コンポーネントではない。
オーダおよびピアの証明書を作成した後、システムチャネルを作成することによって、
ファブリックネットワークを起動する。オーダリングサービス(従って1つのファブリックネットワーク)のためにシステムチャネルが1つのみであるため、作成される(より正確には起動される)システムチャネルは、第1のチャネルである。システムチャネルは、ファブリックネットワークの以下の構成、すなわち、1つのオーダリングサービスと、1つ以上のコンソーシアムとを定義する。1つのオーダリングサービスは、1つ以上のオーダ組織(各組織は、MSP IDおよび証明書を含む)と、オーダリングサービスの属性(例えば、ソロまたはカフカなどの種類、オーダのアドレス、バッチサイズ/タイムアウト)と、(チャネルを作成するための)ポリシとを含む。各コンソーシアムは、1つ以上のピア組織を含み、このファブリックネットワークに参加することを望む各ピア組織は、コンソーシアムのうちの1つにおいて定義されなければならない。各組織は、MSP ID、証明書およびアンカーピアを含む。
ファブリックネットワークのシステムチャネルが起動された後、システムチャネルのジェネシスブロック(チェーン内の第1のブロック)が作成される。オーダリングサービスの管理者は、システムチャネル用のジェネシスブロックを作成する。ジェネシスブロックは、設定ファイル生成(configtxgen)ツールによって(ファイルとして)作成されても
よく、またはオーダ起動時に(一時的に)作成されてもよい。設定ファイル生成ツールを用いてジェネシスブロックを作成する場合、入力としての設定ファイルconfigtx.yamlを
作成しなければならない。このファイルは、以下の情報、すなわち、ファブリックネットワーク内の全てのオーダ組織のルート証明書と、全てのピア組織のルート証明書と、オーダの種類、アドレス、バッチタイムアウト、バッチサイズおよびカフカを含むオーダリングサービスの属性と、ポリシと、チャネル配信要求を認証および検証するためのチャネルリーダと、チャネルブロードキャスト要求を認証および検証するチャネルライタと、チェーン作成要求を評価するためのチェーン作成者と、チャネル再構成要求を認証および検証するための管理者とを含む。
オーダリングサービスの管理者は、設定ファイルおよびジェネシスブロックを用いて、オーダサーバを起動する。換言すれば、ジェネシスブロックを用いて、システムチャネルを作成する。オーダサーバを起動するために、リッスンアドレス/ポート、元帳種類、ローカルMSP(秘密キー、署名証明書)を含む設定ファイルorderer.yamlが必要である。オーダリングサービスを提供する各組織は、(ジェネシスブロックを指定することなく)自身のオーダサーバを起動する。
ピアノードを構成する各組織は、ピアを識別するためのローカルMSP(秘密キー、署名証明書)、およびリッスンアドレス/ポート、ブートストラップピア、ゴシップ属性などのピア属性を特定するための各ピアの設定ファイル(default location/etc/hyperledger/fabric/core.yaml)を用意して、ピアサーバを起動する。
オーダおよびピアを起動した後、(チャネルを作成する権利を有する)チャネル管理者は、ファブリックCLIまたはSDKを用いて、次の入力、すなわち、(システムチャネルに既に定義された)1つのコンソーシアム、およびコンソーシアム内の1つ以上のピア組織を含むチャネルを作成するようにオーダに要求する。各参加組織は、ファブリックCLIまたはSDKを用いて、ピアの一部を新しく作成されたチャネルに参加させる。
実施例:BCS上のファブリックネットワークの配置
図4は、BCS上のファブリックの例示的な配置を示す。
より具体的には、図面および説明は、BCS上でファブリックネットワークを配置するためのステップを説明する。この例において、4つのエンティティA、B、C、およびDがファブリックネットワークを作成および参加することを望んでいる。4つのエンティテ
ィは、オフラインで議論し、様々なエンティティの責任を決定する。各エンティティは、OPC上で1つ以上のBCSインスタンスを作成する。
一実施形態によれば、エンティティAは、オーダとピアの両方を提供する。エンティティAは、2つのインスタンス、すなわち、オーダのオーダ_組織1 401と、ピアのピア_組織1 421とを作成する。エンティティAは、ファブリックネットワークの作成にも関与する(なお、オーダのみは、ファブリックネットワークを作成することができる)。オーダリングサービス400は、オーダ_組織1 401と、オーダ_組織2 402と、カフカクラスタ410とを含む。
一実施形態によれば、エンティティBは、オーダとピアの両方を提供する。エンティティBは、2つのインスタンス、すなわち、オーダのオーダ_組織2 402と、ピアのピア_組織2 422とを作成する。
一実施形態によれば、エンティティCは、ピアのみを提供する。エンティティCは、インスタンスピア_組織3 423を作成する。
一実施形態によれば、エンティティDは、ピアのみを提供する。エンティティDは、インスタンスピア_組織4 424を作成する。
一実施形態によれば、各BCSインスタンスの管理者は、BCSコンソールから、現在の組織のCA証明書および管理者証明書を収集する。各ピア組織の管理者は、現在のピア組織のアンカーピアを特定し、アンカーピアのIP/ポートを収集する。4つのエンティティは、オフラインで、収集された全ての情報を互いに交換する。
一実施形態によれば、オーダ_組織1の管理者は、BCSコンソールから、前のステップで収集された情報、すなわち、各組織のCA証明書および管理者証明書書、および各ピア組織のアンカーピアを用いてシステムチャネルを作成することによって、ファブリックネットワークを作成する。バックエンド作業は、ファブリックツールを呼び出すことによって、ジェネシスブロックを作成するステップと、ジェネシスブロックを用いてオーダを設定することによって、システムチャネルを作成するステップとを含む。
一実施形態によれば、各ピア組織の管理者は、BCSコンソールから、収集された他の組織のCA/管理者証明書を追加するように全てのピアノードの設定を更新し、全てのピアノードを再起動することによって、ファブリックネットワークに参加する。
一実施形態によれば、新しい組織がシステム内の既存のファブリックネットワークに参加することを可能にする方法が提供される。また、ファブリックネットワークを作成/参加するため、例えばファブリックを形成する前のオフラインアクションを保護するために、参加者間の通信を容易にし且つユーザが取り扱い簡単な方法を提供することができる。
チェーンコード(スマートコントラクト)コンテナ
一実施形態によれば、上述したように、チェーンコードは、1つ以上の資産と、資産を変更するためのトランザクション命令(ビジネスロジック)とを定義するソフトウェアを含むことができる。チェーンコードは、キー値対または他の状態データベース情報を読み取るまたは変更するための規則を実行する。チェーンコードの機能は、元帳の現在の状態データベースに対して実行され、トランザクション提案によって作動される。チェーンコードの実行は、ネットワークに提出され、全てのピア上の元帳に適用される一組のキー値の書き込み(書き込みセット)をもたらす。
一実施形態によれば、情報の一貫した更新をサポートするためおよび特定の元帳機能(トランザクション、クエリなど)を可能にするために、ブロックチェーンネットワークは、スマートコントラクトを使用して、制御された元帳アクセスを提供する。スマートコントラクトは、情報をカプセル化し、ネットワーク全体にわたってその情報を簡単に複製することだけでなく、参加者がトランザクションの特定部分を自動的に実行できるように書かれてもよい。
一実施形態によれば、ハイパーレッジャファブリックスマートコントラクトは、チェーンコードで書かれ、ブロックチェーンの外部のアプリケーションが元帳と対話する必要があるときに、そのアプリケーションによって呼び出される。殆どの場合、チェーンコードは、トランザクションログではなく、ワールドステートである元帳のデータベースコンポーネントのみと対話する(例えば、データベースを検索する)。
一実施形態によれば、ハイパーレッジャファブリックは、ドッカエンジンを用いてチェーンコードを構築し、チェーンコードを配置し、チェーンコードを実行する。本節は、ファブリックのアーキテクチャ、およびBCSのACCS階層化モデルに統合する方法を説明する。
一実施形態によれば、ファブリックは、以下のようにユーザチェーンコードを配置し、管理する。まず、一過性CC環境コンテナにおいてチェーンコードを構築する。次に、チェーンコードをソースコードとしてビルダコンテナに転送し、静的にリンクされた必要なライブラリ(「Java(登録商標)ビルド」)でコンパイルし、バイナリとしてピアに返送する。静的なリンクは、実際のチェーンコードコンテナをできる限り小さくすることを可能にする。その後、チェーンコードイメージおよびコンテナを構築し、起動する。チェーンコードコンテナは、ピアが停止するまたはチャネルが終了するまで、動作し続ける。チェーンコードコンテナがクラッシュするまたは強制終了される場合、イメージが存在すれば、次の呼び出しで再起動される。この設計の場合、1つのピアおよびチャネルは、1つのチェーンコードドッカコンテナを有する。チェーンコードは、ピアに明示的にインストールされる。すなわち、チェーンコードは、必ずしも、チャネルに参加している全てのピアにインストールされなくてもよい。
一実施形態によれば、ユーザは、ピア、オーダ、およびチェーンコードなどのコンポーネントを容易に配信することができるファブリックネットワークをACCS階層コンテナに配置することができる。ローカルブロックストレージが信用できる回復方法ではなく、ACLSコンテナのチェーンコードバイナリをクラウドストレージに保存する必要があるため、チェーンコードランタイム環境コンテナ(ccenv)は、動的に作動される。チェーンコードバイナリは、構築されると、コンテナクラッシュの場合に回復するためにクラウドストレージにアップロードされる。
一実施形態によれば、各チェーンコードの相互作用は、チェーンコードの様々な機能に対応する。唯一の制約は、チェーンコードをインスタンス化するまで、呼び出すまたはクエリすることができないことである。また、呼び出されると、動作していないチェーンコードコンテナは、再起動される。
図5は、一実施形態に従って、チェーンコードアーキテクチャを示す。より具体的には、図5は、一実施形態に従って、クライアント530が、ACCS環境500において、チェーンコードをインストールし、トランザクションを実行することを可能にするチェーンコードアーキテクチャを示す。ステップ1において、クライアント530は、チェーンコードのソースコードをピア1 510にインストールする。まず、一過性CC環境コンテナにおいてチェーンコードを構築する。クライアント530が「インストール」を実行
するときに、クライアント530は、ビルダエージェントを自動的に起動するビルダコンテナを起動し、ビルダコンテナが初期化を終了するのを待って、ピアを介してチェーンコードのソースコードをビルダコンテナに送信する(ステップ2)。ビルダエージェントは、チェーンコード(Javaビルド)を構築する。チェーンコードをソースコードとしてビルダコンテナに転送し、静的にリンクされた必要なライブラリ(「Javaビルド」)でコンパイルし、バイナリとしてピアに返送する。静的なリンクは、実際のチェーンコードコンテナをできる限り小さくすることを可能にする。チェーンコードパッケージ(tgzファイル)は、いったん構築されると、クラウドストレージ560にアップロードされる(ステップ3)。ビルダエージェントは、後で参照するために、クラウド記憶位置をピアに送信する(ステップ4.2)。
一実施形態によれば、ピア510は、次いで、PSM REST APIを用いて、CC環境をACLS(アクセス制御リスト)コンテナ520として起動する。チェーンコードイメージおよびコンテナを構築し、起動する。チェーンコードコンテナは、ピアが停止するまたはチャネルが終了するまで、動作し続ける。ピア510は、チェーンコードID、(チェーンコード登録用)セルフIPおよびクラウドストレージロケーションをACLSコンテナに渡し開始する(ステップ4.1)。ピアは、チェーンコードの起動または設定期間の後のタイムアウトを待つ。CC環境は、チェーンコードを起動する。起動されると、チェーンコードは、それ自体をピアに登録する(ステップ4.3)。これによって、登録時に確立された接続を用いて、トランザクションにおいてチェーンコードを呼び出すことができる(ステップ5)。
一実施形態によれば、ビルダコンテナ550は、単純なREST型サーバを含む。ビルダコンテナ550は、ビルダエージェント553を含む。ビルダコンテナ550は、起動されると、チェーンコードを構築するための要求をリッスンする。ビルダコンテナ550が構築リスト、例えば、ベース64で符号化したソースコードをボディとするPOST呼び出しを受信すると、ベース64は、ソースコードを復号し、チェーンコードソースコードをローカルファイルシステムに保存する。ビルダエージェント553は、ソースコードに対して「Javaビルド」を行う。「Javaビルド」が成功した場合、ビルダエージェント553は、バイナリをパッケージ化し、クラウドストレージ560にアップロードする。また、ビルダエージェントは、チェーンコード位置をピアに送信する。「Javaビルド」が失敗した場合、エージェントは、エラーおよび理由をピアに送信する。
BCS管理コンソール
上述したように、BCSの各インスタンスは、管理コンソールを含み、管理コンソールを用いて、BCSゲートウェイ、BCSノード、およびBCSチャネルを含むBCSインスタンスを管理および監視することができる。
一実施形態によれば、管理コンソールを提供するためのシステムは、スクリプトランタイム環境、例えばNode.jsに動作するウェブアプリケーションを含むことができる。ウェ
ブアプリケーションは、グラフィカルユーザインターフェイスフレームワークおよびウェブフレームワーク上で構築することができ、BCSインスタンス内の様々なノードまたはサービスと通信するための複数のカスタム機能またはAPIを含むことができる。ウェブアプリケーションは、BCSインスタンス内の様々なノードまたはサービスからの情報をビューオブジェクトに読み込み、コンソールユーザインターフェイスに表示することができる。また、管理コンソールは、BCSインスタンス内の1つ以上のノードを起動、停止、および更新するための機能を管理者に提供することができる。管理REST APIセットは、ウェブアプリケーションによって提供された機能と同様の機能をサポートするために、スクリプトランタイム環境によって提供されてもよく、またはスクリプトランタイム環境によってアクセスされてもよい。
一実施形態によれば、システムは、ウェブアプリケーションによって提供されたウェブインターフェイスを介して、または管理REST APIセットを用いて書かれたカスタムRESTクライアントアプリケーションを介して、関連するBCSインスタンスを容易に監視および管理することができる。
一実施形態によれば、BCS管理者は、管理コンソールを介して、1つ以上のピアノード、1つ以上のオーダノード、1つ以上のファブリックCAノード、1つ以上のBCSゲートウェイノード、チャネル、および1つ以上のチェーンコードを含む、BCSインスタンスの複数のコンポーネントを管理することができる。
一実施形態によれば、BCSコンポーネントを管理することは、コンポーネントの起動、コンポーネントの停止、コンポーネントの追加、コンポーネントの除去、コンポーネント属性の閲覧/編集、コンポーネント性能メトリックの閲覧、コンポーネントログの閲覧を含む動作のうち、1つ以上の動作を実行することを含むことができる。
図6は、一実施形態に従って、管理コンソールを提供するためのシステムを示す。
図示のように、BCS管理コンソール136は、アプリケーションコンテナクラウドサービス128内のBCSインスタンスのコンポーネントとして提供されてもよい。BCS管理コンソールは、Node.jsによって提供されるランタイム環境であるスクリプトランタ
イム環境605に動作するウェブアプリケーションであってもよい。
一実施形態によれば、管理コンソールは、ファブリックノードSDK611、複数のファブリックカスタム機能613、および複数のACCS API615を含むことができる。SDK、カスタム機能、およびACCS APIを用いて、分散型ストリーミングサービス(例えば、カフカ)603を含み得るファブリックネットワーク601と通信することができる。管理コンソールは、ビューオブジェクト623をさらに含み、ビューオブジェクト623は、BCSコンソールUI104またはRESTクライアント604に表示される必要がある情報を含むことができ、またはBCSコンソールUIまたはRESTクライアントから管理コンソールに渡される必要がある情報を含むことができることができる。ファブリックノードSDK611は、ファブリックネットワークからの情報をBCSコンソールUIまたはRESTクライアントからの情報にマッピングするように動作することができる。
一実施形態によれば、BCS管理コンソールは、GUIフレームワーク(例えば、JET
)617およびウェブフレームワーク(例えば、express)619をさらに含むことがで
きる。GUIフレームワークは、管理コンソールウェブアプリケーションにおいて使用され得る様々なユーザインターフェイス(UI)コンポーネントおよび要素を提供することができる。例えば、UIコンポーネントおよび要素を用いて、フォームを作成し、データを収集し、データを視覚化することができる。ウェブフレームワークは、JAVAスクリプト(登録商標)で書かれることができ、ウェブアプリケーションおよびモバイルアプリケーションを開発するための一組のロバストな特徴を含むウェブアプリケーションフレームワークを提供することができる。
図7A~7Bは、一実施形態に従って、BCSコンソールUI内のユーザインターフェイスの例を示す。
一実施形態によれば、図7Aに示すように、BCS概要711をダッシュボード内に表示することができる。概要は、組織の数、ピアの数、オーダの数、チャネルの数、およびチェーンコードの数を含むことができる。
一実施形態によれば、BCSインスタンスの健康情報713を表示することができる。健康情報は、視覚的に示され、数字で表示される。例示のUIは、トランザクションの実行714および元帳の概要715を表示することもできる。
一実施形態によれば、図7Bは、BCSインスタンス内の全てのノードの情報を示す。例えば、例示のUIは、2つのピア、1つのオーダ、1つのファブリックCA、および(BCSゲートウェイノード内の)1つのRESTプロキシを含む合計5つのノードを示す。概要UI717は、ノードの名前723、ノード725の経路情報、ノード729の種別、ノード731の状態情報を表示する。例示のUIは、管理者がノードを追加するためのボタン721と、ノードを選別するための1つ以上のドロップダウンリスト719とを含む。
ノードの管理
一実施形態によれば、2つのエンティティ、すなわち、BCS管理者およびBCSユーザは、管理コンソールを用いて、BCSインスタンスを管理することができる。各BCSインスタンスに対してBCS管理者アカウントが1つのみである。BCS管理者アカウントは、BCSインスタンスを作成するときに作成されてもよい。BCS管理者は、ファブリックCA管理者にバンドルされてもよい(すなわち、BCS管理者は、ファブリックCA管理者IDを使用して、BCSコンソールからまたはBCS管理REST APIを介して、全ての動作を実行する)。BCSユーザアカウントが2つ以上であってもよい。BCSユーザアカウントは、BCS管理者によって、ファブリックCAアイデンティティを登録することによって作成されてもよい。
一実施形態によれば、BCSインスタンス内のノードは、1つのウェブページに表示されてもよい。管理コンソールは、2つのモードをサポートすることができる。第1のモードは、各ノードの名前、種類、アクセスURL、および状態をリストとして提示することができる。第2のモードは、各ピアが参加しているチャネルを図形として提示することができる。
さらに、一実施形態によれば、BCS管理者は、管理コンソールを介して、ピアノード、オーダノード、ファブリックCAノード、およびBCSゲートウェイノードを起動および停止することができ、ピアノード、オーダノード、およびBCSゲートウェイノードを追加および削除することができる。ファブリックCAノードを追加または削除することができない。
一実施形態によれば、BCS管理者は、ノードを追加するときに、ノードの属性を設定することができる。新たに追加されたノードは、追加動作の一部として自動的に起動することができる。ノードを削除する場合、当該ノードは、停止され、BCSインスタンスから削除される。
一実施形態によれば、BCSコンソールUIは、アクティブなピアノードが参加している全てのチャネル、およびアクティブなピアノードにインストールされている全てのチェーンコードをリストすることができる。
一実施形態によれば、BCS管理者は、ピアノードを管理するときに、アクティブなピアノードを既存のチャネルに加え、アクティブなオーダノードの属性を閲覧および編集することができる。BCSユーザは、アクティブなピアノードの一部の属性を閲覧することができる。
また、アクティブなピアノードの性能メトリック、例えば、メモリの使用率、CPUの使用率、ネットワークI/O、およびディスクI/Oのスナップショットは、BCSコンソールUIに表示されてもよい。
一実施形態によれば、BCS管理者は、オーダノードを管理するときに、アクティブなオーダノードのログを閲覧することができ、アクティブなオーダノードの属性を閲覧および編集することができる。BCSユーザは、アクティブなオーダノードの一部の属性を閲覧することができる。ピアノードの管理と同様に、BCS管理者は、アクティブなオーダノードの性能メトリック、例えば、メモリの使用率、CPUの使用率、ネットワークI/O、およびディスクI/Oのスナップショットを閲覧することができる。
一実施形態によれば、BCS管理者は、ファブリックCAノードを管理するときに、アクティブなファブリックCAノードの属性を閲覧および編集し、アクティブなファブリックCAノードからCA証明書を取得し、アクティブなファブリックCAノードのログを閲覧することができる。また、BCS管理者は、アクティブファブリックノードのの性能メトリック、例えば、メモリの使用率、CPUの使用率、ネットワークI/O、およびディスクI/Oのスナップショットを閲覧することができる。
上述したように、BCSゲートウェイノードの管理は、BCSゲートウェイノードを追加すること、またはBCSゲートウェイノードを削除することをさらに含むことができるBCSゲートウェイノードの最大許可数が特定のBCSインスタンスをインスタンス化するときに指定されるため、BCSインスタンスに追加され得るBCSゲートウェイノードの数は、設定されたBCSゲートウェイノードの最大許可数によって制限される。
一実施形態によれば、各BCSゲートウェイノードは、ゲートウェイノードの全体に一意の識別である名前を有することができる。この名前は、BCSゲートウェイノードを構成するときに参照される。また、BCSゲートウェイノードを作成するときに、ネットワークアドレスを決定および表示することができる。
一実施形態によれば、BCS管理者は、BCSゲートウェイノードを構成するときに、BCSゲートウェイ設定ファイルを定義し、BCSゲートウェイノードを起動することができる。BCSインスタンスを作成するときに、チャネルの作成またはチェーンコードの配置をしなくてもよい。したがって、BCSゲートウェイノードは、管理コンソールを介して1つ以上のチェーンコードを配置し且つ有効なBCSゲートウェイ設定を定義するまで、機能しない。
各BCSゲートウェイノードは、設定ページを有する。特定の実施形態において、設定ページにおいて、以下の項目を設定することができる。
1)チャネル:現在のゲートウェイノードを介して公開するチャネルを選択する。
2)チェーンコード:各チャネルにインスタンス化された全てのチェーンコードのリストから、公開するインスタンス化チェーンコードを選択する。
3)エンドーサ:各チェーンコードのエンドーサピアを定義する。
4)上記の設定に従ってBCSゲートウェイ設定を作成する。BCSゲートウェイの有効な設定ファイルが作成されると、ゲートウェイを起動することができる。
一実施形態によれば、BCSコンソールは、リスト閲覧機能を用いて、BCSゲートウェイプロパティの閲覧を可能にする。リスト閲覧は、各BCSゲートウェイの以下の情報を提供する。
1)名前:ゲートウェイを作成する時に指定されたグローバル固有名。
2)ファブリック識別名:各BCSゲートウェイは、BCSゲートウェイを作成するとき
に登録されるファブリッククライアントの識別情報に関連付けることができる。このファブリッククライアントは、BCSゲートウェイによって実行される全ての動作(例えば、呼び出し、クエリ)を実行することができる。
3)ネットワークアドレス:アクセスポイントは、公衆インターネットワークアドレスを有する。
4)状態:作動中または停止中。
一実施形態によれば、BCS管理者は、管理コンソールを介して、アクティブなBCSゲートウェイノードのログを閲覧し、以下のBCSゲートウェイメトリックを閲覧することができる。
1)接続されているクライアント:クライアント名、アドレス、ログオン時間など。
2)現在のトランザクション情報:現在のトランザクション情報は、状態情報、すなわち、トランザクションの状態と共に利用可能である。現在のトランザクション情報は、フリーズしたトランザクションをデバッグするときに有用である。
3)トランザクション統計:トランザクション統計は、管理コンソールUIを介して利用可能である。例えば、トランザクション統計は、完了したトランザクションの数、受信したイベント通知の数、および送信したイベント通知の数を含むことができる。
4)メモリの使用率。
5)CPUの使用率。
6)ネットワークI/O。
7)ディスクI/O。
チャネルの管理
一実施形態によれば、BCSユーザは、現在のBCSインスタンスが参加している全てのチャネルをリストすることができる。BCS管理者は、チャネル名、コンソーシアム名、および1つ以上の組織名を入力とするチャネルを作成することができる。また、チャネル作成の成功または失敗を示すように、出力を表示することができる。
一実施形態によれば、BCSユーザは、チャネルに参加しているノードおよび組織を閲覧することができる。管理コンソールは、リストモードおよびトポロジモードを含むトウビューモードをサポートすることができる。リストモードにおいて、参加しているローカルノードおよび(アンカーピアによって示された)外部組織は、リストとして示されてもよい。トポロジモードにおいて、参加しているローカルノードおよび(アンカーピアによって示された)外部組織は、トポロジ図として示されてもよい。
一実施形態によれば、BCS管理者は、チャネル内のピアの元帳にクエリすることができる。元帳は、複数のトランザクションブロックを含むことができる。各トランザクションブロックは、ブロックID、過去のハッシュ、データハッシュ、タイムスタンプ、トランザクションIDリスト、動作(1~n)、チェーンコードID、チェーンコード提案、応答(r/wセット、イベント、成功または失敗)、および1つ以上のエンドーサを含むことができる。また、以下の統計データ、すなわち、ブロックの数および呼び出しの数を表示することもできる。
一実施形態によれば、BCS管理者は、チャネルにインスタンス化された全てのチェーンコードをリストすることができる。リストされた項目は、チェーンコードIDおよびバージョンを含むことができる。BCS管理者は、インスタンス化されたチェーンコードの以下の情報、すなわち、インスタンス化されたトランザクションによって特定されたパス、およびインスタンス引数を閲覧することもできる。
一実施形態によれば、BCS管理者は、チャネルにインスタンス化されたチェーンコー
ドを更新することができる。更新動作は、以下の入力、すなわち、新しいバージョンのインストール済みチェーンコードを含むターゲットエンドーサピア、1つ以上のオーダ、チェーンコードバージョン、およびチェーンコードに固有の文字列引数であり得る選択的な引数を使用することができる。更新動作の出力は、成功であってもよく、またはエラーメッセージを含む失敗であってもよい。
チェーンコードの管理
一実施形態によれば、BCS管理者は、現在のBCSインスタンスの任意のピアにインストールされた全てのチェーンコードをリストすることができる。リストされた項目は、チェーンコードIDおよびバージョンを含む。また、BCS管理者は、インストール済みチェーンコードの以下の情報、すなわち、チェーンコードをインストールしたローカルピアノード、およびチェーンコードをインスタンス化したチャネルを閲覧することができる。
一実施形態によれば、BCS管理者は、管理コンソールを介して、チェーンコードを1つ以上のローカルピアノードにインストールすることができる。インストールするための入力は、ターゲットピア、例えばGo言語/Javaなどのチェーンコード種類、チェーンコードの名前であり得るチェーンコードID、チェーンコードバージョン、チェーンコードのソースコードの位置であり得るチェーンコード経路、任意選択のチェーンコードパッケージを含むことができる。インストール操作の出力は、成功であってもよく、またはエラーメッセージを含む失敗であってもよい。
一実施形態によれば、BCS管理者は、以下の情報、すなわち、チャネル名、新しいバージョンのインストール済みチェーンコードを含むターゲットエンドーサピア、オーダ、チェーンコードバージョン、およびチェーンコードに固有の文字列引数であり得る選択的な引数、特定のフォーマット、または特定のフォーマットがない場合にデフォルトフォーマットを有するエンドースメントポリシを入力として、インストール済みチェーンコードをチャネルにインスタンス化することができる。
メンバシップの管理
一実施形態によれば、BCS管理者は、現在のBCSインスタンス内の全てのIDをリストすることができ、現在のBCSインスタンスに新しいユーザ/IDを登録することができ、登録したIDを解除することができ、現在のBCSインスタンスからユーザを削除することができる。また、BCS管理者は、表1に示すように、識別情報の以下の属性を閲覧/編集することができる。
Figure 0007454616000001
一実施形態によれば、BCSユーザは、管理コンソールを介して、それ自体を登録する
または再登録することを可能にする。これによって、ユーザの秘密キーおよび証明書を作成することができる。また、BCS管理者は、管理コンソールを介して、以前に登録されていたIDを無効化することができ、BCSユーザは、管理コンソールを介して、パスワードを変更することができる。
一実施形態によれば、関連するBCSインスタンスを起動または停止すると共に、BCS管理コンソールを起動または停止することができる。
一実施形態によれば、2つの方法でBCS管理コンソールのログレベルを設定することができる。すなわち、BCS管理コンソールまたは管理REST APIを用いて、実行時にログレベルを変更することができる。
REST API
上述したように、ファブリックネットワーク内の異なるコンポーネントは、gRPCプロトコルに基づいて通信する。したがって、ファブリックネットワークに基づくBCSインスタンスの場合、クライアントアプリケーションは、ファブリックSDKを用いて、BCSインスタンス内のチェーンコードを呼び出す必要がある。
クライアントアプリケーションがファブリックSDKを用いてブロックチェーンクラウドサービスと通信することは、ブロックチェーンフレームワークをクラウドサービスとして提供することによる利点を部分的に打ち消すことになる。例えば、利点の1つは、インターネット接続を用いて、任意の場所からクラウドサービスにアクセスできることである。
一実施形態によれば、本明細書に記載のシステムおよび方法は、BCSインスタンスにおいてRESTプロキシを提供することができる。RESTプロキシは、RESTクライアントによって使用され、チェーンコードを介してクエリし、チェーンコードを介してトランザクションを同期的または非同期的に呼び出し、トランザクションステータスを取得し、BCSプロキシのバージョンを取得するための複数のREST APIを提供することができる。RESTプロキシは、RESTコールを認証し、RESTコールをGRPCコールに変換することができる。また、RESTプロキシは、BCS管理コンソールによって提供された機能と同様の機能をサポートするREST APIを提供することができる。
一実施形態によれば、RESTプロキシは、クライアントアプリケーションがBCSインスタンスを消費するためのユーザインターフェイスを提供する。
図8は、一実施形態に従って、BCSインスタンスにおいてRESTプロキシを提供するためのシステムを示す。
図8に示すように、RESTプロキシ138は、REST認証ツール827およびプロトコル変換ツール829を含むことができる。BCS REST APIクライアント808がRESTコール815をRESTプロキシに送信すると、クラウドゲート811に接続されているLBaaS126は、RESTコールを認証することによって、RESTがBCSインスタンスにアクセスすることを可能にする有効なユーザ名および有効なパスワードがRESTコールに含まれているか否かを判断することができる。
一実施形態によれば、LBaaSは、RESTコールを認証する場合、RESTコールをRESTプロキシに転送し、RESTプロキシは、RESTコール835をIDCS813に転送し、IDCS813は、クライアントアプリケーションがBCSによって適切
に許可されたか否かを判断することができる。
一実施形態によれば、クライアントアプリケーションが適切に許可された場合、RESTプロキシは、RESTコールをgRPCコール825に転換/変換し、gRPCコールをファブリックネットワーク601に送信することができる。RESTコールは、内部コール(gRPC)に転換/変換されると、ブロックチェーンファブリック/ハイパーレッジャのインスタンスとインターフェイスすることができる。
一実施形態によれば、RESTコールは、gRPCライブラリ833を有するファブリックJava SDK831に基づくJavaアプリケーションであり得るプロトコル変換ツールによって変換されてもよい。
さらに図8に示すように、RESTプロキシは、上述したように、REST821を用いて管理コンソールと通信することによって、REST API823によって提供された1つ以上の機能を管理コンソールに公開することができる。
例示的なREST API
一実施形態によれば、BCSインスタンスのREST APIを呼び出す前に、RESTプロキシを起動して、動作させる必要がある。管理コンソールを介して、RESTプロキシの状態をチェックすることができる。RESTプロキシが立ち上げられておらず、動作していない場合、管理コンソールからRESTプロキシを作動する必要がある。
一実施形態によれば、REST APIを呼び出すことによって、BCSインスタンス内のピアノードに配置されたスマートコントラクト(チェーンコード)と対話することができる。配置プロセスは、管理コンソールを介して達成することができる。
一実施形態によれば、例示の目的で、例示的なREST APIが提供される。本明細書に使用された例は、以下の例示的なチェーンコードがBCSネットワークに配置されると仮定する。
Figure 0007454616000002
一実施形態によれば、例示は、管理コンソールを含む。RESTプロキシが立ち上げられておらず、動作していない場合、管理コンソールからRESTプロキシを作動することができる。
一実施形態によれば、REST APIを呼び出すことによって、BCSインスタンス内のピアノードに配置されたスマートコントラクト(チェーンコード)と対話することができる。配置プロセスは、管理コンソールを介して達成することができる。
一実施形態によれば、例示の目的で、例示的なREST APIが提供される。本明細書に使用された例は、以下の例示的なチェーンコードがBCSネットワークに配置されると仮定する。
一実施形態によれば、REST APIは、以下の機能、すなわち、チェーンコードを介したクエリ、チェーンコードを介したトランザクションの呼び出し、チェーンコードを介したトランザクションの非同期呼び出し、トランザクションステータスの取得、BCSゲートウェイバージョンの取得を提供する。これらの機能を実行するために、クライアントは、HTTPSを用いてBCSゲートウェイにアクセスし、APIに従ってメッセージフォーマットを利用する。
一実施形態によれば、チェーンコードを介したクエリ機能は、チェーンコードを呼び出すことによってクエリ動作を実行する。チェーンコードおよびクエリの引数は、REST
APIを介して指定される。トランザクションステータスの取得というREST APIは、チャネルにクエリすることによって、トランザクションのステータスを取得する。チャネルおよびトランザクションIDは、REST APIを介して指定される。BCSゲートウェイバージョンの取得というREST APIは、ゲートウェイバージョン情報を返信する。
一実施形態によれば、チェーンコードを介したトランザクションの呼び出しというREST APIは、チェーンコードを呼び出すことによってトランザクションを実行する。チェーンコードおよび呼び出しの引数は、REST APIを介して指定される。このREST APIは、同期モードでトランザクションを実行する。これは、トランザクションが成功である応答、トランザクションが失敗である応答、またはトランザクションがタイムアウトである応答のうち、いずれかを返信することを意味する。
一実施形態によれば、チェーンコードを介したトランザクションの非同期呼び出しというREST APIは、チェーンコードを呼び出すことによってトランザクションを実行する。チェーンコードおよび呼び出しの引数は、REST APIを介して指定される。このREST APIは、非同期モードでトランザクションを実行する。これは、トランザクションの終了またはタイムアウトを待つことなく、トランザクションを投入した直後に、応答/承認を返信することを意味する。結果は、その後に提供される。BCSインスタンス管理REST APIは、BCSコンソール(後述)によって提供された機能と同様の機能をサポートする。
アイデンティティクラウドサービス(IDCS)と一体化されたファブリック認証局(ファブリックCA)
一実施形態によれば、ファブリックCAサーバは、ファブリックメンバシップサービスを提供する。ファブリックメンバシップサービスは、以下の3つの部分、すなわち、ユーザの認証、ブロックチェーン(ピアおよびオーダのグループ)にアクセスするための許可、および証明書をアプリケーションクライアント、ピアおよびオーダに配信するためのCAサーバを含む。ファブリックCAは、証明書を使用して、認証および認可を実施する。証明書は、以下の2種類、すなわち、認証を行うための登録証明および認可を行うためのトランザクション証明を含む。また、IDCSも認証および認可を提供する。しかしながら、この認可は、OAuthによって実施される。すなわち、ピアは、オーダにアクセスしたい場合、IDCSからユーザのアクセストークンを取得し、このトークンを用いてオーダにアクセスする。
一実施形態によれば、ファブリックCAは、データベースまたはLDAPを用いて、ファブリックCAの登録ユーザの情報、例えば、ユーザの名前/パスワード、ユーザの証明
書、およびユーザの所属を保存する。パブリッククラウド(OPC)のエンドユーザは、従業員を管理するための1つの集中型IDCSインスタンスを利用して、従業員が利用した全てのパブリッククラウド(OPC)インスタンスにアクセスする。ブロックチェーンクラウドサービスBCSは、好ましくは、他のクラウドサービスに使用されるIDCSと一体化される。したがって、エンドユーザは、従業員を管理するための1つの集中型IDCSインスタンスを利用して、従業員が利用した(BCSを含む)全てのパブリッククラウド(OPC)インスタンスにアクセスすることができる。
一実施形態において、ブロックチェーンクラウドサービス(BCS)は、オラクル識別クラウドサービス(IDCS)を用いて、ユーザ情報を集中的に保存する。BCSは、ファブリックCAユーザの情報をIDCSに記憶する。これによって、オラクルBCSは、IDCSを用いて、複数のパブリッククラウドサービスインスタンスにわたって集中化されたBCSユーザの情報を管理することができる。したがって、一実施形態において、BCSファブリックCAユーザの情報および証明書は、オラクルIDCSに格納される。ファブリック証明書認証フレームワークは、PKI秘密キー、署名済み証明書、CA証明書チェーンを含むファブリックメンバシッププロバイダ(MSP)であり、ファブリックCAクライアント/サーバによって設定される。
一実施形態によれば、BCSは、OPCのユーザ管理を利用する。まず、BCSユーザは、(IDCS IDを有する)OPCユーザでなければならない。BCSインスタンスが作成されると、BCSコンソール、CAおよびRESTプロキシを含む数種類のアプリケーションが作成される。コンソールは、以下の2つのアプリ役割、すなわち、コンソール管理者およびコンソールユーザを有する。CAは、4つのアプリ役割、すなわち、ファブリック管理者、ファブリッククライアント、ファブリックピア、およびファブリックオーダを有する。RESTプロキシは、2つのアプリ役割、すなわち、ゲートウェイ管理者およびゲートウェイユーザを有する。
一実施形態によれば、OPCユーザをBCSユーザにするために、OPCユーザ管理コンソールにおいて特定のBCSアプリ役割をOPCユーザに付与する必要がある。
作成者は、BCSインスタンスを作成するときに、既存のOPCユーザ/パスワードを提供する必要があり、このユーザには、BCSコンソール管理役割およびファブリック管理役割が自動的に付与される。したがって、このユーザは、BCS管理者となる。
BCSコンソール/CA/RESTプロキシの認証の場合、認証は、クラウドゲートで行われる。ピア/オーダの場合、認証は、署名に基づいて行われる。BCSコンソールの場合、認証後、コンソールは、(IDCSを呼び出すことによって)現在のユーザのアプリ役割を取得する。このユーザにはコンソール管理者またはコンソールユーザの役割が付与されていない場合、接続は、拒否される。そうでなければ、コンソールは、予め定義された規則に基づいてアクセス制御を行う。例えば、通常のユーザは、情報の読み取りのみを行うことができ、管理者は、何でも行うことができる。
一実施形態によれば、CAの場合、認証後、CAは、現在のユーザのアプリ役割を取得する。ユーザにはファブリック役割が付与されていない場合、登録要求は、拒否される。
一実施形態によれば、RESTプロキシの場合、認証後、RESTプロキシは、現在のユーザのアプリ役割を取得する。ユーザにはゲートウェイ管理者またはゲートウェイユーザ役割が付与されていない場合、要求は、拒否される。そうでなければ、コンソールは、予め定義された規則に基づいてアクセス制御を行う。例えば、通常のユーザは、呼び出し/クエリを行うことができ、管理者は、設定を変更し、メトリックを取得することができ
る。
一実施形態によれば、ファブリックCAサーバは、ファブリックメンバシップサービスを提供する。ファブリックメンバシップサービスは、以下の3つの部分、すなわち、ユーザの認証、ブロックチェーン(ピアおよびオーダのグループ)にアクセスするための許可、および証明書をアプリケーションクライアント、ピアおよびオーダに配信することができるCAサーバを含む。
一実施形態によれば、フファブリックCAは、証明書を使用して、認証および認可を実施する。証明書は、以下の2種類、すなわち、認証を行うための登録証明および認可を行うためのトランザクション証明を含む。
一実施形態によれば、また、IDCSも認証および認可を提供する。しかしながら、この認可は、OAuthによって実施される。すなわち、ピアは、オーダにアクセスしたい場合、IDCSからユーザのアクセストークンを取得し、このトークンを用いてオーダにアクセスする。
図9Aは、一実施形態に従って、シングルサインオン用の典型的なIDCS使用ケースを示す。
一実施形態によれば、初期ステップにおいて、ウェブアプリケーション901をIDCS902に追加することができる。次いで、ウェブブラウザ900などのクライアントは、ウェブアプリケーションから、認証(例えば、ユーザ名およびパスワード)を要求することができる。ウェブアプリケーションは、既にIDCSに追加されているため、IDCSに認証要求を送信するようにウェブブラウザに指示することができる。ウェブブラウザは、ウェブアプリケーションから応答を受信した後、IDCSから認証(例えば、ユーザ名およびパスワード)を要求することができる。
次いで、IDCSは、要求を認証し、認証が成功する場合、トークンをウェブブラウザに返信することができる。認証され、トークンを受信したウェブブラウザは、ウェブアプリケーションに要求を送信することができる。ウェブアプリケーションは、トークンを検証し、認証が成功したことをウェブブラウザに知らせることができる。
図9Aに示すケースの場合、IDCSは、アプリケーションを識別するためのサービスを提供するIDプロバイダ(IdP)として機能する。全ての参加者間の全ての通信は、HTTPに基づいて行われる。この使用ケースは、設定駆動型であるが、HTTPベースのアプリケーションのみに応用される。
図9Bは、一実施形態に従って、ファブリッククライアント認証用のIDCS使用ケースを示す。
一実施形態によれば、既に登録され登記されている(ユーザの秘密キーおよび証明書が既にクライアント側のステートストアに格納されている)ファブリックユーザに関連するファブリッククライアント904は、新しいクライアントを要求することができ、クライアントのユーザ情報(ユーザ名)を取得することができる。ファブリックSDK905は、ステートストアからユーザをロードし、ファブリッククライアントにユーザオブジェクトを返信することができる。クライアントは、ユーザオブジェクトを受信すると、ファブリックSDKにトランザクション提案を送信することができ、ファブリックSDKは、同様の秘密キーを用いて提案に署名することができる。次いで、署名済み提案は、ピア906に送信され、ピア906は、メンバシップサービス907を用いて署名を検証すること
ができる。メンバシップサービスは、IDCS902からユーザの証明書を取得することができ、IDCSからの証明書を用いてユーザの署名を検証することができる。次いで、メンバシップサービスは、署名が検証済みという証明をピアに返信することができる。
分散型元帳におけるDAGベースのトランザクション処理
一実施形態によれば、分散型元帳におけるDAGベースのトランザクション処理システムおよび方法を導入することができる。このモデルは、スループット性能を改善することができる。追加の重みメカニズムを用いて、様々なビジネス要件に基づいて最終性能を調節することができる。線形構造を使用した既存の作業とは異なり、より良好な性能を達成することができる。
従来では、ブロックチェーンは、線形記録構造を用いてトランザクション履歴を記録することによって、分散型元帳問題を解決するための潜在的な解決策を提供する。しかしながら、分散システムの基本的な特性によって、多くの場合、複数の当事者が複数のトランザクションを同一の共有元帳に送信する場合、トランザクション競合がしばしば発生する。競合を緩和するための方法は、いくつかがあるが、いずれの方法は、良好な性能を提供するものではない。
典型的な公衆ブロックチェーン、例えば、暗号通貨に関連する公衆ブロックチェーンは、維持すべきトランザクションまたは拒絶すべきトランザクションをマイナーに決定させる。(例えば、いくつかのブロックチェーンが、他のトランザクションよりも特定のトランザクションを優先するようにマイナーに支払うことを可能にするため)これらのマイナーは、事実上インセンティブモデルを選択する。この場合、マイナーおよびブロックチェーンコンセンサスの他のメンバは、常により多くの報酬を有するトランザクションを好む。これは、ブロックチェーンの遅い性能につながる。
他のエンタープライズブロックチェーンファブリックは、各ピアが単にオーダリングサービスからの一連のトランザクションの時間順序に基づいてトランザクションを提出するタイミングモデルを選択する。この場合、時間順序およびトランザクション間の競合によって、多くのトランザクションが拒否される可能性がある。
一実施形態によれば、本開示のシステムおよび方法は、DAG構造を導入することによって、新しいトランザクション処理モデルを提供する。新しいモデルは、高いスループット性能を達成することができる。追加の重みメカニズムを用いて、様々なビジネス要件に基づいて最終性能を調節することができる。線形構造を使用した既存の作業とは異なり、より良好な性能を達成することができる。
図10は、一実施形態に従って、分散型元帳におけるDAGベースのトランザクション処理方法およびシステムの提供をサポートするためのシステム示す。
一実施形態によれば、分散元帳におけるDAGベースのトランザクション処理システムおよび方法の設計は、競合検出器(detector)1005と、ランキングジェネレータ(generator)1010と、トランザクションピッカー(picker)1015とを含むことがで
きる。
一実施形態によれば、競合検出器は、複数のトランザクション、例えば、トランザクションリスト1001からの複数のトランザクション間の競合関係を検出することができる。
一実施形態によれば、一般的に、トランザクション#1が、トランザクション#2にお
いて変更される何らかのキーに依存する場合、トランザクション#1および#2は、競合していると見なされる。トランザクション#1と#2の間に辺(edge)を描画することができる。一連のトランザクションに対していくつかのDAGを描画することができる。
一実施形態によれば、各トランザクションは、DAGにおいて、グラフの最下層として標記された1辺および頂点を有する。
一実施形態によれば、競合条件を拡張することができる。例えば、2つのトランザクションは、同様のテーブルを変更することができ、または2つのトランザクションの作成者は、同一の部門に所属することができる。
一実施形態によれば、競合検出後、関係は、いくつかのDAGとして示される。各トランザクションは、競合グラフ1002の頂点である。
一実施形態によれば、本システムおよび方法のランキングジェネレータは、生成されたグラフ1002の各頂点に重みを追加することができる。全てのトランザクションが同様の重みを有する場合、各頂点の初期ランキングを同様の値、例えば「1」に設定することができる。
一実施形態によれば、複数のトランザクションの重みは、システムおよび方法によって自動的に設定されてもよく、またはユーザ/管理者入力を介して設定されてもよい。トランザクションは、自身の重みの表示を含んでもよい。
一実施形態によれば、各トランザクションの初期ランキング/重み1003を設定した後、システムおよび方法は、頂点に従ってランキングを計算することができる。
一実施形態によれば、トランザクション#1が初期値xを有し、頂点が別のトランザクション#2に向ける場合、トランザクション#1は、トランザクション#2のランキング/重みに「-x」を寄与する。
一実施形態によれば、このプロセスと共に、DAG内の各頂点は、ランキング値を有し、このランキング値は、初期ランキングおよび隣接するトランザクションからの寄与ランキングを用いて計算される。
一実施形態によれば、システムおよび方法は、トランザクションピッカーを用いて、ランキング付きDAGのランキングに基づいて、トランザクションを選択することができる。
一実施形態によれば、選択プロセスは、以下の通りである。まず、最下層の頂点から出発して、以下の原則、すなわち、トランザクション#xを選択する場合、全ての隣接するトランザクション(すなわち、トランザクション#xと競合しているトランザクション)を選択しないという原則に従って、最も高いランキングを有するトランザクションを選択する。
一実施形態によれば、最後に、安全にコミットすることができるトランザクションのサブセットを選択することができる。この方法は、一連のトランザクションの最も高い合計重みを達成することができる。選択されたトランザクションは、結果1004として出力される。
図11は、一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラ
フを示す。
一実施形態によれば、例えば、元帳システムが、1101~1108と命名された8つの有序トランザクション#1~#8を含む一連のトランザクションを受信すると仮定する。この実施形態において、競合検出器によって判定された各トランザクションの競合関係は、1つのグラフにまとめることができる。
競合検出後、競合関係は、以下の通りである。
・C(#1,#2,#3)=#6
・C(#4,#5)=#7
・C(#6,#7)=#8
一実施形態によれば、上記の競合関係は、トランザクション#6がトランザクション#1、#2および#3と競合しているとして理解することができる。同様に、トランザクション#7は、トランザクション#4および#5と競合しており、トランザクション#8は、トランザクション#6および#7と競合している。
一実施形態によれば、この例に引き続き、各トランザクションの重みは、例えば「1」に等しい。これに基づいて、ランキングジェネレータは、図11に示す関係グラフを生成して、トランザクションピッカーに提供する。トランザクションピッカーは、コミット対象のトランザクションを選択する。
図11に示すように、トランザクション#1、#2、#3、#4および#5は、いずれも「1」という重みおよびトランザクションランキングを有する。各トランザクションのトランザクションランキングを決定するために、上述した方法を用いて、競合しているトランザクションの重みからこれらの重みを減算する。したがって、トランザクション#6の重みからトランザクション#1、#2および#3の重みを減算すること(すなわち、1-3=-2)によってトランザクション#6のトランザクションランキングを計算すると、トランザクション#6は、トランザクションランキング「-2」を有する。同様の手順を実行して、トランザクション#7の合計トランザクション重みを決定する。トランザクション#7のトランザクション重みからトランザクション#4および#5のトランザクション重みを減算すること(すなわち、1-2=-1)によって、トランザクション#7は、トランザクションランキング「-1」を有する。同様に、トランザクション#8に対して、この手順を繰り返す。トランザクション#8のトランザクション重みからトランザクション#6および#7の負の重みを減算することによって、トランザクション#8は、合計トランザクションランキング「4」を有する。
一実施形態によれば、競合グラフを計算した後、ランキングジェネレータが重み付きトランザクション競合に従って各トランザクションをランキングした後、トランザクションピッカーは、コミット対象のトランザクションを決定することができる。この例の場合、(最も高いランキングを有する)トランザクション#8とトランザクション#1~#5とは、正の値を有し且つ互いに競合しないため、コミット対象に選択される。トランザクション#6および#7は、トランザクションランキングが低く且つ両方のトランザクションがトランザクション#8と競合しているため、コミット対象に選択されない。このような選択は、図に示される。図示では、コミット対象に選択されたトランザクションは、太い輪郭を有し、コミット対象に選択されないトランザクションは、破線で示されている。
図12は、一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラフを示す。
一実施形態によれば、図12は、図11に示された状況よりも複雑な第2の状況を示す
一実施形態によれば、例えば、ブロックチェーンシステムが、1201~1208と命名された8つの有序トランザクション#1~#8を含む一連のトランザクションを受信すると仮定する。この実施形態において、競合検出器によって判定された各トランザクションの競合関係は、1つのグラフにまとめることができる。
競合検出後、競合関係は、以下の通りである。
・C(#1,#2,#3)=#6
・C(#4,#5)=#7
・C(#3,#6,#7)=#8
一実施形態によれば、上記の競合関係は、トランザクション#6がトランザクション#1、#2および#3と競合しているとして理解することができる。同様に、トランザクション#7は、トランザクション#4および#5と競合しており、トランザクション#8は、トランザクション#3、#6および#7と競合している。
一実施形態によれば、この例に引き続き、各トランザクションの重みは、例えば「1」に等しい。これに基づいて、ランキングジェネレータは、図12に示す関係グラフを生成して、トランザクションピッカーに提供する。トランザクションピッカーは、コミット対象のトランザクションを選択する。
図12に示すように、トランザクション#1、#2、#3、#4および#5は、いずれも「1」という重みおよびトランザクションランキングを有する。各トランザクションのトランザクションランキングを決定するために、上述した方法を用いて、競合しているトランザクションの重みからこれらの重みを減算する。したがって、トランザクション#6の重みからトランザクション#1、#2および#3の重みを減算すること(すなわち、1-3=-2)によってトランザクション#6のトランザクションランキングを計算すると、トランザクション#6は、トランザクションランキング「-2」を有する。同様の手順を実行して、トランザクション#7の合計トランザクション重みを決定する。トランザクション#7のトランザクション重みからトランザクション#4および#5のトランザクション重みを減算すること(すなわち、1-2=-1)によって、トランザクション#7は、トランザクションランキング「-1」を有する。同様に、トランザクション#8に対して、この手順を繰り返す。トランザクション#8のトランザクション重みからトランザクション#3、#6および#7の負の重みを減算することによって、トランザクション#8は、合計トランザクションランキング「3」を有する。
図12の関係グラフでは、システムおよび方法は、複数のトランザクションの競合を提供することができる。例えば、図12において、トランザクション#3は、2つのトランザクション(#6および#8)と競合している。
一実施形態によれば、競合グラフを計算した後、ランキングジェネレータが重み付きトランザクション競合に従って各トランザクションをランキングした後、トランザクションピッカーは、コミット対象のトランザクションを決定することができる。この例の場合、(最も高いランキングを有する)トランザクション#8と#1、#2、#4および#5とは、正の値を有し且つ互いに競合しないため、コミット対象に選択される。トランザクション#3は、トランザクション#1、#2、#4および#5と同様のトランザクションランキングを有するにもかかわらず、トランザクション#3よりも高いランキングを有するトランザクション#8と競合するため、コミット対象に選択されない。トランザクション#6および#7は、トランザクションランキングが低く且つ両方のトランザクションがトランザクション#8と競合しているため、コミット対象に選択されない。このような選択
は、図に示される。図示では、コミット対象に選択されたトランザクションは、太い輪郭を有し、コミット対象に選択されないトランザクションは、破線で示されている。
図13は、一実施形態に従って、本開示の一実施形態に使用され得る例示的な関係グラフを示す。
一実施形態によれば、図13は、図12に示された状況よりも複雑な第3の状況を示す。図13の関係マップにおいて、14個のトランザクションは、2つの競合クラスタに分けられる。トランザクション#1~#8(1301~1308)は、クラスタAに含まれ、トランザクション#9~#14(1309~1314)は、クラスタBに含まれる。
一実施形態によれば、例えば、ブロックチェーンシステムが、トランザクション#1~#14と命名された14個の有序トランザクションを含む一連のトランザクションを受信すると仮定する。競合検出器によって判定された全てのトランザクションの競合関係は、1つのグラフにまとめることができる。
競合検出後、競合関係は、以下の通りである。
・C(#1,#2,#3)=#6
・C(#4,#5)=#7
・C(#3,#6,#7)=#8
・C(#9,#10,#11,#13)=#14
・C(#11、#12)=#13
一実施形態によれば、この例に引き続き、自動的にまたは管理者によって設定された、初期重み「2」を有するトランザクション#10および初期重み「5」を有するトランザクション#13を除き、各トランザクションの重みが「1」に等しいと仮定する。
図13に示すように、トランザクション#1~#8は、クラスタAに含まれる。トランザクション#1、#2、#3、#4および#5は、いずれも「1」という重みおよびトランザクションランキングを有する。各トランザクションのトランザクションランキングを決定するために、上述した方法を用いて、競合しているトランザクションの重みからこれらの重みを減算する。したがって、トランザクション#6の重みからトランザクション#1、#2および#3の重みを減算すること(すなわち、1-3=-2)によってトランザクション#6のトランザクションランキングを計算すると、トランザクション#6は、トランザクションランキング「-2」を有する。同様の手順を実行して、トランザクション#7の合計トランザクション重みを決定する。トランザクション#7のトランザクション重みからトランザクション#4および#5のトランザクション重みを減算すること(すなわち、1-2=-1)によって、トランザクション#7は、トランザクションランキング「-1」を有する。同様に、トランザクション#8に対して、この手順を繰り返す。トランザクション#8のトランザクション重みからトランザクション#3、#6および#7の負の重みを減算することによって、トランザクション#8は、合計トランザクションランキング「3」を有する。
図13に示すように、トランザクション#9~#14は、クラスタBに含まれる。トランザクション#9、#11、#12および#14は、いずれも「1」という重みおよびトランザクションランキングを有する。トランザクション#10は、初期重み「2」を有する。トランザクション#13は、初期重み「5」を有するが、この重みから(トランザクション#11および#12の重み)「2」を減算して、トランザクションランキング「3」を有する。トランザクション#14は、初期重み「1」を有するが、この重みから(トランザクション#9、#10、#11、および#13の初期重みおよび修正重み)「7」を減算して、トランザクションランキング「-6」を有する。
一実施形態によれば、競合グラフを計算した後、ランキングジェネレータが重み付きトランザクション競合に従って各トランザクションをランキングした後、トランザクションピッカーは、コミット対象のトランザクションを決定することができる。この例の場合、(最も高いランキングを有する)トランザクション#8および#13とトランザクション#1、#2、#4、#5、#9および#10とは、正の値を有し且つ互いに競合しないため、コミット対象に選択される。トランザクション#3は、トランザクション#1、#2、#4および#5と同様のトランザクションランキングを有するにもかかわらず、トランザクション#3よりも高いランキングを有するトランザクション#8と競合するため、コミット対象に選択されない。トランザクション#6および#7は、トランザクションランキングが低く且つ両方のトランザクションがトランザクション#8と競合しているため、コミット対象に選択されない。トランザクション#11および#12は、トランザクション#13と競合するため、コミット対象に選択されない。トランザクション#14は、辺を共有するトランザクションに比べてトランザクションランキングが低いため、コミット対象に選択されない。
図14は、一実施形態に従って、分散元帳における有向非循環グラフ(DAG)ベースのトランザクション処理方法の一例を示すフローチャートである。
ステップ1401において、方法は、エンタープライズ級の分散型元帳フレームワークにおいて、複数のトランザクションを処理するための分散型元帳ファブリックを提供することができる。
ステップ1402において、方法は、競合検出器を用いて、複数のトランザクション間の複数の競合を検出することができる。
ステップ1403において、方法は、ランキングジェネレータを用いて、複数の初期重みパラメータのうちの1つの初期重みパラメータを複数のトランザクションのうちの各トランザクションに追加することができる。ランキングジェネレータは、DAGを生成し、DAGの少なくとも1つの頂点は、ランキング値を含む。
ステップ1404において、方法は、トランザクションピッカーを用いて、生成されたDAGに基づいて、複数のトランザクションから、コミットする予定のトランザクションセットを選択することができる。
以上で様々な実施形態を説明したが、これらの実施形態は、例示として提示され、本開示を限定しない。これらの実施形態は、本開示の特徴および原理並びにその実用を説明するために選択され、説明された。実施形態は、システムおよび方法を例示する。これらの実施形態は、新しい機能および/または改善された機能を提供することによって、および/またはリソース利用率の減少、容量の増加、スループットの増加、効率の改善、待ち時間の減少、セキュリティの強化、および/または使用の容易性の改善を含むがこれらに限定されない性能利点を提供することによって、様々な特徴を用いて、システムおよび方法の性能を改善する。
本明細書において、いくつかの実施形態は、アーキテクチャ、機能、プロセスおよび/または動作を示す方法のフローチャートおよび/またはブロック図、装置(システム)およびコンピュータプログラム製品を参照して説明される。フローチャートまたはブロック図の各ブロックは、指定された機能を実装するための1つ以上の実行可能な命令を含む要素、機能、プロセス、モジュール、セグメント、または命令の一部を表す。いくつかの代替的な実施形態において、ブロック図またはフローチャートに示された機能は、図示され
た順序と異なる順序で実行される。例えば、連続して示された2つのブロックは、関与する機能に応じて、実質的に同時に実行されてもよく、または逆の順序で実行されてもよい。フローチャートおよび/またはブロック図の各ブロック、またはフローチャートおよび/またはブロック図のブロックの組み合わせは、指定された機能を実行するコンピュータプログラム命令、および/または専用ハードウェア、および/またはハードウェアとコンピュータプログラム命令との組み合わせによって実装されてもよい。
いくつかの実施形態において、特徴は、プロセッサと、コンピュータ可読媒体と、他のコンピュータと通信するためのネットワークカード/インターフェイスとを含むコンピュータに実装される。いくつかの実施形態において、特徴は、ネットワークによって相互接続されたパーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ等を含む様々な種類のコンピュータ構成を含むコンピューティングシステムを備えるネットワークコンピューティング環境において実装される。ネットワークは、ローカルエリアネットワーク(LAN)、スイッチファブリックネットワーク(例えば、インフィニバンド)、ワイドエリアネットワーク(WAN)、および/またはインターネットであってもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。
いくつかの実施形態において、特徴は、バックエンドコンポーネント(例えば、データサーバ)を含むコンピューティングシステム、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピューティングシステム、またはフロントエンドコンポーネント(例えば、ユーザが本明細書に記載された主題の実装形態と対話するときに使用されるグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステム、またはネットワークによって相互接続されたバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組み合せを含むコンピューティングシステムにおいて実装される。コンピューティングシステムは、互いにクライアント-サーバ関係を有するクライアントおよびサーバを含むことができる。いくつかの実施形態において、機能は、ネットワークを介して接続される1つ以上のコンピュータクラスタを含む分散型コンピューティング環境を備えるコンピューティングシステムにおいて実装される。分散型コンピューティング環境内の全てのコンピュータは、単一の場所に配置されてもよく、またはネットワークによって接続された異なる遠隔場所にコンピュータクラスタとして配置されてもよい。
いくつかの実施形態において、特徴は、ウェブ技術を用いて共有された弾性リソースに基づいてセルフサービス供給方法でユーザに配布されたクラウドコンピューティングシステムの一部としてまたはサービスとしてクラウドに実装される。クラウドの特性は、例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプール、急速順応性、および計数サービスを含んでもよい。クラウド配置モデルは、パブリック、プライベート、およびハイブリッドを含む。クラウドサービスモデルは、SaaS(Software as a Service)、PaaS(Platform as a Service)、DBaaS(Database as a Service)、およびIaaS(Infrastructure as a Service)を含む。クラウドは、一般的に、共有された弾性リソースをユーザに配布するハードウェア、ソフトウェア、ネットワーク、およびウェブ技術の組み合わせを指す。本明細書に使用されたクラウドは、パブリッククラウド、プライベートクラウド、および/またはハイブリッドクラウド実装を含むことができ、クラウドSaaS、クラウドDBaaS、クラウドPaaS、および/またはクラウドIaaS配置モデルを含むことができる。
いくつかの実施形態において、特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを用いて実装される。いくつかの実施形態において、特徴は、教示されたアプローチの1つ以上の機能を実行するように構成されたまたはプログラムされたプロセッサを用いて実装される。いくつかの実施形態において、プロセッサは、本明細書に記載の機能を実行するように設計された、シングルチップまたはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、システムオンチップ(SOC)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理装置、ステートマシン、離散型ゲートまたはトランジスタロジック、離散型ハードウェアコンポーネント、またはそれらの任意の組合せである。いくつかの実装形態において、特徴は、特定の機能を有する回路によって実装される。他の実装形態において、特徴は、例えば、コンピュータ可読記憶媒体に記憶された命令を用いて、特定の機能を実行するように構成されたコンピュータ、コンピューティングシステム、プロセッサ、および/またはネットワークに実装される。
いくつかの実施形態において、特徴は、本開示の特徴を用いて、処理システムおよび/またはネットワークシステムのハードウェアを制御するためのソフトウェアおよび/またはファームウェア、またはプロセッサおよび/またはネットワークと他のシステムとの対話を可能にするためのソフトウェアおよび/またはファームウェアに組み込まれる。このようなソフトウェアまたはファームウェアは、アプリケーションコード、装置ドライバ、オペレーティングシステム、仮想マシン、ハイパーバイザ、アプリケーションプログラミングインターフェイス、プログラミング言語、および実行環境/コンテナを含み得るが、これらに限定されない。適切なソフトウェアの符号化は、熟練したプログラマによって、本開示の教示に基づいて容易に作成することができる。
いつかの実施形態において、本開示に教示されたアプローチは、ソフトウェアおよび/またはファームウェアを含む命令を格納または担持する機械可読またはコンピュータ可読媒体であるコンピュータプログラム製品を含む。これらの命令を用いて、本開示に教示されたアプローチのプロセスまたは機能を実行するように、コンピュータなどのシステムをプログラムするまたは構成することができる。機械可読またはコンピュータ可読媒体は、フロッピー(登録商標)ディスク、ハードドライブ、ソリッドステートドライブ、光ディスク、DVD、CD-ROM、マイクロドライブ、光磁気ディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ装置、磁気カードまたは光カード、分子メモリ、ナノシステム、またはそれらの変形体およびそれらの組み合わせを含むがこれらに限定されない命令および/またはデータを記憶するのに適した任意の種類の媒体または装置を含むことができる記憶媒体を含むことができる。特定の実施形態において、記憶媒体またはコンピュータ可読媒体は、非一時的な機械可読記憶媒体または非一時的なコンピュータ可読記憶媒体である。また、機械可読媒体またはコンピュータ可読媒体は、搬送波または送信信号などの一過性媒体を含んでもよい。
したがって、一観点から、本明細書は、分散型元帳におけるDAGベースのトランザクション処理システムおよび方法を記載する。一実施形態によれば、分散型元帳におけるDAGベースのトランザクション処理システムおよび方法を導入することができる。このモデルは、スループット性能を改善することができる。追加の重みメカニズムを用いて、様々なビジネス要件に基づいて最終性能を調節することができる。線形構造を使用した既存の作業とは異なり、より良好な性能を達成することができる。
本開示のさらなる例は、以下の番号付き項で説明される。
第1項
分散型元帳における有向非循環グラフ(DAG)ベースのトランザクション処理システムであって、エンタープライズ級の分散型元帳フレームワークと、分散型元帳ファブリッ
クとを備え、当該分散型元帳ファブリックは、複数のトランザクションを処理し、競合検出器を備え、当該競合検出器は、複数のトランザクション間の複数の競合を検出し、ランキングジェネレータを備え、当該ランキングジェネレータは、複数の初期重みパラメータのうちの1つの初期重みパラメータを複数のトランザクションのうちの各トランザクションに追加し、当該ランキングジェネレータは、DAGを生成し、当該DAGの少なくとも1つの頂点は、ランキング値を含み、トランザクションピッカーを備え、当該トランザクションピッカーは、生成されたDAGに基づいて、複数のトランザクションから、コミット対象のトランザクションセットを選択する。
第2項
複数の初期重みパラメータは、入力を介して提供される、第1項に記載のシステム。
第3項
複数の初期重みパラメータは、自動的に導出される、第1項に記載のシステム。
第4項
複数の初期重みパラメータは、少なくとも複数のトランザクションの各々の相対重要度に基づいて導出される、第3項に記載のシステム。
第5項
生成されたDAGは、複数のトランザクションの各々のランキングを計算し、当該計算された複数のトランザクションの各々のランキングは、トランザクションに割り当てられた初期重みパラメータまたは修正重みパラメータのうちの1つである、先行する項のいずれか一項に記載のシステム。
第6項
各修正重みパラメータは、対象トランザクションの初期重みパラメータと、対象トランザクションと競合するトランザクションの少なくとも1つのランキングとに基づいて計算される、第5項に記載のシステム。
第7項
コミット対象の複数のトランザクションセット内の各トランザクションは、競合しない、第1項から第6項のいずれか一項に記載のシステム。
第8項
分散型元帳における有向非循環グラフ(DAG)ベースのトランザクション処理方法であって、エンタープライズ級の分散型元帳フレームワークにおいて、分散型元帳ファブリックを提供することを含み、当該分散型元帳ファブリックは、複数のトランザクションを処理し、競合検出器が、複数のトランザクション間の複数の競合を検出することと、ランキングジェネレータが、複数の初期重みパラメータのうちの1つの初期重みパラメータを複数のトランザクションのうちの各トランザクションに追加することとを含み、当該ランキングジェネレータは、DAGを生成し、当該DAGの少なくとも1つの頂点は、ランキング値を含み、トランザクションピッカーが、生成されたDAGに基づいて、複数のトランザクションから、コミット対象のトランザクションセットを選択することを含む。
第9項
複数の初期重みパラメータは、入力を介して提供される、第8項に記載の方法。
第10項
複数の初期重みパラメータは、自動的に導出される、第8項に記載の方法。
第11項
複数の初期重みパラメータは、少なくとも複数のトランザクションの各々の相対重要度に基づいて導出される、第10項に記載の方法。
第12項
当該生成されたDAGは、複数のトランザクションの各々のランキングを計算し、当該計算された複数のトランザクションの各々のランキングは、トランザクションに割り当てられた初期重みパラメータまたは修正重みパラメータのうちの1つである、第8項から第11項のいずれか一項に記載の方法。
第13項
各修正重みパラメータは、対象トランザクションの初期重みパラメータと、対象トランザクションと競合するトランザクションの少なくとも1つのランキングとに基づいて計算される、第12項に記載の方法。
第14項
コミット対象の複数のトランザクションセット内の各トランザクションは、競合しない、第8項から第13項のいずれか一項に記載の方法。
第15項
分散型元帳における有向非循環グラフ(DAG)ベースのトランザクション処理命令を担持するコンピュータ可読媒体であって、当該命令は、読み出されて実行されると、1つ以上のコンピュータに、以下を含むステップを実行させ、当該ステップは、
競合検出器が、複数のトランザクション間の複数の競合を検出することと、
ランキングジェネレータが、複数の初期重みパラメータのうちの1つの初期重みパラメータを複数のトランザクションのうちの各トランザクションに追加することとを含み、当該ランキングジェネレータは、DAGを生成し、当該DAGの少なくとも1つの頂点は、ランキング値を含み、
トランザクションピッカーが、生成されたDAGに基づいて、複数のトランザクションから、コミット対象のトランザクションセットを選択することを含む。
第16項
複数の初期重みパラメータは、入力を介して提供される、第15項に記載のコンピュータ可読媒体。
第17項
複数の初期重みパラメータは、自動的に導出される、第15項に記載のコンピュータ可読媒体。
第18項
複数の初期重みパラメータは、少なくとも複数のトランザクションの各々の相対重要度に基づいて導出される、第17項に記載のコンピュータ可読媒体。
第19項
当該生成されたDAGは、複数のトランザクションの各々のランキングを計算し、
当該計算された複数のトランザクションの各々のランキングは、トランザクションに割り当てられた初期重みパラメータまたは修正重みパラメータのうちの1つである、第15項から第18項のいずれか一項に記載のコンピュータ可読媒体。
第20項
各修正重みパラメータは、対象トランザクションの初期重みパラメータと、対象トランザクションと競合するトランザクションの少なくとも1つのランキングとに基づいて計算される、第19項に記載のコンピュータ可読媒体。
上記の説明は、網羅的であることまたは範囲を開示された正確な形態に限定することを意図していない。また、特定の一連のトランザクションおよびステップを用いて実施形態を説明したが、明記しない限り、追加のトランザクションおよびステップの実行を排除しないことは、当業者には明白であろう。さらに、様々な実施形態において、特徴の特定の組み合わせを説明するが、特徴の異なる組み合わせが本開示の範囲に含まれることは、当業者には明白であろう。特に、特定の実施形態、変形例または図面に記載された(装置または方法のような)特徴は、教示および範囲から逸脱することなく、別の実施形態、変形例または図面に記載された別の特徴と組み合わせるまたは置き換えることができる。さらに、本開示の精神および範囲から逸脱することなく、様々な追加、減少、削除、変形、均等物による要素の置換、並びに形態、詳細、実装および用途における他の修正および変更を行うことができることは、当業者には明白であろう。より広い精神および保護範囲は、以下の特許請求の範囲およびその均等物によって定義される。

Claims (9)

  1. 分散型元帳における有向非循環グラフ(DAG)ベースのトランザクション処理を行うための方法であって、
    コンピュータが、分散型元帳フレームワークにおいて、ブロックチェーン元帳を提供することを含み、前記ブロックチェーン元帳は、複数のブロックを含み、各ブロックは、複数のトランザクションのうち、少なくとも1つのトランザクションの記録を含み、
    前記コンピュータが、複数の新しいトランザクションを前記ブロックチェーン元帳にコミットする命令を受信すると、前記複数の新しいトランザクション間の競合を検出することを含み、前記複数の新しいトランザクションの各々は、初期重みパラメータに関連付けられ、
    前記コンピュータが、互いに競合関係を有するトランザクション間にエッジを描画することにより、前記複数の新しいトランザクションの各々を含む有向非循環グラフを生成することと、
    前記コンピュータが、前記生成された有向非循環グラフの前記エッジに基づいて、前記初期重みパラメータの少なくとも1つを修正することと、
    前記コンピュータが、前記初期重みパラメータおよび修正された重みパラメータに基づいて、前記複数の新しいトランザクションの中から一組のトランザクションを選択し、前記一組のトランザクションを前記ブロックチェーン元帳の少なくとも1つの新しいブロックに記録することとを含む、方法。
  2. 前記初期重みパラメータの少なくとも1つは、入力を介して提供される、請求項に記載の方法。
  3. 前記初期重みパラメータの少なくとも1つは、前記関連付けられた新しいトランザクションに示される、請求項に記載の方法。
  4. 前記有向非循環グラフの生成中に、前記複数の新しいトランザクションのうちの第1のトランザクションの前記修正された重みパラメータは、前記第1のトランザクションの前記初期重みパラメータと、前記第1のトランザクションと競合する第2のトランザクションの前記初期重みパラメータとに基づいて計算される、請求項に記載の方法。
  5. 分散型元帳における有向非循環グラフ(DAG)ベースのトランザクション処理を行うためのシステムであって、
    ブロックチェーン元帳を含む分散型元帳フレームワークを備え、前記ブロックチェーン元帳は、複数のブロックを含み、各ブロックは、複数のトランザクションのうち、少なくとも1つのトランザクションの記録を含み、
    複数の新しいトランザクションを前記ブロックチェーン元帳にコミットする命令を受信すると、前記複数の新しいトランザクション間の競合を検出し、前記複数の新しいトランザクションの各々は、初期重みパラメータに関連付けられ、
    互いに競合関係を有するトランザクション間にエッジを描画することにより、有向非循環グラフを生成し、前記有向非循環グラフは、前記複数の新しいトランザクションの各々を含み、
    前記生成された有向非循環グラフの前記エッジに基づいて、前記初期重みパラメータの少なくとも1つを修正し、
    前記初期重みパラメータおよび修正された重みパラメータに基づいて、前記複数の新しいトランザクションの中から一組のトランザクションを選択し、前記一組のトランザクションを前記ブロックチェーン元帳の少なくとも1つの新しいブロックに記録する、システム。
  6. 前記初期重みパラメータの少なくとも1つは、入力を介して提供される、請求項に記載のシステム。
  7. 前記初期重みパラメータの少なくとも1つは、前記関連付けられた新しいトランザクションに示される、請求項に記載のシステム。
  8. 前記有向非循環グラフの生成中に、前記複数の新しいトランザクションのうちの第1のトランザクションの前記修正された重みパラメータは、前記第1のトランザクションの前記初期重みパラメータと、前記第1のトランザクションと競合する第2のトランザクションの前記初期重みパラメータとに基づいて計算される、請求項に記載のシステム。
  9. 請求項1からのいずれか1項に記載の方法をコンピュータに実行させるためのコンピュータプログラム。
JP2022136003A 2018-08-24 2022-08-29 分散型元帳におけるdagベースのトランザクション処理方法およびシステム Active JP7454616B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862722595P 2018-08-24 2018-08-24
US62/722,595 2018-08-24
US16/261,371 2019-01-29
US16/261,371 US11182379B2 (en) 2018-08-24 2019-01-29 DAG based methods and systems of transaction processing in a distributed ledger
JP2021510064A JP7133706B2 (ja) 2018-08-24 2019-02-01 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
PCT/US2019/016341 WO2020040809A1 (en) 2018-08-24 2019-02-01 Dag based methods and systems of transaction processing in a distributed ledger

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021510064A Division JP7133706B2 (ja) 2018-08-24 2019-02-01 分散型元帳におけるdagベースのトランザクション処理方法およびシステム

Publications (2)

Publication Number Publication Date
JP2022174127A JP2022174127A (ja) 2022-11-22
JP7454616B2 true JP7454616B2 (ja) 2024-03-22

Family

ID=69587067

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021510064A Active JP7133706B2 (ja) 2018-08-24 2019-02-01 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
JP2022136003A Active JP7454616B2 (ja) 2018-08-24 2022-08-29 分散型元帳におけるdagベースのトランザクション処理方法およびシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2021510064A Active JP7133706B2 (ja) 2018-08-24 2019-02-01 分散型元帳におけるdagベースのトランザクション処理方法およびシステム

Country Status (5)

Country Link
US (3) US11182379B2 (ja)
EP (1) EP3841489B1 (ja)
JP (2) JP7133706B2 (ja)
CN (1) CN112602076A (ja)
WO (1) WO2020040809A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10788998B2 (en) 2017-07-07 2020-09-29 Sap Se Logging changes to data stored in distributed data storage system
US10915521B2 (en) * 2018-08-21 2021-02-09 Syniverse Technologies, Llc Blockchain gateway device and associated method of use
US11182379B2 (en) 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
JP7051648B2 (ja) * 2018-09-05 2022-04-11 株式会社日立製作所 電子取引装置、電子取引検証装置、及び電子取引方法
US11720545B2 (en) * 2018-12-19 2023-08-08 International Business Machines Corporation Optimization of chaincode statements
PL3542494T3 (pl) * 2018-12-29 2021-08-23 Advanced New Technologies Co., Ltd. System i sposób realizacji umowy wewnętrznej w łańcuchu bloków
US10733152B2 (en) * 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for implementing native contract on blockchain
US11934425B1 (en) * 2019-02-04 2024-03-19 Harbor Technologies, LLC Synchronizing a centralized state on a distributed chain database with an off-chain state to improve trade authorization practices
SG11201908890XA (en) 2019-03-26 2019-10-30 Alibaba Group Holding Ltd System and method for implementing different types of blockchain contracts
US11416548B2 (en) * 2019-05-02 2022-08-16 International Business Machines Corporation Index management for a database
US11777738B2 (en) * 2019-06-04 2023-10-03 International Business Machines Corporation Metadata-based endorsement
US11048693B2 (en) * 2019-06-05 2021-06-29 International Business Machines Corporation Resolution of ordering inversions
CN110532115B (zh) * 2019-09-04 2021-03-05 北京海益同展信息科技有限公司 用于开发智能合约的系统、方法和装置
CN111352998B (zh) * 2020-02-28 2021-09-21 中国计量科学研究院 一种可信联盟区块链数字校准证书系统及其操作方法
CN111506783B (zh) * 2020-04-08 2023-12-22 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
US11470158B2 (en) * 2020-07-14 2022-10-11 The Travelers Indemnity Company Systems and methods for asynchronous API-driven external application services for a blockchain
CN115398397A (zh) * 2020-08-03 2022-11-25 支付宝(杭州)信息技术有限公司 区块链交易处理系统和方法
EP3977390B1 (en) * 2020-08-03 2023-12-06 Alipay (Hangzhou) Information Technology Co., Ltd. Blockchain transaction processing systems and methods
US11917088B2 (en) * 2020-09-21 2024-02-27 International Business Machines Corporation Integrating device identity into a permissioning framework of a blockchain
US11301463B1 (en) * 2020-10-09 2022-04-12 Blockpoint Systems Inc. Multi-version database management system
CN112256388A (zh) * 2020-10-15 2021-01-22 深圳壹账通智能科技有限公司 基于容器的区块链网络部署方法、装置、设备及存储介质
US11822538B2 (en) 2020-11-05 2023-11-21 Oracle International Corporation Systems and methods of transaction identification generation for transaction-based environment
US11847710B2 (en) * 2020-12-23 2023-12-19 International Business Machines Corporation Contract analytic binding and provenance
CN113254419B (zh) * 2021-01-19 2022-05-03 深圳市神州通在线科技有限公司 一种基于大数据微服务的物联网云平台管理系统及方法
US20220294788A1 (en) * 2021-03-09 2022-09-15 Oracle International Corporation Customizing authentication and handling pre and post authentication in identity cloud service
CN113704745A (zh) * 2021-08-25 2021-11-26 史云凌 一种基于角色权限的utxo授权及证书管理的方法和系统
CN113805899B (zh) * 2021-08-25 2024-01-26 浪潮卓数大数据产业发展有限公司 一种软件自动部署方法
CN114168685B (zh) * 2021-12-15 2023-07-18 北京天德科技有限公司 一种基于区块链系统的新型数据库架构及运行方法
CN115037472B (zh) * 2022-03-28 2023-06-23 湖南天河国云科技有限公司 基于双层dag共识机制的交易处理方法及系统、服务设备
CN114827165B (zh) * 2022-05-30 2024-01-23 蚂蚁区块链科技(上海)有限公司 对多个交易进行分组的方法和区块链节点
US20240119041A1 (en) * 2022-10-11 2024-04-11 Oracle International Corporation User-specified chains & row versions in a blockchain table
CN116722966B (zh) * 2023-07-26 2024-03-12 云南大学 一种基于dag预言机网络的高效可信链下数据馈送方法
CN116846916B (zh) * 2023-09-01 2023-12-08 武汉趣链数字科技有限公司 数据同步方法、装置、电子设备及计算机可读存储介质
CN116978509B (zh) * 2023-09-22 2023-12-19 山东百康云网络科技有限公司 一种电子处方流转方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510590A (ja) 2006-11-17 2010-04-02 マイクロソフト コーポレーション ソフトウェアトランザクションのコミット順序および競合の管理
WO2017040313A1 (en) 2015-08-28 2017-03-09 Swirlds, Inc. Methods and apparatus for a distributed database within a network
JP2017520844A (ja) 2014-06-26 2017-07-27 アマゾン・テクノロジーズ・インコーポレーテッド マルチアイテムトランザクションサポートを有するマルチデータベースログ
JP2018511886A (ja) 2015-04-01 2018-04-26 アビニシオ テクノロジー エルエルシー 分散型コンピューティングシステムにおけるデータベーストランザクションの処理
WO2018141792A1 (en) 2017-01-31 2018-08-09 Sony Corporation Apparatus and method for providing a virtual device

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US20130046894A1 (en) 2011-08-18 2013-02-21 Sap Ag Model-driven rest consumption framework
WO2013119841A1 (en) 2012-02-10 2013-08-15 Nimbula, Inc. Cloud computing services framework
US9519674B2 (en) 2014-09-10 2016-12-13 Amazon Technologies, Inc. Stateless datastore-independent transactions
JP6309442B2 (ja) 2014-12-18 2018-04-11 株式会社日立製作所 システムテンプレート保守システム及びシステムテンプレート保守方法
US10579974B1 (en) 2015-02-16 2020-03-03 AI Coin Inc. Systems, methods, and program products for a distributed digital asset network with rapid transaction settlements
US9652269B2 (en) 2015-04-03 2017-05-16 Oracle International Corporation System and method for supporting representational state transfer services natively in a service bus runtime
AU2016246428B2 (en) 2015-04-05 2017-11-09 Digital Asset (Switzerland) GmbH Digital asset intermediary electronic settlement platform
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10366247B2 (en) * 2015-06-02 2019-07-30 ALTR Solutions, Inc. Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
CA2992458A1 (en) 2015-07-14 2017-01-19 Fmr Llc Computationally efficient transfer processing, auditing, and search apparatuses, methods and systems
US9912494B2 (en) 2015-08-12 2018-03-06 Cisco Technology, Inc. Distributed application hosting environment to mask heterogeneity
US20170116693A1 (en) 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
CA3014392C (en) 2016-02-12 2024-04-16 Royal Bank Of Canada Methods and systems for digital reward processing
AU2017225932C1 (en) 2016-02-29 2021-06-24 Securekey Technologies Inc. Systems and methods for distributed identity verification
WO2018006072A1 (en) * 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US20180130034A1 (en) 2016-11-07 2018-05-10 LedgerDomain, LLC Extended blockchains for event tracking and management
US10691763B2 (en) 2016-11-11 2020-06-23 International Business Machines Corporation Trustable web searching verification in a blockchain
US10396997B2 (en) 2016-12-14 2019-08-27 International Business Machines Corporation Container-based operating system and method
US10311230B2 (en) * 2016-12-24 2019-06-04 Cisco Technology, Inc. Anomaly detection in distributed ledger systems
CN106982205B (zh) 2017-03-01 2020-05-19 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的数字资产处理方法和装置
US10375105B2 (en) 2017-03-03 2019-08-06 International Business Machines Corporation Blockchain web browser interface
CN106952124A (zh) 2017-03-16 2017-07-14 北京牛链科技有限公司 基于分布式记账的电子发票管理系统和方法
US10452998B2 (en) 2017-03-19 2019-10-22 International Business Machines Corporation Cognitive blockchain automation and management
US10757103B2 (en) 2017-04-11 2020-08-25 Xage Security, Inc. Single authentication portal for diverse industrial network protocols across multiple OSI layers
US10469460B2 (en) 2017-04-17 2019-11-05 Cisco Technology, Inc. Data sharing in a blockchain-enabled trust domain
US12026685B2 (en) 2017-04-21 2024-07-02 Blockdaemon Inc. Method and apparatus for blockchain management
US10833858B2 (en) 2017-05-11 2020-11-10 Microsoft Technology Licensing, Llc Secure cryptlet tunnel
US10601900B2 (en) 2017-05-24 2020-03-24 Red Hat, Inc. Supporting distributed ledgers in a micro-services environment
US9870508B1 (en) 2017-06-01 2018-01-16 Unveiled Labs, Inc. Securely authenticating a recording file from initial collection through post-production and distribution
GB201709188D0 (en) 2017-06-09 2017-07-26 Nchain Holdings Ltd Computer-Implemented system and method
US10789104B2 (en) 2017-06-30 2020-09-29 Vmware, Inc. Methods and apparatus for deploying a distributed system using operating system virtualization
US10581873B2 (en) 2017-07-11 2020-03-03 Cisco Technology, Inc. Securing micro-services
US10123202B1 (en) 2017-07-11 2018-11-06 Verizon Patent And Licensing Inc. System and method for virtual SIM card
US11343095B2 (en) 2017-09-19 2022-05-24 Microsoft Technology Licensing, Llc Cryplet binding key graph
US10528551B2 (en) 2017-09-29 2020-01-07 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
CN108389129B (zh) * 2018-02-27 2020-12-04 创新先进技术有限公司 基于区块链的交易执行方法及装置、电子设备
US11951400B2 (en) * 2018-03-14 2024-04-09 Sony Interactive Entertainment LLC Secure decentralized video game transaction platform
CN108764870B (zh) 2018-05-29 2020-07-07 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备
US20200037158A1 (en) * 2018-07-30 2020-01-30 Hewlett Packard Enterprise Development Lp Systems and methods for using smart contract and light and sound emitting assets provisioned with distributed ledger addresses to identify and locate assets
US11182379B2 (en) 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
US11048689B2 (en) 2018-11-08 2021-06-29 International Business Machines Corporation Consensus transaction scheduler
US11151558B2 (en) 2018-12-12 2021-10-19 American Express Travel Related Services Company, Inc Zero-knowledge proof payments using blockchain
US11694110B2 (en) 2019-06-12 2023-07-04 International Business Machines Corporation Aggregated machine learning verification for database
US11546425B2 (en) 2020-04-23 2023-01-03 Oracle International Corporation Systems and methods of providing ledger as a service
US11741075B2 (en) 2020-06-04 2023-08-29 Oracle International Corporation Methods and system of tracking transactions for distributed ledger
US11822538B2 (en) 2020-11-05 2023-11-21 Oracle International Corporation Systems and methods of transaction identification generation for transaction-based environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510590A (ja) 2006-11-17 2010-04-02 マイクロソフト コーポレーション ソフトウェアトランザクションのコミット順序および競合の管理
JP2017520844A (ja) 2014-06-26 2017-07-27 アマゾン・テクノロジーズ・インコーポレーテッド マルチアイテムトランザクションサポートを有するマルチデータベースログ
JP2018511886A (ja) 2015-04-01 2018-04-26 アビニシオ テクノロジー エルエルシー 分散型コンピューティングシステムにおけるデータベーストランザクションの処理
WO2017040313A1 (en) 2015-08-28 2017-03-09 Swirlds, Inc. Methods and apparatus for a distributed database within a network
WO2018141792A1 (en) 2017-01-31 2018-08-09 Sony Corporation Apparatus and method for providing a virtual device

Also Published As

Publication number Publication date
WO2020040809A1 (en) 2020-02-27
US20220058186A1 (en) 2022-02-24
CN112602076A (zh) 2021-04-02
JP7133706B2 (ja) 2022-09-08
EP3841489A1 (en) 2021-06-30
US20240248894A1 (en) 2024-07-25
US11921703B2 (en) 2024-03-05
JP2021534512A (ja) 2021-12-09
JP2022174127A (ja) 2022-11-22
US20200065300A1 (en) 2020-02-27
EP3841489B1 (en) 2022-09-07
US11182379B2 (en) 2021-11-23

Similar Documents

Publication Publication Date Title
JP7454616B2 (ja) 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
JP7502393B2 (ja) ハイパーレッジャファブリックブロックチェーンにおいてsqlベースのリッチクエリをサポートするためのシステムおよび方法
US11544254B2 (en) System and method for managing a blockchain cloud service
US11546425B2 (en) Systems and methods of providing ledger as a service
US20240054125A1 (en) Systems and methods of transaction identification generation for transaction-based environment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220912

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231212

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: 20240213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240311

R150 Certificate of patent or registration of utility model

Ref document number: 7454616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150