(57)【要約】  本発明は、ブロックチェーンなどの電子台帳を使用して実装される、コンピュータ実装方法及び対応するシステムを提供する。これはビットコインブロックチェーンであっても良いし、なくても良い。本発明は、タスク又はプロセスの実行を、実装、実行及び／又は制御するために使用できる。本発明による方法は、値を含む少なくとも１つの署名されたインプットと、少なくとも１つの修正可能なアウトプットを含むブロックチェーントランザクションを生成するステップを含む。本発明は、署名されたインプットから値を抽出するステップと、結果を取得するためにロジックの一部に値を提供するステップと、トランザクションのアウトプットを修正するために結果を使用するステップとをさらに含む。トランザクションは、ロジックの一部の実行及び／又は結果の記録及び／又は表現を提供する。署名されたインプットは、アンロッキングスクリプトを使用してトランザクションに提供される。少なくとも１つのインプットは、インプットを修正不可能にする署名ハッシュタイプを使用して署名される。これは、署名ハッシュタイプＳＩＧＨＡＳＨ＿ＮＯＮＥでも良い。トランザクションは、少なくとも１つの署名されていないインプットをさらに含んでも良い。署名されていないインプットは、アウトプットが修正された後に署名されても良い。署名されていないインプットは、トランザクション全体の修正を防ぐ署名ハッシュタイプを使用して署名することができ、署名ハッシュタイプは、ＳＩＧＨＡＳＨ＿ＡＬＬでも良い。さらに値は、署名されたインプットに関連した公開鍵に組み込むことができ、ロジックの一部に値を提供するために公開鍵から抽出できる。ロジックの一部は、ＡＮＤ、ＮＯＴ、ＯＲ、ＮＯＲ、ＸＯＲ、ＩＭＰＬＹ、ＮＡＮＤ、ＮＯＮＩＭＰＬＹ又はＸＮＯＲのゲートなどのロジックゲート又はゲートの組み合わせの機能を実装するように構成することができる。それ故に、本発明は、ブロックチェーンを使用するタスクを実装するための非常に用途が広く、役に立つ技術的なアプローチを提供する。
2019526192.tif 000002
【特許請求の範囲】
【請求項１】
ロジックの一部を実行するコンピュータ実装方法であって、
値を含む少なくとも１つの署名されたインプットと、少なくとも１つの修正可能なアウトプットと、を含むブロックチェーントランザクションを生成するステップと、
前記署名されたインプットから前記値を抽出し、結果を得るためにそれをロジックの一部に提供するステップと、
前記トランザクションが前記結果を表現するように前記トランザクションの前記アウトプットを修正するために前記結果を使用するステップと、
を含む、ロジックの一部を実行するコンピュータ実装方法。
【請求項２】
ロジックの前記一部が、前記トランザクション及び前記ブロックチェーンのうちの１つ又は両方の外にある、請求項１に記載の方法。
【請求項３】
前記トランザクション及び前記ブロックチェーンの１つ又は両方の外部にあるコントローラは、前記結果を取得するためにロジックの前記一部を前記抽出された値に適用し、前記結果に基づいて前記トランザクションの前記アウトプットを修正するために前記トランザクションと通信する、請求項１又は２に記載の方法。
【請求項４】
ロジックの前記一部は、前記トランザクション及び前記ブロックチェーンの１つ又は両方の外部にあるシステムを表現し、前記方法は、前記トランザクションの前記修正されたアウトプットに基づいて、前記外部システムの状態を修正することをさらに含む、請求項１乃至３のいずれか１項記載の方法。
【請求項５】
ロジックの前記一部が、ロジックゲートの機能を実行するように構成される、請求項１乃至４のいずれか１項記載の方法。
【請求項６】
前記ロジックゲートは、ＡＮＤ、ＮＯＴ、ＯＲ、ＮＯＲ、ＸＯＲ、ＩＭＰＬＹ、ＮＡＮＤ、ＮＯＮＩＭＰＬＹ又はＸＮＯＲゲートである、請求項５に記載の方法。
【請求項７】
前記トランザクションをブロックチェーンに提出するステップをさらに含む、請求項１乃至６のいずれか１項記載の方法。
【請求項８】
前記署名されたインプットは、アンロッキングスクリプトを使用して前記トランザクションに提供される、請求項１乃至７のいずれか１項記載の方法。
【請求項９】
前記少なくとも１つのインプットは、前記インプットを修正不可能なものにする署名ハッシュタイプを使用して署名される、請求項１乃至８のいずれか１項記載の方法。
【請求項１０】
前記署名ハッシュタイプは、ＳＩＧＨＡＳＨ＿ＮＯＮＥである、請求項９に記載の方法。
【請求項１１】
前記トランザクションは、少なくとも１つの署名されていないインプットをさらに含む、請求項１乃至１０のいずれか１項記載の方法。
【請求項１２】
前記アウトプットが修正された後に、前記署名されていないインプットに署名するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記署名されていないインプットは、前記トランザクション全体の修正を防ぐ署名ハッシュタイプを使用して署名される、請求項１２に記載の方法。
【請求項１４】
前記署名ハッシュタイプは、ＳＩＧＨＡＳＨ＿ＡＬＬである、請求項１３に記載の方法。
【請求項１５】
前記値は、前記署名されたインプットに関連する公開鍵に組み込まれ、それをロジックの前記一部に提供するために前記公開鍵から抽出される、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１６】
プロトコルを確立し及び／又は選択し、前記公開鍵に前記値を組み込む前記プロトコルを使用するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記公開鍵が、中間ブロックチェーントランザクションでロッキングスクリプトを作成するために使用される、請求項１５又は１６に記載の方法。
【請求項１８】
前記中間トランザクションをブロックチェーンに提出するステップをさらに含む、請求項１７に記載の方法。
【請求項１９】
新しい公開鍵Ｐ’を生成することによって、前記値は、前記公開鍵に組み込まれ、
【数２０】
2019526192.tif 000047
であり、
ここで、
Ｐは、ベース又は初期の公開鍵であり、
Ｇは、ｓｅｃｐ２５６ｋ１などの楕円曲線関数であり、
ｘは、スカラによる楕円曲線乗算を示し、
【数２１】
2019526192.tif 000048
は、楕円曲線加算を示す、
請求項１５乃至１８のいずれか１項記載の方法。
【請求項２０】
前記新しい公開鍵に対応する新しい秘密鍵を生成するステップをさらに含み、ここで、
新しい秘密鍵Ｖ’＝Ｖ＋ＨＡＳＨ（ｖａｌｕｅ（値）＋Ｓ）
である、請求項１５乃至１９のいずれか１項記載の方法。
【請求項２１】
前記公開鍵に組込まれた前記値は、指定された範囲の値から選択される、請求項１５乃至２０のいずれか１項記載の方法。
【請求項２２】
請求項１乃至２１のいずれか１項記載のステップを実行するように構成された少なくとも１つのコンピュータベースリソースと、
ブロックチェーンと、
を含む、コンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般に分散型台帳技術（distributed  ledger  technology）（ブロックチェーン関連技術（blockchain  related  technologies）を含む）に関連し、具体的には、タスク又はプロセスの実行、制御及び／又は自動化におけるブロックチェーンの使用に関連する。ロジックの一部の実行を記録する又は表現するブロックチェーン又は関連技術の使用にも関連し得る。ロジックのこの部分は、ＡＮＤ、ＸＯＲ、ＮＯＴ、ＯＲなどの１つのロジックゲート又は複数のロジックゲートの機能を実装するように構成されても良い。
【０００２】
この文脈において現在最も広く知られているので、便宜上及び参照の容易のために用語「ブロックチェーン（blockchain）」を本明細書で使用することに留意することは重要である。しかしながら、この用語は、本明細書（請求項を含む）において、ブロックチェーン、トランザクションチェーン技術、許可及び不許可の台帳（permissioned  and  un-permissioned  ledgers）、共用台帳（shared  ledgers）及びこれらの変形に限定されず含まれる、あらゆる形態の電子、コンピュータベースの分散型台帳を含むように使用される。
【０００３】
ブロックチェーンは、電子台帳であり、トランザクションを順番に構成するブロックを構成するコンピュータベースの非中央集権化された分散システムとして実装される。各トランザクションは、少なくとも１つのインプットと少なくとも１つのアウトプットを含む。ブロックは、共にチェーンを構成し、その開始のときからブロックチェーンに書き込まれてきたすべてのトランザクションの永続的で、不変の記録を作成するように、各ブロックは、前のブロックのハッシュを含む。トランザクションは、それらのインプット及びアウトプットに組込まれたスクリプトとして知られる小さいプログラムを含み、それは、トランザクションのアウトプットにいかに及び誰によってアクセスできるかを指定する。ビットコインのプラットフォーム上で、これらのスクリプトは、スタックベースのスクリプト言語を使って書かれている。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、「認証され（validated）」されなければならない。ネットワークノード（マイナー）は、無効なトランザクション（invalid  transactions）がネットワークから拒否された状態で、各トランザクションが有効（valid）であることを保証するために、ワーク（work）を実行する。ノードにインストールされたソフトウェアクライアントは、ロッキングスクリプト（locking  scripts）及びアンロッキングスクリプト（unlocking  scripts）を実行することによって未使用トランザクション（ＵＴＸＯ：unspent  transaction）上でこの認証ワークを実行する。ロッキングスクリプト及びアンロッキングスクリプトの実行が、真（ＴＲＵＥ）と評価された場合、トランザクションは有効であり、トランザクションがブロックチェーンに書き込まれる。
【０００５】
他のブロックチェーン実装も提案され、開発されてきたが、ブロックチェーン技術で最も広く知られているアプリケーションはビットコイン台帳である。便宜及び説明の目的で、本明細書では、ビットコインが参照されるが、本発明は、ビットコインブロックチェーンでの使用に制限されず、代替のブロックチェーン実装も本発明の範囲に含まれることに留意すべきである。
【０００６】
ブロックチェーン技術は、暗号通貨実装での使用に対して最も広く知られている。しかしながら、最近では、デジタル起業家が、新しいシステムを実装するために、ビットコインに基づく暗号通貨セキュリティシステム及びブロックチェーンに記録できるデータの両方の使用を調査し始めている。暗号通貨の領域に限定されず、自動化制御プロセスなどのタスク及びプロセスに対して、ブロックチェーンが使用できるならば、とても有利であるだろう。そのようなソリューションは、ブロックチェーンの利益を活かすことができるだろうし（例えば、永続的な、イベントの改ざん防止記録、分散処理など）、一方、これらのアプリケーションにおいてより多目的である。
【０００７】
そのような改良されたソリューションが現在考案されてきている。それ故、本発明にしたがう添付請求項で規定されるシステム及び方法が提供される。
【０００８】
したがって、本発明にしたがうと、ロジックの一部を実行するコンピュータ実装方法が提供され得る。加えて、又は代わりに、本発明は、制御方法として説明されても良い。それは、ハードウェアリソース及び／又はソフトウェアリソースの動作を制御することができる。コンピュータ実装プロセスの実行を制御することができる。加えて、又は代わりに、方法は、ロジックの一部の実行、又は実行の結果を記録し又は表現するためにブロックチェーンを使用することに関する技術的なメカニズムを提供することができる。
【０００９】
方法は、以下のステップを含んでも良い：
以下を含むブロックチェーントランザクションを生成するステップと：
値を含む、少なくとも１つの署名されたインプットと、
少なくとも１つの修正可能なアウトプットと、
署名されたインプットから値を抽出し、結果を取得するためにその値をロジックの一部に提供するステップと、
トランザクションのアウトプットを修正するために結果を使用するステップ。
【００１０】
トランザクションが結果を表現するようにアウトプットを修正するように、結果を使用することができる。トランザクションは、ロジックの一部の実行の記録（record）を提供することができる。この記録は、ブロックチェーンに記憶しても良い。それは、実行の結果の記録を提供しても良い。実行に関連するパラメータを含む記録を提供しても良い。
【００１１】
用語「ブロックチェーン（blockchain）」は、ブロックチェーン及びトランザクションチェーン、アルト・チェーン、許可及び不許可台帳、共用台帳及びそれぞれの様々な変更例を含む、電子的な、コンピュータベースの分散型台帳のすべての形態を含むことを意図する。
【００１２】
ロジックの一部（portion  of  logic）は、コンピュータ実装プロセスでも良い。指定したタスクを実行するように構成されても良い。
【００１３】
ロジックの一部は、トランザクションとブロックチェーンの一方又は両方の外部にあり得る。その上、コントローラ（すなわち、トランザクションの所有者及びインプットが署名された後でトランザクションのアウトプットを更新できる唯一のエンティティ）は、トランザクションとブロックチェーンのうちの１つ又は両方の外にあっても良い。外部コントローラは、結果を取得するためにロジックの一部を抽出された値に適用し、結果に基づいてトランザクションのアウトプットを修正するためにトランザクションと通信することができる。ロジックの一部は、トランザクションとブロックチェーンのうちの１つ又は両方の外部にあるシステムを表現することができ、方法は、トランザクションの修正されたアウトプットに基づいたシステムの状態を修正することをさらに含む。このように、本発明は、その結果、ブロックチェーンの機能性及びセキュリティを外部システムに拡張することによって、外部（「ブロック外（off-block）」）ロジックシステムを実装し、又はその状態を少なくとも記録するブロックチェーンシステムの固有のセキュリティを活用することを予見することができる。
【００１４】
外部システム（external  system）は、ブロックチェーンの外部にある任意のシステムであり得、その機能は、例えば、数学的な関数、アルゴリズム、又は１つ又は複数のロジックゲートの機能のようなロジックの一部に要約することができる。そのようなシステムは、一般に１つ以上のインプットを持ち、１つ以上のアウトプットを生成するためにインプット上で１つ以上の動作を実行する。
【００１５】
本発明の実施形態は、そのようなシステムのコントローラがシステムの制御の中にとどまり、システムは、他のエンティティからの攻撃（例えば、ハッキング）に対してロバストである。ブロックチェーンの視点から、本発明の少なくともある実施形態によって解決される技術的な問題は、外部の「ブロック外（off-block）」システムを制御するためにブロックチェーンシステムの固有のセキュリティをいかに活用するかである。外部システムの視点からは、本発明の少なくともある実施形態によって解決される技術的な問題は、第三者からのハッキング攻撃に対してロバストになるように外部システムのセキュリティをいかに向上させるかである。
【００１６】
本発明に適用できる外部システムの例が、本明細書で説明され、それは、トレーディングプラットフォーム、電子錠、乗り物制御システム、センサ、照明システム、暖房／冷房システム、警報システム、及び工業生産システムを含む。しかしながら、これらは非包括的なリストを表現し、本発明の実施形態は、原理上、ブロックチェーンシステムの機能性の任意の外部システムへの導入に適用でき、この外部システムは、１つ以上のインプット、インプット上の１つ以上の動作、及び１つ以上のアウトプットによって表現できる点に留意することは重要である。
【００１７】
ロジックの一部は、１つ又は複数のロジックゲートの機能を実行するように構成することができる。ロジックゲートは、ＡＮＤ、ＮＯＴ、ＯＲ、ＮＯＲ、ＸＯＲ、ＩＭＰＬＹ、ＮＡＮＤ、ＮＯＮＩＭＰＬＹ又はＸＮＯＲゲートでも良い。
【００１８】
方法は、トランザクションをブロックチェーンに提出する（submitting）ステップをさらに含む。署名されたインプットは、アンロッキングスクリプトを使用してトランザクションに提供しても良い。少なくとも１つのインプットは、インプットを修正不可能な状態にする（render）署名ハッシュ（シグネチャハッシュ：signature  hash）タイプを使用して署名されても良い。署名ハッシュタイプは、ＳＩＧＨＡＳＨ＿ＮＯＮＥでも良い。
【００１９】
トランザクションは、少なくとも１つの署名されていないインプットをさらに含んでも良い。方法は、トランザクションをブロックチェーンに提出するステップをさらに含んでも良い。アウトプットが修正された後に、署名されていないインプットに署名するステップを含んでも良い。署名されていないインプットは、トランザクション全体の修正を防ぐ署名ハッシュタイプを使用して署名されても良い。署名ハッシュタイプは、ＳＩＧＨＡＳＨ＿ＡＬＬでも良い。
【００２０】
値（value）は、署名されたインプットに関連する公開鍵の中に組み込まれても良い。加えて又は代えて、値をロジックの一部に提供するように、値は公開鍵から抽出されても良い。
【００２１】
方法は、プロトコルを確立する及び／又は選択するステップと公開鍵の中に値を組み込むためにプロトコルを使用するステップをさらに含む。公開鍵は、中間ブロックチェーントランザクション（intermediate  blockchain  Transaction）においてロッキングスクリプト（locking  script）を作成するために使用されても良い。
【００２２】
方法は、中間トランザクションをブロックチェーンに提出するステップをさらに含む。
【００２３】
値（value）は、新しい公開鍵Ｐ’を生成することによって公開鍵中に組み込まれ：
【数１】
2019526192.tif 000003
ここで：
Ｐは、ベース又は初期の公開鍵、
Ｇは、ｓｅｃｐ２５６ｋ１などの楕円曲線関数、
ｘは、スカラによる楕円曲線乗算を表示し、
【数２】
2019526192.tif 000004
は、楕円曲線加算を表示する。
【００２４】
方法は、新しい公開鍵に対応する新しい秘密鍵を生成するステップをさらに含み、ここで：
新しい秘密鍵Ｖ’＝Ｖ＋ＨＡＳＨ（ｖａｌｕｅ＋Ｓ）
【００２５】
公開鍵に組込まれた値は、指定された範囲の値から選択されても良い。
【００２６】
本発明は、対応するシステムも提供する。システムは、上述の方法の任意の実施形態を実装するように構成されても良い。
【００２７】
本発明は、コンピュータ実装システムを提供し、
先行する請求項のいずれかのスッテプを実行するように構成された少なくとも１つのコンピュータベースリソースと、
ブロックチェーン又は他のタイプの電子台帳を含む。これは、分散型台帳でも良い。
【００２８】
本発明の１態様又は１実施形態と関連して説明される任意の特徴は、１つ以上の態様／実施形態と共に効果をもたらすように使用しても良い。
【００２９】
本発明のこれらの及び他の態様は、本明細書で説明する実施形態を参照して明白になり、明らかになる。本発明の実施形態は、以下の添付図面を参照して例示の目的でこれから説明される。
【図面の簡単な説明】
【００３０】
【図１】例となるトランザクション及び、ＳＩＧＨＡＳＨ＿ＡＬＬ及びＳＩＧＨＡＳＨ＿ＮＯＮＥでハッシュされる部分を示す。
【図２ａ】いかに機能コントローラ（function  Controller）が、各インプットソースとＰｕｂＫｅｙプロトコルを確立するかを示す。
【図２ｂ】インプットソースは、自身のプロトコル（ＰｕｂＫｅｙプロトコル）にしたがって、値が組込まれた公開鍵（ＰｕｂＫｅｙ）を通信し、計算するシナリオを説明する。
【図２ｃ】インプットソースが、値が組込まれたＰｕｂＫｅｙを使用して、中間トランザクションのアウトプットの１つで使用されるロッキングスクリプトを作成するシナリオを説明する。
【図２ｄ】トランザクションが作成され、コントローラからの署名されていないインプットと各インプットが加えられるシナリオを説明する。
【図２ｅ】署名タイプＳＩＧＨＡＳＨ＿ＮＯＮＥを持つトランザクションに対するそれらのそれぞれのインプットに、すべてのインプットソースが署名するシナリオを説明する。
【図２ｆ】コントローラがトランザクションにある各インプットソースのアンロッキングスクリプトから値が組込まれたＰｕｂＫｅｙを取り、関連するＰｕｂＫｅｙプロトコルに基づいて組込まれた値を抽出するシナリオを説明する。
【図２ｇ】コントローラは、関数を抽出した値に適用し、その結果に基づいてトランザクションのアウトプットを修正するシナリオを説明する。
【図２ｈ】コントローラは、ＳＩＧＨＡＳＨ＿ＡＬＬを使用してそのインプットに署名し、トランザクションをブロックチェーンに提出するシナリオを説明する。
【図３】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図４】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図５ａ】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図５ｂ】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図６】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図７】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図８】以下で提供されるユースケースの例１にしたがって使用されるブロックチェーントランザクションを示す。
【図９】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１０】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１１】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１２】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１３】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１４】以下で提供されるユースケースの例２にしたがって使用されるブロックチェーントランザクションを示す。
【図１５】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図１６】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図１７】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図１８】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図１９】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図２０】以下で提供されるユースケースの例３にしたがって使用されるブロックチェーントランザクションを示す。
【図２１ａ】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２１ｂ】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２２】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２３】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２４】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２５】以下で提供されるユースケースの例４にしたがって使用されるブロックチェーントランザクションを示す。
【図２６ａ】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図２６ｂ】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図２７】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図２８】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図２９】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図３０】以下で提供されるユースケースの例５にしたがって使用されるブロックチェーントランザクションを示す。
【図３１】以下で提供されるユースケースの例６にしたがって使用されるブロックチェーントランザクションを示す。
【図３２】以下で提供されるユースケースの例６にしたがって使用されるブロックチェーントランザクションを示す。
【図３３】以下で提供されるユースケースの例６にしたがって使用されるブロックチェーントランザクションを示す。
【図３４】以下で提供されるユースケースの例６にしたがって使用されるブロックチェーントランザクションを示す。
【図３５】以下で提供されるユースケースの例６にしたがって使用されるブロックチェーントランザクションを示す。
【図３６ａ】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図３６ｂ】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図３７】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図３８】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図３９】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図４０】以下で提供されるユースケースの例７にしたがって使用されるブロックチェーントランザクションを示す。
【図４１ａ】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【図４１ｂ】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【図４２】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【図４３】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【図４４】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【図４５】以下で提供されるユースケースの例８にしたがって使用されるブロックチェーントランザクションを示す。
【００３１】
これから本発明の例となる実施形態を提供する。この実施形態は、以下に関連する技法を含む：
・共有秘密（鍵）（shared  secret）の確立と新しい暗号鍵の生成におけるその使用
・楕円曲線公開鍵における値を安全に組み込むための機構
・特定の署名の組み合わせを使用するインプットを条件とするアウトプットにおけるブロックチェーン関連スキーム又はソリューション
・外部で評価される関数（すなわち、ブロックチェーンの外にある）を構築するための新しい機構を提供するこれらの技法の組み合わせ
【００３２】
本発明は、機能（function）を実装するためにブロックチェーンを使用することに関する新規で有利な解決策を提供する。ブロックチェーンが、機能の実行及び／又はその結果の実績の記録を提供するために使用される。機能は、インプットの組に適用され、アウトプットの組を返すサブルーチン又はプロシージャ（すなわち、プロセス又はロジックの一部）であり得る。好ましい実施形態では、機能は、「ブロック外（off-block）」で実行され、つまり、その実行は、ブロックチェーン依存ではない。機能は、コンピュータベースリソースによって実行される。
【００３３】
ブロックチェーン（すなわち、ビットコイン）トランザクションは、（例えば、ビットコイン）の値の転送であり、それは典型的には、新しいトランザクションインプットとしての前のトランザクションアウトプットへの参照と、すべてのインプット値の新しいアウトプットへの割当である。トランザクションは、暗号化されていないので、これまでにブロックに収集されたすべてのトランザクションをブラウズすること又は見ることができる。機能として作動するブロックチェーントランザクションを構成できることは、非常に有利であり得るが、トランザクションアウトプットは、トランザクションのインプットに組込まれた情報を条件とする又は依存する。
【００３４】
本発明の重要な態様は、機能を表現するブロックチェーントランザクションを作成する方法を含み（しかしそれに制限されることなく）：
・機能インプットは、トランザクションのインプットのアンロッキングスクリプト内で使用される公開鍵によって表現され
・機能アウトプットは、トランザクションのアウトプットが送られるアドレスによって表現され
・機能プロシージャは、ブロックチェーントランザクションの外で評価され
・機能インプットは、機能ロジックを適用し、且つ機能アウトプットを更新する前に、ロックすることができる。
【００３５】
それ故、本発明は、以下のことを含む：
・秘密の値を配布する技法
メッセージが秘密鍵／公開鍵に組み込まれるように、さらに、共有秘密が非安全なネットワークに渡って確立できるように、楕円曲線計算を用いる方法を使用して達成される。
・値を楕円曲線公開鍵／秘密鍵に安全に組み込む技法
本発明は、値が楕円曲線秘密鍵／公開暗号鍵に安全に組み込まれることを可能にする秘密値配布（Secret  Value  Distribution）技法を含む。線形時間（linear  time）において受信した当事者によって値は、抽出することができるが、しかしながら、組込まれた方法を確立するために通信されるパラメータは、たとえ漏れたとしても、攻撃者にとっては、扱いにくいもののままである。
・インプットを条件とするビットコイントランザクションアウトプット
・新しく独創性のある方法は、最初に１つ以外のすべてのトランザクションのインプットにＳＩＧＨＡＳＨ＿ＮＯＮＥで署名し（インプットにおいてロックする）、次に、残りのインプットにＳＩＧＨＡＳＨ＿ＡＬＬで署名する（インプット及びアウトプットにおいてロックする）。このフローは、アウトプットに対して、入力を条件とすることを許す。
【００３６】
本発明は、以下で提供されるユースケースの例を通して説明され、ブロックチェーン（例えば、ビットコイン）トランザクションは、ロジックゲートによって提供される機能性を表現するために使用することができる。
【００３７】
発明は、暗号化（公開／秘密）鍵へのメッセージの組み込みの技法、また、共有秘密を確立するための技法を利用する。これらは、以下で説明される。
【００３８】
メッセージの組み込み
以下を仮定する：
・秘密鍵Ｖ（整数）
・公開鍵Ｐ（楕円曲線点）
・ＥＣ生成元Ｇ（楕円曲線関数）
・メッセージＭ（整数として表現することができる値）
【００３９】
ＥＣ計算は、以下の通り知られている：
Ｐ＝ＶｘＧ  スカラによる楕円曲線乗算
メッセージＭが組み込まれた場合：
Ｖ’＝Ｖ＋Ｍ  整数加算
Ｐ’＝Ｐ＋ＭｘＧ  楕円曲線点加算
Ｖ’とＰ’は、メッセージＭが組込まれた秘密鍵／公開鍵
【００４０】
共有秘密
以下を仮定する：
・秘密鍵ＶＡと公開鍵ＰＡを持つ当事者Ａ
・秘密鍵ＶＢと公開鍵ＰＢを持つ当事者Ｂ
・ＥＣ生成元Ｇ（楕円曲線関数）
【００４１】
ＥＣ計算では、以下は既知である：
ＰＡ＝ＶＡｘＧ
ＰＢ＝ＶＢｘＧ
【００４２】
両方の当事者が彼らの公開鍵を公開した場合、共有秘密は、安全に確立することができる：
当事者Ａ  共有秘密＝ＶＡｘＰＢ＝ＶＡｘ（ＶＢｘＧ）
当事者Ｂ  共有秘密＝ＶＢｘＰＡ＝ＶＢｘ（ＶＡｘＧ）
【００４３】
ＥＣ計算は交換可能（commutative）であるので、共有秘密は、両方の当事者に対して、等価である。
【００４４】
楕円曲線公開鍵／秘密鍵における安全な値の組み込み
ＥＣ公開鍵／秘密鍵にメッセージ（値）を組み込むことは可能である。２人の当事者間の安全な通信のための方法としてこのコンセプトを適用するためには、以下のパラメータが必要となる：
【００４５】
【表１】
2019526192.tif 000005
【００４６】
値を組み込む方法
送る当事者は、以下のような安全な式Ｍを使用して値を組み込むことができる：
Ｖ’＝Ｖ＋ＨＡＳＨ（ｖａｌｕｅ（値）＋Ｓ）  値を組み込んだ秘密鍵
【数３】
2019526192.tif 000006
ここで：
Ｐは、ベース又は初期の公開鍵
Ｇは、ｓｅｃｐ２５６ｋ１などの楕円曲線関数
ｘは、スカラによる楕円曲線乗算を表示し、
【数４】
2019526192.tif 000007
は、楕円曲線加算を表示する。
【００４７】
この方法のセキュリティは、以下の点を包含し、具体化する：
・値が組込まれた公開鍵は、一方向であり逆にするのが困難なＥＣ計算を使用する。
・ハッシュ関数は、一方向であり、逆が難しい。
・共有秘密Ｓは、ハッシュソルト（hash  salt）である。これは、たとえすべての他のパラメータの情報が漏れても、攻撃者は、組込まれた値を解くための可能性がある値を通して単純に反復することができないことを意味する。Ｓは、秘密鍵が漏れない限り、安全が保証される。
【００４８】
値の抽出方法
公開鍵に組込まれた値の受信者は、線形時間で、値を抽出できる。これは、一致が見つかるまで各可能性がある値に対して値が組込まれた公開鍵を計算することによって行われる。
これは、以下によって達成することができる：
Ｆｏｒ  ｅａｃｈ  ｖ  ｉｎ  ｒａｎｇｅ  ｖ＿０  ｔｏ  ｖ＿ｎ  ／／この特定のスクリプトにおいて、ｖ＿０，ｖ＿１，…，ｖ＿ｎは、組ではなく範囲である。
ｖ’＝Ｍ（ｖ，Ｐ，Ｓ，Ｇ）  ／／Ｍはｖを組み込むためにＥＣ計算を使用する式である。
Ｉｆ  ｖ’  ｅｑｕａｌｓ  Ｐ’
Ｅｘｉｔ  ｌｏｏｐ  ／／ｖは、組込まれた値である。
【００４９】
インプットを条件とするブロックチェーントランザクションアウトプット
この節では、アウトプットがインプットを条件とするブロックチェーントランザクションを構築する方法を示す。これは、パブリックドメインで入手可能な、署名タイプＳＩＧＨＡＳＨ＿ＡＬＬ及びＳＩＧＨＡＳＨ＿ＮＯＮＥを使用することに関する知識に基づいている。
https://bitcoin.org/en/developer-guide#signature-hash-types
【００５０】
署名タイプ（Signature  Types）
ビットコイン署名は、トランザクションの選択された部分のハッシュである。選択される部分は、署名ハッシュタイプによって決定される。いかなる修正も、異なる署名を生み出し、故に改ざんを示すので、署名は、ハッシュされた部分を保護する。図１は、例となるトランザクションとＳＩＧＨＡＳＨ＿ＡＬＬ及びＳＩＧＨＡＳＨ＿ＮＯＮＥでハッシュされた部分を示す。インプットに署名したとき、すべての他のインプットのｓｃｒｉｐｔＳｉｇＬｅｎ及びｓｃｒｉｐｔＳｉｇは、空のスクリプト（empty  scripts）によって置き換えられる点に留意されたい。
【００５１】
トランザクション構築方法
１．ブロックチェーントランザクションは、作成され、インプットはすべてのエンティティによって加算される。
２．所有者とは別のすべてのエンティティは、ＳＩＧＨＡＳＨ＿ＮＯＮＥでそれらのインプットに署名する（これはインプットでロックするので、インプットは修正できない）。
３．所有者は、アウトプットを決定し、トランザクションを更新する。
４．所有者は、ＳＩＧＨＡＳＨ＿ＡＬＬでそのインプットに署名し、トランザクションが、ここで完成する（これはインプット及びアウトプットの両方でロックする）。
【００５２】
ブロックチェーントランザクションとして外部で評価された関数を実装する
本発明は、すでに説明したコンセプト／方法のすべてを組み合わせることができる。
重要な態様は、以下を含む：
・関数に対するインプット値は、トランザクションインプットとして通信される公開鍵に組み込むことができる。
・関数の所有者（すなわち、関数を実行する責任を持つリソース）は、関数を実装するためのブロックチェーン上で公開される前にトランザクションに質問する（interrogate）ことができる。
・関数の所有者は、関数のアウトプットを表現することを完了する前にトランザクションのアウトプットアドレスを単独で修正することができる。
【００５３】
重要語
明確にするために、以下の用語は、本発明の実装とユースケースを定義するためにいたるところで使用される。
【００５４】
【表２】
2019526192.tif 000008
【００５５】
実装
１．コントローラは、図２ａに示されるように、各インプットソースとＰｕｂＫｅｙプロトコルを確立する。
【００５６】
２．インプットソースは、図２ｂに示されるように、通信し、そのＰｕｂＫｅｙプロトコルにしたがって値が組込まれたＰｕｂＫｅｙを計算するための値を持つ。
【００５７】
３．インプットソースは、値が組込まれたＰｕｂＫｅｙを使用して、中間トランザクション（インプットソースによって作成される）のアウトプットの１つで使用されるロッキングスクリプトを作成する。中間ドランザクションは、ブロックチェーンに提出されるが、ロッキングスクリプトがＰ２ＰＫＨ又はＰ２ＳＨのいずれであるかは重要ではない。これは、図２ｃに示される。
【００５８】
４．トランザクションが作成され、コントローラからの署名されていないインプット及び各インプットソースが加えられる、図２ｄ参照。
ａ．各インプットソースによるインプットは、それらの中間トランザクション、特に値が組込まれたＰｕｂＫｅｙを持つアウトプットを参照する。
ａ．ステップ４の前にすべてのインプットがこのトランザクションに加えられる限り、トランザクション又は中間トランザクションが最初に作成さたか否かは重要ではない（すなわち、ステップ２−３の順序）。
ｂ．関与するすべての当事者がそれを修正できる限り、誰がトランザクションを作成するかは重要ではない。
【００５９】
５．すべてのインプットソースは、署名ハッシュタイプＳＩＧＨＡＳＨ＿ＮＯＮＥによってトランザクションに対してそれらのインプットに署名する。
ａ．これは、インプットにおいてロックするが、アウトプットを自由に修正できる状態にしておく。
ｂ．すべてのインプットが加算されたとき、いかに各インプットソースが通知され／チェックされるかは重要ではい。
【００６０】
６．コントローラは、トランザクションにおける各インプットソースのアンロッキングスクリプトから値が組込まれたＰｕｂＫｅｙを取り、関連するＰｕｂＫｅｙプロトコルに基づいて組込まれた値を抽出する；図２ｆ参照。
ａ．値の抽出は、ビットコイントランザクションの外部で行われる。
ｂ．インプットソースによってすべてのインプットが署名されたとき、コントローラがどのように通知され／チェックされるかは重要ではない。
【００６１】
７．コントローラは、関数を抽出された値に適用し、その結果に基づいてトランザクションのアウトプットを修正する；図２ｇ参照。
ａ．関数は、ビットコイントランザクションの外部で適用される。
【００６２】
８．コントローラは、ＳＩＧＨＡＳＨ＿ＡＬＬを使用してそのインプットに署名し、トランザクションをブロックチェーンに提出する；図２ｈ参照。
【００６３】
ユースケース１：  ＸＯＲロジックゲート
これから説明の便宜のために、例となるユースケースを示す。これは、２つのインプットソースを持つＸＯＲロジックゲートを表現する（ビットコイン）トランザクションを使用して本発明を実装する。以下のシナリオを検討する。
【００６４】
アリスは、独学のトレーダーであり、会社ＸＹＺのストックオプションのトレーディングによって余分なお金を稼ぐ機会を伺っている。アリスは、ビットコインによる支払いを受け入れる特定のオンライン株式取引所で口座を開設する。アリスは、簡単なトレーディングボット（Trading  Bot）、株価ボット（Share  Prices  Bot）及び市場指標値ボット（Market  Index  Value  Bot）を開発した（各「ボット（bot）」は、自動化されたタスク又はプロセスを実行するように構成されたコンピュータベースのリソースである）。
【００６５】
株価ボット及び市場指標値ボットは、以下のように構成される：
・両ボットは、株式市場のオープニング値の範囲を記録する。
・ボットのうちの１つが、その日の間に値が別の範囲に変化したのを見た場合、両ボットはトレーディングボットと通信する。
・株価ボットは、以下のデータを収集する：
・株ＸＹＺの値段−｛Ｐ１，Ｐ２，…，Ｐ１０｝＊
・市場指標値ボットは、以下のデータを収集する：
・市場指標値−｛Ｍ１，Ｍ２，…，Ｍ５｝＊
＊は、昇順で値の範囲を表現する。Ｐ１＜Ｐ２＜…＜Ｐ１０
【００６６】
トレーディングボットは、受信した市場データに基づいてコールオプション及びプットプションを購入する：
【００６７】
【表３】
2019526192.tif 000009
株価ボットと市場指標値ボットは、市場データを送るのみで、戦略を知らない点に留意することは重要である。
【００６８】
既存の設定
・アリスは、トレーディングボットに５ＢＴＣを持つ秘密鍵／公開鍵のペアＡを与えた
・アリスは、株価ボットに１ＢＴＣを持つ秘密鍵／公開鍵のペアＸを与えた
・アリスは、市場指標値ボットに１ＢＴＣを持つ秘密鍵／公開鍵のペアＹを与えた
・交換（exchange）は、それぞれ公開鍵Ｅ＿ＰＵＴとＥ＿ＣＡＬＬでプットオプションとコールオプションに対して支払う
【００６９】
ステップ：
１．アリスは、初めてすべての３つのボットを走らせる：
ａ．トレーディングボットは、以下のパラメータを持つ株価ボットとＰｕｂＫｅｙプロトコルを確立する：
【００７０】
【表４】
2019526192.tif 000010
ｂ．トレーディングボットは、以下のパラメータを持つ市場指標値ボットとＰｕｂＫｅｙプロトコルを確立する：
【００７１】
【表５】
2019526192.tif 000011
【００７２】
２．株価ボットと市場指標値ボットは、それぞれＰ５とＭ３としての株価市場のオープニング値の範囲を記録する。
【００７３】
３．市場指標値ボットは、Ｍ２に対する変更を検出する。両ボットは、トレーディングボットに送るために値が組込まれたＰｕｂＫｅｙを計算する。
ａ．株価ボット：
【数５】
2019526192.tif 000012
ｂ．市場指標値ボット：
【数６】
2019526192.tif 000013
【００７４】
４．両ボットは、それらの値が組込まれたＰｕｂＫｅｙを持つＰ２ＰＫＨアンロッキングスクリプトを必要とするアウトプットを持つ中間トランザクションを作成し、ブロックチェーンに提出する；
株価ボットの中間トランザクションに関して図３を参照。アウトプット１は、値が組込まれたＰｕｂＫｅｙ  Ｘ’を持つアンロッキングスクリプトを必要とし、アウトプット２は、株価ボットに戻されるおつりである点に留意する。
市場指標値ボットの中間トランザクションに関して図４を参照して；アウトプット１は、値が組込まれたＰｕｂＫｅｙ  Ｙ’を持つアンロッキングスクリプトを必要とし、アウトプット２は、株価ボットに戻されるおつりである。
【００７５】
５．両方のボットは、トレーディングボットに、それらのそれぞれの値が組込まれたＰｕｂＫｅｙを包含する署名されていないトランザクションインプットを送る
株価ボットの入力に関しては図５ａ参照
市場指標値ボットの入力に関しては図５ｂ参照
【００７６】
６．図６を参照して：トレーディングボットは、株価ボット及び市場指標値ボットから受信したトランザクションインプットを含むＸＯＲゲートを表現するトランザクションを作成する
【００７７】
７．図７を参照して：トレーディングボットは、株価ボット及び市場指標値ボットにトランザクションのストレージ／アクセス詳細を知らせ、それらにそれらのインプットに署名するようにリクエストする。
ａ．両方のボットは、インプットにおいてロックするＳＩＧＨＡＳＨ＿ＮＯＮＥで署名する。
【００７８】
８．トレーディングボットは、アンロッキングスクリプトから＜ＰｕｂＫｅｙ  Ｘ’＞を取り、Ｐ５を持つＰｕｂＫｅｙとの一致を見つけるまで、Ｐ１、Ｐ２、…、Ｐ１０に対して値が組込まれたＰｕｂＫｅｙを計算する
【００７９】
９．トレーディングボットは、アンロッキングスクリプトから＜ＰｕｂＫｅｙ  Ｙ’＞を取り、Ｍ２を持つＰｕｂＫｅｙとの一致を見つけるまで、Ｍ１、Ｍ２、…、Ｍ５に対して値が組込まれたＰｕｂＫｅｙを計算する
【００８０】
１０．トレーディングボットは、ＸＯＲロジックゲートを値に適用し、コールオプションを買うべきであると決定する
ａ．Ｐ５∈｛Ｐ７，Ｐ８，Ｐ９，Ｐ１０｝  ＸＯＲ  Ｍ２∈｛Ｍ１，Ｍ２｝
ｂ．偽  ＸＯＲ  真
ｃ．真−コールオプションを買う
【００８１】
１１．図８を参照して：トレーディングボットは、アウトプットを更新して、５ＢＴＣをＥ＿ＰＵＴに送り、ＳＩＧＨＡＳＨ＿ＡＬＬでそのアウトプットに署名し、ブロックチェーンに提示する
【００８２】
ユースケースの例２：ＡＮＤロジックゲート
２つのインプットソースを持つＡＮＤロジックゲートを表現するビットコイントランザクションを実装する。二重制御（二重保管）電子ダイヤル錠（electronic  combination  lock）で値を包含する銀行を仮定する。一人の人に両方の組み合わせが与えられることはなく、二人の銀行のマネージャーの同時の存在がドアを開けるために必要とされる。両方の組み合わせが、同時に正しく入力された場合（「１１１１」及び「２２２２」）、金庫室の扉はロック解除され、そうでない場合は金庫室（vault）のアラームが作動する。これは、ＡＮＤゲートの実装である。
【００８３】
全体のシステムは４つのエンティティから構成される：ダイヤル錠Ａ、ダイヤル錠Ｂ、コントローラ、及び金庫室。
【００８４】
コントローラにおけるＡＮＤロジック：  組み合わせＡ＝＝「１１１１」  ＡＮＤ  組み合わせＢ＝＝「２２２２」
【００８５】
【表６】
2019526192.tif 000014
【００８６】
すべてのロジック評価は、コントローラによって実行される点に留意されたい。ダイヤル錠は、単に４桁のコードを送り、そのコードが真又は偽かは評価しない。
【００８７】
既存のステップ
・ダイヤル式ロックＡは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＡを所有する
・ダイヤル式ロックＢは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＣを所有する
・金庫は、秘密鍵／公開鍵のペアＶ＿ＤＯＯＲ及びＶ＿ＡＬＡＲＭを所有する
【００８８】
ステップ：
１．システムが最初にインストールされたとき、コントローラは、信号の安全な通信を可能にするためにダイヤル錠Ａ及びダイヤル錠Ｂを持つＰｕｂＫｅｙプロトコルを確立する：
ａ．コントローラ及びダイヤル錠ＡのＰｕｂＫｅｙプロトコルパラメータ：
【００８９】
【表７】
2019526192.tif 000015
【００９０】
【表８】
2019526192.tif 000016
【００９１】
２．銀行のマネージャーは、同時にそれらの各々の４桁のコード（１１１１及び２２２２）をダイヤル錠Ａ及びダイヤル錠Ｂに入力する。各ダイヤル錠は、それらの４桁のコードを、値を組み込んだＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ’及びＰｕｂＫｅｙ  Ｂ’）に組み込む
ｃ．ダイヤル錠Ａ：
【数７】
2019526192.tif 000017
ｄ．ダイヤル錠Ｂ：
【数８】
2019526192.tif 000018
【００９２】
３．両方のダイヤル錠は、それらのそれぞれの値が組込まれたＰｕｂＫｅｙに対するアウトプットを持つビットコイントランザクション（中間トランザクション）を生成し、ブロックチェーンに提出する。
ａ．ダイヤル錠Ａの中間トランザクション：図９参照
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ａ’をコントローラに通信する
アウトプット２−ダイヤル錠Ａ’の公開鍵Ａにおつりを戻す
ｂ．ダイヤル錠Ｂ’の中間トランザクション：図１０参照
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ｂ’をコントローラに通信する
アウトプット２−ダイヤル錠Ｂ’の公開鍵Ｂにおつりを戻す
【００９３】
４．両方のダイヤル錠は、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットを作成する。両方のダイヤル錠は、このインプットをコントローラに送る−以下に関して図１１参照
ａ．ダイヤル錠Ａ’のトランザクションインプット
ｂ．ダイヤル錠Ｂ’のトランザクションインプット
【００９４】
５．コントローラは、ダイヤル錠からのビットコイントランザクションインプットを使用し、ＡＮＤゲート（ＡＮＤゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含むので、単独でアウトプットを修正できる。図１２参照
【００９５】
６．コントローラは、ダイヤル錠Ａ及びダイヤル錠Ｂに対して、ＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＡＮＤゲートトランザクションにおけるそれらのそれぞれのインプットに署名するようにリクエストする。これはインプットにおいてロックし、一方で、まだアウトプットが修正されることを許す−図１３参照
【００９６】
７．ＰｕｂＫｅｙ  Ａ’に一致する１つを見つけるまで、コントローラは、ダイヤル錠Ａを持つＰｕｂＫｅｙプロトコルを使用して、各４桁の組み合わせ、００００、０００１、…、９９９８、９９９９に対する値が組込まれたＰｕｂＫｅｙを計算する
ａ．コントローラは、「１１１１」がＰｕｂＫｅｙ  Ａ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける。
【００９７】
８．ＰｕｂＫｅｙ  Ｂ’に一致する１つを見つけるまで、コントローラは、ダイヤル錠Ｂを持つＰｕｂＫｅｙプロトコルを使用して、各４桁の組み合わせ、００００、０００１、…、９９９８、９９９９に対する値が組込まれたＰｕｂＫｅｙを計算する
ａ．コントローラは、「２２２２」がＰｕｂＫｅｙ  Ｂ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける。
【００９８】
９．コントローラは、ＡＮＤゲートロジックを組み合わせに適用する：
ａ．組み合わせＡ＝「１１１１」  ＡＮＤ  組み合わせＢ＝「２２２２」
ｂ．真  ＡＮＤ  真
ｃ．真−Ｖ＿ＤＯＯＲに信号を送り、ドアを開ける
【００９９】
１０．コントローラは、ＡＮＤゲートトランザクションのアウトプットを更新し、信号をＶ＿ＤＯＯＲに送り、自分自身におつりを戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬでそのインプットに署名し、すべてのインプット及びアウトプットでロックし、ブロックチェーンに提出する：図１４参照
【０１００】
１１．金庫は、Ｖ＿ＤＯＯＲへのトランザクションアウトプットを確認したら、金庫の扉をロック解除する
【０１０１】
ユースケースの例３：  ＩＭＰＬＹロジックゲート
この例では、２つのインプットソースを持つＩＭＰＬＹロジックゲートを表現するビットコイントランザクションを実装する。マニュアルモードをオン／オフするスイッチＡと、着陸装置（landing  gear）を伸ばすシステムをオン／オフするスイッチＢという、２つのスイッチを持つ飛行機を仮定する。スイッチＡがオフ（自動着陸）の場合、スイッチＢにかかわらず、着陸装置は、常に伸びている。スイッチＡはオン（マニュアルモード）の場合、着陸装置は、スイッチＢに基づいて伸びる。これは、ＩＭＰＬＹゲートの実装である。全体のシステムは、４つのエンティティから構成さえる：スイッチＡ、スイッチＢ、コントローラ、及び着陸装置。
【０１０２】
コントローラにおけるＩＭＰＬＹロジック：  スイッチＡ＝＝オン  ＩＭＰＬＹ  スイッチＢ＝＝オン
【０１０３】
【表９】
2019526192.tif 000019
【０１０４】
既存の設定
・スイッチＡは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＡを所有する
・スイッチＢは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＣを所有する
・着陸装置伸長システムは、秘密鍵／公開鍵のペアＬ＿ＥＸＴＥＮＤ及びＬ＿ＲＥＴＲＡＣＴを所有する
【０１０５】
ステップ
１．システムが最初にインストールされたとき、コントローラは、スイッチＡ及びスイッチＢを持つＰｕｂＫｅｙプロトコルを確立し、信号の安全な通信を可能とする：
ａ．コントローラ及びスイッチＡのＰｕｂＫｅｙプロトコルパラメータ：
【０１０６】
【表１０】
2019526192.tif 000020
【０１０７】
ｂ．コントローラ及びスイッチＢのＰｕｂＫｅｙプロトコルパラメータ：
【表１１】
2019526192.tif 000021
【０１０８】
２．現在、マニュアルモードであり（スイッチＡがオン）、そして着陸装置は格納されている（スイッチＢがオフ）。
【０１０９】
３．パイロットは着陸の準備をし、スイッチＡをオフにする（オートランディング）。各スイッチは、それらの状態を値が組み込まれたＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ及びＰｕｂＫｅｙ  Ｂ）に組み込む。
ａ．スイッチＡ
【数９】
2019526192.tif 000022
ｂ．スイッチＢ
【数１０】
2019526192.tif 000023
【０１１０】
４．両方のスイッチは、それらのそれぞれの値が組込まれたＰｕｂＫｅｙへのアウトプットを持つビットコイントランザクション（中間トランザクション）を作成し、ブロックチェーンへ提出する。
ａ．スイッチＡの中間トランザクション：図１５参照
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ａ’をコントローラへ通信する
アウトプット２−スイッチＡ’の公開鍵Ａにおつりを戻す
ｃ．スイッチＢの中間トランザクション：図１６参照
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ｂ’をコントローラに送る
アウトプット２−おつりをスイッチＢの公開鍵Ｂに戻す
【０１１１】
５．両方のスイッチは、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットを作成する。両方のスイッチは、コントローラにこの入力を送る：以下に対する図１７参照
ａ．スイッチＡのトランザクションインプット
ｂ．スイッチＢのトランザクションインプット
【０１１２】
６．コントローラは、スイッチからのビットコイントランザクションインプットを使用し、ＩＭＰＬＹゲート（ＩＭＰＬＹゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含むので、単独でアウトプットを修正することができる。図１８参照。
【０１１３】
７．コントローラは、スイッチＡ及びスイッチＢに対してＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＩＭＰＬＹゲートトランザクションにおけるそれらのそれぞれのインプットに署名するようにリクエストする。これは、インプットにおいてロックし、一方、アウトプットはまだ修正することができる−図１９参照
【０１１４】
８．コントローラは、スイッチＡで自身のＰｕｂＫｅｙプロトコルを使用して、オン及びオフに対する値を組み込んだＰｕｂＫｅｙを計算して、ＰｕｂＫｅｙＡ’と一致するものを探す
ａ．コントローラは、オフがＰｕｂＫｅｙＡ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける。
【０１１５】
９．コントローラは、スイッチＡで自身のＰｕｂＫｅｙプロトコルを使用して、オン及びオフに対する値が組込まれたＰｕｂＫｅｙを計算して、ＰｕｂＫｅｙＢ’との一致を見つける。
ａ．コントローラは、オフがＰｕｂＫｅｙ  Ｂ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける。
【０１１６】
１０．コントローラは、ＩＭＰＬＹゲートロジックを適用する：
ａ．スイッチＡ＝＝オン  ＩＭＰＬＹ  スイッチＢ＝＝オン
ｂ．オフ＝＝オン  ＩＭＰＬＹ  オフ＝＝オン
ｃ．偽  ＩＭＰＬＹ  偽
ｄ．真−信号をＬ＿ＥＸＴＥＮＤに送り、着陸装置を伸ばす
【０１１７】
１１．コントローラは、ＩＭＰＬＹゲートトランザクションの出力を更新して、信号をＬ＿ＥＸＴＥＮＤに送り、自身におつりを戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬで自身のインプットに署名し、すべてのインプット及びアウトプットでロックし、ブロックチェーンに提出する：図２０参照
【０１１８】
１２．着陸装置伸長システムは、Ｌ＿ＥＸＴＥＤへのトランザクションアウトプットを確認した場合、オンになる。
【０１１９】
ユースケース例４：  ＮＡＮＤロジックゲート
この例では、２つのインプットソースを持つＮＡＮＤロジックゲートを表現するビットコイントランザクションを実装する。自動車には、ドアが開いているときにオープンになるスイッチが通常各ドアにあり、１つ以上のドアが開いている場合に、ドライバーに警告するために警告ライトがオンになる。これは、ＮＡＮＤゲートの実装である。全体のシステムは、４つのエンティティから構成される：スイッチＡ、スイッチＢ、コントローラ、及びライトである。両方のスイッチは、それらのスイッチのうちの１つの状態が変化したとき、コントローラに信号を送る。
コントローラにおけるＮＡＮＤロジック：  スイッチＡ＝閉じている  ＮＡＮＤ  スイッチＢ＝閉じている
【０１２０】
【表１２】
2019526192.tif 000024
すべてのロジック評価は、コントローラによって実行される。スイッチは、自身の開いている（open）状態又は閉じている（closed）状態をコントローラに単に送る。
【０１２１】
既存の設定
・スイッチＡは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＡを所有する
・スイッチＢは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＣを所有する
・ライトは、秘密鍵／公開鍵のペアＬ＿ＴＵＲＮＯＮ及び  Ｌ＿ＴＵＲＮＯＦＦを所有する
【０１２２】
ステップ：
１．システムが初めてインストールされたとき、コントローラは、スイッチＡ及びスイッチＢを持つＰｕｂＫｅｙプロトコルを確立し、信号を安全に通信することを可能にする：
【０１２３】
ａ．コントローラ及びスイッチＡのＰｕｂＫｅｙプロトコルパラメータ：
【表１３】
2019526192.tif 000025
【０１２４】
ｂ．コントルーラ及びスイッチＢのＰｕｂＫｅｙプロトコルパラメータ：
【表１４】
2019526192.tif 000026
【０１２５】
２．スイッチＡは、閉じている、開いているから自身のドアが変化したことを検知し、一方、スイッチＢは、自身のドアが閉じたままであることを検知する。各スイッチは、それらのそれぞれの状態（開いている及び閉じている）を、値を組み込んだＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ’及びＰｕｂＫｅｙ  Ｂ’）に組み込む
ａ．スイッチＡ
【数１１】
2019526192.tif 000027
ｂ．スイッチＢ：
【数１２】
2019526192.tif 000028
【０１２６】
３．図２１ａと図２１ｂを参照。両方のスイッチは、それらのそれぞれの値が組込まれたＰｕｂＫｅｙに対するアウトプットを持つビットコイントランザクション（中間トランザクション）を作成し、ブロックチェーンに提出する
ａ．スイッチＡの中間トランザクション：図２１ａ
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙＡ’をコントローラに通信する
アウトプット２−おつりをスイッチＡの公開鍵Ａに戻す
ｂ．スイッチＢの中間トランザクション：図２１ｂ
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙＢ’をコントローラに通信する
アウトプット２−おつりをスイッチＢの公開鍵Ｂに戻す
【０１２７】
４．両方のスイッチは、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットをコントローラへ送る。以下に対して図２２を参照
ａ．スイッチＡのトランザクションインプット：
ｂ．スイッチＢのトランザクションインプット：
【０１２８】
５．コントローラは、スイッチからのビットコイントランザクションインプットを使用し、ＮＡＮＤゲート（ＮＡＮＤゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含むので、トランザクションは、アウトプットを単独で修正することができる。図２３参照
【０１２９】
６．コントローラは、スイッチＡ及びスイッチＢに対して、ＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＮＡＮＤゲートトランザクションにおけるそれらのそれぞれのインプットに署名するようにリクエストする。これはインプットでロックし、一方、またアウトプットが修正されることを許す。図２４参照
【０１３０】
７．コントローラは、スイッチＡで自身のＰｕｂＫｅｙプロトコルを使用して、開いている及び閉じている各状態に対する値を組み込んだＰｕｂＫｅｙを計算する
ａ．コントローラは、「開いている」がＰｕｂＫｅｙＡ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける。
ｂ．コントルーラは、スイッチＢと自身のＰｕｂＫｅｙプロトコルを使用してオープン及びクローズの各状態に対して、値が組込まれたＰｕｂＫｅｙを計算する。コントローラは、ＰｕｂＫｅｙ  Ｂ’として、「閉じている」が同じ値が組込まれたＰｕｂＫｅｙを生成することに気づく。
【０１３１】
８．コントローラは、ＮＡＮＤゲートロジックをスイッチ状態に適用する：
ａ．スイッチＡ＝閉じている  ＮＡＮＤ  スイッチＢ＝閉じている
ｂ．偽  ＮＡＮＤ  真
ｃ．真−ライトをオンにするためにＬ＿ＴＵＲＮＯＮに信号を送る
【０１３２】
９．コントローラは、ＮＡＮＤゲートトランザクションのアウトプットを更新して、信号をＬ＿ＴＵＲＮＯＮに送り、自分自身におつりを戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬで自身のインプットに署名し、すべてのインプット及びアウトプットにおいてロックし、ブロックチェーンに送る。図２５参照。
【０１３３】
１０．Ｌ＿ＴＵＲＮＯＮへのトランザクションアウトプットを確認し、ライトはオンになる
【０１３４】
ユースケースの例５：  ＮＯＮＩＭＰＬＹロジックゲート
この例において、２つのインプットソースを持つＮＯＮＩＭＰＬＹロジックゲートを表現するビットコイントランザクションを実装する。自動車の存在を検知するセンサＡ、マニュアルのみのモードをオン／オフするスイッチＢを有する、スマート道路ライティングシステム（smart  driveway  lighting  system）を仮定する。センサＡが、自動車を検出しない場合、道路のライトは、オフである。センサＡが自動車を検知した場合、スイッチＢのマニュアルモードがオフの場合、センサＡは、道路のライトを自動的にオンにする。これは、ＮＯＮＩＭＰＬＹゲートの実装である。全体のシステムは、４つのエンティティから構成される：センサＡ、スイッチＢ、コントローラ、及び道路のライト
【０１３５】
コントローラにおけるＮＯＮＩＭＰＬＹロジック：  センサＡ＝＝「自動車」  ＩＭＰＬＹ  スイッチＢ＝＝「マニュアルオン」
【０１３６】
【表１５】
2019526192.tif 000029
すべてのロジック評価は、コントローラによって実行される。センサ及びスイッチは、単にそれらの状態を送る。
【０１３７】
既存の設定：
・センサＡは、１ＢＴＣを有する秘密鍵／公開鍵のペアＡを所有する
・スイッチＢは、１ＢＴＣを有する秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを有する秘密鍵／公開鍵のペアＣを所有する
・道路のライトは、秘密鍵／公開鍵のペアＬ＿ＯＮ及びＬ＿ＯＦＦを所有する
【０１３８】
ステップ：
１．システムが最初にインストールされたとき、コントローラは、センサＡ及びスイッチＢとＰｕｂＫｅｙプロトコルを確立して、信号の安全な通信を可能にする：
【０１３９】
ａ．コントローラ及びセンサＡのＰｕｂＫｅｙプロコトルパラメータ：
【表１６】
2019526192.tif 000030
【０１４０】
ｂ．コントローラ及びスイッチＢのＰｕｂＫｅｙプロトコルパラメータ：
【表１７】
2019526192.tif 000031
【０１４１】
２．センサＡは、現在自動車を検知しておらず、スイッチＢは、マニュアルモードをオフにしている。
【０１４２】
３．センサＡは、道路上の自動車を検知する。センサ及びスイッチは、それらの状態を、値が組込まれたＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ’及びＰｕｂＫｅｙ  Ｂ’）に組み込む。
ａ．センサＡ：
【数１３】
2019526192.tif 000032
ｂ．スイッチＢ：
【数１４】
2019526192.tif 000033
【０１４３】
４．両方のスイッチは、それらのそれぞれの値が組込まれたＰｕｂＫｅｙに対するアウトプットと共にビットコイントランザクション（中間トランザクション）をブロックチェーンに提出する
ａ．センサＡの中間トランザクション：図２６ａ
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ａをコントローラに通信する
アウトプット２−スイッチＡの公開鍵Ａにおつりを戻す
ｂ．スイッチＢの中間トランザクション：図２６ｂ
アウトプット１−このアウトプットを使うインプットは、コントローラへＰｕｂＫｅｙ  Ｂ’を通信する
アウトプット２−スイッチＢの公開鍵Ｂにおつりを戻す
【０１４４】
５．センサＡ及びスイッチＢは、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションを作成する。
【０１４５】
６．センサＡ及びスイッチＢはこのインプトッをコントローラへ送る。図２７は、以下に関する
ａ．センサＡのトランザクションインプット：
ｂ．スイッチＢのトランザクションインプット：
【０１４６】
７．コントローラは、センサ及びスイッチからのビットコイントランザクションインプットを使用して、ＮＯＮＩＭＰＬＹゲート（ＮＯＮＩＭＰＬＹゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含むので、アウトプットを単独で修正できる。図２８参照。
【０１４７】
８．コントローラは、センサＡ及びスイッチＢに対して、ＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＮＯＮＩＭＰＬＹゲートトランザクションにおけるそれらのそれぞれのインプットに署名するようにリクエストする。これは、インプットにおいてロックし、一方、まだアウトプットが修正されることを許す。図２９参照。
【０１４８】
９．コントローラは、センサＡに対して自身のＰｕｂＫｅｙプロトコル使って、自動車又は自動車がいないに関して値が組込まれたＰｕｂＫｅｙを計算して、ＰｕｂＫｅｙ  Ａ’と一致するものを探す。
ａ．コントローラは、自動車が、ＰｕｂＫｅｙ  Ａ’として同じ値が組込まれたＰｕｂＫｅｙを生み出すことを見つける
【０１４９】
１０．コントローラは、スイッチＡに自身のＰｕｂＫｅｙプロトコルを使って、マニュアルオン及びマニュアルオフに関して値が組込まれたＰｕｂＫｅｙを計算して、ＰｕｂＫｅｙ  Ｂ’と一致するものを見つける。
ａ．コントローラは、マニュアルオフがＰｕｂＫｅｙ  Ｂ’として同じ値を組み込んだＰｕｂＫｅｙを生成することに気づく。
１１．コントローラは、ＮＯＮＩＭＰＬＹゲートロジックを適用する：
ａ．センサＡ＝＝「自動車」  ＮＯＮＩＭＰＬＹ  スイッチＢ＝＝「マニュアルオン」
ｂ．「自動車」＝＝「自動車」  ＮＯＮＩＭＰＬＹ  「マニュアルオフ」＝＝「マニュアルオン」
ｃ．真  ＩＭＰＬＹ  偽
ｄ．真―信号をＬ＿ＯＮに送って、道路のライトをオンにする
【０１５０】
１２．コントローラは、ＮＯＮＩＭＰＬＹゲートトランザクションのアウトプットを更新して、信号をＬ＿ＯＮに送り、自身におつりを戻す。コントローラは、次に、ＳＨＩＧＨＡＳＨＩ＿ＡＬＬで自身のインプットに署名し、すべてのインプット及びアウトプットでロックし、ブロックチェーンに提出する。図３０参照。
【０１５１】
１３．Ｌ＿ＯＮへのトランザクションアウトプットを確認すると道路のライトは、オンになる。
【０１５２】
ユースケース例６：ＮＯＴロジックゲート
この例では、１つのインプットソースを持つＮＯＴロジックゲートを表現するビットコイントランザクションを実装する。ロンドン塔で王冠の宝石が毎年数百万人の訪問者に対して展示されていると仮定する。インペリアルステートの王冠が通常閉まっている感圧スイッチの上に載っていると仮定する。スイッチの上に王冠を置くとアラームが作動する。王冠をスイッチから取り去るとアラームが始動する。これは、ＮＯＴゲートの実装である。全体のシステムは、コントローラ、スイッチ、及びアラームから構成される。スイッチは、状態が変わるとき、信号をコントローラへ送る。
【０１５３】
コントローラにおけるＮＯＴロジック：  ＮＯＴスイッチ＝クローズド
【表１８】
2019526192.tif 000034
【０１５４】
既存の設定
・スイッチは、１ＢＴＣを有する秘密鍵／公開鍵のペアＸを所有する
・コントローラは、１ＢＴＣを有する秘密鍵／公開鍵のペアＣを所有する
・アラームは、秘密鍵／公開鍵のペアＡ＿Ａｃｔｉｖａｔｅ及びＡ＿Ａｒｍを所有する
【０１５５】
ステップ：
１．インストールの間、コントローラ及びスイッチは、以下のパラメータを持つＰｕｂＫｅｙプロトコルを確立する：
【０１５６】
【表１９】
2019526192.tif 000035
【０１５７】
２．スイッチは、最初は、クローズド状態である（王冠は、スイッチの上にある）
【０１５８】
３．スイッチは、王冠が取り去られたとき変化を検知する。スイッチは、信号「偽」を値が組込まれたＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ｘ’）に組み込む
【数１５】
2019526192.tif 000036
【０１５９】
４．スイッチは、自身の値が組込まれたＰｕｂＫｅｙへのアウトプットを持つ中間トランザクションを生成し、ブロックチェーンに提出する。
アウトプット１―このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ｘ’をコントローラに通信する
アウトプット２−おつりをスイッチＸの公開鍵Ａに戻す
【０１６０】
５．スイッチは、コントローラに中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットを送る。図３２参照
【０１６１】
６．コントローラは、スイッチから受信されたビットコイントランザクションインプットを含むＮＯＴゲート（ＮＯＴゲートトランザクション）を表現するビットコイントランザクションを作成する。図３３参照。
【０１６２】
７．コントローラは、スイッチがＮＯＮゲートトランザクションにおける自身のインプットに署名するようにリクエストして、インプットはロックされる。
ａ．スイッチは、変更されることを防止するＳＩＧＨＡＳＨ＿ＮＯＮＥで署名する：図３４
【０１６３】
８．コントローラは、「真」及び「偽」のための値が組込まれたＰｕｂＫｅｙを計算し、それを、アンロッキングスクリプトからの値を組み込んだＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ｘ’）と比較する。「偽」との一致を見つける
【０１６４】
９．コントローラは、ＮＯＮゲートを値「偽」に適用し、アラームを始動にする（Ａ＿ＡＣＴＩＶＡＴＥ）ために信号を送るべきか決定する。
【０１６５】
１０．コントローラは、ＮＯＴゲートトランザクションのアウトプットを更新して、信号をＡ＿ＡＣＴＩＶＡＴＥに送り、自身の公開鍵Ｃにおつりを戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬでインプットに署名し、ブロックチェーンに提出する。図３５参照
アウトプット１−アラームを始動する信号
アウトプット２−コントローラの公開鍵Ｃにおつりを戻す
【０１６６】
１１．Ａ＿ＡＣＴＩＶＡＴＥへのトランザクションアウトプットを確認するとアラームを始動する
【０１６７】
ユースケース例７：  ＯＲロジックゲート
２つのインプットソースを持つＯＲロジックゲートを表現するビットコイントランザクションを実装する。内部と外部の温度センサを使用する自動エアフローシステム（automated  airflow  system）を持つビルを検討する。温度センサは、摂氏−３０度から５０度の整数の温度を読み取る。内部温度が２１度を超えている、又は外部温度が２５度を超えている場合、エアフローシステムは、冷たい空気を放出し、そうでなければエアフローシステムは温かい空気を放出する。これは、ＯＲゲートの実装である。全体のシステムは、４つのエンティティから構成される：温度センサＡ、温度センサＢ、コントローラ、及びエアフローシステム。両方のセンサは、いずれか１つが温度の変化を検出すると、コントローラに信号を送る。
【０１６８】
コントローラのＯＲロジック：  温度Ａ＞２１度  ＯＲ  温度Ｂ＞２５度
【表２０】
2019526192.tif 000037
すべてのロジック評価は、コントローラによって実行される。温度センサは、読み取った温度を単に送り、それが暑いか又は寒いかは評価しない。
【０１６９】
既存の設定
・温度センサＡは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＡを所有する
・温度センサＢは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＣを所有する
・エアフローシステムは、秘密鍵／公開鍵のペアＳ＿ＣＯＯＬ及びＳ＿ＷＡＲＭを所有する
【０１７０】
ステップ
１．システムが最初にインストールされると、コントローラは、温度センサＡ及び温度センサＢとＰｕｂＫｅｙプロトコルを確立して、信号の安全な通信を可能にする：
【０１７１】
ａ．コントローラ及び温度センサＡのＰｕｂＫｅｙプロトコルパラメータ：
【表２１】
2019526192.tif 000038
【０１７２】
ｂ．コントローラ及び温度センサＢのＰｕｂＫｅｙプロトコルパラメータ：
【表２２】
2019526192.tif 000039
【０１７３】
２．温度センサＡは、現在２１度を読取り、温度センサＢは２７度を読み取る
【０１７４】
３．温度センサＡは、２１度から２０度への変化を検知する。各温度センサは、それらの測定値を、値を組み込んだＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ’とＰｕｂＫｅｙ  Ｂ’）に組み込む。
ａ．温度センサＡ：
【数１６】
2019526192.tif 000040
ｂ．温度センサＢ：
【数１７】
2019526192.tif 000041
【０１７５】
４．両方の温度センサは、それらのそれぞれの値が組込まれたＰｕｂＫｅｙへのアウトプットを持つビットコイントランザクション（中間トランザクション）を作成し、ブロックチェーンに提出する。
ａ．温度センサＡの中間トランザクション：図３６ａ
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ａ’をコントローラへ通信する
アウトプット２−おつりを温度センサＡの公開鍵Ａに戻す
ｂ．温度センサＢの中間トランザクション：図３６ｂ
アウトプット１−このアウトプットを使うインプットは、ＰｕｂＫｅｙ  Ｂ’をコントローラへ通信する
アウトプット２−おつりを温度センサＢの公開鍵Ｂに戻す
【０１７６】
５．両方の温度センサは、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットを作成する。両方のセンサは、このインプットをコントローラへ送る。以下について図３７参照
ａ．温度センサＡのトランザクションのインプット
ｂ．温度センサＢのトランザクションのインプット
【０１７７】
６．コントローラは、温度センサからのビットコイントランザクションインプットを使用し、ＯＲゲート（ＯＲゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含み、トランザクションは、アウトプットを単独で修正することができる。図３８参照
【０１７８】
７．コントローラは、温度センサＡ及び温度センサＢに対して、ＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＯＲゲートトランザクションのそれらのそれぞれのインプットに署名するようにリクエストする。これはインプットをロックし、一方、アウトプットがまだ変更されることを可能にする。図３９参照
【０１７９】
８．コントローラは、温度センサＡと自身のＰｕｂＫｅｙプロトコルを使用して、ＰｕｂＫｅｙ  Ａ’に一致する１つを見つけるまで各温度−３０度、−２９度、…、４９度、５０度に対して値を組み込んだＰｕｂＫｅｙを計算する
ａ．コントローラは、２０度がＰｕｂＫｅｙ  Ａ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける
【０１８０】
９．コントローラは、温度センサＢと自身のＰｕｂＫｅｙプロトコルを使用して、ＰｕｂＫｅｙ  Ｂ’に一致する１つを見つけるまで各温度−３０度、−２９度、…、４９度、５０度に対して、値を組み込んだＰｕｂＫｅｙを計算する
ａ．コントローラは、２７度がＰｕｂＫｅｙ  Ｂ’として同じ値が組込まれたＰｕｂＫｅｙを生成することを見つける
【０１８１】
１０．コントローラは、ＯＲゲートロジックを温度の測定値に適用する：
ａ．温度Ａ＞２１度  ＯＲ  温度Ｂ＞２５度
ｂ．２０度＞２１度  ＯＲ  ２７度＞２５度
ｃ．偽  ＯＲ  真
ｄ．真−信号をＳ＿ＣＯＯＬに送って、冷たい空気を放出する
【０１８２】
１１．コントローラは、ＯＲゲートトランザクションのアウトプットを更新して、信号をＳ＿ＣＯＯＬに送り、おつりを自身に戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬで自身のインプットに署名して、すべてのインプット及びアウトプットでロックし、ブロックチェーンに提出する。図４０参照
【０１８３】
１２．エアフローシステムは、Ｓ＿ＣＯＯＬへのトランザクションアウトプットを確認すると、冷たい空気を放出する
【０１８４】
ユースケース例８：  ＸＮＯＲロジックゲート
この例では、２つのインプットソースを持つＸＮＯＲロジックゲートを表現するビットコイントランザクションを実装する。２つのアイテムを生産する生産システムを検討する：クリケットボール及びクリケットボールのコルクである。両方のアイテムは、２つのスキャナＡ及びスキャナＢを持つ同じ品質管理を通過する。スキャナＡは、ボールが赤か否か、０、５，１０、…、９５、１００％からの信頼測定値（belief  reading）を与える。スキャナＢは、ボールがステッチを持つか否か、０、５，１０、…、９５、１００％からの信頼測定値を与える。ボールが２つの特徴を持つ場合、標準のクリケットボール（normal  cricket  ball）として受け入れられる。ボールがどちらの特徴も無い場合、それはコルクとしてまた受け入れられる。ボールがいずれか１つの特徴のみ有する場合、不良品として不合格にされる。これは、ＸＮＯＲゲートの実装である。
【０１８５】
全体のシステムは、４つのエンティティから構成される：スキャナＡ、スキャナＢ、コントローラ、及び生産システム（Production  System）。両方の検出器は、いずれか１つが変化を検出したとき、信頼（belief）をコントローラに送る。
コントローラにおけるＸＮＯＲロジック：スキャナの信頼Ａ＞９０％  ＸＮＯＲ  スキャナの信頼Ｂ＞６０％
ステッチの検出は、赤の検出より精度が低いので、受け入れ可能な値のより大きな範囲が、スキャナＢに対して使用される。
【０１８６】
【表２３】
2019526192.tif 000042
すべてのロジック評価は、コントローラによって実行される。スキャナは、それらの測定する信頼を単に送るが、発火する（fire）と仮定するぐらい十分高いか否かは評価しない。
【０１８７】
既存の設定
・スキャナＡは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＡを所有する
・スキャナＢは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＢを所有する
・コントローラは、１ＢＴＣを持つ秘密鍵／公開鍵のペアＣを所有する
・生産システムは、秘密鍵／公開鍵のペアＳ＿ＡＣＣＥＰＴ及びＳ＿ＲＥＪＥＣＴを所有する
【０１８８】
ステップ：
１．システムが最初にインストールされたとき、コントローラは、スキャナＡ及びスキャナＢとＰｕｂＫｅｙプロトコルを確立して、信号が安全に通信できるようにする：
【０１８９】
ａ．コントローラ及びスキャナＡのＰｕｂＫｅｙプロトコルパラメータ：
【表２４】
2019526192.tif 000043
【０１９０】
ｂ．コントローラ及びスキャナＢのＰｕｂＫｅｙプロトコルパラメータ：
【表２５】
2019526192.tif 000044
【０１９１】
２．ボールは、スキャナを通過する。スキャナＡは、１００％一致を読取る。スキャナＢは７５％一致を読み取る。
【０１９２】
３．各スキャナは、自身の測定値を値が組込まれたＰｕｂＫｅｙ（ＰｕｂＫｅｙ  Ａ’及びＰｕｂＫｅｙ  Ｂ’）に組み込む
ａ．スキャナＡ：
【数１８】
2019526192.tif 000045
ｂ．スキャナＢ：
【数１９】
2019526192.tif 000046
【０１９３】
４．両方のスキャナは、それらのそれぞれの値が組込まれたＰｕｂＫｅｙへのアウトプットを持つビットコイントランザクション（中間トランサクション）を作成し、ブロックチェーンに提出する
ｄ．スキャナＡの中間トランザクション：図４１ａ参照
アウトプット１−このアウトプットを使うインプットはＰｕｂＫｅｙ  Ａ’をコントローラに通信する
アウトプット２−スキャナＡの公開鍵Ａにおつりを戻す
ｅ．スキャナＢの中間トランザクション：図４１ｂ参照
アウトプット１−このアウトプットを使うインプットはＰｕｂＫｅｙ  Ｂ’をコントローラに通信する
アウトプット２−スキャナＢの公開鍵Ｂにおつりを戻す
【０１９４】
５．両方のスキャナは、それらのそれぞれの中間トランザクションのアウトプット１を使う署名されていないビットコイントランザクションインプットを作成する。両方のスキャナは、このインプットをコントローラへ送る。以下は図４２を参照
ａ．スキャナＡのトランザクションインプット
ｃ．スキャナＢのトランザクションインプット
【０１９５】
６．コントローラは、スキャナからのビットコイントランザクションインプットを使用して、ＸＮＯＲゲート（ＸＮＯＲゲートトランザクション）を表現するビットコイントランザクションを作成する。このトランザクションは、コントローラ自身からのインプットを含むので、単独でアウトプットを変更できる。図４３参照
【０１９６】
７．コントローラは、スキャナＡ及びスキャナＢに対してＳＩＧＨＡＳＨ＿ＮＯＮＥを使用してＸＮＯＲゲートトランザクションにおけるそれらのそれぞれのインプットに署名するようにリクエストする。これは、インプットにおいてロックし、一方、アウトプットはまだ修正することを許す。図４４参照
【０１９７】
８．コントローラは、スキャナＡとＰｕｂＫｅｙプロトコルを使用し、ＰｕｂＫｅｙ  Ａ’に一致する１つを見つけるまで、各読取り０，５，…，９５，１００％に対して値が組込まれたＰｕｂＫｅｙを計算する
ａ．コントローラは、ＰｕｂＫｅｙ  Ａ’として同じ値が組込まれたＰｕｂＫｅｙを１００％が生産することを見つける。
９．コントローラは、スキャナＢと自身のＰｕｂＫｅｙプロトコルを使用して、ＰｕｂＫｅｙ  Ｂ’に一致する１つを見つけるまで、各読取り０，５，…，９５，１００％に対して値が組込まれたＰｕｂＫｅｙを計算する
ａ．コントローラは、ＰｕｂＫｅｙ  Ｂ’として同じ値が組込まれたＰｕｂＫｅｙを７５％が生産することを見つける。
【０１９８】
１０．コントローラは、ＮＯＲゲートロジックを信頼読取りに適用する：
ａ．スキャナの信頼Ａ＞９０％  ＸＮＯＲ  スキャナの信頼Ｂ＞６０％
ｂ．１００＞６０  ＸＮＯＲ  ７５＞６０
ｃ．真  ＯＲ  真
ｄ．真−信号をＳ＿ＡＣＣＥＰＴに送り、ボールを受け入れる
【０１９９】
１１．コントローラは、ＸＮＯＲゲートトランザクションの出力を更新して、信号をＳ＿ＡＣＣＥＰＴに送り、おつりを自身に戻す。コントローラは、次に、ＳＩＧＨＡＳＨ＿ＡＬＬでそのインプットに署名して、すべてのインプット及びアウトプットにおいてロックし、ブロックチェーンに提出する。図４５参照。
【０２００】
１２．システムは、Ｓ＿ＡＣＣＥＰＴへのトランザクションアウトプットを確認すると、ボールが包装され続けることを許す
【０２０１】
上述の実施形態は、本発明を制限するよりはむしろ説明し、当業者であれば、添付請求項で規定された本発明の範囲から逸脱することなく多くの代替の実施形態を設計する能力があることに留意されたい。本請求項において、括弧の中に置かれたいかなる参照符号も、本請求項を制限すると解釈されない。単語「含んでいる（comprising）」及び「含む（comprises）」などは、いずれかの請求項又は明細書全体で列挙されたもの以外の要素やステップの存在を排除するものではない。本明細書において、「含む（comprises）」は「含む（includes）又はから構成される（consists  of）」を意味し、「含んでいる（comprising）」は、「含んでいる（including）又はから構成されている（consisting  of）」を意味する。要素の単一の参照は、そのような要素の複数の参照を排除するものではなく、又その逆もまた同様である。本発明は、いくつかの別個の要素を含むハードウェアの手段によって、及び適切にプログラムされたコンピュータの手段によって実効することができる。いくつかの手段を列挙している装置クレームにおいて、それらの手段のいくつかは、１つの同一のハードウェアのアイテムによって具現化されても良い。特定の手段が互いに異なる従属請求項に引用されているという単なる事実は、これらの手段の組み合わせが有利に使用されることができないことを示すものではない。
【図１】
2019526192.tif 000049
【図２ａ】
2019526192.tif 000050
【図２ｂ】
2019526192.tif 000051
【図２ｃ】
2019526192.tif 000052
【図２ｄ】
2019526192.tif 000053
【図２ｅ】
2019526192.tif 000054
【図２ｆ】
2019526192.tif 000055
【図２ｇ】
2019526192.tif 000056
【図２ｈ】
2019526192.tif 000057
【図３】
2019526192.tif 000058
【図４】
2019526192.tif 000059
【図５ａ】
2019526192.tif 000060
【図５ｂ】
2019526192.tif 000061
【図６】
2019526192.tif 000062
【図７】
2019526192.tif 000063
【図８】
2019526192.tif 000064
【図９】
2019526192.tif 000065
【図１０】
2019526192.tif 000066
【図１１】
2019526192.tif 000067
【図１２】
2019526192.tif 000068
【図１３】
2019526192.tif 000069
【図１４】
2019526192.tif 000070
【図１５】
2019526192.tif 000071
【図１６】
2019526192.tif 000072
【図１７】
2019526192.tif 000073
【図１８】
2019526192.tif 000074
【図１９】
2019526192.tif 000075
【図２０】
2019526192.tif 000076
【図２１ａ】
2019526192.tif 000077
【図２１ｂ】
2019526192.tif 000078
【図２２】
2019526192.tif 000079
【図２３】
2019526192.tif 000080
【図２４】
2019526192.tif 000081
【図２５】
2019526192.tif 000082
【図２６ａ】
2019526192.tif 000083
【図２６ｂ】
2019526192.tif 000084
【図２７】
2019526192.tif 000085
【図２８】
2019526192.tif 000086
【図２９】
2019526192.tif 000087
【図３０】
2019526192.tif 000088
【図３１】
2019526192.tif 000089
【図３２】
2019526192.tif 000090
【図３３】
2019526192.tif 000091
【図３４】
2019526192.tif 000092
【図３５】
2019526192.tif 000093
【図３６ａ】
2019526192.tif 000094
【図３６ｂ】
2019526192.tif 000095
【図３７】
2019526192.tif 000096
【図３８】
2019526192.tif 000097
【図３９】
2019526192.tif 000098
【図４０】
2019526192.tif 000099
【図４１ａ】
2019526192.tif 000100
【図４１ｂ】
2019526192.tif 000101
【図４２】
2019526192.tif 000102
【図４３】
2019526192.tif 000103
【図４４】
2019526192.tif 000104
【図４５】
2019526192.tif 000105
【国際調査報告】
2019526192.tif 000106
2019526192.tif 000107
2019526192.tif 000108