JP7319461B2 - コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置 - Google Patents

コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置 Download PDF

Info

Publication number
JP7319461B2
JP7319461B2 JP2022514455A JP2022514455A JP7319461B2 JP 7319461 B2 JP7319461 B2 JP 7319461B2 JP 2022514455 A JP2022514455 A JP 2022514455A JP 2022514455 A JP2022514455 A JP 2022514455A JP 7319461 B2 JP7319461 B2 JP 7319461B2
Authority
JP
Japan
Prior art keywords
smart contract
node
organization
proposal
contract transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022514455A
Other languages
English (en)
Other versions
JP2022547853A (ja
Inventor
拓 下沢
訓 大島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2022547853A publication Critical patent/JP2022547853A/ja
Application granted granted Critical
Publication of JP7319461B2 publication Critical patent/JP7319461B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、一般的にはブロックチェーンシステムに関し、より具体的には、コンソーシアムブロックチェーンを用いてプライベートデータを保持するためのシステムおよび方法に関する。
米国特許出願公開第2019/025156号明細書に開示されているような関連技術の実装には、コンソーシアムブロックチェーン上でプライベートトランザクションを容易にするためのシステムおよび方法がある。トランザクションのプライベートデータは、特定のクライアントノードに記録され、データのハッシュ値はブロックチェーンネットワークに記録される。クライアントノードは、他のクライアントノードに対してそれぞれプライベートな通信チャネルを持っている。そのため、2つのクライアントノード間のプライベートトランザクションは、他のクライアントノードに公開することなく、その通信チャネルを使って発行することができる。クライアントノードは、ブロックチェーンネットワークに記録されているハッシュを参照することで、他の組織から渡されたプライベートトランザクションのデータを検証し、データが保存されてから改ざんされていないことを確認することができる。
しかしながら、関連技術の実装では、プライベートデータのいわゆるSPoT(single point of trust問題に対処する方法は開示されていない。
本明細書に記載された例示的な実装は、コンソーシアムブロックチェーンを用いたシステムおよび方法に関する。コンソーシアムブロックチェーンは、許可型ブロックチェーンまたはエンタープライズブロックチェーンとして知られており、一連の既知の参加者のみにアクセスを制限するように構成され、匿名ではなく、公開されない。コンソーシアムブロックチェーンでは、参加者も組織に分類され、すべての参加者は1つだけの組織に所属している必要がある。ブロックチェーンは、特定の組織に所属する複数のコンピュータノードが接続され、相互に通信することで成り立っている。システム内で共有・分散されたデータは台帳と呼ばれ、各コンピュータノードはローカルに台帳を持っている。ブロックチェーンは、ブロックチェーンに参加しているすべてのコンピュータノードが、システム内の台帳に対して同じ内容を持つように管理している(つまり、すべてのブロックチェーンノードが台帳のレプリカを持ち、最終的に同じ内容を持つことになる。)。
ブロックチェーンで使用されるデータモデルには、UTXO(unspent transaction output)およびキー・バリュー・ペアが含まれる。台帳は通常、トランザクションのみを含み、各トランザクションは関連するデータ(UTXOではアドレス、key-valueではキーによって識別される)のみの値を含む。すべてのデータの最新の値を得るには、台帳のすべての履歴、つまりトランザクションをトラバースすることで可能ですが、ブロックチェーンのノードは、オプションとして、効率化のために最新データのスナップショットを持ち、新しいトランザクションごとにそれを更新することもできる。
ブロックチェーンシステムのコンピュータノードで同じ台帳を保持することを容易にするために、様々なコンセンサスアルゴリズムが使用される。一例として、Hyperledger Fabricの3フェーズのコンセンサスがあり、これにはエンドースメント、オーダリングおよびバリデーションが含まれる。エンドースメントフェーズでは、クライアントがトランザクション提案を送信することで、ブロックチェーンノードにトランザクションを要求する。ブロックチェーンノードは、トランザクション提案に従ってスマートコントラクトと呼ばれるプログラムを実行し、その結果をエンドースメントと呼ばれるノードの署名付きでクライアントに送り返す。オーダリングフェーズでは、クライアントは提案とエンドースメントを含むトランザクションを、トランザクションの順序を決定するために特化されたブロックチェーンノードに送信する。オーダリングサービスを提供するノードは、受信したトランザクションの順序を決定し、1つまたは複数のトランザクションを集約してブロックを作成する。バリデーションフェーズでは、オーダリングサービスがブロックチェーンノードにブロックを配信する。ブロックチェーンノードは、各ブロックの各トランザクションを検査し、エンドースメントが有効であるか、結果が他の「前」のトランザクションとコンフリクトしていないかをチェックする。すべてのチェックを通過したトランザクションは有効とみなされ、ブロックチェーンノードにスナップショットデータがある場合、トランザクションの結果に応じてスナップショットデータを更新する。それ以外の場合は、無効とみなされ、効果がない。以下の説明では、この3フェーズコンセンサスをベースにしているが、本実装例は特定のアルゴリズムに限定されるものではない。
本開示の態様は、スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムのための方法を含むことができ、ブロックチェーンシステムは、複数のノードを有し、本方法は、前記複数のノードからの第1のノードにおいて、前記複数のノードの第2のノードからスマートコントラクトトランザクションの提案を受信することを契機に、前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定することと、前記第1のノードにおいて、前記組織が前記提案によって示されるスマートコントラクトトランザクションを実行できるか否かを判定することと、前記組織が前記提案が示すスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、記第2のノードにエラーを返すことと、前記組織が前記プロポーザルが示すスマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、を含む。
本開示の態様は、スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムのための命令を格納する、非一時的なコンピュータ可読媒体を含むことができ、ブロックチェーンシステムは複数のノードを含み、命令は、前記複数のノードのうちの第1のノードにおいて、前記複数のノードのうちの第2のノードからスマートコントラクトトランザクションのプロポーザルを受信したことを契機に、前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定することと、前記第1のノードにおいて、前記組織が前記プロポーザルによって示されるスマートコントラクトトランザクションを実行できるか否かを判定することと前記組織が前記プロポーザルが示すスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返すことと、前記組織が前記プロポーザルが示すスマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、を含む。
本開示の態様は、スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムを含むことができ、ブロックチェーンシステムは、複数のノードを有し、ブロックチェーンシステムは、前記複数のノードのうちの第1のノードにおいて、前記複数のノードのうちの第2のノードからスマートコントラクトトランザクションの提案を受信したことを契機に、前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定する手段と、前記第1のノードにおいて、前記組織が前記提案によって示されるスマートコントラクトトランザクションを実行できるか否かを決定する手段と、前記組織が、前記プロポーザルが示すスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返す手段と、前記組織が、前記プロポーザルが示すスマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行する手段と、を含む。
本開示の態様は、スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムを含むことができ、ブロックチェーンシステムは、複数のノードを含み、複数のノードの第1のノードは、プロセッサを含み、プロセッサは、複数のノードの第2のノードからスマートコントラクトトランザクションの提案を受信することを契機に、前記第2のノードに関連するブロックチェーンシステム内の組織を特定することと、前記組織が前記提案によって示されるスマートコントラクトトランザクションを実行する権限を有するか否かを判定することと、前記組織が前記提案によって示されるスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返すことと、前記組織が前記提案によって示されるスマートコントラクトトランザクションを実行する権限を有することを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、を含むように構成される。
図1は、実装例により実装するシステムの例を示す。
図2は、ブロックチェーンノードの実装例を示す。
図3は、ブロックおよびトランザクション提案の実装例を示す。
図4は、組織情報に関する実装例を示す。
図5は、プライベートデータ情報の実装例を示す。
図6は、実装例によるユーザがシステムでトランザクションを実行するためにブロックチェーンクライアントを起動するときの、ブロックチェーンクライアントの処理例を示す。 図7は、実装例によるユーザがシステムでトランザクションを実行するためにブロックチェーンクライアントを起動するときの、ブロックチェーンクライアントの処理例を示す。
図8は、実装例によるブロックチェーンノードにおけるエンドースロジックでの処理例を示す。
図9は、実装例によるブロックチェーンノード内のコミットロジックにおける例示のプロセスを示す。
図10は、実装例によるブロックチェーンノード内のバリデーションロジックにおける例示的な処理を示す。
図11は、ブロックチェーンベースのシステムと監査者とを含む別の例示的なシステムを示す。
図12は、実装例による監査ノードの処理例を示す。
図13は、テストプラットフォームを備えたブロックチェーンベースのシステムを含む別の例のシステムを示す。
図14は、テスト環境マネージャの実装例を示す。
図15は、実装例による変換ロジックの処理例を示す。
図16は、実施例によるテストネットワークランチャーの処理例を示す。
図17は、実装例で使用するのに適した例示的なコンピュータデバイスを備えた例示的なコンピューティング環境を示す。
以下の詳細な説明では、本願発明の図および実装例の詳細を提供する。参照番号および図間の冗長な要素の記述は、明確にするために省略される。本明細書を通して使用される用語は、例として提供され、限定することを意図していない。例えば、「自動」という用語の使用は、本発明の実装形態を実施する当業者の所望の実装形態に応じて、実装の特定の態様に対するユーザまたは管理者の制御を含む完全自動または半自動の実装形態を含み得る。選択は、ユーザインタフェースまたは他の入力手段を介してユーザが実施することができ、または所望のアルゴリズムを介して実施することができる。本明細書に記載されている実装例は、単数または複数の組み合わせで利用することができ、実装例の機能は、所望の実装例に応じて、任意の手段で実施することができる。
ブロックチェーン技術は、複数の関係者の間で不変的、分散的、信頼できるデータストアを提供する。ブロックチェーンは、暗号資産を実現するために始まったが、企業システム、特に複数の企業や組織が関与するシステムでも採用されている。企業向けのブロックチェーンプラットフォームの多くは、PoW(Proof of Work)、PoS(Proof of Stake)、PoET(Proof of Elapsed Time)などの時間のかかる斬新なアルゴリズムではなく、ブロックチェーンに保存されたデータについて参加者間の合意を得るために、よりシンプルで従来のアルゴリズムを採用している。エンタープライズブロックチェーンのコンセンサスアルゴリズムには、Paxos、RAFT、PBFTなど、CFT(Crash fault tolerance)やBFT(Byzantine fault tolerance)のバリエーションがある。これらは一般的に、善意の参加者がトランザクションを実行すると、同じ結果になるはずだと想定している。したがって、トランザクションと結果が有効であると考えられるためには、一定数の参加者が同一の結果に到達することを検証する必要がある。
ブロックチェーンは、関係するすべてのデータが参加者の間で共有されている場合、トランザクションに対してうまく機能することができる。しかし、ブロックチェーン技術は、データをブロックチェーンネットワークの参加者と公に共有することで、保存されたデータの不変性と真正性を達成するが、企業のユースケースでは、組織が他の組織に公開できないデータを必要とすることが多い。このような要件を満たすために、多くのエンタープライズブロックチェーンプラットフォームでは、プライベートデータ機能が導入されている。関連技術の実装では、プライベートデータは、データの閲覧を許可された参加者の特定の部分に保存され、データのハッシュ値はブロックチェーンに保存され、すべての参加者が利用できるようになっている。しかし、このような特徴は、依然として、複数のプライベートデータを含むトランザクションで使用される場合には、解決すべき課題がある。
課題の1つを説明するために、3つの組織があると仮定する。A、B、Cの3つの組織があり、それぞれが二者間のプライベートデータに独自の残高を保持している。例えば、Bは2つの残高を保持している。1つはAと共有するためのもの(「残高BA」)であり、もう1つはCと共有するためのもの(「残高BC」)である。AとBが取引を行う際には、残高が相互に確認され、取引のトランザクションはAとBの2つの組織によって検証される。次に、Bは、残高BAから残高BCにいくらかのお金を送金して、Cに支払うトランザクションを開始することができる。Bは2つの残高を見ることができる唯一の組織であるため、トランザクションの後の残高は、Bにしか確認できず、Bは残高を偽ることができる。他の組織は、それらの残高のハッシュ値を知っているだけで、そのハッシュ値から第1の残高からいくら差し引かれ、第2の残高にいくら入金されたかを計算することができないため、トランザクションの正しさを検証することができない。この問題の根本的な原因は、Bがこのトランザクションの唯一の信頼点(信頼できる情報源)であるためである。
本明細書に記載されている実装例は、プライベートデータが関与するトランザクションのための信頼点の数を増加させてエンタープライズブロックチェーンに基づくシステムを提供することに関する。一の実装形態は、1つ以上の組織、1つ以上の読み取り専用組織、各組織および各読み取り専用組織の1つ以上のブロックチェーンノード、ノード間のピアツーピア通信を容易にするブロックチェーンノードを接続するネットワーク、および注文サービスによって構成される。読み取り専用組織は、他の組織のプライベートデータにアクセスする資格を持つように構成されているので、特にすべてのプライベートデータにアクセスできる組織の数が1つしかない場合に、複数のプライベートデータを含むトランザクションを検証することができる。
読み取り専用組織を含む組織内の各ブロックチェーンノードは、トランザクション提案に従ってスマートコントラクトを実行し、その結果をエンドースメントと共に返すエンドーシングロジックと、バリデーティングロジックでトランザクションを検証し、そのトランザクションをローカル台帳に永続化するコミットロジックを有する。エンドーシングロジックは、スマートコントラクトの実行に移る前に、トランザクションのアイデンティティに基づいて、トランザクション提案が読み取り専用組織から送られてきたものかどうかのチェックを行う。トランザクション提案が読み取り専用組織から送られてきたものである場合、エンドーシングロジックはそのトランザクション提案を拒否し、読み取り専用組織が提案やトランザクションを行わないようにする。バリデーティングロジックには、読み取り専用組織がトランザクションを送信することに成功した場合でも、トランザクションの作成者をチェックする機能もある。バリデーティングロジックは、トランザクションの作成者が読み取り専用組織に属していた場合、そのトランザクションに「無効」のマークを付け、トランザクションの結果をブロックチェーンに適用できないようにする。読み取り専用組織が台帳を変更するためのトランザクションを実行できないようにチェックを実施することで、より信頼性が高く、仲介者や監査者にふさわしい組織とすることができる。このような実装形態により、他の組織は、他の組織のプライベートデータに読み取り専用組織がアクセスすることを許容する。
図1は実装例によるシステムの例を示す。図1のシステムは、複数の組織にグループ化された既知の参加者とコンソーシアムブロックチェーンを形成する。組織は、会社、部署、部門であり、それぞれが独自の信頼を確立するのに十分な独立性を持っている。図1の例では、2つの組織100-1と100-2、及び、1つの読み取り専用組織101を示す。組織の数と読み取り専用組織の数は、1以上の任意の数とすることができる。読み取り専用組織101は、特別なタイプの組織であり、他の組織と同じ構造とロジックを持つ。大きな違いは、読み取り専用組織のメンバーは、ブロックチェーンに保存されているデータに変更を加えるトランザクションを起動することができないことである。組織は、1つまたは複数のブロックチェーンノード110、1つまたは複数のブロックチェーンクライアント120、および、1つまたは複数の認証局(CA)150を持つことができる。
ブロックチェーンノード110は、計算能力、メモリ、永続的なストレージ、およびネットワークを介した通信能力を有するコンピュータである。ブロックチェーンノード110は、物理的なコンピュータサーバ、仮想マシン、コンテナ、または、所望の実装形態を容易に行うためのコンピュータと同様の能力を有する他の形態であってもよい。本明細書で説明したように、ブロックチェーンノード110は、台帳、ステートデータベース、およびプライベートデータを永続化し、受信したトランザクション提案に応じてスマートコントラクト(参加者が合意したプログラム)を実行し、オーダリングサービス130によって順序付けされた後、トランザクションを検証して更新する。
オーダリングサービス130は、1つまたは複数のコンピュータによって提供されるサービスであり、これらのコンピュータは、物理的なコンピュータ、仮想マシン、コンテナ、任意の他の類似したマシンであることができ、所望の実装に従って、単数または組み合わせで提供される。オーダリングサービス130は、本システムで発行されるトランザクションの完全な順序を決定すること、決定された順序で1つまたは複数のトランザクションを含むブロックをそれぞれ作成すること、およびブロックをすべてのブロックチェーンノード110に配信することを担当する。ブロックチェーンクライアント120およびCA150は、コンピュータで実行されるプログラムであり、このコンピュータは、所望の実装形態に応じて、物理的なコンピュータ、仮想マシン、コンテナ、またはその他の同様のマシンとすることができる。また、プログラムは、ブロックチェーンノード110のいずれかと同じコンピュータで実行されてもよいし、別のコンピュータで実行されてもよい。ブロックチェーンクライアント120は、トランザクション提案をブロックチェーンノード110の1つまたは複数に送信し、応答をトランザクションとしてオーダリングサービス130に送信することでトランザクションを開始し、オーダリングサービス130は、トランザクションを含むブロックをブロックチェーンノード110に配信する。読み取り専用組織101は、トランザクションを起動することができないため、ブロックチェーンクライアントを持たない。
CA150は、検証可能なアイデンティティを発行するコンピュータプログラムであり、所望の実装形態に応じて、物理コンピュータ、仮想マシン、コンテナなどで実行することができる。CA150は、RSAやECDSAなどの暗号アルゴリズムを用いて、CAの秘密鍵で署名されたデジタル証明書を発行するなどの暗号方式を用いることができる。また、CA150は、自身または他の優れたCAによって署名されたデジタル証明書のような自身のアイデンティティを持ち、その公開鍵は、自身が発行した証明書の署名に使用された秘密鍵に対応する。ブロックチェーンノード110、ブロックチェーンクライアント120、オーダリングサービス130、および任意にCA150は、ネットワーク140によって接続されており、ピアツーピア方式で相互に通信することができる。ネットワーク140は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、または仮想プライベートネットワーク(VPN)とすることができ、所望の実装形態に応じて有線または無線とすることができる。それらの間の通信は、例えば、TLS(Transport Layer Security)を使用することにより、暗号化および/または安全化することができる。
図2は、ブロックチェーンノード110に関する実装例を示す。ブロックチェーンノード110は、エンドーシングロジック210、コミットロジック220、バリデーションロジック230、およびスマートコントラクト240などの実行可能なプログラムを含むことができる。また、ブロックチェーンノード110は、台帳250、ステートデータベース270、プライベートデータストア280、テンポラリプライベートデータ290を有する。エンドーシングロジック210は、コンセンサスのエンドーシングフェーズを実行する。コミットロジック220は、コンセンサスのバリデーションフェーズを実行するものであり、トランザクションの検証のコアとなるバリデーションロジック230を内部で呼び出す。スマートコントラクト240は、トランザクションの動作を定義するプログラムであり、台帳に格納されている現在のデータに基づいて結果を計算する。スマートコントラクト240は、任意に1つまたは複数のパラメータを取るいくつかの関数を定義しており、ブロックチェーンクライアント120は、もしあれば関数の1つの識別子とパラメータとを指定したトランザクション提案を送信する。ロジックの詳細は、以下の他の図に開示されている。
システムで共有されるデータは、台帳250に格納される。データは、ブロック260のチェーンとして格納されている。ステートデータベース270は、台帳250内のデータの最新バージョンのスナップショットである。ブロック260の各トランザクションは、通常、そのトランザクションに関与する値の情報しか持たないため、ブロックチェーンノード110は、有効なトランザクションがすべてコミットされて最新の状態が得られた後に、最新の状態のスナップショットを維持・更新する。プライベートデータストア280は、特定の組織以外では共有されないプライベートデータを保持する。プライベートデータは、プライベートデータストア280に格納され、一般に、非プライベートデータ(例えば、台帳250およびステートデータベース270に格納されたパブリックデータ)と同じデータモデルを有する。トランザクションには、非プライベートデータの値と、プライベートデータの値のハッシュとが含まれる。ブロックチェーンノード110が異なるデータストアを持つことができるように、複数のプライベートデータストア280が存在することができ、それぞれのデータストアは、アクセスを許可された組織の異なるセットを含む。
テンポラリプライベートデータストア290は、まだコミットされていないプライベートデータを保持している。プライベートデータは、そのデータ(プライベートデータ)を含むトランザクションがコミットされると、プライベートデータストア280に書き込まれる。エンドースメントフェーズにおいて、エンドースメントロジック210が、ブロックチェーンクライアント120からプライベートデータを含むトランザクション提案370を受信したときにスマートコントラクト240を呼び出すと、スマートコントラクト240は、プライベートデータの値だけでなく、非プライベートデータの値を含む結果を返す。その性質上、プライベートデータの値は、すべての参加者と共有することができず、エンドースメントロジック210は、プライベートデータの値を返さず、値のハッシュを返す。バリデーションフェーズでコミットされるまで、プライベートデータの新しい値を保持する必要性があるため、エンドースメントロジック210は、テンポラリプライベートデータストア290にプライベートデータを格納する。トランザクションがバリデーションフェーズで検証されると、コミットロジック220は、非プライベートデータのためにステートデータベース270を更新し、プライベートデータのためにプライベートデータストア280を更新する。
図3は、ブロック260およびトランザクション提案370に関する実施例を示す。ブロック260は、ハッシュ値で互いに直線的に接続されている。ハッシュ値は、SHA-1、SHA-256、MD5などの一方向性関数によって得られる値である。前ハッシュ値301(Previous hash value 301)は、前のブロックのハッシュ値である。ブロックハッシュ値302は、ブロック260自体のハッシュ値である。両方のハッシュ値は、所望の実装に応じて、対象ブロックの全バイト、またはブロックのヘッダ部分などの対象ブロックの一部のバイトに対して計算されてもよい。ブロック260には、複数のタイプのトランザクションを含むことができる1つまたは複数のトランザクションが含まれる。図3の例では、ノーマルトランザクション310とコンフィグトランザクション320の2種類のトランザクションを示している。ノーマルトランザクション310は、スマートコントラクト240を起動した結果、データを変更するトランザクションである。コンフィグトランザクション320は、システムの構成を変更するトランザクションである。ブロックチェーンノード110は、現在の構成及び構成履歴を、別の台帳とステートデータベースに格納することができる。
ノーマルトランザクション310は、プロポーザアイデンティティ311、関数およびパラメータ312、結果313、および1つまたは複数のエンドースメント315を有する。プロポーザアイデンティティ311は、トランザクションを要求したエンティティ、またはトランザクション提案370を送信したエンティティを識別するための情報を含む。プロポーザアイデンティティ311は、ブロックチェーンクライアント120に対して発行された証明書と、トランザクションの内容に対するデジタル署名とを含むことができる。
関数およびパラメータ312は、スマートコントラクト240を実行するために使用される関数およびパラメータの名前または識別子を表す。結果313は、関数およびパラメータ312を用いてスマートコントラクト240を実行して得られた結果を含む。結果313は、台帳250のデータのアドレスや鍵などの識別子を、それぞれの新しい値とともに含むことができる。結果313は、古い値またはスマートコントラクトの実行中に読み取られた値を有し、バリデーションフェーズにおいてその値と最新の値とを比較することにより、他のトランザクションとのコンフリクトを検出し、RAW(Read-after-write)データの危険性を防止することができる。結果313は、それらの古い値または読み取られた値の実際の値の代わりに、古い値または読み取られた値のバージョンを有してもよい。プライベートデータが使用される場合、結果313は、プライベートデータの値のハッシュだけでなく、非プライベートデータの値を含むことができる。エンドースメント315は、ブロックチェーンノード110が、関数およびパラメータ312を用いてスマートコントラクト240を実行することにより、結果313を得ることに同意したという検証可能な証拠を含む。例えば、エンドースメントは、ブロックチェーンノード110の秘密鍵を用いた結果313のデジタル署名と、エンティティのアイデンティティ、具体的には、デジタル署名を作成したブロックチェーンノード110のアイデンティティとを含むことができる。
コンフィグトランザクション320は、組織情報330、プライベートデータ情報340、エンドースメントポリシー350、および1つまたは複数のエンドースメント315を含む。組織情報330は、ブロックチェーンシステムに参加している組織、すなわちコンソーシアムに参加している組織の情報を含む。プライベートデータ情報340は、もしあればプライベートデータの情報を含む。エンドースメントポリシー350は、あるトランザクションに対するエンドースメントが遵守すべき条件を定義する。あるトランザクションにおけるエンドースメントが条件を満たす場合にのみ、そのトランザクションは有効であるとみなされる。条件の一例としては、エンドースメントを与えた異なる組織の最小の数が挙げられる。条件の他の例としては、「組織A AND (組織B OR 組織C)」のようなエンドースメントを与えた組織のAND-ORツリーがある。また、通常のトランザクション310と、コンフィグトランザクション320とで、異なる条件を定義してもよい。コンフィグトランザクション320は、上述したすべての情報を有していてもよいし、所望の実装形態に応じて、トランザクションが適用される情報の違いを有していてもよい。
エンドースメントフェーズ中にスマートコントラクト240の実行を要求するために、ブロックチェーンクライアント120からブロックチェーンノード110にトランザクション提案370が送信される。それは、プロポーザアイデンティティ311と、トランザクションで起動されるスマートコントラクトのための関数およびパラメータ312とを含む。図6および図7で説明したように、トランザクション提案のコンテンツは、ノーマルトランザクション310にコピーされ、オーダリングフェーズ中にオーダリングサービス130に送信される。コンフィグトランザクション320のためのトランザクション提案は、異なる構造を有していてもよく、所望の実装に応じて、組織情報330、プライベートデータ情報340およびエンドースメントポリシー350の全てまたは一部を有していてもよい。
図4は、組織情報330の実装例を示す。この情報は、各組織の組織名331、トラストルート332、許可333を含む。各組織の組織名331は、各組織の識別子であり、例えば、「A社」、「B社」などとすることができる。プロポーザアイデンティティ311やエンドースメント315には、アイデンティティの一部として組織名331が含まれていてもよい。各組織のトラストルート332は、その組織に属することを主張するエンティティのアイデンティティ311を検証するために用いられる情報である。トラストルート332の一例は、組織内のCA150の自己署名証明書である。組織内のブロックチェーンクライアント120が、CA150が発行し、自己署名証明書に対応する鍵ペアで署名された証明書を、トランザクション提案370におけるプロポーザアイデンティティ311として使用する場合、エンドーシングロジック210およびバリデーションロジック230は、証明書の署名が自己署名証明書の公開鍵で正しいかどうかを確認することで、証明書を検証することができる。別の例としては、別のCAがCA150のために発行した証明書があり、これは公に知られた信頼できるものであってもよい。この場合も、署名には証明書に対応する鍵ペアを使用する必要がある。各組織の許可333は、その組織がシステム内でトランザクションを開始したり提案したりすることを許可されているかどうか、組織の権限を定義する。例えば、組織の許可333が“all”の場合、その組織は、トランザクションを開始できる組織100であり、許可333が“read-only”の場合、その組織は、トランザクションを開始できない読み取り専用組織101である。
図5は、プライベートデータ情報340に関する実装例を示す。この情報は、各プライベートデータストアのデータストア名341と許可342を含む。データストア名341は、プライベートデータストアの識別子であり、例えば、「プライベートデータA」、「プライベートデータAB」などとすることができる。許可342は、プライベートデータストア内のデータに対する組織からの許可されたアクセスを指定する許可リストである。許可342の一例は、図に描かれているように、「Readable and Writable by A Company」であり、これは、組織「A社」のブロックチェーンノード110がプライベートデータストアを読み書きできることを意味している。エンドースメントフェーズにおいて、スマートコントラクト240によってプライベートデータストアがアクセスされると、ブロックチェーンノード110に許可が与えられる。
図6および図7は、実装例による、ユーザがシステムでトランザクションを実行するためにブロックチェーンクライアント120を起動するときの、ブロックチェーンクライアント120のプロセスの例を示す。まず、ブロックチェーンクライアント120は、自身のアイデンティティを用いて、トランザクション提案370を構成する(ステップ401)。トランザクション提案370は、プロポーザアイデンティティ、(即ち、ブロックチェーンクライアント120と同じ組織のCA150が発行したデジタル証明書や、デジタル証明書に対応するキーペアで作成された署名などのブロックチェーンクライアント120のアイデンティティ)と、スマートコントラクトを起動するための関数とパラメータを含む。そして、ブロックチェーンクライアント120は、以下のように、十分な数のエンドースメントを得るまでループする(ステップ402)。403において、ブロックチェーンクライアント120は、エンドースメントを得るためにトランザクション提案370を送信する組織と、その組織に属する特定のブロックチェーンノード110とを選択する。ブロックチェーンクライアント120は、組織内のいずれかのブロックチェーンノード110から既にエンドースメントを取得しているか否か、組織がトランザクション提案370に含まれるプライベートデータにアクセスできるか否かなど、複数の基準に従って組織を選択することができる。また、ブロックチェーンノードが受信したブロックの数や、ブロックチェーンノードの負荷など、複数の基準を用いてブロックチェーンノード110を選択してもよい。組織とブロックチェーンノード110を選択した後、ブロックチェーンクライアント120は、トランザクション提案370をブロックチェーンノード110に送信する(ステップ404)。トランザクション提案370は、図8で後述するように、ブロックチェーンノード110内のエンドーシングロジック210によって受信され、処理される。そして、ブロックチェーンクライアント120は、ブロックチェーンノード110からの応答を待つ(ステップ405)。応答は、エンドーシングロジックの処理が正常に終了したか否かを示すものであり、スマートコントラクト240からの結果と、成功した場合にはブロックチェーンノード110からのエンドースメントとが含まれる。エンドーシングロジックの処理が失敗した場合、ブロックチェーントクライアント120はステップ403に戻り、同じブロックチェーンノード110または別のブロックチェーンノード110のいずれかにトランザクション提案370の送信を試みることができるようにする。
ステップ406において、トランザクション提案370が成功した場合(No)、ブロックチェーンクライアント120は、ステップ407において、同じトランザクション提案370について他のブロックチェーンノード110から得た前の結果と比較する。それらが同一であれば(Yes)、ブロックチェーンクライアント120は、結果と新しいエンドースメントを保持して、ステップ402に戻る。そうでなければ(No)、ブロックチェーンノード110がトランザクション提案370の結果についてコンセンサスに達することができないので、ブロックチェーンクライアント120は、取得したすべてのエンドースメントを破棄し、ステップ402から再び開始する。ステップ401~408は、ブロックチェーンシステムの3フェーズコンセンサスにおけるエンドースメントフェーズを構成する。取得したエンドースメント(複数可)が十分であれば、ブロックチェーンクライアント120は次のステップに切り替える(ステップ402:Yes)。
ステップ410において、ブロックチェーンクライアント120は、提案者アイデンティティ311、関数およびパラメータ312、結果313、並びに、蓄積されたエンドースメント315(複数可)によりノーマルトランザクション310を構成し、トランザクションをオーダリングサービス130に送信する。ステップ411では、エラーが発生した場合(Yes),そのエラーをユーザに返す(ステップ415)。そうでなければ(No)、トランザクションを受信した後、オーダリングサービス130は、組織から受信したトランザクションの順序を決定し、それぞれが1つ以上のトランザクションを含むブロックを作成して、ブロックチェーンノード110に配信する。これにより、コンセンサスにおけるオーダリングフェーズが形成される。ブロックチェーンクライアント120は、ステップ412で、ブロックチェーンノード110のいずれかからバリデーションフェーズの結果を待つ。結果がエラーを示すか、またはトランザクションが無効であると考えられる場合(Yes)、ブロックチェーントクライアント120は、ステップ415でユーザにエラーを返す。そうでなければ(Noすなわち結果が成功)、トランザクションは有効であるとみなされ、ブロックチェーントクライアント120は、ステップ414でユーザに成功を返す。任意選択で、ブロックチェーントクライアント120は、所望の実装形態に応じて、ユーザが新しい値を知るために、スマートコントラクト240からの結果を返す。
図8は、実装例による、ブロックチェーンノード110内のエンドーシングロジック210における例示的なプロセスを示す。エンドーシングロジック210は、任意のブロックチェーンクライアント120からの新規トランザクション提案370を待つ(ステップ501)。そして、プロポーザアイデンティティ311を用いて、プロポーザが所属する組織を取得する(ステップ502)。組織情報330を参照して、エンドーシングロジック210は、その組織が読み取り専用であるか否かを確認する(ステップ503)。読み取り専用であれば(Yes)、エンドーシングロジック210は、ブロックチェーンクライアント120にエラーを返す(Step 511)。そうでない場合(No)、エンドーシングロジック210は、アイデンティティが正しいことをさらに確認する(ステップ504)。
チェックは、証明書がCA150によって発行されているかどうか、およびトランザクション提案370の署名が正しいかどうかを含む。チェックが失敗した場合(No)、エンドーシングロジック210は、ブロックチェーンクライアント120にエラーを返す(ステップ511)。そうでなければ(Yes)、エンドーシングロジック210は、トランザクション提案370の関数及びパラメータに従って、スマートコントラクト240を実行する(ステップ505)。
ステップ506において、スマートコントラクトが失敗した場合(Yes)、エンドーシングロジック210は、ブロックチェーンクライアント120にエラーを返す(ステップ511)。スマートコントラクトが結果を正常に返す場合(No)、エンドーシングロジック210は、結果が任意のプライベートデータを含むかどうかをチェックする(ステップ507)。プライベートデータが含まれている場合(Yes)、エンドーシングロジック210は、プライベートデータをテンポラリプライベートデータストア290に格納する(ステップ508)。エンドーシングロジック210は、結果からプライベートデータを削除し、スマートコントラクトがプライベートデータのハッシュ値を計算しなかった場合に備えて、代わりにプライベートデータのハッシュ値を追加する。最後に、エンドーシングロジック210は、結果と、結果のエンドースメントをブロックチェーンクライアント120に返す(ステップ510)。
図9は、実装例による、ブロックチェーンノード110内のコミットロジック220における例示的なプロセスを示す。コミットロジック220は、オーダリングサービス130からの新しいブロックを待機する(ステップ601)。そして、コミットロジック220は、ブロック内のトランザクションをトラバースし、トランザクションを1つずつコミットする。まず、コミットロジック220は、ブロック内にコミットされなかったトランザクションがあるかどうかを確認し(ステップ602)、あれば(Yes)、オーダリングサービス130が決定した、ブロック内で指定された順序でコミットされなかった最初のトランザクションを取得する(ステップ603)。次に、コミットロジック220は、図10で後述するトランザクションのバリデーションロジック230を実行する(ステップ604)。結果が有効であれば(ステップ605:Yes)、コミットロジック220は、ステートデータベース270を更新して、トランザクションの結果を適用する(ステップ606)。
プライベートデータがトランザクションに関与し、組織がプライベートデータの許可342に従ってプライベートデータを読み取ることが許可されている場合(ステップ607:Yes)、コミットロジック220は、テンポラリプライベートデータストア290から、またはプライベートデータを有する他のブロックチェーンノード110から、プライベートデータの実際の値を取得する(ステップ608)。後者の実装形態を実現する方法としては、ゴシップなどのピアツーピアの通信プロトコルがある。
コミットロジック220は、プライベートデータの値を取得した後、それらに従ってプライベートデータストア280を更新する。検証結果が無効である場合(ステップ605:No)、コミットロジック220は、ステートデータベース270およびプライベートデータストア280の更新をスキップする。最後に、コミットロジック220は、トランザクションの有効性を含むトランザクションに対するコミットの結果を、リスニングしているものがあればブロックチェーンクライアント120に発する(ステップ609)。ステップ609は、通信を最適化するために、各トランザクションに対して、各ブロックに対して、トランザクションに対する結果を集約して実行してもよいし、複数のブロックに対して実行してもよい。ステップ602に戻り、すべてのトランザクションが消費されるまで繰り返される。コミットロジックは、各ブロックチェーンノード110に分散して実行される。それらは、台帳の中に同じブロックを持ち、同じロジックを持っているので、すべてのブロックチェーンノード110のコミットロジック220が同じ結果を得ることが保証される。
図10は、実装例による、ブロックチェーンノード110におけるバリデーションロジック230における例示的なプロセスを示す。バリデーションロジック230は、コミットするトランザクションがあるときにコミットロジック220から呼び出される。まず、バリデーションロジック230は、トランザクションを取得し(ステップ701)、プロポーザアイデンティティ311から組織を取得する(ステップ702)。次に、バリデーションロジック230は、一連のチェックを実行する(ステップ703)。バリデーションロジック230は、組織が読み取り専用であるかどうかをチェックする。通常の手順では、バリデーションロジック210が読み取り専用組織にトランザクションの提案を許可しないため、このようなことは起こりえないが、組織の権限を読み取り専用に変更した直後など、一部のコーナーケースではこのようなことが起こりうる。このチェックにより、読み取り専用組織が提案したトランザクションが、たとえコミットされることになっても、決して有効にならないようにする。次に(ステップ704)、バリデーションロジック230は、ステップ504と同様に、プロポーザアイデンティティ311が有効であるか否かをチェックする。次に、バリデーションロジック230は、そのトランザクションが、以前にコミットされた他のトランザクションとコンフリクトしていないかどうかをチェックする(ステップ705)。例えば、バリデーション時の最新の値と、結果313に含まれるエンドースメント時に読み取られた値とを比較することができる。それらが異なる場合、同じデータを含む他のトランザクションが存在し、そのトランザクションがエンドースされた後、そのトランザクションがコミットされようとしている前にコミットされたことを意味し、したがって、そのトランザクションは有効であるとみなされない。次に、バリデーションロジック230は、エンドースメントが有効であるか否かをチェックする(ステップ706)。このチェックには、各エンドースメントにおける署名が、結果313に対して生成されたものであり、かつ、そのアイデンティティが有効であるか否かをチェックすることが含まれる。最後に、バリデーションロジック230は、エンドースメントがエンドースメントポリシー350を満たすかどうかをチェックする(ステップ707)。トランザクションがすべてのチェックに合格した場合、バリデーションロジック230は、コミットロジック220に「有効」を返す(ステップ710)。そうでなければ、バリデーションロジック230はコミットロジック220に「無効」を返す(ステップ711)。
上述の第1の実装例では、ブロックチェーンシステムは、完全な許可を有する組織と読み取り専用組織との2種類の組織を有することができる。エンドーシングロジックおよびバリデーションロジックは、読み取り専用組織内の任意のエンティティによって提案された任意のトランザクションが拒否されるか、または無効とマークされることを保証する。一方で、読み取り専用組織のブロックチェーンノードは、トランザクションをエンドースすることができる。これらの読み取り専用組織がプライベートデータの読み取りを許可されると、プライベートデータを含むトランザクションに対して複数のエンドースメントを得る機会が増えるため、プライベートデータに関するSPoTの問題が緩和される。読み取り専用組織がトランザクションを実行できないという制限により、他の組織は中立的な第3者としてそれらを信頼するようになり、エンドースメントを得るためにプライベートデータを公開する機会が増える。
この例は、読み取り専用組織があらゆるプライベートデータを読み取ることを常に許可するように、システムを拡張することができる。これは、すべてのプライベートデータの許可に「読み取り専用組織による読み取り」を暗黙的に追加することに相当する。
第2の実装例において、図11は、監査者を有するブロックチェーンベースのシステムを含む別の例示的システムを示す。構成要素は、第1の実装例の図1のものと同様に動作する。この例では、1つの読み取り専用組織がシステムの監査者として機能する。したがって、読み取り専用組織101は、ネットワーク140または読み取り専用組織101の内部の他のネットワークによって1つまたは複数のブロックチェーンノード110と接続される1つまたは複数の監査ノード1110を有する。監査ノード1110は、監査目的のために、データに対して様々なチェックを行う。監査ノード1110は、システムで共有されているデータの情報、すなわちブロックやトランザクションをブロックチェーンノード110から取得する。監査ノード1110は、物理的なコンピュータ、仮想マシンまたはコンテナであってもよいし、ブロックチェーンノード110の1つと同じマシンであってもよい。監査ノード1110を除く図11の構成要素の実装例および実行フローについては、第1の実装例で開示したものと同一であるため、ここでは説明を省略する。ただし、ブロックチェーンノード110には、監査ノード1110が台帳やプライベートデータを参照できる機能を追加する必要がある。一つの実装形態は、監査ノード1110によってアクセス可能な関数、API(Application Programming Interface)を公開し、監査ノード1110からの要求に応じて、ブロック、トランザクション、プライベートデータを返すことである。他の実装形態としては、ブロックチェーンノード110、すなわちコミットロジック220が、ブロック、トランザクション、およびプライベートデータをコミットした後に監査ノード1110に転送するものがある。他の実装形態としては、監査ノード1110が、オーダリングサービス130からブロックを直接受け取り、ブロックチェーンノード110の1つからプライベートデータを受け取るものがある。
図12は、実装例による、監査ノード1110の例示的なプロセスを示す。まず、監査ノード1110は、最後の段落で説明されるいくつかの例の手段によって、新しいブロックおよびブロック内のトランザクションに関連するプライベートデータを待つ(ステップ1201)。次に、監査ノード1110は、ブロックの整合性をチェックする(ステップ1202)。このチェックには、前のブロックと現在のブロックの実際のデータに対するハッシュ値301と302のバリデーションが含まれる。次に、監査ノード1110は、ブロック内の各未処理トランザクションに対して(ステップ1203:Yes)、トランザクションの保存された順序でチェックを繰り返す(ステップ1204)。監査ノード1110は、トランザクションの整合性をチェックし(ステップ1205)、もしあればプライベートデータをチェックする(ステップ1206)。トランザクションの整合性には、プロポーザアイデンティティ311およびエンドースメント315の署名が含まれ、プライベートデータの整合性には、実際のプライベートデータと一致する結果313のハッシュが含まれる。また、監査ノード1110は、追加のチェック(ステップ1207)を行ってもよく、例えば、ある口座の残高が他の口座と一致しているかどうかをチェックしたり、マネーロンダリングなどの疑わしい行為がないかをチェックしたりなど、所望の実装形態に応じたチェックを行うことができる。チェックの結果、何らかのエラーが見つかった場合(ステップ1208)、監査ノード1110は、エラーの重大性に応じて警告を発してもよい(ステップ1209)。その後、監査ノード1110は、結果をレポートに蓄積する(ステップ1210)。レポートは、トランザクションごと、ブロックごと、または一定期間ごとに生成されてもよい。
この第2の実装例では、信頼できる第三者機関として、読み取り専用組織は、ブロックチェーンベースのシステムを監査することができる。読み取り専用組織は、ブロックチェーンの整合性を検証することに加えて、検証された不変性に基づいて、規制や法律などで推奨または義務付けられた様々なチェックを行うことができる。これにより、監査をより強固で効率的なものにすることに貢献する。
第3の実装例において、図13は、テストプラットフォームを備えたブロックチェーンベースのシステムを含む別の例示的システムを示す。構成要素は、第1の実装例における図1のものと同様に動作する。組織100-1および100-2、読み取り専用組織101およびオーダリングサービス130、ならびに各組織のブロックチェーンノード110、ブロックチェーンクライアント120およびCA150を含むブロックチェーンネットワークは、以下では「本番ブロックチェーンネットワーク」または「本番環境」で呼ばれる。
この例では、1つの読み取り専用組織が、システムのテスト環境を規定する。開発中および展開前にブロックチェーンベースのシステムをテストするためには、実際のシステムと同じデータを使用することが望ましい場合がある。既存システムのアップデートにおいては、より実用的で効果的なテストを実現するために、既存システムの台帳がテスト環境で使用するデータの有力な候補となる。しかし、公開鍵や秘密鍵などの暗号材料は、テスト環境での署名が本番環境と同様の効果や影響を与える可能性があるため、テスト環境では利用できないし、利用すべきではない。さらに、プライベートデータも必要となるが、台帳には含まれていない。この例では、読み取り専用組織が、既存のブロックチェーンシステムから抽出したデータに、暗号材料や関連情報に必要な変換を施し、全組織のプライベートデータを加えたものをテスト環境に提供することができる。
テスト環境マネージャ1310は、ブロック、トランザクション、およびプライベートデータを適切に変換し、変換されたデータを使用して、テスト目的のブロックチェーンネットワークを生成および破壊する。テスト環境マネージャ1310は、物理的なコンピュータ、仮想マシン、コンテナなどであり、そのハードウェアを他のコンポーネントと共有することができる。テスト環境マネージャ1310は、ネットワーク140または読み取り専用組織101の内部の他のネットワークを使用して、ブロックチェーンノード110と通信することができる。テスト環境マネージャ1310は、第2の実装例で示した方法で、ブロックとプライベートデータを取得する。テストブロックチェーンネットワーク1320は、テスト環境マネージャ1310によって生成および構成されたブロックチェーンベースのシステムである。それらは、本番環境にできるだけ近い環境で新しいソフトウェアをテストすることを目的としているため、図1と同じまたは類似した構造を有している。大きな違いは、テストブロックチェーンネットワークのすべての組織は、読み取り専用組織101が行うテストのためだけに構築されているため、読み取り専用組織101によって管理されていることである。テストブロックチェーンネットワークの各組織におけるノードの数は、テストケースやテストに利用可能なリソースに応じて、図13の組織におけるノードの数とは異なっていてもよい。テストマネージャ1330は、テストを管理するものであり、テストを行う前にテスト環境マネージャ1310に新しいテストネットワークの作成を指示し、テストブロックチェーンネットワーク1320でテストを行う。テストマネージャ1330は、物理的なコンピュータ、仮想マシン、コンテナなどであり、そのハードウェアを他のコンポーネントと共有することができる。テストマネージャ1330のソフトウェアは、システムのソースコードのリポジトリに変更が加えられたときにテストをトリガーする、CI(Continuous Integration)用の自動テストツールの一部とすることができる。
図14は、テスト環境マネージャ1310に関する実装例を示す。テスト環境マネージャ1310は、変換ロジック1410とテストネットワークランチャー1420との2つのロジックを有する。変換ロジック1410は、読み取り専用組織101のブロックチェーンノード110、オーダリングサービス130から、いずれかのブロックとプライベートデータを受け取り、ブロックとプライベートデータを、テストブロックチェーンネットワーク1320で使用するのに適したものに変換する。変換ロジック1410は、変換されたデータを、変換台帳1430、変換ステートデータベース1440、および変換プライベートデータストア1450に蓄積し、それらは後にテストネットワークランチャー1420によって使用され、新しいブロックチェーンネットワーク1320を生成する。テストネットワークランチャー1420は、要求に応じて新しいブロックチェーンネットワーク1320を生成する。変換されたデータを使用してテストブロックチェーンネットワーク1320を初期化し、本番のブロックチェーンネットワークと同じ状態で開始することで、テストマネージャ1330は本番データを使用してより現実的なテストを行うことができる。変換については、本番環境の組織のCA150の秘密鍵は、読み取り専用組織101では利用できないため、自分のCA150を使って証明書や署名を生成する。変換台帳1430、変換ステートデータベース1440、変換プライベートデータストア1450は、それぞれ図2の台帳250、ステートデータベース270、プライベートデータストア280に対応する。これらのコンポーネントの構造は同一であるが、変換されたデータを保存することを意図している。本番環境の組織のモックアップを作成するために、テスト環境マネージャ1310は、複数のCA150および変換されたプライベートデータストア1450を、それぞれがモックアップの組織に対応するように維持する。
図15は、実装例による、変換ロジック1410の例示的なプロセスを示す。最初に、変換ロジック1410は新しいブロックおよびブロック内のトランザクションに関連するプライベートデータを待つ(ステップ1501)。変換ロジック1410は、ブロック内の未処理のトランザクションに対して、以下の変換を繰り返し行う(ステップ1503、1504)。トランザクションがノーマルトランザクションである場合(ステップ1505:No)、変換ロジック1410は、プロポーザアイデンティティ311とエンドースメント315を変換する(ステップ1506)。この変換は、アイデンティティおよびエンドースメントの証明書を、テスト環境マネージャ1310内のCA150が発行したものに置き換え、署名を、置き換えられた証明書に対応する秘密鍵によって生成されたものに置き換えることを含む。任意選択で、変換ロジック1410は、テストに同じデータを使用することが懸念される場合に、トランザクション内のデータの匿名化などの追加の変換(ステップ1507)を行うことができる。ステップ1507で結果313または任意のデータが変換された場合、署名を再度計算することができる。そして、トランザクションが有効であれば、ステップ606で行ったように、トランザクションの結果を適用するために、変換ステートデータベース1440を更新する(ステップ1508)。トランザクションが有効であり、任意のプライベートデータを含む場合には、変換プライベートデータストア1450を適切に更新する(ステップ1509)。
トランザクションがコンフィグトランザクションである場合(ステップ1505:Yes)、変換ロジック1410は、トランザクション内の組織情報330内の組織に対するトラストルート332を変換する(ステップ1511)。テストブロックチェーンネットワーク1320では異なるCAが使用され、トラストルートの証明書は本番環境のトラストルート332の証明書とは異なるはずなので、トラストルート332はテスト環境マネージャ1310のCA150の証明書に置き換えておく。次に、変換ロジック1410は、ステップ1506のように、プロポーザアイデンティティとエンドースメントを変換する(ステップ1512)。
ブロック内のすべてのトランザクションが変換されると(ステップ1503:No)、変換ロジック1410は、ブロックのハッシュ値を計算し、ブロックのハッシュ値302を新しい値に置き換える。また、ステップ1520では、前のブロックのハッシュ値301を変換台帳1430の前のブロックのハッシュ値に置き換える。最後に、変換ロジック1410は、変換されたブロックを変換台帳1430に追加する(ステップ1521)。
図16は、実装例による、テストネットワークランチャー1420の例示的なプロセスを示す。テストマネージャ1330からの要求に応じて、テストネットワークランチャー1420は、すべての組織および読み取り専用組織に対して新しいブロックチェーンノード110を作成する(ステップ1601)。ノードを空の台帳とデータベースで開始する代わりに、変換台帳1430と変換ステートデータベース1440を各ブロックチェーンノードにコピーする(ステップ1602)。効率化のために、変換台帳1430と変換ステートデータベース1440が保存されている永続的なデバイスのいくつかの機能、例えば、スナップショットやゼロコピークローニングなどを使用することができる。次に、変換プライベートデータストア1450を、適切な組織のブロックチェーンノードにコピーする(ステップ1603)。最後に、テストネットワークランチャー1420は、ブロックチェーンノード110を起動し(ステップ1604)、テストマネージャ1330に情報を渡して、新しく作成されたブロックチェーンネットワークでテストを実行できるようにする。
図17は、本明細書に記載されているようなブロックチェーンシステムにおける任意のノード、テスト環境マネージャ、組織、注文サービスなどを容易にする装置など、いくつかの実装例で使用するのに適した例示的なコンピュータデバイスを備えた例示的なコンピューティング環境を示している。コンピューティング環境1700のコンピュータデバイス1705は、1つまたは複数の処理ユニット、コア、またはプロセッサ1710、メモリ1715(例えば、RAM、ROM、および/または同様のもの)、内部ストレージ1720(例えば、磁気、光学、ソリッドステートストレージ、および/または有機)、および/またはIOインタフェース1725を含むことができ、これらのうちのいずれかは、情報を通信するための通信機構またはバス1730上に結合されるか、またはコンピュータデバイス1705に組み込まれることができる。IOインタフェース1725はまた、所望の実装に応じて、カメラから画像を受信したり、プロジェクタまたはディスプレイに画像を提供したりするように構成される。
コンピュータデバイス1705は、入力/ユーザインタフェース1735および出力デバイス/インタフェース1740に通信可能に結合され得る。入力/ユーザインタフェース1735および出力デバイス/インタフェース1740のいずれか一方または両方は、有線または無線のインタフェースあってもよく、着脱可能であってもよい。入力/ユーザインタフェース1735は、入力を提供するために使用することができる、物理的または仮想的な任意のデバイス、コンポーネント、センサ、またはインタフェース(例えば、ボタン、タッチスクリーンインタフェース、キーボード、ポインティング/カーソルコントロール、マイク、カメラ、点字、モーションセンサ、光学リーダ、および/または同様のもの)を含むことができる。出力デバイス/インタフェース1740は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、点字などを含んでもよい。いくつかの実装例では、入力/ユーザインタフェース1735および出力デバイス/インタフェース1740は、コンピュータデバイス1705と共に埋め込まれるか、またはコンピュータデバイス1705に物理的に結合され得る。他の実装例では、他のコンピュータデバイスは、コンピュータデバイス1705のための入力/ユーザインタフェース1735および出力デバイス/インタフェース1740の機能として機能するか、またはその機能を提供することができる。
コンピュータデバイス1705の例は、高度なモバイルデバイス(例えば、スマートフォン、車両および他の機械に搭載されたデバイス、人間および動物によって運ばれたデバイスなど)、モバイルデバイス(例えば、タブレット、ノートブック、ラップトップ、パーソナルコンピュータ、ポータブルテレビ、ラジオなど)、およびモバイル用に設計されていないデバイス(例えば、デスクトップコンピュータ、他のコンピュータ、情報キオスク、1つまたは複数のプロセッサがそこに埋め込まれたおよび/またはそれに結合されたテレビ、ラジオなど)を含み得るが、これらに限定されない。
コンピュータデバイス1705は、同じ構成または異なる構成の1つまたは複数のコンピュータデバイスを含む、任意の数のネットワーク化されたコンポーネント、デバイス、およびシステムと通信するために、外部ストレージ1745およびネットワーク1750に(例えば、IOインタフェース1725を介して)通信可能に結合することができる。コンピュータデバイス1705または接続された任意のコンピュータデバイスは、サーバ、クライアント、シンサーバ、一般機械、特別目的機械、または別のラベルとして機能し、サービスを提供し、または参照することができる。
IOインタフェース1725は、コンピューティング環境1700の少なくともすべての接続されたコンポーネント、デバイス、およびネットワークとの間で情報を通信するための、任意の通信またはIOプロトコルまたは標準(例えば、イーサネット、802.11x、ユニバーサルシステムバス、WiMax、モデム、セルラーネットワークプロトコルなど)を使用した有線および/または無線インタフェースを含むことができるが、これに限定されない。ネットワーク1750は、任意のネットワークまたはネットワークの組み合わせ(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、電話ネットワーク、セルラーネットワーク、衛星ネットワークなど)とすることができる。
コンピュータデバイス1705は、一過性の媒体および非一過性の媒体を含む、コンピュータで使用可能な媒体またはコンピュータで読み取り可能な媒体を使用および/または通信することができる。一過性の媒体は、伝送媒体(例えば、金属ケーブル、光ファイバー)、信号、搬送波などを含む。非一過性の媒体には、磁気媒体(ディスク、テープなど)、光学媒体(CD ROM、デジタルビデオディスク、ブルーレイディスクなど)、固体媒体(RAM、ROM、フラッシュメモリ、ソリッドステートストレージなど)、その他の不揮発性のストレージまたはメモリが含まれる。
コンピュータデバイス1705は、いくつかの例示的なコンピューティング環境において、技術、方法、アプリケーション、プロセス、またはコンピュータ実行可能な命令を実装するために使用することができる。コンピュータ実行可能な命令は、一過性の媒体から取得することができ、非一過性の媒体に格納され、そこから取得することができる。実行可能な命令は、任意のプログラミング言語、スクリプト言語、および機械言語(C、C++、C#、Java、Visual Basic、Python、Perl、JavaScriptなど)の1つまたは複数に由来することができる。
プロセッサ(複数可)1710は、任意のオペレーティングシステム(OS)(図示せず)の下で、ネイティブ環境または仮想環境で実行することができる。論理ユニット1760、アプリケーション・プログラミング・インタフェース(API)ユニット1765、入力ユニット1770、出力ユニット1775、および異なるユニットが相互に、OSと、および他のアプリケーション(図示せず)と通信するためのユニット間通信機構1795を含む、1つまたは複数のアプリケーションを展開することができる。説明されたユニットおよび要素は、デザイン、機能、構成、または実装において変化することができ、提供される説明に限定されない。プロセッサ(複数可)1710は、中央処理装置(CPU)などのハードウェアプロセッサの形態であっても、ハードウェアユニットとソフトウェアユニットの組み合わせであってもよい。
いくつかの実装例では、情報または実行命令がAPIユニット1765によって受信されると、それは1つまたは複数の他のユニット(例えば、論理ユニット1760、入力ユニット1770、出力ユニット1775)に伝達されてもよい。いくつかの例では、論理ユニット1760は、上述のいくつかの例示的な実装例において、ユニット間の情報の流れを制御し、APIユニット1765、入力ユニット1770、出力ユニット1775によって提供されるサービスを指示するように構成されてもよい。例えば、1つまたは複数のプロセスまたは実装の流れは、論理ユニット1760単独で、またはAPIユニット1765と連携して制御されてもよい。入力ユニット1770は、例示的な実装で説明された計算のための入力を得るように構成されてもよく、出力ユニット1775は、例示的な実装で説明された計算に基づいて出力を提供するように構成されてもよい。
ブロックチェーンシステムは、複数のノードを介してスマートコントラクトトランザクションを容易にするように構成される。第1のノードに関する例では、(例えば、ブロックチェーン内の複数のノードの任意のノード)のプロセッサ(複数可)1710は、複数のノードの第2のノードからスマートコントラクトトランザクションの提案を受信することを契機に、第2のノードに関連付けられたブロックチェーンシステム内の組織を特定し、組織が提案によって示されるスマートコントラクトトランザクションを実行できるかどうかを判定し、組織が提案によって示されるスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、第2のノードにエラーを返し、組織がプロポーザルによって示されるスマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、図8に示されるように、スマートコントラクトトランザクションを実行する。
第1のノードの一例では、プロセッサ(複数可)1710は、図4および提案者アイデンティティ311に例示されているように、組織が、組織が読み取り専用組織であるために提案が示すスマートコントラクトトランザクションを実行する権限を有していないことを示していると判定することと、組織が、組織が読み取り専用組織でないために提案が示すスマートコントラクトトランザクションを実行する権限を有していることを示していると判定することによって、組織が、提案が示すスマートコントラクトトランザクションを実行できるかどうかを判定するように構成されている。
第1のノードの例では、プロセッサ(複数可)1710は、第2のノード(例えば、第1のノードに結合された別のノード)からスマートコントラクトトランザクションをコミットおよび検証するための要求を受信することに起因して、第2のノードに関連付けられたブロックチェーンシステム内の組織を特定し、組織が提案によって示されたスマートコントラクトトランザクションを実行できるかどうかを決定し、組織が提案によって示されたスマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、第2のノードにエラーを返し、組織が提案によって示されたスマートコントラクトトランザクションを実行する権限を有することを示す判定に対して、図10に例示されているように、オーダリングサービスによって提供されるトランザクションの順序を実行するように構成される。
オーダリングサービス130のための例では、プロセッサ(複数可)1710は、スマートコントラクトトランザクションをコミットするための他の要求とともに第2のノードからスマートコントラクトトランザクションをコミットするための要求を実行するための順序を決定し、例として図1に示されるように、第1のノードに順序を提供するように構成され得る。
監査ノード1110などの第3のノードの一例では、監査プロセスを実行するように構成されたプロセッサ(複数可)1710を備え、監査プロセスは、図12に示されるように、スマートコントラクトトランザクションおよびスマートコントラクトトランザクションに関連付けられたプライベートデータを受信することと、スマートコントラクトトランザクションおよびプライベートデータに対して整合性チェックを実行することとを含む。
読み取り専用組織101に属する装置の一例では、プロセッサ1710(複数可)は、テスト環境の開始を受信するために、スマートコントラクトトランザクション内の提案を開始したブロックチェーンシステム内の組織のアイデンティティおよびエンドースメントを、テスト環境を管理するテスト環境マネージャによって発行されたアイデンティティおよびエンドースメントに置き換え、システムの構成の変更を示すスマートコントラクトトランザクションのために、図15に示されるように、スマートコントラクトトランザクション内の組織情報によって示されるブロックチェーンシステム内の組織のトラストルートを変換するように構成されている。
読み取り専用組織101に属するそのような装置の一例では、プロセッサ(複数可)1710は、テスト環境上で新しいブロックチェーンネットワークを起動するように構成され、この起動は、テストネットワークランチャーによって容易にされ、テスト環境マネージャによって変換された台帳およびテスト環境マネージャによって変換されたステートデータベースを、新しいブロックチェーンネットワークの各ブロックチェーンノードにコピーすることと、図16に示されるように、スマートコントラクトトランザクションに関連するブロックチェーンシステム内の組織に対応するテスト環境マネージャによって変換されたプライベートデータを、組織に対応する新しいブロックチェーンネットワーク内の各ブロックチェーンノードにコピーすることと、を含む。
詳細な説明の一部は、コンピュータ内の操作のアルゴリズムおよび記号的表現の観点から提示されている。これらのアルゴリズムの記述および記号的な表現は、データ処理技術の当業者が、その技術革新の本質を当業者に伝えるために使用する手段である。アルゴリズムとは、所望の最終状態や結果に至るまでの一連の定義されたステップのことである。実装例では、実行されるステップは、有形の結果を得るために有形の量を物理的に操作する必要がある。
特に明記しない限り、議論から明らかなように、本明細書を通じて、「処理」、「コンピューティング」、「計算」、「決定」、「表示」などの用語を利用した議論は、コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)量として表されるデータを、コンピュータシステムのメモリまたはレジスタまたは他の情報記憶、送信、または表示デバイス内の物理的量として同様に表される他のデータに操作および変換する、コンピュータシステムまたは他の情報処理デバイスの動作およびプロセスを含むことができることが理解される。
実装例は、本明細書の操作を実行するための装置に関するものでもある。この装置は、必要な目的のために特別に構築されていてもよいし、1つまたは複数のコンピュータプログラムによって選択的に起動または再構成される1つまたは複数の汎用コンピュータを含んでいてもよい。このようなコンピュータプログラムは、コンピュータ読取可能な記憶媒体やコンピュータ読取可能な信号媒体などのコンピュータ読取可能な媒体に格納されていてもよい。コンピュータ読み取り可能な記憶媒体は、光ディスク、磁気ディスク、リードオンリーメモリ、ランダムアクセスメモリ、ソリッドステートデバイスおよびドライブなどの有形媒体、または電子情報を格納するのに適した他のタイプの有形または非一時的な媒体を含むことができるが、これらに限定されるものではない。コンピュータ読み取り可能な信号媒体は、搬送波などの媒体を含んでもよい。本明細書に示されたアルゴリズムおよび表示は、特定のコンピュータまたは他の装置に本質的に関係しない。コンピュータプログラムは、所望の実装の動作を実行する命令を含む純粋なソフトウェアの実装を含むことができる。
本明細書の実施例に従ったプログラムおよびモジュールを用いて様々な汎用システムを使用することができるが、所望の方法ステップを実行するために、より専門的な装置を構築することが便利であることが分かるかもしれない。さらに、本実施例は、任意の特定のプログラミング言語を参照して説明されていない。様々なプログラミング言語が、本明細書に記載された例示の実装の教示を実施するために使用され得ることが理解されるであろう。プログラミング言語の命令は、1つまたは複数の処理装置、例えば、中央処理装置(CPU)、プロセッサ、またはコントローラによって実行されてもよい。
当技術分野で知られているように、上述の操作は、ハードウェア、ソフトウェア、またはソフトウェアとハードウェアの何らかの組み合わせによって実行することができる。実装例の様々な態様は、回路および論理デバイス(ハードウェア)を使用して実装されてもよいが、他の側面は、機械読み取り可能な媒体に格納された命令(ソフトウェア)を使用して実装されてもよく、これらの命令は、プロセッサによって実行された場合、プロセッサに、本願発明の実装形態を実行する方法を実行させるであろう。さらに、本願のいくつかの実装例は、ハードウェアのみで実行されてもよいが、他の実装例は、ソフトウェアのみで実行されてもよい。さらに、説明した様々な機能は、単一のユニットで実行することができ、あるいは、任意の数の方法で多数のコンポーネントに分散させることができる。ソフトウェアで実行する場合、方法は、コンピュータ可読媒体に格納された命令に基づいて、汎用コンピュータなどのプロセッサによって実行することができる。必要に応じて、命令は圧縮および/または暗号化された形式で媒体に保存することができる。
さらに、本願の他の実装例は、本願明細書の検討および本願の教示の実践から当業者に明らかになるであろう。記載された実装例の様々な形態および/またはコンポーネントは、単独でまたは任意の組み合わせで使用することができる。本願の真の範囲と主旨は、以下の特許請求の範囲によって示されており、本明細書および実装例は、例示としてのみ考慮されることが意図されている。

Claims (15)

  1. スマートコントラクトトランザクションを容易にするように構成された、複数のノードを含むブロックチェーンシステムのための方法であって、
    前記複数のノードのうちの第1のノードにおいて、前記複数のノードのうちの第2のノードから前記スマートコントラクトトランザクションの提案を受信することを契機に、
    前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定することと、
    前記第1のノードにおいて、前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定することと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返すことと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、
    を含み、
    前記複数のノードのうちの、前記スマートコントラクトトランザクションを実行する権限を有しておらず、且つ、他の組織のプライベートデータにアクセスする資格を持つように構成された読み取り専用組織に属する特定のノードにおいて、前記プライベートデータを含む前記スマートコントラクトトランザクションのエンドースを行う、
    方法。
  2. 請求項1に記載の方法において、
    前記第1のノードにおいて、前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定することにおいて、
    前記組織が前記読み取り専用組織であるために前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定を行うことと、
    前記組織が前記読み取り専用組織ではないために前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行する権限を有することを示す判定を行うことと、
    を含む、
    方法。
  3. 請求項1に記載の方法において、
    前記第1のノードにおいて、前記第2のノードから前記スマートコントラクトトランザクションのコミットおよびバリデーティングの要求を受信したことを契機に、
    前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定することと、
    前記第1のノードにおいて、前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定することと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返すことと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、オーダリングサービスによって提供されるトランザクションの順序を実行することと、
    を含む、
    方法。
  4. 請求項3に記載の方法において、
    前記ブロックチェーンシステムに発行されたトランザクションのためのオーダリングサービスを実行することを更に含み、
    前記オーダリングサービスは、
    記第2のノードから前記スマートコントラクトトランザクションをコミットするための要求を実行するための前記トランザクションの順序を決定することと、
    前記トランザクションの順序を前記第1のノードに提供することと、
    を含む、
    方法。
  5. 請求項1に記載の方法であって、
    前記複数のノードのうちの第3のノードで監査プロセスを実行することをさらに含み、
    前記監査プロセスは、
    前記第3のノードで、前記スマートコントラクトトランザクションおよび前記スマートコントラクトトランザクションに関連するプライベートデータを受信することと、
    前記スマートコントラクトトランザクション及び前記プライベートデータの整合性チェックを実行することと、
    を含む、
    方法。
  6. スマートコントラクトトランザクションを容易にするように構成された、複数のノードを含むブロックチェーンシステムのための方法であって、
    前記複数のノードのうちの第1のノードにおいて、前記複数のノードのうちの第2のノードから前記スマートコントラクトトランザクションの提案を受信することを契機に、
    前記第1のノードにおいて、前記第2のノードに関連付けられたブロックチェーンシステム内の組織を特定することと、
    前記第1のノードにおいて、前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定することと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返すことと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、
    を含み、
    テスト環境の開始のために、
    前記スマートコントラクトトランザクションの提案を開始した前記ブロックチェーンシステム内の組織のアイデンティティ及びエンドースメントを、前記テスト環境を管理するテスト環境マネージャが発行したアイデンティティ及びエンドースメントに置き換えることと、
    前記ブロックチェーンシステムの構成の変更を示す前記スマートコントラクトトランザクションのために、前記スマートコントラクトトランザクションの組織情報によって示される前記ブロックチェーンシステムの前記組織のトラストルートを変換することと、
    を含む、
    方法。
  7. 請求項6に記載の方法において、
    前記テスト環境上で新しいブロックチェーンネットワークを起動することをさらに含み、
    前記起動は、テストネットワークランチャーによって容易に行われ、
    前記起動は、
    前記テスト環境マネージャによって変換された台帳と、前記テスト環境マネージャによって変換されたステートデータベースとを、新しいブロックチェーンネットワークの各ブロックチェーンノードにコピーすることと、
    前記スマートコントラクトトランザクションに関連付けられた前記ブロックチェーンシステムの前記組織に対応する前記テスト環境マネージャによって変換されたプライベートデータを、前記組織に対応する前記新しいブロックチェーンネットワークの各ブロックチェーンノードにコピーすることと、
    を含む、
    方法。
  8. スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムであって、
    前記ブロックチェーンシステムは、複数のノードを含み、
    前記複数のノードのうちの第1のノードは、プロセッサを含み、
    前記第1のノードの前記プロセッサは、前記第1のノードが、前記複数のノードの第2のノードから前記スマートコントラクトトランザクションの提案を受信することを契機に、
    前記第2のノードに関連するブロックチェーンシステム内の組織を特定し、
    前記組織が前記提案で示された前記スマートコントラクトトランザクションを実行できるか否かを判定し、
    前記組織が前記提案で示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返し、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行する
    ように構成さ
    前記複数のノードのうちの、前記スマートコントラクトトランザクションを実行する権限を有しておらず、且つ、他の組織のプライベートデータにアクセスする資格を持つように構成された読み取り専用組織に属する特定のノードは、プロセッサを含み、
    前記特定のノードの前記プロセッサは、前記プライベートデータを含む前記スマートコントラクトトランザクションのエンドースを行う、
    ように構成された、
    ブロックチェーンシステム。
  9. 請求項8に記載のブロックチェーンシステムにおいて、
    前記第1のノードの前記プロセッサは、
    前記組織が前記読み取り専用組織であるために前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行する権限を有していないことを示すと判定することと、前記組織が読み取り専用組織ではないために前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行する権限を有することを示すと判定することにより、
    前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定する、
    ように構成された、
    ブロックチェーンシステム。
  10. 請求項8に記載のブロックチェーンシステムにおいて、
    前記第1のノードの前記プロセッサは、前記第2のノードから前記スマートコントラクトトランザクションのコミットおよびバリデーティングの要求を受信することを契機に、
    前記第2のノードに関連付けられたブロックチェーンシステム内の前記組織を特定し、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行できるか否かを判定し、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返し、
    前記組織が、前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していると判定した場合、オーダリングサービスよって提供されるトランザクションの順序を実行する、
    ように構成された、
    ブロックチェーンシステム。
  11. 請求項10に記載に記載のブロックチェーンシステムにおいて、
    他のプロセッサを含む前記オーダリングサービスを更に備え、
    前記他のプロセッサは前記第2のノードから前記スマートコントラクトトランザクションをコミットするための要求を実行するための前記トランザクションの順序を決定し、決定した前記トランザクションの順序を前記第1のノードに提供するように構成された、
    ブロックチェーンシステム。
  12. 請求項8に記載のブロックチェーンシステムにおいて、
    前記複数のノードのうちの第3のノードは、他のプロセッサを含み、
    前記他のプロセッサは、
    前記スマートコントラクトトランザクションと、前記スマートコントラクトトランザクションに関連するプライベートデータを受信することと、
    前記スマートコントラクトトランザクションと前記プライベートデータの整合性チェックを実行することと、を含む監査プロセスを、
    実行するように構成された、
    ブロックチェーンシステム。
  13. スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムであって、
    前記ブロックチェーンシステムは、複数のノードを含み、
    前記複数のノードのうちの第1のノードは、プロセッサを含み、
    前記プロセッサは、前記第1のノードが、前記複数のノードの第2のノードから前記スマートコントラクトトランザクションの提案を受信することを契機に、
    前記第2のノードに関連するブロックチェーンシステム内の組織を特定し、
    前記組織が前記提案で示された前記スマートコントラクトトランザクションを実行できるか否かを判定し、
    前記組織が前記提案で示された前記スマートコントラクトトランザクションを実行する権限を有していないことを示す判定に対して、前記第2のノードにエラーを返し、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行する
    ように構成され、
    み取り専用組織に属する装置は、他のプロセッサを備え、
    前記他のプロセッサは、
    テスト環境の開始を受信するために、
    前記スマートコントラクトトランザクションの前記提案を開始したブロックチェーンシステム内の組織のアイデンティティ及びエンドースメントを、前記テスト環境を管理するテスト環境マネージャが発行したアイデンティティ及びエンドースメントに置き換え、
    システムの構成の変更を示す前記スマートコントラクトトランザクションに対して、前記スマートコントラクトトランザクションの組織情報によって示されるブロックチェーンシステム内の組織のトラストルートを変換する、
    ように構成された、
    ブロックチェーンシステム。
  14. 請求項13に記載のブロックチェーンシステムにおいて、
    前記他のプロセッサは、
    テスト環境上で新しいブロックチェーンネットワークを起動するように構成され、前記起動はテストネットワークランチャーによって容易にされ
    前記起動は、
    前記テスト環境マネージャによって変換された台帳と、前記テスト環境マネージャによって変換されたステートデータベースを、新しいブロックチェーンネットワークの各ブロックチェーンノードにコピーすることと、
    前記スマートコントラクトトランザクションに関連付けられた前記ブロックチェーンシステムの前記組織に対応する前記テスト環境マネージャによって変換されたプライベートデータを、前記組織に対応する新しいブロックチェーンネットワークの各ブロックチェーンノードにコピーすることと、
    を含む、
    ブロックチェーンシステム。
  15. スマートコントラクトトランザクションを容易にするように構成されたブロックチェーンシステムのための命令を格納した非一時的なコンピュータ可読媒体であって、
    前記ブロックチェーンシステムは複数のノードを含み、
    前記命令は、
    前記複数のノードのうちの第1のノードにおいて、前記複数のノードのうちの第2のノードから前記スマートコントラクトトランザクションの提案を受信することを契機に、
    前記第1のノードにおいて、前記第2のノードに関連付けられた前記ブロックチェーンシステム内の組織を特定することと、
    前記第1のノードにおいて、前記組織が前記提案によって示される前記スマートコントラクトトランザクションを実行できるか否かを判定することと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を持っていないことを示す判定に対して、前記第2のノードにエラーを返すステップと、
    前記組織が前記提案によって示された前記スマートコントラクトトランザクションを実行する権限を有していることを示す判定に対して、前記スマートコントラクトトランザクションを実行することと、
    を含
    前記複数のノードのうちの、前記スマートコントラクトトランザクションを実行する権限を有しておらず、且つ、他の組織のプライベートデータにアクセスする資格を持つように構成された読み取り専用組織に属する特定のノードにおいて、前記プライベートデータを含む前記スマートコントラクトトランザクションのエンドースを行う、
    コンピュータ可読媒体。
JP2022514455A 2020-03-30 2020-03-30 コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置 Active JP7319461B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/025780 WO2021201827A1 (en) 2020-03-30 2020-03-30 Method and apparatus maintaining private data with consortium blockchain

Publications (2)

Publication Number Publication Date
JP2022547853A JP2022547853A (ja) 2022-11-16
JP7319461B2 true JP7319461B2 (ja) 2023-08-01

Family

ID=77927398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022514455A Active JP7319461B2 (ja) 2020-03-30 2020-03-30 コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置

Country Status (4)

Country Link
US (1) US20220343323A1 (ja)
EP (1) EP4128107A4 (ja)
JP (1) JP7319461B2 (ja)
WO (1) WO2021201827A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220272085A1 (en) * 2021-02-24 2022-08-25 International Business Machines Corporation Blockchain network identity management using ssi
CN115002711A (zh) * 2022-06-02 2022-09-02 四川师范大学 基于5g通信的区块链智能传感器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160312A (ja) 2018-03-06 2019-09-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ブロックチェーン・ノード、ブロックチェーン・ノードの方法、およびブロックチェーン・ノードのコンピュータ・プログラム
JP2020501220A (ja) 2017-03-08 2020-01-16 アリババ グループ ホウルディング リミテッド 業務処理方法および装置
JP2020502621A (ja) 2018-11-30 2020-01-23 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ブロックチェーンネットワーク用テストプラットフォーム
JP2020507827A (ja) 2018-11-30 2020-03-12 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ブロックチェーンネットワーク内のスマートアセットの原子移動のためのプラットフォーム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11251937B2 (en) * 2018-01-21 2022-02-15 CipherTrace, Inc. Distributed security mechanism for blockchains and distributed ledgers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020501220A (ja) 2017-03-08 2020-01-16 アリババ グループ ホウルディング リミテッド 業務処理方法および装置
JP2019160312A (ja) 2018-03-06 2019-09-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ブロックチェーン・ノード、ブロックチェーン・ノードの方法、およびブロックチェーン・ノードのコンピュータ・プログラム
JP2020502621A (ja) 2018-11-30 2020-01-23 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ブロックチェーンネットワーク用テストプラットフォーム
JP2020507827A (ja) 2018-11-30 2020-03-12 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ブロックチェーンネットワーク内のスマートアセットの原子移動のためのプラットフォーム

Also Published As

Publication number Publication date
JP2022547853A (ja) 2022-11-16
WO2021201827A1 (en) 2021-10-07
EP4128107A4 (en) 2023-11-15
EP4128107A1 (en) 2023-02-08
US20220343323A1 (en) 2022-10-27

Similar Documents

Publication Publication Date Title
JP7382108B2 (ja) ブロックチェーンのための効率的な検証
US11159526B2 (en) System and method for decentralized-identifier authentication
US11240001B2 (en) Selective access to asset transfer data
US11095433B2 (en) On-chain governance of blockchain
US11165826B2 (en) On-chain governance of blockchain
US11227057B2 (en) Membership access management of a database
US10671308B2 (en) Private and fault-tolerant storage of segmented data
US10756884B2 (en) On-chain governance of blockchain
US11741083B2 (en) Cross-shard private atomic commit
US11924323B2 (en) On-chain governance of blockchain
US20200050691A1 (en) Database node functional testing
US11816069B2 (en) Data deduplication in blockchain platforms
US11888981B2 (en) Privacy preserving auditable accounts
US11138188B2 (en) Performance optimization
US11804950B2 (en) Parallel processing of blockchain procedures
JP7319461B2 (ja) コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置
WO2022193920A1 (en) Blockchain data segregation
CN111698198A (zh) 秘密生成和份额分发
US20200076619A1 (en) Data certification as a service powered by permissioned blockchain network
WO2023099357A1 (en) Compressible blockchains
US11782823B2 (en) Automatically capturing weather data during engineering tests
US20220067028A1 (en) Trustless operations for blockchain networks
US20230010791A1 (en) Pre-signed transaction requests for cryptographic key management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230720

R150 Certificate of patent or registration of utility model

Ref document number: 7319461

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150