(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークにおいて実行されるスマートコントラクトに対する更新を管理するためのコンピュータ実施方法であって、
コントラクト更新管理システムにおいて、ユーザから、第1のスマートコントラクトの条項における変更を指示する更新要求を受け取るステップであって、前記条項における変更が前記第1のスマートコントラクトに対する提案された更新である、ステップと、
前記コントラクト更新管理システムの内部のスマートコントラクトの更新を実行することにより、前記条項における変更を組み込むように前記第1のスマートコントラクトを更新するための条件が満たされているかどうかを判定するステップであって、前記スマートコントラクトの更新が前記条件を定義する、ステップと、
前記コントラクト更新管理システムが、前記条件が満たされていると判定したとき、前記コントラクト更新管理システムによって、前記第1のスマートコントラクトを更新して、前記ブロックチェーンネットワークのブロックチェーンにおける1つまたは複数のブロックに対する前記第1のスマートコントラクトの前記条項における変更を記録するステップとを含む方法。
【請求項２】
前記更新要求が、前記ブロックチェーンネットワークの内部の前記第1のスマートコントラクトに割り当てられた識別子を含む、請求項1に記載の方法。
【請求項３】
前記更新要求が、前記ブロックチェーンネットワークの内部の前記スマートコントラクトの更新に割り当てられた識別子を含む、請求項1に記載の方法。
【請求項４】
前記第1のスマートコントラクトが、
ディスパッチャによって、前記第1のスマートコントラクトを発信したコントラクト発信者による要求を受け取ったとき定義された、コントローラコントラクトと、
前記第1のスマートコントラクトのロジックを含むサービスコントラクトと、
前記第1のスマートコントラクトの条項を含むデータコントラクトとを含む、請求項1に記載の方法。
【請求項５】
前記条件が満たされているかどうかを判定するステップが、投票プロセスを遂行するステップであって、
前記ブロックチェーンネットワークにおける1つまたは複数のノードに、前記条項における変更に関して投票するように要求を送るステップと、
前記1つまたは複数のノードから投票を収集するステップと、
前記収集された投票が前記1つまたは複数のノードによる前記条項における変更の承認を指示するとき、条件が満たされたと判定するステップとを含む、投票プロセスを遂行するステップを含む、請求項1に記載の方法。
【請求項６】
前記投票プロセスを遂行するステップが、それぞれのノードに関連した重みによって投票に重み付けするステップを含み、承認は、前記収集された投票およびそれらの関連する重みの関数に基づくものである、請求項5に記載の方法。
【請求項７】
前記投票プロセスを遂行するステップが、拒否権を有するノードから受け取られた否認を適用するステップであって、前記投票プロセス中に、前記条項における変更に対する否認が受け取られたとき、前記投票プロセスが終結し、前記否認によって前記条項における変更が拒否される、ステップを含む、請求項5に記載の方法。
【請求項８】
前記投票プロセスを遂行するステップが、前記投票プロセスが前記条項における変更の承認または前記条項における変更の拒否をもたらすことになるときを規定する投票ルールを使用するステップを含む、請求項5に記載の方法。
【請求項９】
前記投票プロセスを遂行するステップが、前記投票プロセスが生じる投票期間を定義する投票開始時間および投票終了時間を使用するステップを含む、請求項5に記載の方法。
【請求項１０】
閾値数の投票者が前記条項における変更を承認したとき、あるいは1つまたは複数の特定の投票者の組合せが前記条項における変更を承認したとき、前記投票プロセスを遂行するステップが終結し、前記条件が満たされる、請求項5に記載の方法。
【請求項１１】
命令を記憶して1つまたは複数のプロセッサに結合された非一時的コンピュータ可読記憶媒体であって、前記命令が前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサが、ブロックチェーンネットワークにおいて実行されるスマートコントラクトに対する更新を管理するための動作を遂行し、前記動作が、
コントラクト更新管理システムにおいて、ユーザから、第1のスマートコントラクトの条項における変更を指示する更新要求を受け取るステップであって、前記条項における変更が前記第1のスマートコントラクトに対する提案された更新である、ステップと、
前記コントラクト更新管理システムの内部のスマートコントラクトの更新を実行することにより、前記条項における変更を組み込むように前記第1のスマートコントラクトを更新するための条件が満たされているかどうかを判定するステップであって、前記スマートコントラクトの更新が前記条件を定義する、ステップと、
前記コントラクト更新管理システムが、前記条件が満たされていると判定したとき、前記コントラクト更新管理システムによって、前記第1のスマートコントラクトを更新して、前記ブロックチェーンネットワークのブロックチェーンにおける1つまたは複数のブロックに対する前記第1のスマートコントラクトの前記条項における変更を記録するステップとを含む、非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記更新要求が、前記ブロックチェーンネットワークの内部の前記第1のスマートコントラクトに割り当てられた識別子を含む、請求項11に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記更新要求が、前記ブロックチェーンネットワークの内部の前記スマートコントラクトの更新に割り当てられた識別子を含む、請求項11に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記第1のスマートコントラクトが、
ディスパッチャによって、前記第1のスマートコントラクトを発信したコントラクト発信者による要求を受け取ったとき定義された、コントローラコントラクトと、
前記第1のスマートコントラクトのロジックを含むサービスコントラクトと、
前記第1のスマートコントラクトの条項を含むデータコントラクトとを含む、請求項11に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記条件が満たされているかどうかを判定するステップが、投票プロセスを遂行するステップであって、
前記ブロックチェーンネットワークにおける1つまたは複数のノードに、前記条項における変更に関して投票するように要求を送るステップと、
前記1つまたは複数のノードから投票を収集するステップと、
前記収集された投票が前記1つまたは複数のノードによる前記条項における変更の承認を指示するとき、条件が満たされたと判定するステップとを含む、投票プロセスを遂行するステップを含む、請求項11に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記投票プロセスを遂行するステップが、それぞれのノードに関連した重みによって投票に重み付けするステップを含み、承認は、前記収集された投票およびそれらの関連する重みの関数に基づくものである、請求項15に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記投票プロセスを遂行するステップが、拒否権を有するノードから受け取られた否認を適用するステップであって、前記投票プロセス中に、前記条項における変更に対する否認が受け取られたとき、前記投票プロセスが終結し、前記否認によって前記条項における変更が拒否される、ステップを含む、請求項15に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記投票プロセスを遂行するステップが、前記投票プロセスが前記条項における変更の承認または前記条項における変更の拒否をもたらすことになるときを規定する投票ルールを使用するステップを含む、請求項15に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記投票プロセスを遂行するステップが、前記投票プロセスが生じる投票期間を定義する投票開始時間および投票終了時間を使用するステップを含む、請求項15に記載のコンピュータ可読記憶媒体。
【請求項２０】
コンピュータデバイスと、
命令を記憶して前記コンピュータデバイスに結合されたコンピュータ可読記憶デバイスであって、前記命令が前記コンピュータデバイスによって実行されたとき、前記コンピュータデバイスが、ブロックチェーンネットワークにおいて実行されるスマートコントラクトに対する更新を管理するための動作を遂行する、コンピュータ可読記憶デバイスとを備えるシステムであって、前記動作が、
コントラクト更新管理システムにおいて、ユーザから、第1のスマートコントラクトの条項における変更を指示する更新要求を受け取るステップであって、前記条項における変更が前記第1のスマートコントラクトに対する提案された更新である、ステップと、
前記コントラクト更新管理システムの内部のスマートコントラクトの更新を実行することにより、前記条項における変更を組み込むように前記第1のスマートコントラクトを更新するための条件が満たされているかどうかを判定するステップであって、前記スマートコントラクトの更新が前記条件を定義する、ステップと、
前記コントラクト更新管理システムが、前記条件が満たされていると判定したとき、前記コントラクト更新管理システムによって、前記第1のスマートコントラクトを更新して、前記ブロックチェーンネットワークのブロックチェーンにおける1つまたは複数のブロックに対する前記第1のスマートコントラクトの前記条項における変更を記録するステップとを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
分権的決定を使用するブロックチェーンスマートコントラクトの更新に関する。
【背景技術】
【０００２】
分散台帳システム(DLS)は、コンセンサスネットワークおよび/またはブロックチェーンネットワークとも称され得、参加しているエンティティが安全かつ不変にデータを記憶することを可能にするものである。DLSは、いかなる特定の使用の場合(たとえば暗号通貨)も参照することなく、一般にブロックチェーンネットワークと称される。例示のタイプのブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含むことができる。パブリックブロックチェーンネットワークは、コンセンサスプロセスを使用し、それに参加しているすべてのエンティティに開放される。プライベートブロックチェーンネットワークは、読取りパーミッションおよび書込みパーミッションを中央集権的に制御する特定のエンティティに提供される。コンソーシアムブロックチェーンネットワークは、エンティティの選択グループ(select group)に提供され、このグループはコンセンサスプロセスを制御し、アクセス管理層を含む。
【０００３】
スマートコントラクトはエンティティの間で実行され得、ブロックチェーンネットワークの内部に存在する。いくつかの事例では、スマートコントラクトは(たとえばエンティティ間の環境の変化を反映するために)更新する必要がある。従来のシステムは、スマートコントラクトに対する変化を管理するために集中型の解決策を使用するが、管理するのが困難なプロセスを含むことがあり、別の不利益が生じる可能性がある。たとえば、スマートコントラクトを更新するとき(または改良するとき)、権限を有するエンティティ(たとえば管理者、コントラクト作成者、または公的機関)がスマートコントラクトの更新に関与し、更新に関してエンティティと通信することができる。権限を有するエンティティが更新処理を遂行することができるのは、通信がコンセンサスを得た後である。このプロセスは監視するのが困難であり得、スマートコントラクトのパーティのエンティティは、権限を有するエンティティを信頼しなければならないことがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の実装形態は、スマートコントラクトを更新するための、コンピュータ実施方法を含む。より詳細には、本開示の実装形態は、コントラクト更新管理システムの内部のスマートコントラクトの更新(updates smart contract)を実行することによるスマートコントラクトの更新を対象とするものである。
【０００５】
いくつかの実装形態では、アクションには、コントラクト更新管理システムによって、スマートコントラクトに対する変更を指示する更新要求を受け取るステップであって、変更はスマートコントラクトに対する提案された更新である、ステップと、コントラクト更新管理システムの内部のスマートコントラクトの更新を実行することにより、変更を組み込むようにスマートコントラクトを更新するための条件が満たされているかどうかを判定するステップであって、スマートコントラクトの更新が条件を定義する、ステップと、コントラクト更新管理システムが、条件が満たされたと判定したとき、コントラクト更新管理システムによってスマートコントラクトを更新するステップと、ブロックチェーンネットワークのブロックチェーンにおける1つまたは複数のブロックに対する変更を記録するステップとが含まれる。他の実装形態は、対応するシステムと、装置と、方法のアクションを遂行するように構成されてコンピュータの記憶装置上に符号化されたコンピュータプログラムとを含む。
【０００６】
これらおよび他の実施形態は、それぞれが、以下の特徴のうちの1つまたは複数を任意選択で含み得る。更新要求は、ブロックチェーンネットワークの内部のスマートコントラクトに割り当てられた識別子を含み、更新要求は、ブロックチェーンネットワークの内部のスマートコントラクトの更新に割り当てられた識別子を含み、スマートコントラクトは、ディスパッチャによって、スマートコントラクトを発信したコントラクト発信者による要求を受け取ったとき定義されたコントローラコントラクトと、スマートコントラクトのロジックを含むサービスコントラクトと、スマートコントラクトの条項を含むデータコントラクトとを含み、条件が満たされているかどうかを判定するステップは、投票プロセスを遂行するステップであって、ブロックチェーンネットワークにおける1つまたは複数のノードに、変更に関して投票するように要求を送る、ステップと、1つまたは複数のノードから投票を収集するステップと、収集された投票が1つまたは複数のノードによる変更の承認を指示するとき、条件が満たされたと判定するステップとを含む、投票プロセスを遂行するステップを含み、投票プロセスを遂行するステップは、それぞれのノードに関連した重みによって投票に重み付けするステップであって、承認は、収集された投票およびそれらに関連する重みの関数に基づくものである、ステップを含み、投票プロセスを遂行するステップは、拒否権を有するノードから受け取られた否認を適用するステップであって、投票プロセス中に、変更に対する否認が受け取られたとき、投票プロセスが終結し、否認によって変更が拒否される、ステップを含み、投票プロセスを遂行するステップは、投票プロセスが変更の承認または変更の拒否をもたらすことになるときを規定する投票ルールを使用するステップを含み、投票プロセスを遂行するステップは、投票プロセスが生じる投票期間を定義する投票開始時間および投票終了時間を使用するステップを含み、閾値数の投票者が変更を承認したとき、あるいは1つまたは複数の特定の投票者の組合せが変更を承認したとき、投票プロセスを遂行するステップが終結し、条件が満たされる。
【０００７】
本開示は、命令を記憶して1つまたは複数のプロセッサに結合された、1つまたは複数の非一時的コンピュータ可読記憶媒体も提供するものであり、これらの命令が1つまたは複数のプロセッサによって実行されると、本明細書で提供される方法の実装形態による動作が、1つまたは複数のプロセッサによって遂行される。
【０００８】
本開示は、本明細書で提供される方法を実施するためのシステムをさらに提供する。このシステムは、1つまたは複数のプロセッサと、命令を記憶して1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含み、これらの命令が1つまたは複数のプロセッサによって実行されると、本明細書で提供される方法の実装形態による動作が、1つまたは複数のプロセッサによって遂行される。
【０００９】
本開示による方法は、本明細書で説明される態様および特徴のいかなる組合せも含み得ることが理解される。すなわち、本開示による方法は、本明細書で具体的に説明される態様および特徴の組合せに限定されることなく、提供される態様および特徴のあらゆる組合せを含むものである。
【００１０】
本開示の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載される。本開示の他の特徴および利点は、説明、図面、および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【００１１】
【図１】本開示の実装形態を実行するのに使用され得る例示の環境を描写する図である。
【図２】本開示の実装形態による、例示の概念的構造を描写する図である。
【図３】本開示の実装形態による、スマートコントラクトを更新するための例示のシステムを描写する図である。
【図４】本開示の実装形態によって実行され得る例示のプロセスを描写する図である。
【発明を実施するための形態】
【００１２】
様々な図面における同様の参照符号は同様の要素を示す。
【００１３】
本開示の実装形態は、スマートコントラクトを更新するための、コンピュータ実施方法を含む。より詳細には、本開示の実装形態は、コントラクト更新管理システムの内部のスマートコントラクトの更新を実行して、ブロックチェーンネットワークの内部のスマートコントラクトに対する更新を管理することを対象とするものである。いくつかの実装形態では、アクションには、コントラクト更新管理システムによって、スマートコントラクトに対する変更を指示する更新要求を受け取るステップであって、変更はスマートコントラクトに対する提案された更新である、ステップと、コントラクト更新管理システムの内部のスマートコントラクトの更新を実行することにより、変更を組み込むようにスマートコントラクトを更新するための条件が満たされているかどうかを判定するステップであって、スマートコントラクトの更新が条件を定義する、ステップと、コントラクト更新管理システムが、条件が満たされたと判定したとき、コントラクト更新管理システムによってスマートコントラクトを更新するステップと、ブロックチェーンネットワークのブロックチェーンにおける1つまたは複数のブロックに対する変更を記録するステップとが含まれる。
【００１４】
本開示の実装形態のさらなるコンテキストを提供するために、上記で導入されたように、コンセンサスネットワーク(たとえばピアツーピアノードから構成されている)およびブロックチェーンネットワークとも称され得る分散台帳システム(DLS)により、参加しているエンティティは、安全かつ不変に、トランザクションを行ったりデータを記憶したりすることが可能になる。ブロックチェーンという用語は、一般にビットコインの暗号通貨ネットワークに関連したものであるが、本明細書では、一般に、いかなる特定の使用の場合も参照することなくDLSを参照するのに使用される。上記で導入されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとしてもたらされ得る。
【００１５】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、パブリックブロックチェーンネットワークにおいて、数百、数千、数百万ものエンティティが協働することができ、その各々が、パブリックブロックチェーンネットワークにおける少なくとも1つのノードを操作する。それゆえに、パブリックブロックチェーンネットワークは、参加しているエンティティに対するパブリックネットワークと見なされ得る。いくつかの例では、ブロックが有効になってブロックチェーンネットワークのブロックチェーン(分散台帳)に追加されるように、大多数のエンティティ(ノード)がすべてのブロックに署名する必要がある。例示のパブリックブロックチェーンネットワークは、ピアツーピア決済ネットワークであるビットコインネットワークを含む。ビットコインネットワークはブロックチェーンと称され、分散台帳を導入する。しかしながら、前述のように、ブロックチェーンという用語は、一般に、ビットコインネットワークへの特定の参照なしで分散台帳を参照するために使用される。
【００１６】
一般に、パブリックブロックチェーンネットワークはパブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワークの内部のノードのすべてと共有され、全体的なブロックチェーンに記憶される。全体的なブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、全体的なブロックチェーンに関して完全な状態のコンセンサスにある。コンセンサス(たとえばブロックチェーンにブロックを追加することの合意)を達成するために、コンセンサスプロトコルはパブリックブロックチェーンネットワークの内部で実施される。例示のコンセンサスプロトコルは、ビットコインネットワークにおいて実施されるプルーフオブワーク(POW)を制限なく含む。
【００１７】
一般に、プライベートブロックチェーンネットワークは、読取りパーミッションおよび書込みパーミッションを中央集権的に制御する特定のエンティティに提供される。このエンティティは、どのノードにブロックチェーンネットワークへの参加を許容するかを制御する。結果的に、プライベートブロックチェーンネットワークは、認可されたネットワークと一般に称され、ネットワークへの参加が許可される人と、その参加のレベル(たとえば特定のトランザクションにのみ参加できるレベル)とを制限する。様々なタイプのアクセス制御機構が使用され得る(たとえば、既存の参加者は新規のエンティティの追加について投票し、監督機関は承認を制御することができる)。
【００１８】
一般に、コンソーシアムブロックチェーンネットワークは、参加しているエンティティの間で非公開である。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、ノードの、権限を有する組によって制御され、1つまたは複数のノードがそれぞれのエンティティ(たとえば企業)によって操作される。たとえば、10のエンティティ(たとえば企業)のコンソーシアムがコンソーシアムブロックチェーンネットワークを操作することができ、その各々がコンソーシアムブロックチェーンネットワークにおける少なくとも1つのノードを操作する。それゆえに、コンソーシアムブロックチェーンネットワークは、参加しているエンティティに対するプライベートネットワークと見なされ得る。いくつかの例では、それぞれのエンティティ(ノード)は、ブロックが有効になってブロックチェーンに追加されるように、すべてのブロックに署名する必要がある。いくつかの例では、ブロックが有効になってブロックチェーンに追加されるように、少なくともエンティティ(ノード)のサブセット(たとえば少なくとも7つのエンティティ)が、すべてのブロックに署名する必要がある。
【００１９】
本開示の実装形態が、参加しているエンティティ(たとえばコンソーシアムのメンバー)の間で公開のコンソーシアムブロックチェーンネットワークを参照しながら、より詳細に本明細書で説明される。しかしながら、本開示の実装形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現され得ることが企図されている。本開示において説明された技術は、コンソーシアムブロックチェーンネットワークに関連するものと指示されているが、パブリックブロックチェーンネットワークおよびプライベートブロックチェーンネットワークを含む他のタイプのブロックチェーンネットワークにおいても、変更あり/変更なしで使用され得る。
【００２０】
上記の状況を考慮して、本開示の実装形態が、より詳細に本明細書で説明される。より詳細には、上記で導入されたように、本開示の実装形態は、スマートコントラクトに対する更新を管理するためにブロックチェーンネットワークのコントラクト更新管理システムの内部のスマートコントラクトの更新を実行することを対象とするものである。
【００２１】
スマートコントラクトは、様々なパーティに影響を及ぼす契約条項を有する現実の適法契約のデジタル表現と説明され得る。スマートコントラクトは、例示のコンテキストにおいて、コンソーシアムブロックチェーンネットワークの内部で実施され、記憶され、(必要に応じて)更新され、実行される。スマートコントラクトに関連したコントラクトパーティ(たとえば購買者および販売者)は、コンソーシアムブロックチェーンネットワークにおけるノードとして表現される。いくつかの例では、コントラクトパーティは、スマートコントラクトに関連したエンティティ(たとえば企業)を(たとえばスマートコントラクトのパーティとして)含むことができる。
【００２２】
いくつかの例では、スマートコントラクトは、情報、事実、提携、残高、およびコントラクトを実行するためのロジックを実施するのに必要な何らかの他の情報を記録するのに使用され得る、データを記憶することができる。スマートコントラクトは、スマートコントラクトのインスタンスが生成され得る関数から成るコンピュータ実行可能プログラムとして記述され得、関数は、その中のロジックを実行するために呼び出される。いくつかの例では、スマートコントラクトは様々な構成要素を含むことができ、そのうちの1つまたは複数がコントラクトとしても記述され得る。いくつかの例では、スマートコントラクトの構成要素のうちの1つまたは複数が、全体的なスマートコントラクトに対する更新の一部分として更新され得る。
【００２３】
いくつかの実装形態では、スマートコントラクトの例示の構成要素は、コントローラコントラクト、サービスコントラクト、およびデータコントラクトを制限なく含むことができる。コントローラコントラクトは、ディスパッチャによって、スマートコントラクトを発信したコントラクト発信者による要求を受け取ったとき定義され得る。スマートコントラクトの発信は、コンソーシアムブロックチェーンネットワークのノード(たとえばスマートコントラクトのパーティになるエンティティ)にスマートコントラクトを供給するステップを含むことができる。スマートコントラクトの発信は、スマートコントラクトが生成された時間、およびスマートコントラクトの発信者の識別も識別することができる。いくつかの例では、サービスコントラクトは、スマートコントラクトのロジックを含む。このロジックは、イベントの順序と、スマートコントラクトに関連したエンティティに対する関係の定義とを含めて、コントラクトを実行するやり方を定義し得るものである。データコントラクトが含むスマートコントラクトの条項は、スマートコントラクトによって対象として含まれる製品および/またはサービスと、製品および/またはサービスの提供に対するスマートコントラクト向けの支払い情報とを制限なく含む。データコントラクトに記憶されるデータは、情報、事実、ならびに、残高、支払い、領収書、配送、最終期限、およびスマートコントラクトのロジックを実施するのに必要な何らかの他の情報を制限なく含んでいる関係を記録するのに使用され得る。
【００２４】
専門用語では、スマートコントラクトは、オブジェクトおよびオブジェクト指向のクラスに基づいて実施され得る。たとえば、スマートコントラクトの事項および構成要素は、スマートコントラクトを実施するアプリケーションによって扱われるオブジェクトとして表現され得る。スマートコントラクト(またはスマートコントラクトにおけるオブジェクト)は、他のオブジェクト指向のオブジェクトと同様の別のスマートコントラクト(または同一のスマートコントラクトにおけるオブジェクト)をコールすることができる。オブジェクトによって行われるコールは、たとえば別のクラスのオブジェクトを生成する、更新する、削除する、伝搬させる、または同オブジェクトと通信するためのコールであり得る。オブジェクト間のコールは、関数、方法、アプリケーションプログラミングインターフェース(API)、または他のコール機構として実施され得る。たとえば、第1のオブジェクトは、第2のオブジェクトを生成する関数をコールすることができる。
【００２５】
図1は、本開示の実装形態を実行するのに使用され得る例示の環境100を描写するものである。いくつかの例では、エンティティは、例示の環境100によってコンソーシアムブロックチェーンネットワーク102に参加することができる。例示の環境100は、コンピュータシステム106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(たとえばコンピュータデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線および/または無線の通信リンクを通じてアクセスされ得る。
【００２６】
描写された例では、コンピュータシステム106、108のそれぞれが、コンソーシアムブロックチェーンネットワーク102におけるノードとして参加することを可能にする任意の適切なコンピュータシステムを含むことができる。例示のコンピュータデバイスは、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータデバイス、およびスマートフォンを制限なく含む。いくつかの例では、コンピュータシステム106、108は、コンソーシアムブロックチェーンネットワーク102と相互作用するための、1つまたは複数のコンピュータで実施されるサービスをホスティングする。たとえば、コンピュータシステム106は、第1のエンティティ(たとえばユーザA)が1つまたは複数の他のエンティティ(たとえば他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティのコンピュータで実施されるサービスをホスティングすることができる。コンピュータシステム108は、第2のエンティティ(たとえばユーザB)が1つまたは複数の他のエンティティ(たとえば他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティのコンピュータで実施されるサービスをホスティングすることができる。図1の例では、コンソーシアムブロックチェーンネットワーク102はノードのピアツーピアネットワークとして表現されており、コンピュータシステム106、108は、それぞれ第1のエンティティのノードおよび第2のエンティティのノードをもたらし、これらはコンソーシアムブロックチェーンネットワーク102に参加する。
【００２７】
図2は、本開示の実装形態による例示の概念的構造200を描写するものである。例示の概念的構造200は、エンティティ層202、ホスティングされたサービス層204、およびブロックチェーンネットワーク層206を含む。描写された例では、エンティティ層202には、それぞれがトランザクション管理システム208を有する、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)といった3つのエンティティが含まれる。
【００２８】
描写された例では、ホスティングされたサービス層204は、それぞれのトランザクション管理システム208用のインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえばハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、ネットワーク(たとえば図1のネットワーク110)を通じて、それぞれのインターフェース210と通信する。いくつかの例では、それぞれのインターフェース210が、それぞれのトランザクション管理システム208とブロックチェーンネットワーク層206の間の通信接続をもたらす。より詳細には、インターフェース210は、ブロックチェーンネットワーク層206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワーク層206の間の通信はリモートプロシージャコール(RPC)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208用のブロックチェーンネットワークノードを「ホスティングする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212にアクセスするためのアプリケーションプログラムインターフェース(API)をもたらす。
【００２９】
本明細書で説明されたように、ブロックチェーンネットワーク212は、ブロックチェーン216(たとえばコンソーシアムブロックチェーン)における情報を不変に記録する複数のノード214を含むピアツーピアネットワークとしてもたらされる。単一のブロックチェーン216が概略的に描写されているが、ブロックチェーン216の複数のコピーがもたらされ、ブロックチェーンネットワーク212にわたって維持される。たとえば、それぞれのノード214がブロックチェーンのコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、プライベートブロックチェーンネットワークに参加している2つ以上のエンティティの間で遂行されるトランザクションに関連した情報を記憶する。
【００３０】
図3は、本開示の実装形態による、スマートコントラクトを更新するための例示のシステム300を描写するものである。描写された例では、システム300は、スマートコントラクト304を含むスマートコントラクトに対する更新を管理するコントラクト更新管理システム302を含む。単一のスマートコントラクト304が描写されているが、コントラクト更新管理システム302は、たとえばコンソーシアムブロックチェーンネットワークの内部の任意数のスマートコントラクト304を更新するのに使用され得ることが企図されている。さらに、単一のスマートコントラクトの更新303が描写されているが、任意数のスマートコントラクトの更新303が提供され得ることが企図されている。いくつかの例では、スマートコントラクトの更新303は、1つまたは複数のスマートコントラクト304向けに提供される(たとえば1対多数の関係)。いくつかの例では、スマートコントラクトの更新303は、単一のスマートコントラクト304向けに提供される(たとえば1対1の関係)。いくつかの例では、多数のスマートコントラクトの更新303が、単一のスマートコントラクト304向けに提供される(たとえば多数対1の関係)。
【００３１】
本開示の実装形態によれば、コントラクト更新管理システム302は、スマートコントラクトの更新303を選択的に実行してスマートコントラクト304を更新する。スマートコントラクトの更新303は、コントラクト更新管理システム302の内部に概略的に描写されているが全体的に存在し、コンソーシアムブロックチェーンネットワークの内部で実行される。いくつかの例では、本明細書でより詳細に説明されるように、スマートコントラクトの更新303は、スマートコントラクト304に対する更新を呼び出すためのロジックと、スマートコントラクト304に対して実行される更新に必要な1つまたは複数の条件とを含み、1つまたは複数の条件が満たされた場合にはスマートコントラクト304に対する更新を実行する。
【００３２】
より詳細には、コントラクト管理システム302は更新プロセスを呼び出すことができる。たとえば、本明細書でより詳細に説明されるように、コントラクト管理システム302に更新要求が与えられ得、更新プロセスを呼び出す。いくつかの例では、更新要求は、更新されるスマートコントラクト304ならびに遂行される更新を識別する。いくつかの例では、スマートコントラクト304は、コンソーシアムブロックチェーンネットワークの内部のスマートコントラクト304の固有のアドレス(たとえば39a1509440f8c549dfd6e995def14b1ce3c98e5d)に基づいて識別される。たとえば、スマートコントラクト304は、生成の後に、または生成とともに、コントラクト更新管理システム302を用いて登録され得る。いくつかの例では、スマートコントラクト304の登録は、その固有の識別子に基づいてスマートコントラクト304にインデックスを付けるステップと、スマートコントラクト304を更新するために実行されるべき1つまたは複数のスマートコントラクトの更新303を参照するステップとを含む。いくつかの例では、1つまたは複数のスマートコントラクトの更新303の各々が、コンソーシアムブロックチェーンネットワークの内部のそれぞれのスマートコントラクトの更新303の固有のアドレス(たとえば23d61f4a88f90be1290c0eeab344992e1a2e8f6d)に基づいて参照される。
【００３３】
いくつかの実装形態では、更新要求は、スマートコントラクト304に対して遂行されるべき更新のタイプを含むことができる。いくつかの例では、更新プロセスを実行するために、スマートコントラクトの更新303は更新のタイプに基づいて選択され得る。たとえば、第1のタイプの更新(たとえば価格の変更)のために、条件の第1の組を含む第1のスマートコントラクトの更新が選択され、第2のタイプの更新(たとえばスマートコントラクトのパーティの変更)のために、条件の第2の組を含む第2のスマートコントラクトの更新が選択される。いくつかの例では、スマートコントラクトの更新の間の条件の組は、より厳格であり得る/それほど厳格でなくてよい。たとえば、条件の第1の組は、スマートコントラクトの第2の組ほど厳格でなくてよい。
【００３４】
いくつかの実装形態では、スマートコントラクトの更新303は更新のタイプに関係なく選択される(たとえば単一のスマートコントラクトの更新303はスマートコントラクト304に関連する)。いくつかの例では、スマートコントラクトの更新によって実施される1組の条件は、更新のタイプに基づいて選択される。たとえば、第1のタイプの更新については、スマートコントラクトの更新304は条件の第1の組を実施し、第2のタイプの更新については、スマートコントラクトの更新304は条件の第2の組を実施する。
【００３５】
いくつかの実装形態では、スマートコントラクトの更新303は、スマートコントラクト304を更新するために満たされるべき1つまたは複数の条件を満足するのに関与するノードのリスト308を管理することができる。いくつかの例では、ノード308は、いくつかのタスクを遂行するか、または(たとえばノード308におけるユーザによって)遂行されるいくつかのタスクを有する。たとえば、ノード308は、ロジックおよび更新を実施するのに必要な条件の組に依拠して、情報、承認、署名(たとえばデジタル署名)、および/または投票を供給することを要求されることがある。
【００３６】
更新の承認に関する非限定的な例が、本明細書で、図3を参照しながらより詳細に説明される。図3の例では、ノード308(ユーザとして描写されている)は、提案されたスマートコントラクト304に対する提案された更新に関して投票する。例示のタイプの投票は、委員会のメンバーおよび属性の変更の投票、ならびにコントラクトの拡大投票を制限なく含み得る。委員会のメンバーおよび属性の変更の投票は、投票するメンバーのリストおよび対応する投票パラメータを更新するために使用され得る。コントラクトの拡大投票は、スマートコントラクト304を更新するために使用され得る。
【００３７】
コントラクト更新管理システム302によって処理されるスマートコントラクト304を更新するためのそれぞれの提案がコンテンツを含むことができる。例示のコンテンツは、スマートコントラクト304のアドレス、スマートコントラクトの更新303のアドレス、更新(またはアップグレード)の理由、および/または新規の委員会のメンバーのリストを制限なく含むことができる。提案のための条件は、たとえば、提案が受諾されるには完全な同意が必要かどうかを規定する情報と、提案を受諾するための必要な重み比が確立されているかどうかを規定する情報と、否認が有効かどうか(および否認の選択肢がどのように適用されるか)を規定する情報とを含むことができる。提案の投票の最終期限および提案の有効期間は、(投票プロセス中の)提案の発生から提案の実行までのタイミングを識別することができる。例示のタイプの投票は、属性変更の投票およびコントラクトの更新の投票を制限なく含み得る。
【００３８】
コントローラコントラクト306は、ディスパッチャによって、スマートコントラクト304を発信したコントラクト発信者による要求を受け取ったとき定義され得る。たとえば、スマートコントラクト304は、ノード308のうちの1つまたは複数によって発信され得る。描写された例では、コントローラコントラクト306は、スマートコントラクト304の更新の要求を含んでいる要求をルーティングするルータ310を含む。スマートコントラクト304は、サービスコントラクト312およびデータコントラクト314も含む。サービスコントラクト312は、スマートコントラクト304のビジネスロジックを含むことができる。データコントラクト314が含み得るスマートコントラクト304の条項は、スマートコントラクト304によって対象として含まれる製品および/またはサービスと、製品および/またはサービスの受領に関するコントラクト向けの支払い情報とを含む。
【００３９】
いくつかの例では、ルータ310は、たとえばノード308のうち適切なものといった適切なサービスコントラクトアドレスへの要求および他の情報のルーティングを担う。ルータ310におけるコントラクトアドレスデータの修正は、スマートコントラクトの更新303によって遂行され得る。スマートコントラクト304を更新するための決定は、コンソーシアムのメンバー、コントラクト管理委員会、または複数のノード308の連帯投票によって形成され得る。
【００４０】
イベントの例示のシーケンスでは、ノード308aは、スマートコントラクト304に対する変更を提案することができる。提案される変更は提案312(たとえば更新要求)の形態であり得、たとえばスマートコントラクト304の条項(たとえば配送日、製品またはサービスに支払われる価格)を変更するものである。コントラクト更新管理システム302は提案312を受け取ることができ、非変更を提案しているユーザ308(ユーザ308b、308c、308d、308eを含む)に要求を送ることができる。非変更を提案しているユーザ308に送られる要求は、スマートコントラクト304に対して提案されている変更、および変更に関して投票することの要求(または招待)を含むことができる。コントラクト更新管理システム302は、ノード308b、308c、308d、308eから投票318を受け取り得、次いで、変更を承認するべきかどうかを判定することができる。いくつかの例では、投票はノードによって自動的に行われる(たとえば投票のコンピュータ実行)。いくつかの例では、投票は、ユーザによってノードを介して行われる(たとえば、認定ユーザはノードを介して投票を提出する)。
【００４１】
図4は、本開示の実装形態によって実行され得る例示のプロセス400を描写するものである。いくつかの実装形態では、例示のプロセス400は、1つまたは複数のコンピュータデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して遂行され得る。
【００４２】
402において、コントラクト更新管理システムがスマートコントラクトに対する変更を受け取る。たとえば、スマートコントラクト304に対する変更は、ユーザ308aによって提案され得る。変更は、たとえばスマートコントラクト304の契約条件の変更といった、提案された更新であり得る。変更されるよう提案された契約条件は、たとえば、スマートコントラクト304において識別された配送日または製品もしくはサービスに支払われる価格に対する変更を含むことができる。
【００４３】
404において、変更を組み込むようにスマートコントラクトを更新するための条件が満たされているかどうかが判定される。たとえば、コントラクト更新管理システム302の内部でスマートコントラクトの更新303を実行することによって判定され得る。スマートコントラクトの更新303は、判定するための条件を定義することができる。
【００４４】
いくつかの実装形態では、条件が満たされているかどうかを判定するステップは、以下のことを含む投票プロセスを遂行するステップを含む。提案された変更は、変更に賛成/反対の投票をするようにとの要求を伴って、ブロックチェーンにおけるブロックに送られる。たとえば、コントラクト更新管理システム302は、ユーザ308b、308b、308d、および308eを表現するブロックに要求を送ることができる。次いで、コントラクト更新管理システム302はブロックチェーンにおけるブロックから投票318を収集することができる。次いで、コントラクト更新管理システム302は、たとえば、収集された投票がブロックチェーンにおけるブロックのコンセンサスによって変更の承認を指示するとき、条件が満たされていると判定することができる。
【００４５】
いくつかの実装形態では、投票プロセスは、特定の投票者に関連した重みによって投票に重み付けするステップを含み、コンセンサスは、収集された投票およびそれらの関連する重みの関数に基づき得る。たとえば、ユーザ308のうち数人は、その重要性によってスマートコントラクト304に対する重要性が変化するコントラクトパーティであり得る。コントラクト更新管理システム302は、投票プロセス中に、種々のユーザ308に関連した重みを使用して、投票者のコンセンサスに達しているかどうかを決定する。
【００４６】
いくつかの実装形態では、投票プロセスを遂行するステップは、拒否権を有する投票者から受け取られた否認を適用するステップを含む。投票プロセス中に、変更に対する否認が受け取られたとき投票プロセスが終結し得、否認によって変更が拒否される。たとえば、ユーザ308のうち数人は、購買者または販売者のいずれかである、スマートコントラクト304のコントラクトパーティであり得る。これらのタイプのコントラクトパーティは、スマートコントラクト304に対して提案されたあらゆる変更に対する拒否権を有することができる。
【００４７】
いくつかの実装形態では、投票プロセスを遂行するステップは、投票プロセスが変更の承認または変更の拒否をもたらすことになるときを規定する投票ルールを使用するステップを含む。例として、所与のスマートコントラクトに関する1組の投票ルールが、投票を使用して承認されたかどうかを判定するやり方を規定するルールを含むことができる。これらのルールは、たとえば、ブロックチェーンにおけるブロックの、承認に必要な最小数、または投票の何らかの他の組合せを指定することができる。それぞれのスマートコントラクトが投票ルールの固有の組を有することができる。
【００４８】
いくつかの実装形態では、投票プロセスを遂行するステップは、投票プロセスが生じる投票期間を定義する投票開始時間および投票終了時間を使用するステップを含む。たとえば、スマートコントラクトの更新303は、特定の開始時間および終了時間にマッピングされ得る時間の長さ(たとえば時間数または日数)を定義することができる。
【００４９】
いくつかの実装形態では、閾値数の投票者が変更を承認したとき、あるいは1人または複数の特定の投票者の組合せが変更を承認したとき、投票プロセスを遂行するステップが終結し、条件が満たされる。たとえば、ユーザ308のうちの少なくとも3人が、提案された変更を承認するように投票したとき、コントラクト更新管理システム302は、投票ルールを使用して、コンセンサスに達していると判定することができる。
【００５０】
406において、コントラクト更新管理システムは、条件が満たされていると判定するとスマートコントラクトを更新する。この変更はブロックチェーンにおける1つまたは複数のブロックに記録される。たとえば、コントラクト更新管理システム302は、ブロックチェーンにおけるブロック(たとえばユーザ308)に変更を伝達することができる。
【００５１】
本明細書では、提案された更新に関する投票を参照しながら例示の更新プロセスが説明されているが、本開示の実装形態は、更新を許容する、または却下するためのあらゆる適切な条件を使用して実現され得ることが企図されている。たとえば、例示の条件は、更新要求に応じて1人または複数の特定ユーザからの更新の承認を必要とすることを含むことができる。1人または複数の特定ユーザの各々が承認を与えると、スマートコントラクトに対する更新が実行される。1人または複数の特定ユーザのうち誰か1人でも承認しなければ、スマートコントラクトに対する更新は実行されない。別の例として、例示の更新条件は、所定の期間内に1人または複数の特定ユーザからの更新の不承認を必要とすることを含むことができる。所定の期間内に不承認が受け取られなければ、更新が実行される。さらに別の例として、例示の更新条件は、所定の期間内に1人または複数の特定ユーザからの更新の承認を必要とすることを含むことができる。所定の期間内に承認が受け取られなければ、更新が拒否される。
【００５２】
説明された機能は、デジタル電子回路、コンピュータのハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実施され得る。装置は、プログラム可能なプロセッサで実行するための、情報媒体(例えば機械可読の記憶装置)に有形に実施されたコンピュータプログラム製品で実施され得、方法のステップは、入力データに対して動作して出力を生成することにより、説明された実装形態の機能を遂行する命令のプログラムを実行する、プログラム可能なプロセッサによって遂行され得る。説明された機能は、データ記憶システムに対してデータおよび命令をやり取りするように結合された少なくとも1つのプログラム可能なプロセッサと、少なくとも1つの入力装置と、少なくとも1つの出力装置とを含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムにおいて有利に実施され得る。コンピュータプログラムは、特定の動作を遂行するため、または特定の結果をもたらすために、コンピュータにおいて直接的または間接的に使用され得る1組の命令である。コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語を含めて任意の形式のプログラミング言語で記述され得、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、またはコンピュータ環境で用いるのに適切な他のユニットとしてなど、任意の形式に展開され得る。
【００５３】
プログラムの命令を実行するのに適切なプロセッサには、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサ、ならびに任意の種類のコンピュータの唯一のプロセッサまたは複数のプロセッサのうちの1つが含まれる。一般に、プロセッサは、命令およびデータを、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から受け取ることになる。コンピュータの要素には、命令を実行するためのプロセッサならびに命令およびデータを記憶するための1つまたは複数の記憶装置が含まれ得る。一般に、コンピュータは、データファイルを記憶するための1つまたは複数の大容量記憶装置も含んでよく、またはこれと通信するように動作可能に結合されてもよく、そのような装置は、内部ハードディスクおよび取外し可能ディスクなどの磁気ディスクと、光磁気ディスクと、光ディスクとを含む。コンピュータプログラムの命令およびデータを有形に実施するのに適切な記憶装置には、例として、EPROM、EEPROM、およびフラッシュメモリ素子などの半導体メモリ素子と、内部ハードディスクおよび取外し可能ディスクなどの磁気ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含む、すべての形態の不揮発性記憶装置が含まれる。プロセッサおよび記憶装置は、特定用途向け集積回路(ASIC)を追加されてよく、または特定用途向け集積回路(ASIC)に組み込まれてもよい。
【００５４】
ユーザとの相互作用を提供するために、これらの機能は、ユーザに情報を表示するための、ブラウン管(CRT)または液晶表示器(LCD)モニタなどの表示装置、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実施され得る。
【００５５】
これらの機能は、データサーバなどのバックエンドコンポーネントを含むコンピュータシステム、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピュータシステム、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピュータシステム、あるいはそれらの任意の組合せで実施され得る。システムの構成要素は、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって接続され得る。通信ネットワークの例には、たとえば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ならびにインターネットを形成するコンピュータおよびネットワークが含まれる。
【００５６】
コンピュータシステムは、クライアントおよびサーバを備え得る。一般に、クライアントとサーバは互いに遠く離れていて、典型的には、説明されたものなどのネットワークを介して相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で走って互いにクライアント対サーバの関係を有する各コンピュータプログラムによって生じる。
【００５７】
加えて、図に示された論理の流れは、望ましい結果を達成するのに、示された特定の順序、または順番を必要とするわけではない。加えて、他のステップが与えられてよく、または説明された流れからステップが削除されてもよく、および、説明されたシステムに対する他の構成要素の付加または除去が可能である。したがって、他の実装形態は、以下の特許請求の範囲の範囲内にある。
【００５８】
本開示の複数の実装形態が説明されてきた。しかし、本開示の趣旨および範囲から逸脱することなく、様々な修正形態が作製され得ることが理解されよう。したがって、他の実装形態は、以下の特許請求の範囲の範囲内にある。
【符号の説明】
【００５９】
100  環境
102  コンソーシアムブロックチェーンネットワーク
106  コンピュータシステム
108  コンピュータシステム
110  ネットワーク
200  概念的構造
202  エンティティ層
204  ホスティングされたサービス層
206  ブロックチェーンネットワーク層
208  トランザクション管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  システム
302  コントラクト更新管理システム
303  スマートコントラクトの更新
304  スマートコントラクト
306  コントローラコントラクト
308  ノード
308a  ノード
308b  ノード
308c  ノード
308d  ノード
308e  ノード
310  ルータ
312  サービスコントラクト
314  データコントラクト
316  提案
318  投票
【図１】
0006798087.tif 000002
【図２】
0006798087.tif 000003
【図３】
0006798087.tif 000004
【図４】
0006798087.tif 000005