(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】製造プロセスの監視
(51)【国際特許分類】
G09C 1/00 20060101AFI20240213BHJP
【FI】
G09C1/00 620Z
(21)【出願番号】P 2021520221
(86)(22)【出願日】2019-10-23
(86)【国際出願番号】 AU2019051158
(87)【国際公開番号】W WO2020087106
(87)【国際公開日】2020-05-07
【審査請求日】2022-10-07
(32)【優先日】2018-10-31
(33)【優先権主張国・地域又は機関】AU
(73)【特許権者】
【識別番号】590003283
【氏名又は名称】コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼーション
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100179062
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100219542
【氏名又は名称】大宅 郁治
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】リベレット、レジス
(72)【発明者】
【氏名】トサット、シルバノ・コロンボ
(72)【発明者】
【氏名】ファン・ビーツ、ニック
(72)【発明者】
【氏名】ガバナトリ、グイド
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2018/078584(WO,A1)
【文献】特表2019-522264(JP,A)
【文献】特開2015-212756(JP,A)
【文献】米国特許出願公開第2015/0318991(US,A1)
【文献】米国特許第06671874(US,B1)
【文献】米国特許出願公開第2018/0247045(US,A1)
【文献】特開2006-318228(JP,A)
【文献】特表2022-501701(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
製薬プラントの現在の操作を監視することにより、医薬化合物を製造する方法であって、
前記製薬プラントの公称操作の数値表現を作成することと、
前記数値表現へのアクセスを阻止するが前記数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて前記数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、前記暗号化数値表現を前記スマートコントラクトの前記計算への第1の入力として用いて、前記スマートコントラクトを作成することと、
前記製薬プラントの前記現在の操作を、前記スマートコントラクトの前記計算への第2の入力として用いて、前記スマートコントラクトの実行を試みることであって、前記スマートコントラクトの実行が、前記暗号化数値表現に対する前記計算を行うことによって出力結果を生成する、前記試みることと、
前記スマートコントラクトの前記実行の前記出力結果に基づいて、前記現在の操作が前記公称操作の範囲外であると判定することと、
を含む、前記方法。
【請求項2】
プロセスの現在の操作を監視する方法であって、
前記プロセスの公称操作の数値表現を作成することと、
前記数値表現へのアクセスを阻止するが前記数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて前記数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、前記暗号化数値表現を前記スマートコントラクトの前記計算への第1の入力として用いて、前記スマートコントラクトを作成することと、
前記プロセスの前記現在の操作を、前記スマートコントラクトの前記計算への第2の入力として用いて、前記スマートコントラクトの実行を試みることであって、前記スマートコントラクトの実行が、前記暗号化数値表現に対する前記計算を行うことによって出力結果を生成する、前記試みることと、
前記スマートコントラクトの前記実行の前記出力結果に基づいて、前記現在の操作が前記公称操作の範囲外であると判定することと、
を含む、前記方法。
【請求項3】
前記現在の操作が前記公称操作の範囲外であると判定することが、前記スマートコントラクトを実行しなかったことを判定することに応答している、請求項2に記載の方法。
【請求項4】
前記現在の操作が前記公称操作の範囲外であると判定すると、前記プロセスの前記現在の操作を阻止することをさらに含む、請求項2または請求項3に記載の方法。
【請求項5】
前記現在の操作が前記公称操作の範囲外であると判定すると、前記プロセスの更なる実行を可能にするとともに、前記現在の操作が前記公称操作の範囲外であることを示すレポートを生成することをさらに含む、請求項2または請求項3に記載の方法。
【請求項6】
前記公称操作の前記数値表現を作成することが、前記公称操作のペトリネットを作成することと、前記ペトリネットの数値表現を作成することとを含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記数値表現が、
前記公称操作のプレースと、前記プレース間の有効なトランジションとを示し、
複数の2進公称ベクトルを含み、
前記複数の2進公称ベクトルのそれぞれが、前記プレース間の前記有効なトランジションのうちの1つを表す、請求項2~
5のいずれか1項に記載の方法。
【請求項8】
前記複数の2進公称ベクトルが、トランジションごとに、そのトランジションを可能にする1つ以上のプレースを示す2進プリセットベクトルと、そのトランジション後の1つ以上の可能なプレースを示す2進ポストセットベクトルとを含む、請求項7に記載の方法。
【請求項9】
前記数値表現を作成することが、
前記プレース及び前記トランジションを介して複数の追跡を判定することと、
前記2進プリセットベクトル及び前記2進ポストセットベクトルが前記複数の追跡を表すように、前記2進プリセットベクトル及び前記2進ポストセットベクトルを決定することと、
を含む、請求項8に記載の方法。
【請求項10】
前記プロセスの前記現在の操作が、2進の現在の状態ベクトルによって表され、
前記スマートコントラクトが、前記現在の状態ベクトルと暗号化された前記2進公称ベクトルとに基づく2項演算を含む、請求項7~9のいずれか1項に記載の方法。
【請求項11】
前記スマートコントラクトの前記計算は、前記操作の以前の状態を示す以前の状態ベクトルに基づく2項演算を含む、請求項10に記載の方法。
【請求項12】
前記スマートコントラクトの前記計算は、暗号化された以前の状態ベクトルと暗号化された現在の状態ベクトルとの間の2項演算を含む、請求項11に記載の方法。
【請求項13】
前記スマートコントラクトの前記計算は、暗号化されたポストセットベクトルを使用した2項演算に基づくトランジションの選択と、前記暗号化されたポストセットベクトルに基づくトランジションの選択とを含む、請求項12に記載の方法。
【請求項14】
前記スマートコントラクトの前記計算は、
暗号化された以前の状態ベクトルと暗号化された現在の状態ベクトルとの間の2進AND演算と、
前記暗号化された現在の状態ベクトルと前記2進AND演算の結果との間の2進XOR演算と、
を含む、請求項12または請求項13に記載の方法。
【請求項15】
前記スマートコントラクトの前記計算は、前記暗号化されたポストセットベクトルと前記2進XOR演算の結果との間のAND演算の結果が、前記暗号化されたポストセットベクトルに等しいトランジションの選択を含む、請求項14に記載の方法。
【請求項16】
前記スマートコントラクトの前記計算は、前記選択の結果が前記操作の前記現在の状態ベクトルによって有効にされるトランジションのセットに等しいという条件を含む、請求項13または請求項15に記載の方法。
【請求項17】
前記スマートコントラクトの実行を試みることは、前記計算を行うことにより、前記条件を満たそうと試みることを含む、請求項
16に記載の方法。
【請求項18】
前記スマートコントラクトは、前記スマートコントラクトの前記実行の成功により、前記ブロックチェーンプラットフォームへのトランザクションの統合が引き起こされるように構成されている、請求項17に記載の方法。
【請求項19】
前記ブロックチェーンプラットフォームに統合された前記トランザクションが、前記現在の状態ベクトルへの有効なトランジションを表す、請求項18に記載の方法。
【請求項20】
前記スマートコントラクトを作成することは、規定セットに対する適合性について前記スマートコントラクトをチェックすることを含む、請求項1~19のいずれか1項に記載の方法。
【請求項21】
コンピュータによって実行されると、前記コンピュータに請求項1~20のいずれか1項に記載の方法を実行させる、ソフトウェア。
【請求項22】
プロセスの現在の操作を監視するためのシステムであって、
データストアと、
プロセッサであって、
前記プロセスの公称操作の数値表現を作成し、作成した前記数値表現を前記データストアに保存することと、
前記数値表現へのアクセスを阻止するが前記数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて前記数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、前記暗号化数値表現を前記スマートコントラクトの前記計算への第1の入力として用いて、前記スマートコントラクトを作成することと、
前記プロセスの前記現在の操作を、前記スマートコントラクトの前記計算への第2の入力として用いて、前記スマートコントラクトの実行を試みることであって、前記スマートコントラクトの実行が、前記暗号化数値表現に対する前記計算を行うことによって出力結果を生成する、前記試みることと、
前記スマートコントラクトの前記実行の前記出力結果に基づいて、前記現在の操作が前記公称操作の範囲外であると判定することと、
を行うように構成された、前記プロセッサと、
を備える、前記システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2018年10月31日に出願された豪州仮出願2018904146の優先権を主張するものであり、この豪州仮出願の全体を参照として本明細書に組み込む。
【0002】
技術分野
本開示は、プロセスを監視することに関し、特に、限定されるわけではないが、製薬プラントの現在の操作を監視することに関する。
【背景技術】
【0003】
医薬品製造とは、医薬品を工業規模で合成するプロセスのことである。薬剤製造のプロセスは、粉砕、造粒、コーティング、錠剤プレスなどの一連の単位操作に分解することができる。規模に関わらず、薬剤を製造できるようになるまでには、実際の製剤化に多くの作業が必要となる。製剤開発の科学者は、化合物の均一性、安定性、及びその他の多くの要因を評価する。評価段階の後、固体、半固体、即時放出または制御放出、錠剤またはカプセルなどの必要な形態で薬剤を送達するためのソリューションが開発される。固形剤を製造するのに使用される最終配合物を作製するために、幅広い種類の賦形剤が混合され得る。混合され得る材料の範囲(賦形剤、医薬品有効成分)は、条件に合った混合均一性の生成物を実現するために扱われるいくつかの変数を提起する。これらの変数には、粒度分布(材料の凝集体または塊を含む)、粒子形状(球、棒、立方体、平板、及び不定形)、水分(または他の揮発性化合物)の存在、及び粒子表面特性(粗さ、凝集性)が含まれ得る。薬剤製造過程では、薬剤粉末の平均粒径を小さくするために、粉砕が必要になることが多い。これには、均質性と投与量の均一性とを高めること、バイオアベイラビリティを高めること、及び薬剤化合物の溶解性を高めることなど、いくつかの理由がある。造粒は、粉砕の反意語とされている。つまり、これは、小さな粒子が結合して、顆粒と呼ばれる大きな粒子を形成するプロセスである。いくつかの理由で造粒が使用される。造粒は、必要な比率で全ての成分を含有する顆粒を作成することにより、混合物中の成分の「脱混合」を防ぎ、(小粒子は流れにくいので)粉末の流動特性を改善し、錠剤形成のための圧縮特性を改善する。溶解性及びバイオアベイラビリティが低い薬剤の送達を可能にするために、固形製剤経口投薬処理にホットメルトエクストルージョン(溶融押出混錬法)が利用され得る。ホットメルトエクストルージョンを使用して、高分子担体中に難溶性薬剤を分子分散させ、それによって溶解速度及びバイオアベイラビリティを向上させることができる。このプロセスでは、熱、圧力、及び撹拌を加えて材料を混合し、それをダイから「押し出す」。二軸式高せん断押出機が、材料を混合し、同時に粒子を粉砕する。得られた粒子を混合して、錠剤に圧縮するか、またはカプセルに充填することができる。
【0004】
これらのことから、医薬品の製造は複雑であり、正しい公称範囲内になければならない多数のパラメータと、所定の公称シーケンスで互いに続く必要があるステップとを含むことが分かる。それに加えて、リーン生産方式及びデジタルマニュファクチャリングへの傾向が見られる。しかし、これらの新しいビジネス組織の方法には、実現するための技術的ソリューションが必要とされる。特に、サプライチェーン内の多数の関係者間の機密性についての懸念がある。現在のところ、全てのエンティティによるプロセスが、包括的な規定セットに適合しているということを確実にすることが課題となっている。ただし、同時に、実際のプロセスは、公称プロセスパラメータ及び公称ステップシーケンスとともに、第三者に開示されるべきではない。したがって、サプライチェーン及び/または製造プロセスの基盤をなし、「機密の製法」を開示することなく、プロセスの適合性をチェックすることができるコンピュータシステムが求められている。
【0005】
ブロックチェーンネットワークは、中央集権化された信頼できる第三者には全く依存しない、信頼できない環境を提供する。ブロックチェーンのデータ構造は、ピアツーピアネットワークのノードによって維持される分散型台帳である。このパブリック台帳は、システム内で発生している全てのタイムスタンプ付きトランザクションを保存している。パブリック台帳に、どのトランザクションを含め、どのトランザクションを含めないかについて合意するために、分散型の合意プロトコルが使用されている。全トランザクションは、パブリック台帳に含める前に、全ネットワーク参加者によって検証される。
【0006】
複数の関係者によるプロセスでは、組織はプロセスの特定の部分を外部の関係者に委託する場合がある。プロセスの異なる部分が異なる組織によって実行され得る。そのような状況では、関わっている者の間の信頼が限定的になることが多々ある。ほとんどの場合、個々のビジネスプロセスに関する機密情報は引き続き非公開であるべきである。アクティビティの実行及びデータの転送は、そのようなアクティビティを管理する条件に従う。各関係者は、プロセスの「外部委託」部分が合意された通りに、適用される条件に従って遂行されることを保証したいと考えている。互いのプロセスに対する信頼及び洞察の不足から、現在のプロセス実行ツールでは、このようなサービスチェーン全体の適合性を保証することができない。
【0007】
本明細書に含まれている文書、行為、材料、デバイス、物、またはこれらに類するものに関するいかなる議論も、これらの事項のいずれかもしくは全てが先行技術基盤の一部を形成していること、またはこれらが、本願の各請求項の優先日前に存在していたとして、本開示に関連する分野で周知の一般知識であったことを認めるものとはみなされない。
【0008】
本明細書を通じて、単語「含む(comprise)」、または「含む(comprises)」もしくは「含む(comprising)」などの変形は、既定された要素、完全体またはステップ、または要素群、完全体またはステップ群を包含するが、いかなる他の要素、完全体またはステップ、または要素群、完全体群またはステップ群をも排除することを意味するものではないことが理解されよう。
【発明の概要】
【0009】
製薬プラントの現在の操作を監視することにより、医薬化合物を製造する方法が提供される。本方法は、
製薬プラントの公称操作の数値表現を作成することと、
数値表現へのアクセスを阻止するが数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、暗号化数値表現をスマートコントラクトの計算への第1の入力として用いて、スマートコントラクトを作成することと、
製薬プラントの現在の操作を、スマートコントラクトの計算への第2の入力として用いて、スマートコントラクトの実行を試みることであって、スマートコントラクトの実行が、暗号化数値表現に対する計算を行うことによって出力結果を生成する、試みることと、
スマートコントラクトの実行の出力に基づいて、現在の操作が公称操作の範囲外であると判定することと、を含む。
【0010】
プロセスの現在の操作を監視する方法が、
プロセスの公称操作の数値表現を作成することと、
数値表現へのアクセスを阻止するが数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、暗号化数値表現をスマートコントラクトの計算への第1の入力として用いて、スマートコントラクトを作成することと、
プロセスの現在の操作を、スマートコントラクトの計算への第2の入力として用いて、スマートコントラクトの実行を試みることであって、スマートコントラクトの実行が、暗号化数値表現に対する計算を行うことによって出力結果を生成する、試みることと、
スマートコントラクトの実行の出力に基づいて、現在の操作が公称操作の範囲外であると判定することと、を含む。
【0011】
現在の操作が公称操作の範囲外であると判定することは、スマートコントラクトを実行しなかったことを判定することに応答していてもよい。
【0012】
本方法は、現在の操作が公称操作の範囲外であると判定すると、プロセスの現在の操作を阻止することをさらに含み得る。
【0013】
本方法は、現在の操作が公称操作の範囲外であると判定すると、プロセスの更なる実行を可能にするとともに、現在の操作が公称操作の範囲外であることを示すレポートを生成することをさらに含み得る。
【0014】
公称操作の数値表現を作成することは、公称操作のペトリネットを作成することと、ペトリネットの数値表現を作成することとを含んでもよい。
【0015】
数値表現は、公称操作のプレースと、プレース間の有効なトランジションとを示してもよく、複数の2進公称ベクトルを含んでもよく、複数の2進公称ベクトルのそれぞれが、プレース間の有効なトランジションのうちの1つを表してもよい。
【0016】
複数の2進公称ベクトルは、トランジションごとに、そのトランジションを可能にする1つ以上のプレースを示す2進プリセットベクトルと、そのトランジション後の1つ以上の可能なプレースを示す2進ポストセットベクトルとを含んでもよい。
【0017】
数値表現を作成することは、プレース及びトランジションを介して複数の追跡を判定することと、プリセットベクトル及びポストセットベクトルが複数の追跡を表すように、プリセットベクトル及びポストセットベクトルを決定することとを含んでもよい。
【0018】
プロセスの現在の操作は、2進の現在の状態ベクトルによって表され、スマートコントラクトが、現在の状態ベクトルと暗号化された公称ベクトルとに基づく2項演算を含んでもよい。
【0019】
スマートコントラクトの計算は、操作の以前の状態を示す以前の状態ベクトルに基づく2項演算を含んでもよい。
【0020】
スマートコントラクトの計算は、暗号化された以前の状態ベクトルと暗号化された現在の状態ベクトルとの間の2項演算を含んでもよい。
【0021】
スマートコントラクトの計算は、暗号化されたポストセットベクトルを使用した2項演算に基づくトランジションの選択と、暗号化されたポストセットベクトルに基づくトランジションの選択とを含んでもよい。
【0022】
スマートコントラクトの計算は、暗号化された以前の状態ベクトルと暗号化された現在の状態ベクトルとの間の2進AND演算と、暗号化された現在の状態ベクトルとAND演算の結果との間の2進XOR演算とを含んでもよい。
【0023】
スマートコントラクトの計算は、暗号化されたポストセットベクトルとXOR演算の結果との間のAND演算の結果が、暗号化されたポストセットベクトルに等しいトランジションの選択を含んでもよい。
【0024】
スマートコントラクトの計算は、選択の結果が操作の現在の状態によって有効にされるトランジションのセットに等しいという条件を含んでもよい。
【0025】
スマートコントラクトの実行を試みることは、計算を行うことにより、条件を満たそうと試みることを含んでもよい。
【0026】
スマートコントラクトは、スマートコントラクトの実行の成功により、ブロックチェーンへのトランザクションの統合が引き起こされるように構成されてもよい。
【0027】
ブロックチェーンに統合されたトランザクションは、現在の状態への有効なトランジションを表してもよい。
【0028】
スマートコントラクトを作成することは、規定セットに対する適合性についてスマートコントラクトをチェックすることを含んでもよい。
【0029】
ソフトウェアは、コンピュータによって実行されると、コンピュータに上記の方法を実行させる。
【0030】
プロセスの現在の操作を監視するためのシステムが、
データストアと、
プロセッサであって、
プロセスの公称操作の数値表現を作成し、作成した数値表現をデータストアに保存することと、
数値表現へのアクセスを阻止するが数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて数値表現を暗号化することと、
ブロックチェーンプラットフォーム上でスマートコントラクトを作成することであって、暗号化数値表現をスマートコントラクトの計算への第1の入力として用いて、スマートコントラクトを作成することと、
プロセスの現在の操作を、スマートコントラクトの計算への第2の入力として用いて、スマートコントラクトの実行を試みることであって、スマートコントラクトの実行が、暗号化数値表現に対する計算を行うことによって出力結果を生成する、試みることと、
スマートコントラクトの実行の出力に基づいて、現在の操作が公称操作の範囲外であると判定することと、
を行うように構成されたプロセッサと、
を備える。
【0031】
以下の図を参照して、本開示の実施例を説明する。
【図面の簡単な説明】
【0032】
【
図2】プロセスの現在の操作を監視する方法を示す。
【
図3】メインスマートコントラクト及びサブコントラクトの例示的なシナリオを示す。
【
図4】例示的なメインスマートコントラクト及びサブコントラクトの実行を表すシーケンス図である。
【
図5】aは、ペトリネットとしてのプロセス仕様の例示的な表現であり、bは、プロセスの状態の数値表現の説明図であり、cは、プロセスの状態の難読化された数値表現の説明図である。
【
図6】aは、状態のプリセットの行列表現であり、
図6bは、状態のポストセットの行列表現である。
【
図9a】ブロックチェーンで実行されるペトリネットの実施例を提供する。
【
図9b】マーキングを整数に変換することができる方法を説明するための例示的なマーキングを示す。
【
図10b】プレースに対応するビットのランダム化された順序を示す。
【
図11】
図9aに示されたプロセスの行列表現を示す。
【
図12a】プリセットとポストセットとの一致に伴う2つのトランジションを示す。
【
図12b】サイレントτトランジションを追加した後の、プリセットと一意のポストセットとの一致に伴う2つのトランジションを示す。
【発明を実施するための形態】
【0033】
以下の開示は、プロセスの現在の操作を実行する、または監視するための方法及びシステムに関する。一実施例では、本開示は、更なるプロセスステップ及び更なるパラメータに加えて、上記のパラメータ及びシーケンスを有する医薬品製造プロセスに適用される。これらの実施例では、「公称操作」という用語は、医薬品製造プロセスに規定されているプロセス変数/パラメータ及びステップのシーケンスを指す。また一方、本開示は、コンピュータシステムまたは他のプロセスの侵入検知などの他の領域にも同様に適用可能である。
【0034】
本開示はイーサリアムの使用を説明しているが、これは単にブロックチェーンプラットフォームを例示することを意図している。ブロックチェーンプラットフォームは、パブリック台帳(制限またはアクセス制御なしで読める)をベースにしてもよいし、または暗号化もしくはパスワード保護などのアクセス制御によって管理されるコンソーシアムによってのみアクセス可能なプライベート台帳をベースにしてもよいことに留意されたい。イーサリアムを使用する理由の1つは、イーサリアムがスマートコントラクトをネイティブにサポートしていることである。スマートコントラクトは、イーサリアムブロックチェーン上のオブジェクトであり、「eth.accounts」オブジェクトを保持し得る。スマートコントラクトはコンピュータコードを含み、それらは、他のコントラクトと相互作用すること、新しいコントラクトを作成すること、決定を下すこと、データを保存すること、他の人たちにイーサを送ることができる。文献では、用語「スマートコントラクト」は、スマートコントラクトを実行するために使用されるコードと、実際に実行するまたは実行されるスマートコントラクトとの両方を指すために区別なく用いられている。明確にするために、本開示では、用語「プロセスインスタンス」は、スマートコントラクトによって提供される実行及びサービスのことをいう。
【0035】
現在の開示は、実際のブロックチェーン自体(つまり、ブロックが順次付加されたパブリック共有台帳)を指すために、用語「ブロックチェーン」を使用している。本開示はまた、ブロックチェーンプラットフォーム及びブロックチェーンネットワークと関連して用語ブロックチェーンを使用している。用語「ブロックチェーンプラットフォーム」は、ブロックチェーンを動作させる全ての構成要素を指すことを意図している。これには、ウォレット、コード、トランザクション、ブロックチェーンネットワーク、及びブロックチェーン自体が含まれる。本開示で使用されるブロックチェーンプラットフォームの例としては、ビットコイン及びイーサリアムが挙げられる。用語ブロックチェーンネットワークが使用されている場合は(例えば、イーサリアムブロックチェーンネットワーク)、それによって、インターネットなどの通信ネットワークを介して相互に通信できるコンピュータがブロックチェーンコードを実行することを意味することが意図されている。ブロックチェーンネットワーク内のコンピュータはノードと呼ばれ、フルノードとは、ブロックチェーン全体のコピーを含む、ブロックチェーンネットワーク内のコンピュータのことである。
【0036】
システム例
図1は、製薬プロセスの現在の操作を監視するための例示的なシステム100を示す。コンピュータシステム100は、スマートコントラクト120と、実行エンジン130と、ブロック142、144、146、及び148を含むブロックチェーン140とを備える。
【0037】
実行エンジン130は、公称操作の状態と状態間の有効なトランジションとを示す、本コンピュータシステムの公称操作の数値表現134を作成する。
【0038】
次に、実行エンジン130は、数値表現へのアクセスを阻止するが暗号化数値表現に対する計算を可能にする暗号化数値表現182を求めるために、準同型暗号化を用いて数値表現134を暗号化する(136)。
【0039】
実行エンジン130は、暗号化数値表現をスマートコントラクトへの第1の入力として用いて、ブロックチェーンプラットフォーム上でスマートコントラクトをプロセスインスタンスとして起動する。プロセスインスタンスとは、ブロックチェーン上でのスマートコントラクトの実行のことである。
【0040】
次に、実行エンジン130は、コンピュータシステムの現在の操作132をプロセスインスタンスへの第2の入力として用いてプロセスインスタンス170を実行し、プロセスインスタンスの実行が、暗号化数値表現182に対する計算を行うことによって出力結果190を生成する。
【0041】
エンジン130は、出力190を、暗号化された表現184であるべき意図した結果に一致させる(138)。出力結果が意図した結果と一致しない場合、エンジン130は、現在の操作が公称操作の範囲外であると判定する。ブロック146及びブロック148に対応してブロックチェーンに格納されている暗号化された表現186及び188についても、同じ判定を行うことができる。
【0042】
プロセスインスタンス170の実行の順序は、数値表現の状態及びトランジションのシーケンスから決定できることに留意すべきである。暗号化数値表現は暗号化されているが、状態及びトランジションの順序は数値表現と同じになる。これは、暗号化された数値に対して、解読される際に数値自体に対して行われる演算と同じである演算を実行できるようにする準同型暗号を利用することによって機能する。
【0043】
方法例
図2は、例示的な方法を示す。本実施例では、本システムは、公称操作の状態と状態間の有効なトランジションとを示す公称操作の数値表現を作成する(210)。次に、システムは、数値表現へのアクセスを阻止するが数値表現に対する計算を可能にする暗号化数値表現を求めるために、準同型暗号を用いて上記の数値表現を暗号化する(220)。
【0044】
次に、本システムは、暗号化数値表現をスマートコントラクトへの第1の入力として用いて、ブロックチェーンプラットフォーム上でスマートコントラクトを作成し(230)、コンピュータシステムの現在の操作をスマートコントラクトへの第2の入力として用いて、スマートコントラクトの実行が、暗号化数値表現に対する上記の計算を行うことによって出力結果を生成する、スマートコントラクトの実行を試みる(240)。ステップ230でのスマートコントラクトを作成することは、スマートコントラクトの実際の文字列を、ブロックチェーンプラットフォームによって使用されるシンタックスで書くことを含んでもよく、またはスマートコントラクトをブロックチェーンプラットフォームに展開することを含んでもよい。
【0045】
最後に、本システムは、スマートコントラクトの実行の出力に基づいて、現在の操作が公称操作の範囲外であると判定する(250)。例えば、スマートコントラクトは、現在の操作が公称操作の範囲外である場合に、スマートコントラクトが例外を発生させるように構成されてもよい。別の実施例では、スマートコントラクトは、現在の操作が公称操作の範囲内にあるときに第1のアドレス(第1の公開鍵)へのトランザクションをトリガし、現在の操作が公称操作の範囲外にあるときに第2のアドレス(第2の公開鍵)へのトランザクションをトリガする。このようにして、本システムは、トランザクションを検査し、操作が公称仕様の範囲外であるかどうかを判定することができる。さらに別の実施例では、スマートコントラクトは、現在の操作が公称仕様内にない限り、全く実行されないように構成されているため、本システムは、スマートコントラクトの実行失敗を検出すると、現在の操作が公称仕様外であることを示すことができる。この意味で、現在の操作が公称仕様外の場合に、本システムは、現在の操作を許可してそれについて報告するか、または適合していない操作を阻止するかのいずれかを行い得る。
【0046】
一般的なシナリオの例
本システムの重要な属性の1つは、スマートコントラクトが有効に実行された場合、実行前にチェックされたスマートコントラクトのプロパティが保持されることである。このことは、異なる関係者がプロセスの異なる部分を実行した場合に、またはプロセスの側面をプロセスにおける他の関係者から隠しておく必要があり、スマートコントラクトの1つ以上のプロパティが適合性、もしくはプライバシの維持などの要件である場合に有利である。つまり、プロセスの適合性は設計期間の間(すなわちプロセスの実行前)にチェックされるが、システムのこの属性により、実行時にプロセスから逸脱していないことを検証することが可能になる。このことをさらに説明するために、ここに1つの実施例を示す。
【0047】
この実施例では、関係者は、サービスを提供したいが、そのようなサービスの詳細を開示しなくて済むようにしたいと考えている。別の関係者は、そのサービスを利用したいが、そのようなサービスが規約に合致していることを確かめたいと考えている。プロセスに参加する各組織は、ブロックチェーンからデータを読むことができるという点で、ブロックチェーン環境の一部である。
【0048】
本システムを使用することで、関係者は、保存されている暗号化されたプロセスの適合性のレベルを検証するようにブロックチェーンに要求することができるが、プロセスの詳細にはアクセスできない。ブロックチェーンを使用すると、準同型暗号の使用の結果として、暗号化されたプロセスの適合性を検証することができる。
【0049】
第2の関係者は、暗号化された入力データを、処理のためにブロックチェーンに送ることができる。結果的に、プロセスの所有者は処理中のデータにアクセスすることができず、ブロックチェーンシステムのどのユーザも同様にデータにアクセスすることができない。準同型暗号の結果、暗号化されたデータの処理が可能である。プロセス出力もまた、暗号化される。
【0050】
データのサービス処理はブロックチェーン上で実行される。選ばれたサービスが用いられたことを検証できるように、実行追跡が提供される(実行追跡は暗号化されているので、実行追跡から詳細を推測することはできない)。ネストされたサービスの適合性要件は、必要に応じて、提供された規約に照らして自動的に検証することができる。
【0051】
追加的要素
図1には、任意選択の追加的要素がいくつかある。これらについて以下にさらに詳しく説明する。
【0052】
プロセス仕様
プロセス仕様110は、プロセスの詳細を含む。プロセス仕様110は、プロセスの状態遷移系の高水準記述であり、これはペトリネットとして表し得る。つまり、プロセスを定義するトランジション、プレース、アーク、及び条件である(下記参照)。状態遷移系として、プレースは次のトランジション(複数可)への条件に対応している。ネット内のプレースのフルセットにわたるトークンの分布(すなわちマーキング)は、状態を表す。アークは、プレースをトランジションに、またはトランジションをプレースに接続する。プロセス仕様110は、スマートコントラクトよりも高水準のプロセスの記述であることが意図されており、これにはプロセスがどのように実行されるかのコード及びロジックが含まれる。
【0053】
メインコントラクト及びサブコントラクト
スマートコントラクト120は、メインスマートコントラクトと1つ以上のサブコントラクトとで構成され得る。メインのスマートコントラクトには、各参加者によって実行されることになるプロセスの記述と、そのプロセスに適用する規定とが含まれる。
【0054】
一実施形態では、スマートコントラクトは、メインコントラクトと1つ以上のサブコントラクトとで構成され得る。メインコントラクトは、プロセスのコレオグラフィを実行するロジックまたはコードに相当する。これらのサブコントラクトは、スマートコントラクトのサブセットであり、1つ以上のより小規模な機能または操作を実行するロジックまたはコードに相当する。場合によっては、サブコントラクトは、単一の操作であってもよい。
【0055】
本開示の実施例では、各トランジションは、別個のスマートコントラクトにキャプチャされ、適切な場合にはメインスマートコントラクトによってトリガされる。これは、多くの場合、メインスマートコントラクトは、読み取られる全てのトランジションに対してサブコントラクトをトリガすることが想定されているためである。しかし、実際には、メインコントラクトとサブコントラクトとの間のロジックまたはコードの分布は、プロセス及び参加者、ならびにプロセスの実行がどのように決定されるかに応じて異なる。例えば、サブコントラクトは非常に複雑な操作のセットであってもよく、ことによると、メインコントラクトよりもさらに一層複雑であり得る可能性がある。大抵の場合、サブコントラクトの一部であるトランジション実行コードがあることに留意すべきである。
【0056】
適合性規定
スマートコントラクトには、規定セットが含まれ得、プロセスは、適合性を判定する目的で、その規定セットと対照して測定されるようになる。これらの適合性規定150は、より多くの規定を含んでもよい。例えば、それらは、会社の方針162もしくは規約164の場合があり、または、単に、様々なレベルの厳格な遵守を要求するガイドラインを定義する規定の場合もある。例えば、制定された個人情報保護に関するガイドライン、仕様、または法令に準拠している企業のプライバシ適合性が懸念される可能性がある。個人を特定できる情報への不正アクセスを保護するように策定された規約が増えているため、プライバシの適合性に対する懸念が高まっている。
【0057】
最初の実行に先立って、スマートコントラクトは、コントラクトに概説されている一連の適合性規定150に従って、適合性エンジン160によって、適合性についてチェックされ得る。プロセスが適合している場合には、それを実行することができる。複数のアウトソーシングプロバイダと共にサービスチェーン全体にわたってプロセスを構成する場合も、同様とする。すなわち、構成の最初の実行に先立って、その構成に適用される(メインスマートコントラクト及び関連するサブコントラクトに含まれている)規定に従い、構成全体の適合性がチェックされる。
【0058】
このチェックは、構成の一部であるスマートコントラクト120(及びサブコントラクト122、124、126、128)と、それらに適用される所与の適合性規定150とに関して、適合性エンジン160を再帰的に適用することを含む。規定に関連するアクティビティのみが明示的に定式化される。中には、スマートコントラクトの適合性に関係のない内容のため、誰にも表示されないものもある。
【0059】
プロセスの適合性は、設計時に、つまりスマートコントラクトが実行される前にチェックされることを意図していることに留意することが重要である。つまり、本システムは、実行中のプロセスインスタンスの適合性を直接的に判定することを提案しているのではない。代わりに、スマートコントラクトの適合性を設計時に判定することができるが、実行時に、プロセスが有効に実行されたと判定し、その結果、したがってスマートコントラクトの適合性が、実行されたプロセスについても当てはまると判定してもよい。
【0060】
これに関連して、健全性、規格適合性、及び適合性の3つの関連する概念があることに留意されたい。スマートコントラクトを介してブロックチェーンに展開されたプロセスの数値表現は、展開されたプロセスが正常である(健全である、プロセスが常に終了し、そのトランジションのそれぞれが潜在的に実行可能であることを意味する)と仮定して、その公称操作のセット内で全ての実行を生成することができる。健全性のチェックは、一般的には展開前に行われる。健全性を前提とすると、スマートコントラクトは失敗することなく必ず実行される(外的要因を除く)。
【0061】
規格適合性チェックとは、ある実行が実際にプロセスの公称操作のセットに属しているかどうかを検証する手順のことをいう。非公式には、この検証は、組織が、第三者の手順を採用している場合に必要とされ、そこからは実行の数値表現のみが返される。組織は、そのような規格適合性チェックを行うことにより、実行が実際に使用したかったプロセスの公称操作に実際に属していることを保証することができる。
【0062】
適合性とは、設計による適合性を意図しており、プロセスの構造に対して検証され、公称操作に属する各実行が、要求された規約を満たしていることを保証する。
【0063】
これらの3つの概念を組み合わせることで、第三者の手順が、いくつかの所与の要件に適合していることを保証することが可能になる。つまり、可能な全ての実行は、規格適合性チェックを通じて、公称操作のセットに属していることを保証できるので、所与の要件に従ことになる。
【0064】
実行エンジン
プロセスインスタンス170は、ブロックチェーン上の実行エンジン130でスマートコントラクトを実行することによって起動され得る。実行エンジン130のためのコード及びロジックの多くは、実行中のプロセスインスタンス170に見られる。スマートコントラクト120がメインスマートコントラクト及びサブコントラクトによって構成される場合、メインスマートコントラクトに対応するプロセスインスタンス170とは異なる、サブコントラクトごとに対応するプロセスインスタンスが存在し得る。
【0065】
以下は、イーサリアムでのプロセスインスタンス170としてスマートコントラクトを実行する実施例である。イーサリアムプラットフォームでは、実行と、コントラクトによってその実行形式でプロセスインスタンス170として提供されるサービスとは、イーサリアムネットワーク自体によって提供される。スマートコントラクトは、ネットワーク全体が存在する限り、プロセスインスタンス170として起動することができ、プロセスインスタンス170が自己破壊するようにプログラムされていた場合にのみ、プロセスインスタンス170は消滅するようになる。デフォルトでは提供されていないが、Solidity(イーサリアム用のスクリプト言語)は、プロセスインスタンス170を強制終了する機能を提供する。
【0066】
実行エンジンは、メインスマートコントラクトで記述されているプロセスのコレオグラフィを実行する。メインコントラクト及びサブコントラクトは、サブコントラクトをプロセスの参加者に割り当てて分布させることができるため、便利であり得る。プロセスの実行中に、参加者は、割り当てられたサブコントラクトを実行することができる。現在の実行状態を表す状態は、プロセスの実行がどのように決定されたかに応じて、参加者によって、またはプロセスインスタンスによってブロックチェーンに書き込まれ得る。
【0067】
イーサリアムでは、スマートコントラクトを実行する前にこれを展開しなければならない。スマートコントラクトをプロセスインスタンスとして展開するには、スクリプトのコンパイル済みコードとアプリケーションバイナリインタフェース(ABI)とが必要である。ABIは、プロセスインスタンス170と相互作用する方法を定義する。APIが、使用されるソースコードのインタフェースを定義するのに対し、ABIは、特定のアーキテクチャに基づく2つ以上のソフトウェア間の低水準バイナリインタフェースを定義する。ABIは、プロセスインスタンスがそれ自体とどのように相互作用するか、プロセスインスタンスがイーサリアムネットワークとどのように相互作用するか、及びプロセスインスタンス170が任意のコードライブラリとどのように相互作用するかを定義する。スマートコントラクトスクリプトをコンパイルするとき、コンパイラは、通常は、コンパイルされたコードとABIとの両方を生成する。
【0068】
実行時に、プロセスの状態がキャプチャされブロックチェーンに保存されるため、アクティビティの順序をさかのぼることができる。プロセスインスタンスとして実行されるスマートコントラクトは、必要に応じてプロセスの状態を操作することができる。したがって、プロセスの参加者は、プロセスの詳細に全くアクセスすることなく、プロセスの自分の部分を実行することができる。
【0069】
ステートフルデータがブロックチェーンに保存され得ることは注目に値する。例えば、プロセスの実行を記録し管理するメインチェーンと、実行中のプロセスインスタンスのステートフルデータをキャプチャする1つ以上のサイドチェーンとが存在し得る。サイドチェーンが使用されている場合、プロセスインスタンスの実行が終了するとすぐに、ステートフルデータが破棄される。
【0070】
サブコントラクトの例
図3は、サブコントラクトを用いる例示的なシナリオを示す。本実施例では、参加者は、参加者1、310、参加者2、320、参加者3、330、参加者4、340の4人である。各参加者は、サブコントラクトを実行するために割り当てられたノードに関連付けられている。参加者1、310は、サブコントラクト122を実行するように割り当てられ、参加者2、320は、サブコントラクト124を実行するように割り当てられ、参加者3、330は、サブコントラクト126を実行するように割り当てられ、参加者4、340は、サブコントラクト128を実行するように割り当てられる。メインスマートコントラクト120は、サブコントラクトのそれぞれが実行されるためのトリガを含んでいる。トリガは、参加者が関連するサブコントラクトを実行できることを示している。
【0071】
ブロックチェーンシステムが機能する仕組みを考えると、サブコントラクトは、ブロックチェーン上でそれ自体のプロセスインスタンスとして実行され得る。サブコントラクトプロセスインスタンスは、関連する参加者からのメッセージを待つだけで、その後の実行のためにメインプロセスインスタンスに戻ることができる。この意味で、サブコントラクトプロセスインスタンスは、トランジションが発生し、状態の変化がブロックチェーンに反映されることを単に保証してもよいが、参加者は、プロセスの適切な実行の範囲内に収まる任意の量のコードをオフチェーンで実行してもよい。例えば、参加者1は、プライベートデータを特定できないようにすることを要求する適合性規定に従う編集済みのプライベートデータを返すことを伴うタスクが割り振られることがあるが、プライベートデータの編集をどのように行うかは参加者1に任されている。
【0072】
サブコントラクトを用いる実行の例
図4は、上記の実行がどのように行われ得るかについてのシーケンス図を示す。実行エンジン120は、スマートコントラクトをプロセスインスタンス170として実行し得る(402)。スマートコントラクトの各トランジションには、トリガが関連付けられている。この場合は、第1のトランジションは、参加者310をトリガして(404)、サブコントラクト122を実行させる(406)。サブコントラクト122の実行が行われると、これにより、参加者320がサブコントラクト124を実行する(410)ようにトリガされる(408)。同様に、124の実行が完了すると、参加者330がサブコントラクト126を実行する(414)ようにトリガされる(412)。126の実行が完了すると、サブコントラクト128の実行がトリガされる。
【0073】
このサブコントラクトが実行を完了すると、トリガ420は、実行が完了したことを参加者330に示す。同様に、トリガ422は、実行が完了したことを参加者320に示し、これにより、次に参加者310が、実行が完了したことを示すようにトリガされる。最後に、参加者310は、プロセスが完了したことを実行エンジン120に示す。
【0074】
上記の実施例は、サブコントラクトの実行が行われ得る1つの方法のみを示している。別の実施例では、実行エンジンは、参加者自身ではなく、参加者の各々をトリガしてもよい。
【0075】
数値表現
形式的には、状態遷移系とは、ペア(S,→)のことである。ただし、Sは状態のセットであり、→は状態トランジションのセット(すなわち、S×Sのサブセット)である。状態pから状態qへのトランジション(すなわち(p,q)∈→)は、p→qと記述される。ラベル付きトランジションの系とは、タプル(S,Λ,→)のことである。ただし、Sは状態のセット、Λはラベルのセット、→はラベル付きトランジションのセット(すなわち、S×Λ×Sのサブセット)である。これにより、ラベルα付きの状態pから状態qへのトランジションがあることが表される。ラベルは、異なる物事を表し得る。ラベルの代表的な使用法には、予想される入力、トランジションをトリガするために真でなければならない条件、またはトランジション中に実行されるアクションを表すことが含まれる。
【0076】
公称操作は、ペトリネットで表され得る。ペトリネットは、プレースとトランジションとで構成されるノードを持つ有向バイグラフである。プレースは条件を表す。ネット内のプレースのフルセットにわたるトークンの分布は、状態を表す。遷移系におけるトランジションは、ある状態から次の状態への移行を表す。ペトリネットでは、トランジションがタスクを表す場合があり、またはトランジションは「サイレント」(「タウ」トランジション)である場合がある。これは、「サイレント」は、タスクには対応しないが、特定の制御フローを強化するために使用されることを意味する。このようなタスクの実行は、新しい状態をもたらし、これは新しいマーキングによって表される。ペトリネットは状態遷移系に変換することができ、その逆も可能である。
【0077】
ラベル付けされたペトリネットはタプル(P,T,A,λ)によって定義され得る。ただし、Pはプレースのセットであり、Tはトランジションのセットであり、したがって
【数1】
であり、
【数2】
はアークのセットであり、
【数3】
はラベル付け関数であり、Lはラベルのセットである。トランジションは、その対応するラベルがτの場合に、サイレント(内部の観測不可能なシステム挙動を表す)と呼ばれる。ペトリネット状態は、ネットマーキングM:P→N
0とも呼ばれ、各プレースp∈qを自然数(つまり、プレーストークン)に関連付ける関数である。ラベル付きのマーキングされたネットN=(P,T,A,λ,M
0)は、初期のマーキングM
0と共にペトリネット(P,T,A,λ)である。
【0078】
プレース及びトランジションはノードと呼ばれる。ノードのプリセットは
【数4】
で表し、ノードのポストセットは
【数5】
で表す。A
+及びA
*は、それぞれAの非反射的及び反射的推移閉包を表す。
【0079】
ペトリネットの実行のセマンティクスは、以下のようにマーキングの観点から定義される。
【数6】
の場合は、tは有効であると言われる。
【数7】
で表されるtの発火は、新しいマーキングM’を引き起こし、
【数8】
の場合はM’(p)=M(p)-1、
【数9】
の場合はM’(p)=M(p)+1、それ以外の場合はM’(p)=M(p)である。マーキングM
nは、
【数10】
のようなトランジション発火のシーケンスσ=t
1t
2...t
nが存在する場合に、Mから到達可能であると言われる。ネットのマーキングMは、
【数11】
ならばnセーフである。ペトリネットNは、その到達可能なマーキングが全てnセーフであればnセーフである。本開示では、1セーフネットを使用している。
【0080】
プリセット及びポストセットを以下のように数値に変換することで数値表現が得られる。プロセスインスタンスの任意の時点で、プレース上へのトークンの分配は実行の状態を表す。したがって、プロセスインスタンスのプロセス状態は、スマートコントラクトに相当する、ペトリネットのマーキングを表す暗号化された整数としてブロックチェーンに格納される。
【0081】
ペトリネットを利用することの1つの結果として、各状態が、基となるペトリネットの知識がなければ無意味である整数に変換されるので、基となるプロセスが(例えば、権原のない関係者によって)不明な場合には、状態自体をリバースエンジニアリングすることができないことが挙げられる。
【0082】
ペトリネットの重要な側面の1つは、トークンの分布(すなわちマーキング)を数値的に表し得ることである。一実施例では、数値表現は、1としてマークされているプレースと、0としてマークされていないプレースとの2進表現であってもよい。
【0083】
図5aは、ブロックチェーン上で実行することができるペトリネットの一実施例である。この実施例では、いくつかのプレース508、510、512、514、516、518、520、522、及び524がある。状態508が最初のプレースであり、状態524が最後のプレースである。
図5aに示すように、状態510、512、514、516は、プレース518、520、及び522に並行して実行のブランチを形成する。いくつかのトランジション530、532、534、536、538、540、及び542もまた存在する。このアプローチの目的は、ブロックチェーン上の後続のプレース(すなわちペトリネットのマーキング)の経過を追い、プロセスに精通している者であれば、任意の時点でペトリネットの状態を識別できるようにし、他者には識別できないようにすることである。つまり、プロセスのプライバシを維持することができる。
【0084】
図5bは、マーキングを整数に変換する方法の実施例である。
図5bは、プレースの昇順の順序を示す。各プレースは、ビット配列中のビットで表される。プレースがトークンを含む場合は常に、対応するビットが1に設定され、それ以外の場合は0に設定される。したがって、ペトリネット5aでの実行が現在{512,518}の状態であった場合、これは36に等しい整数に対応することになる。ただし、プレースが昇順の場合には、基となるプロセスを実際に知らなくても、いくつかの状態を簡単に識別できる。例えば、状態1が初期状態を示し、256を超える状態が観測されなければ、256は最終状態を表す。これを解決するために、
図5cでは、プレースに対応するビットの順序をランダム化して、ビット変換をどの状態についても特定のアクティビティの実行に対してリバースエンジニアリングできないようにする。この実施例では、マーキング{512,518}は、5に等しい整数に対応する。
【0085】
状態変化の検査
より複雑な別形では、スマートコントラクトにおけるプロセスの実行状態が行列として表され得る。
図8aは、例示的な行列を示す。この行列は、トランジションへの入力プレースである全てのトランジションプリセットを表す。
図8bは、トランジションへの出力プレースである全てのトランジションポストセットを表す。このようにして行列を利用することで、どのプレースがトランジションの有効な出力プレースであるか、したがってプロセスの実行が有効な順序で行われたかどうかを判定することができる。行列の各列は、行列内の0ではなく1を使用することにより、どのプレースがトランジションのプリセット内にあるかを示すだけなので、プロセスの「状態」を参照していないことに留意されたい。プリセット内の全てのプレースでは、トランジションを有効にするためにトークンを必要とする。しかし、あるトランジションTが有効にされている(すなわち実行できる)場合、トークンを持つプレースはさらに多く存在する可能性がある。これらのプレースはTのプリセットにはないので、Tの有効化及び発火には関係がない。プリセットが(部分的に)同時に「埋められる」複数のトランジションが存在する可能性がある。これにより、ブロックチェーン上の後続の実行が有効なものであるかどうか(すなわち、ペトリネットによって許可されているかどうか)を識別できるようになる。
【0086】
現在、実行の状態が、状態S
1{512,518}であるとする。現在の状態を反映したマーキングを表す状態ベクトル
V
s1=[0,0,1,0,0,1,0,0,0]
を生成することができる。この状態で有効なトランジションのセットは、状態ベクトルにより、
図6aの各列の2項演算を行うことによって決定され得る。トランジションベクトル
V
T1=[0,0,1,0,1,0,0]
は、状態S
1で有効にされているトランジションT
1{534,538}を表す。
【0087】
上記のように、プロセス仕様110は、プロセスの有効な状態及びトランジションを定義し得るものであり、プロセス仕様110は、プロセスの実行を検査するのに用いられ得る。つまり、プロセスの実行の状態のそれぞれが、プロセス仕様110の有効状態の範囲内にあるかどうか、及び対応する状態の有効なトランジションのそれぞれが、プロセス仕様110の正当に有効にされたトランジションであったかどうかである。
【0088】
後続の状態のペアが有効なトランジションによるものかどうかを識別するために、次のチェックを行うことができる。状態S
2は、S
1の後の次の状態を表すベクトル
V
s2=[0,0,1,0,0,0,0,1,0]
によって表される。
図6bのようなポストセットは、S
1とS
2との間で実行されたトランジションのポストセットを決定するために使用され得る。続いて、新しい状態S
2を得るために実行されたトランジションのセットを決定することができる。実行されたトランジションのセットがT
1と一致しない場合は、状態S
1から状態S
2への移行は、プロセス仕様110によって許可されなかった1つ以上のトランジションの実行を構成する。
【0089】
準同型暗号
準同型暗号は、暗号文での計算を可能にする暗号化の一形式であり、解読されたときに、操作が平文に対して行われたかのように、操作の結果と一致する暗号化された結果を生成する。準同型暗号化の目的は、暗号化されたデータの計算を可能にすることである。
【0090】
本開示では、プロセス状態がプロセスの所有者には利用可能であるが、プロセスの他の参加者には利用できないように、準同型暗号でプロセス状態が暗号化されることが好ましい。
【0091】
図7は、準同型暗号が機能する方法の説明図を表す。数値表現710は、暗号化数値表現720に暗号化する(712)ことができる。暗号化数値表現720に対して操作714が行われて、変更された暗号化数値表現730がもたらされ得る。変更された暗号化数値表現730は、数値表現710に対して同じ操作714が行われることに相当する出力740をもたらすように、解読する(716)ことができる。
【0092】
図7において、点線750は、数値表現のパブリック共有のための境界を表す。つまり、暗号化数値表現720及び修正された暗号化数値表現730を、公に共有することができる。さらに、暗号化数値表現720を、公然と変更する(714)こともできる。本開示では、暗号化すること、及び変更することができるのはプロセスの状態である。つまり、プロセスの状態は、プロセスの実行中に変化することがあるが、プロセスまたはプロセス状態そのものの詳細を明らかにすることはない。暗号化数値表現を解読する能力を有する参加者のみが、プロセスまたはプロセス状態の詳細を判別することができる。
【0093】
本開示で考慮される準同型暗号には、加法準同型、乗法準同型、及び完全準同型の3つのタイプがある。加法準同型暗号は、操作714が加算操作である場合である。同様に、乗法準同型暗号は、操作714が乗算操作である場合である。完全準同型暗号は、操作714が任意である場合である。基本的な操作だけで状態を別の状態に簡単に変更できる方法を考えると、必要なものは加法準同型暗号のみとなる。ただし、乗法準同型暗号及び完全準同型暗号も同様に機能するはずである。
【0094】
参加者の例
プロセスの各参加者は、ブロックチェーンシステムとインタラクトすることができるコンピュータノードを必要とする場合がある。そのようなコンピュータノードの1つを
図8に示す。このノードは、バス804を介して互いに通信するプロセッサ802、メモリ810、ブロックチェーンインタフェースデバイス806、及びネットワークインタフェースデバイス807を含む。メモリは、
図1~
図7を参照して説明したシステム及びプロセスのための命令812、814、及び816、ならびにデータを格納し、プロセッサは、メモリからの命令を実行して、プロセスを実施する。
【0095】
プロセッサ802は、メモリ810に格納された命令を実行する。プロセッサ802は、ネットワークインタフェースデバイス806から、ブロックチェーン上の状態の変化を判定することによって、トリガを受け取る。プロセッサ802は、命令モジュール812に従って命令を決定し、この命令は、サブコントラクトを実行すること、またはプロセスインスタンス170と通信するための機能を実行することを含み得る。プロセッサは、データをブロックチェーンに格納するために、ストレージモジュール814内の命令を実行し得る。プロセッサ802は、ブロックチェーンを利用する必要なしに他の参加者とインタフェースするためのインタフェース807と通信するために、インタフェースモジュール816内に格納された命令を実行し得る。
【0096】
更なる実施例
以上の通り、プロセス状態は、ビットセットなどの数値表現として表される。各後続の(ペトリネットのマーキングとして表される)プロセスの状態は、プロセスの実行を監視できるように、プロセッサ802によって作成されたスマートコントラクトの形式でブロックチェーンに保存される。基となるプロセスが(例えば、権原のない関係者によって)不明な場合には、状態自体をリバースエンジニアリングすることができないことを保証するために、各状態が、基となるペトリネットの知識がなければ無意味である(数値表現の一部でもある)整数に変換される。
【0097】
図9aは、ブロックチェーンで実行されるプロセスの公称(すなわち適合した)操作を表すペトリネットの実施例を示す。ここでの課題は、ブロックチェーン上の後続の状態(すなわちペトリネットのマーキング)の経過を追い、プロセスに精通している(すなわち暗号化されていないデータにアクセスできる)者であれば、任意の時点でペトリネットの状態を識別できるようにし、他者(すなわち暗号化されていないデータにアクセスできない者)には識別できないようにすることである。さらに、目的は、鍵配布の問題を回避することであり、本方法では状態自体の暗号化が控えられることを意味する。したがって、所与のペトリネットマーキングを、整数の形式の数値表現に変換する方法が、本明細書に開示されており、この数値表現は、基となるプロセスの知識がなければ、後続のプロセスステップを導出するために使用することができず、またはプロセスの実際のステータスを導出するために使用することさえもできない。
【0098】
図9bは、マーキングを整数に変換することができる方法を説明するための例示的なマーキングを示す。
図10aは、プレースの昇順の順序を示す。各プレースは、ビット配列中のビットで表される。プレースがトークンを含む場合は常に、対応するビットが1に設定され、それ以外の場合は0に設定される。したがって、図示されているマーキング{p
3,p
6}は、36に等しい整数に相当する。ただし、プレースが昇順の場合には、基となるプロセスを実際に知らなくても、いくつかの状態を簡単に識別できる。例えば、状態1が初期状態を示し、256を超える状態が観測されなければ、256は最終状態を表す。これを解決するために、
図10bでは、プレースに対応するビットの順序をランダム化して、ビット変換をどの状態についても特定のアクティビティの実行に対してリバースエンジニアリングできないようにする。この実施例では、マーキング{p
3,p
6}は、5に等しい整数に対応する。
【0099】
以下の表1は、
図10bの変換に基づいた、ペトリネットの実行の後続のマーキングの例を、対応する状態表現と共に示す。実行〈A,B,C,E,D,F,G〉の後続の状態の配列は、[32,20,5,68,66,258,384]となる。
【表1】
表1
【0100】
CとEとの実行が入れ替わると、次の表2に示すように、後続の状態の配列は[32,20,5,3,66,258,384]となる。1つの状態のみが異なることに留意されたい。さらに、「不可能な」状態、すなわち、基になるペトリネットによって許可されていないマーキング(例えば{p
2})を構成する状態をチェックすることが容易になる。
【表2】
表2
【0101】
以下の説明は、プロセスの実行をシミュレートするためのビットセット操作を提供する。その結果、ビットセット操作をブロックチェーン上のスマートコントラクトとしてエンコードすることができる。
図11は、
図9aに示されたプロセスの行列表現を示す。列はトランジションを表し、そこで1は、どのプレース(行)が各トランジションのプリセットまたはポストセットにあるかを示す。
【0102】
部分行列Aは全てのプリセットを示すのに対し、部分行列Bはポストセットを示す。次の表に示す、ある時点でのプロセスの状態を表す状態ベクトルCについて考えてみる。つまり、ベクトルCは、C及びEが有効にされているマーキングを表す。
【表3】
表4
【0103】
続いて、状態ベクトルCによるAの各列iに対する2項演算により、次のように有効化されたトランジションのセットEが生成される。
【数12】
【0104】
次の表は、状態Cにおける有効化されたトランジションを示すベクトルEを示す。
【表4】
表5
【0105】
続いて、E×{A,B,C,D,E,F,G}は、有効なトランジションを示すセット{C,E}を返す。トランジションt
iが発火するたびに、新しい状態C’が次のように定義される。すなわち、
【数13】
である。表4及び表5では、プレース及びトランジションのラベルは、それぞれのベクトルにはないので、読みやすさのためだけに示されていることに留意されたい。
【0106】
後続の状態のペアが有効なトランジションによるものかどうかを識別するために、次のチェックを行うことができる。表4のCに続く、後続の状態C
2(表6に示す)があるとする。
【表5】
表6:ベクトルC
2
【0107】
ここから、プロセッサ802は、
【数14】
を計算して、CとC
2との間で実行されたトランジションのポストセットを表すプレースのセットを取得することができる。
【数15】
である。
【表6】
【0108】
次に、プロセッサ802は、新しいマーキングを取得するために発火されたトランジションのセット
【数16】
を取得する。
【数17】
これは、AとBに格納されているプロセスの数値表現が、上記の方程式をエンコードするスマートコントラクトの計算への入力として使用されることを意味する。より具体的には、上記の式(したがってスマートコントラクト)は、現在の状態ベクトルC
2(これは
【数18】
の計算に使用される)と公称ベクトルB
iとに基づく2進AND演算を含む。同様に、計算もまた、以前の状態ベクトルCに基づいている。
【0109】
最後に、
【数19】
の場合、CからC
2への移行は、プロセス仕様によって状態Cで許可されなかった1つ以上のトランジションの実行を構成する。E及び
【数20】
を取得するための式は、基となるペトリネットが健全であり、より具体的には、空のプリセットまたはポストセットを持つトランジションがないことを前提としていることに留意されたい。つまり、
【数21】
である。
【0110】
プリセットとポストセットとが一致するトランジション
上記の状態変換方法は、全てのトランジションが一意のプリセット及びポストセットのペアがある実施例で有効に機能する。つまり、
【数22】
となる2つのトランジションt
i及びt
jは存在しない。しかし、
図12aは、単純なXOR分割とそれに続くXOR結合とが、既にこの仮定に違反している実施例を示しており、この場合、AとBとが同じプリセット(すなわちp
1)と同じポストセット(すなわちp
2)との両方を共有している。
【0111】
その結果、マーキング{p
1}から{p
2}への状態トランジションでは、Aが実行したかBが実行したかの情報は全く提供されない。この問題は、各排他的ブランチにいわゆるサイレントまたはτトランジションを追加して、表示される各トランジション(すなわちA及びB)に一意のポストセットを持たせることで解決することができる。
図12b4は、このアイデアをグラフで示しており、ここでは
【数23】
及び
【数24】
である。
【0112】
本開示の広範な一般的範囲から逸脱することなく、多数の変形及び/または修正が、上記の実施形態に行われ得ることは、当業者には理解されよう。したがって、本実施形態は、全ての点で例示的であり、限定的ではないと見なされるべきである。
【0113】
本開示の広範な一般的範囲から逸脱することなく、多数の変形及び/または修正が、上記の実施形態に行われ得ることは、当業者には理解されよう。したがって、本実施形態は、全ての点で例示的であり、限定的ではないと見なされるべきである。