(57)【要約】  本発明は、論理ゲートの機能を実装するためにブロックチェーントランザクションが生成されるソリューションを提示する。本発明は、ビットコインプラットフォーム又は代替のブロックチェーンプラットフォームで実施されて良い。トランザクションは、ＯＲ、ＡＮＤ、ＸＯＲ、ＮＯＴ、等のような論理ゲートの機能を実装するために選択された命令を有するロックスクリプトを含む。幾つかの例では、命令は、ハッシュされた形式で提供されて良い。スクリプトが実行されると（第２トランザクションは、ロックスクリプトに関連付けられた出力を使用使用とするので）、入力は、真又は偽の出力を提供するために、条件付き命令により処理される。第２トランザクションは、検証のためにブロックチェーンネットワークへ送信され、有効であると決定された場合に、ブロックチェーンに書き込まれる。第２トランザクションの有効性は、真の出力として解釈できる。したがって、第１トランザクションのロックスクリプトは、所望の論理ゲートの機能を提供する。本発明は、多数の利点を提供し、制御システム及び処理の実装のような広範な用途において使用可能である。
2019517175.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される制御方法であって、
第１ブロックチェーントランザクションの中でロックスクリプトを提供するステップであって、前記ロックスクリプトは、少なくとも１つのブール入力を処理するよう構成される少なくとも１つの命令を有する、ステップと、
アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップと、
少なくとも１つのブール入力を提供するために少なくとも１つの入力信号を処理するステップと、
前記第１及び更なるブロックチェーントランザクションの前記ロック及びアンロックスクリプトを実行するために、前記少なくとも１つのブール入力を使用するステップと、
を有する方法。
【請求項２】
前記少なくとも１つのブール入力を提供するために前記少なくとも１つの入力信号を処理する前記ステップは、
ｉ）前記更なるブロックチェーントランザクションの前記アンロックスクリプトにより、又は、
ｉｉ）少なくとも１つの計算リソース又はエージェントにより、
実行される、請求項１に記載の方法。
【請求項３】
前記更なるトランザクション及び／又は第１トランザクションを、検証のためにブロックチェーンネットワークへ送信するステップ、
を更に有する請求項１又は２に記載の方法。
【請求項４】
前記更なるトランザクションの存在又は不存在を決定するために、ブロックチェーン又はブロックチェーンネットワークを監視し又は検索するステップ、
を更に有する請求項１乃至３のいずれかに記載の方法。
【請求項５】
計算リソースを提供するステップであって、前記計算リソースは、
ブロックチェーン又はブロックチェーンネットワークの中の前記更なるトランザクションの検出、及び／又は、
前記更なるトランザクションの有効性、
に基づき、装置又はプロセスの動作に影響するよう構成される、ステップ、
を含む請求項３又は４に記載の方法。
【請求項６】
ブロックチェーン又はブロックチェーンネットワーク内の前記更なるトランザクションの検出を、論理ゲートの真の出力として解釈するステップ、
を有する請求項３乃至５のいずれかに記載の方法。
【請求項７】
ブロックチェーンネットワーク内の前記更なるトランザクションの検証は、前記アンロックスクリプトの実行に依存する、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記更なるトランザクションの有効性に基づき、装置又はプロセスを制御するステップであって、前記有効性は、コンピュータに基づく制御エージェントにより、又はネットワークノードにより検証されたかどうかを決定するためにブロックチェーンネットワークを監視することにより、及び／又は前記トランザクションがブロックチェーンに書き込まれたか否かを決定するために前記ブロックチェーンの状態を監視することにより、決定され又は確立される、ステップ、
を有する請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記ロックスクリプトの中の前記少なくとも１つの命令は、論理ゲートの真理値表を実装するよう構成される、請求項１乃至８のいずれかに記載の方法。
【請求項１０】
前記ゲートは、ＯＲゲート、ＸＯＲゲート、ＮＡＮＤゲート、ＮＯＲゲート、ＮＯＴゲート、ＸＮＯＲゲート、ＩＭＰＬＹゲート、逆包含ゲート、である、請求項９に記載の方法。
【請求項１１】
前記論理ゲートはＡＮＤゲートである、請求項９に記載の方法。
【請求項１２】
前記少なくとも１つの入力は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び／又はビットコインの他のブロックチェーン関連アドレス、を有する、請求項１乃至１１のいずれかに記載の方法。
【請求項１３】
前記第１及び／又は更なるトランザクションは、コンピュータに基づくリソース上で実行する自動プロセスにより、生成され及び／又はブロックチェーンネットワークへ送信される、請求項１乃至１２のいずれかに記載の方法。
【請求項１４】
前記少なくとも１つの命令は、
ブール条件又は演算子を有する、及び／又は、
スタック型プログラミング言語を用いて記述され及び／又は実行される、
請求項１乃至１３のいずれかに記載の方法。
【請求項１５】
請求項１乃至１４のいずれか一項に記載の方法を実施するよう構成されたコンピュータにより実装されるシステム。
【請求項１６】
ブロックチェーンを用いる又はブロックチェーン上で実施されるブール計算又は演算を組み込む制御システムであって、前記ブール計算又は演算は、少なくとも１つの入力と少なくとも１つの命令とを含むブロックチェーントランザクションを有し、前記少なくとも１つの命令は、少なくとも１つのブール出力を提供するために前記少なくとも１つの入力を処理することによりブール真理値表の機能を実装するよう選択される、制御システム。
【請求項１７】
真理値表は、ＯＲゲート、ＸＯＲゲート、ＮＡＮＤゲート、ＮＯＲゲート、ＮＯＴゲート、ＩＭＰＬＹゲート、ＮＯＴ  ＩＭＰＬＹゲート、又はＸＮＯＲゲート、の真理値表である、請求項１６に記載の制御システム。
【請求項１８】
前記真理値表は、ＡＮＤゲートの真理値表である、請求項１７に記載の制御システム。
【請求項１９】
前記出力はブール値であり、又は、
前記少なくとも１つの命令は、前記トランザクションに関連付けられたスクリプト内で提供され、望ましくは前記スクリプトはロックスクリプトである、
請求項１６乃至１８のいずれかに記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、分散台帳（ブロックチェーン）技術に関する。本発明は、限定ではないがビットコインブロックチェーンを含む任意のブロックチェーン関連技術であり得る。本発明の態様は、論理ゲート及び組み合わせ論理の分野にも関する。本発明は、制御システム又は処理と共に使用することに適する場合がある。
【発明の概要】
【０００２】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳を含むよう使用される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、サイドチェーン及び代替チェーン技術、共有台帳、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。用語「ユーザ」は、人間又はコンピュータに基づくリソースを表すことがある。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピア電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタル資産の制御の転送を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード（マイナー）は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークにより拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション（ＵＴＸＯ）に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、アンロックスクリプトは、ロックスクリプトの評価のために入力を提供できる。これは標準的に署名に基づく入力の形式であるが、他の入力形式が可能であることが知られている。さらに、スクリプト言語におけるコマンドの多くは、真又は偽の結果を提供するブール演算子（例えば、ＯＰ−ＥＱＵＡＬ）である。これは、トランザクションの中に条件付けを構築することを可能にする。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用のために最も広く知られている。しかしながら、更に近年は、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステムの使用、及びブロックチェーンに格納可能なデータの両者を探索し始めている。本発明は、ブロックチェーン技術の１つのこのような新しい新規な適応に関する。特に、本発明は、広範な且つ様々な範囲のコンピュータにより実装されるシステムを生成するための簡易だが効率的且つ強力なメカニズムとして使用可能な、論理ゲートの機能を実装し又はエミュレートするためのブロックチェーンの使用に関する。このようなシステムは、処理を制御する及び／又は装置及びシステムの動作を指示する制御ユニットを含み得る。
【０００６】
制御ユニットの基本要素は論理ゲートである。ゲート論理をブロックチェーントランザクション（Ｔｘ）内に構築することにより、ブロックチェーン技術により与えられる利益を利用する強力な処理を実装できる。これらの利益は、限定ではないが、拡張されたサイバーセキュリティ、分散化装置／システム／処理制御、レガシーシステムとの可能な統合、及び記録の不変性／永続性を含む。
【０００７】
したがって、論理ゲートの機能を提供し又はエミュレートする又はブロックチェーンを介するソリューションを提供することが望ましい。このようなソリューションでは、論理ゲートは、ブロックチェーントランザクションのロックスクリプトにより実装され得る。論理ゲートの基本構造への拡張は、任意の数の入力及び任意の数の出力を可能にするために提供され得る。
【０００８】
このような改良されたソリューションが考案されている。したがって、本発明によると、添付の請求の範囲に定められるようなソリューションが提供される。
【０００９】
本発明の実施形態は、コンピュータにより実装される方法及び対応するシステムを提供し得る。これらは、制御方法／システムとして記載され得る。
【００１０】
本発明は、ロックスクリプトを有するブロックチェーントランザクション（ＴＸ１）を提供する又は使用するステップであって、ロックスクリプトは、実行により、論理ゲートの機能を実装する及び／又はエミュレートするよう選択され及び構成されたコードの一部を実行する、ステップを有する方法を提供し得る。コードの一部の実行は、該コードの一部への入力を生成する少なくとも１つの条件の評価の後に実行されて良い。
【００１１】
少なくとも１つの条件の評価は、ブール入力を生成して良い。コードの一部は、１又は複数の命令を有して良い。これらは、オペコードであって良い。オペコードは、スタックへデータをプッシュし、又はスタックからデータをポップして良い。コードの一部は、１又は複数の条件の結果を用いて実行するために構成されて良い。コードの一部は、特に論理ゲートをエミュレートする目的のために、ユーザ（つまり、プログラマ又はトランザクションの作成者）により選択されて良い。
【００１２】
追加又は代替として、方法は、第１ブロックチェーントランザクション内でロックスクリプトを提供するステップを有して良い。第１（及び／又は更なる）トランザクションは、自動プロセスにより、つまり人間の介在無しにコンピュータにより、生成されて良い。
【００１３】
ロックスクリプトは、少なくとも１つのブール入力を処理するよう構成される少なくとも１つの命令（つまりコードの一部）を有して良い。１又は複数の実施形態では、少なくとも１つの命令は、少なくとも１つの命令のハッシュとして、ロックスクリプト内で提供されて良い。したがって、命令は、ハッシュされた形式であって良い。少なくとも１つの命令は、ブール入力を計算で使用することにより又はブール入力に対して何らかの演算を実行することにより、ブール入力を処理して良い。
【００１４】
ブール入力は、コードの一部を実行する前に、条件を評価することにより生成されて良い。条件は、ハッシュ値と格納されたハッシュ値との間の等価テストを有して良い。予め格納されたハッシュ値は、ロックスクリプトの中で提供されて良い。代替として、条件は、ロックスクリプト内で提供される１又は複数の命令／オペコードにより実装されて良い。
【００１５】
方法は、アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップを有して良い。アンロックスクリプトは、Ｒｅｄｅｅｍスクリプトを有して良い。実際の命令がアンロック（Ｒｅｄｅｅｍ）スクリプトにより提供されるように、少なくとも１つの命令は、ロックスクリプト内でハッシュとして提供されて良い。ここで、提供される命令のハッシュは、使用されるべきトランザクションのアウトプットのために、ロックスクリプト内のハッシュに一致しなければならない。
【００１６】
方法は、少なくとも１つのブール入力を提供するために、少なくとも１つの入力信号を処理するステップを有して良い。入力信号は、任意のソースから受信され又は導出されて良い。
【００１７】
方法は第１及び更なるブロックチェーントランザクションのそれぞれロックスクリプト及びアンロックスクリプトを実行するために、少なくとも１つのブール入力を用いるステップを有して良い。
【００１８】
少なくとも１つのブール入力を提供するために少なくとも１つの入力信号を処理するステップは、更なるブロックチェーントランザクションのアンロックスクリプトにより実行されて良い。
【００１９】
代替又は追加として、アンロックスクリプトへの入力として使用される前に、少なくとも１つの計算リソース又はエージェントにより実行されて良い。計算リソースは、ブロックチェーンネットワークの部分ではないことを意味する「ブロック外（off  block）」リソースであって良い。
【００２０】
方法は、更なるトランザクション及び／又は第１トランザクションを、評価のためにブロックチェーンネットワークへ送信するステップ、を更に有して良い。ネットワークは、ビットコインネットワークであって良い。
【００２１】
方法は、更なるトランザクションの存在又は不存在を決定するために、ネットワークのブロックチェーンを監視し又は検索するステップを有して良い。
【００２２】
方法は、ブロックチェーン内の更なるトランザクションの検出に基づき、装置又はプロセスの動作に影響を与えるよう構成される計算リソースを提供するステップを有して良い。
【００２３】
方法は、更なるトランザクションの有効性を、論理ゲートにより提供される真の出力として解釈するステップを有して良い。有効性は、制御エージェントにより、又はブロックチェーン及び／又はブロックチェーンネットワークを監視することにより、決定されて良い。
【００２４】
更なるトランザクションの有効性の決定は、動作を計算リソース／エージェントにより実行させるトリガとして機能して良い。
【００２５】
ブロックチェーンネットワーク内の更なるトランザクションの検証は、アンロックスクリプトの実行に依存して良い。
【００２６】
方法は、ブロックチェーン内の更なるトランザクションの存在又は不存在の決定に基づき、装置、システム又はプロセスの活動又は動作を制御するステップを有して良い。これは、任意の種類の装置、システム、又は技術的プロセルであって良い。制御される装置、システム又はプロセスは、ブロック外で実施されて良く、つまり、ブロックチェーンネットワークから離れて又は区別されて良い。
【００２７】
ロックスクリプト内の少なくとも１つの命令は、論理ゲートの真理値表を実装するよう構成されて良い。
【００２８】
ゲートは、ＯＲゲート、ＸＯＲゲート、ＮＡＮＤゲート、ＮＯＲゲート、及びＮＯＴゲート、又はＸＮＯＲゲートであって良い。ゲートは、ＡＮＤゲートであって良い。ゲートは、ＩＭＰＬＹゲート（論理的条件、実質的条件、又は実質的含意としても知られる）であって良い。ゲートは逆包含（Converse  implication）ゲートであって良い。
【００２９】
少なくとも１つの入力信号は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び／又はビットコインの他のブロックチェーン関連アドレス、を有して良い。
【００３０】
第１及び／又は更なるトランザクションは、コンピュータに基づくリソース上で実行する自動プロセスにより、生成され及び／又はブロックチェーンネットワークへ送信されて良い。
【００３１】
少なくとも１つの命令は、ブール条件又は演算子を有して良い。少なくとも１つの命令は、スタック型プログラミング言語を用いて記述され及び／又は実行されて良い。
【００３２】
本発明は、上述の方法の任意のバージョンを実施するよう構成されるコンピュータにより実装されるシステムも提供し得る。
【００３３】
本発明は、ブロックチェーンを用いる又はブロックチェーン上で実施されるブール計算又は条件を組み込む制御システムであって、ブール計算又は演算は、ロックスクリプトを有するブロックチェーントランザクションを有し、ロックスクリプトは、少なくとも１つのブール出力を提供するために少なくとも１つの入力を処理することによりブール真理値表の機能を実装するよう選択される少なくとも１つの命令を有する、制御システムを提供し得る。
【００３４】
真理値表は、ＯＲゲート、ＸＯＲゲート、ＮＡＮＤゲート、ＮＯＲゲート、及びＮＯＴゲート、又はＸＮＯＲゲートの真理値表であって良い。真理値表は、ＩＭＰＬＹゲート（論理的条件、実質的条件、又は実質的含意としても知られる）の真理値表であって良い。真理値表は、ＡＮＤゲートの真理値表であって良い。
【００３５】
本発明の別の態様によると、実質的に後述する「技術３」に従う、コンピュータにより実施される制御方法が提供され得る。このような方法は、複数の第１ブロックチェーントランザクション（のうちの各々）の中で（それぞれの）ロックスクリプトを提供するステップであって、前記（各）ロックスクリプトは、少なくとも１つの入力信号を処理するよう構成される少なくとも１つの命令を有する、ステップと、アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップと、少なくとも１つのトランザクション出力を生成するために少なくとも１つの入力信号を処理するステップと、第１及び更なるブロックチェーントランザクションのロック及びアンロックスクリプトを実行するために、少なくとも１つのトランザクション出力を使用するステップと、を有して良い。
【００３６】
少なくとも１つのトランザクション出力を生成するために少なくとも１つの入力信号を処理するステップは、ｉ）更なるブロックチェーントランザクションのアンロックスクリプトにより、又は、ｉｉ）少なくとも１つの計算リソース又はエージェントにより、実行されて良い。
【００３７】
方法は、評価のために更なるトランザクション及び／又は第１トランザクションをブロックチェーンネットワークへ送信するステップと、及び／又は、更なるトランザクションの存在又は不存在を決定するために、ブロックチェーン又はブロックチェーンネットワークを監視し又は検索するステップと、及び／又は、ブロックチェーン又はブロックチェーンネットワーク内の更なるトランザクションの検出、及び／又は更なるトランザクションの有効性、に基づき、装置又はプロセスの動作に影響を与えるよう構成される計算リソースを提供するステップと、を有して良い。
【００３８】
方法は、ブロックチェーン又はブロックチェーンネットワーク内の更なるトランザクションの検出を、論理ゲートの真の出力として解釈するステップ、を有して良い。ブロックチェーンネットワーク内の更なるトランザクションの検証は、アンロックスクリプトの実行に依存して良い。
【００３９】
方法は、更なるトランザクションの有効性に基づき、装置又はプロセスを制御するステップであって、有効性は、コンピュータに基づく制御エージェントにより、又はネットワークノードにより検証されたかどうかを決定するために前記ブロックチェーンネットワークを監視することにより、又は前記トランザクションが前記ブロックチェーンに書き込まれたか否かを決定するために前記ブロックチェーンの状態を監視することにより、決定され又は確立される、ステップ、を有して良い。
【００４０】
ロックスクリプト内の少なくとも１つの命令は、ＡＮＤゲートの真理値表を実装するよう構成されて良い。少なくとも１つの入力は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び／又はビットコインの他のブロックチェーン関連アドレス、を有して良い。第１及び／又は更なるトランザクションは、コンピュータに基づくリソース上で実行する自動プロセスにより、生成され及び／又はブロックチェーンネットワークへ送信されて良い。少なくとも１つの命令は、条件又は条件付き演算子を有して良く、及び／又は、スタック型プログラミング言語を用いて記述され及び／又は実行されて良い。本発明は、本発明の本態様に従う任意の方法を実施するよう構成されるコンピュータにより実装されるシステムを提供し得る。
【００４１】
ある実施形態又は態様に関連して上述した任意の特徴は、別の実施形態又は態様に関連して使用されても良い。例えば、方法に関連して記載された任意の特徴は、システムに適用可能であり、逆も同様である。
【００４２】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態により構成され、説明的使用例に関する、システムを示す。
【図２】図１の制御システムのための真理値表を示す。
【図３】図１の例のためのアンロックトランザクションの処理のステップを示す。
【図４】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
【図５】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
【図６】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
【図７】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
【図８】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
【図９】ブール出力Ｘを生成するために、２つのブール入力Ａ及びＢが第１トランザクションのロックスクリプト内で評価される、本発明の説明のための実施形態の機能を示す。
【図１０】第１及び第２トランザクションを有する、本発明の一実施形態の概略を示す。
【図１１】本発明の一実施形態によるプロセスを示す。
【図１２】後述する本発明の「技術１」に従う一実施形態の概略を示す。
【図１３】後述する本発明の「技術２」に従う一実施形態の概略を示す。
【図１４】後述する本発明の「技術３」に従う一実施形態の概略を示す。
【図１５】従来技術によりロック及びアンロックスクリプトが評価される方法の説明を提供する。
【発明を実施するための形態】
【００４４】
本発明は、特定の真理値表の論理を実装するために、ブロックチェーントランザクションのロックスクリプトを使用するメカニズムを提供する。従来知られているように、このような真理値表は、論理ゲートを実装するために使用される。標準的に、基本ゲートは２つの入力Ａ及びＢと、単一の出力Ｘとを有する。図９は、出力Ｘを生成するために、２つの入力Ａ及びＢがトランザクション内で評価される、本発明の説明のための実施形態により生成される構造の概略を示す。入力値Ａ及びＢは、論理ゲートコードを含むロックスクリプトに関連付けられた前のトランザクションの出力を使用しようとするブロックチェーントランザクションのアンロックスクリプトを介して提供される。アンロックスクリプトは、１又は複数の実施形態では、Ｒｅｄｅｅｍスクリプトを有して良い。したがって、少なくとも２つのトランザクションは、本発明の任意の実施形態を実施するために必要である。第１トランザクションは、ゲート論理を埋め込んだロックスクリプトにより、ビットコイン又は他の暗号通貨額をロックする。第２トランザクションは、Ａ及びＢ値を（場合によっては署名と一緒に）提示することにより、第１トランザクションの出力を使用する。
【００４５】
伝統的なゲートでは、Ａ、Ｂ、及びＸは、２進法であり、真（１）又は偽（０）と等価な値を取る。しかしながら、本発明の一実施形態によると、伝統的なゲートは、より複雑な変形を含むよう複製され拡張される。特に、ブロックチェーンゲートへの入力は、「真」又は「偽」入力自体ではなくて良く、幾つかの異なる値、フォーマット又は種類の値のうちの任意のものであって良い。例えば、Ａ及びＢは、整数、ハッシュ値、暗号鍵、ＢＴＣアドレス（等）であって良く、Ａ及びＢの真の値は、出力を生成するためにトランザクション内で評価されて良い。出力は、トランザクションが有効（「真」）又は無効（「偽」）であり得るという意味で、必ずしも２進法ではない。
【００４６】
しかしながら、出力は、幾つかのより複雑な関数のうちの任意のものとして機能して良い。例えば、出力は、条件セットを満たすことを条件とする重要な支払いを表して良く、又は、出力は、普通の支払であって良いが、イベントの安全な永久的レコードとして作用しない。ブロックチェーンゲートの変形の使用の更なる例は、後述される。
【００４７】
多くの異なる種類の論理ゲートがあり、その全ては、本発明の範囲に包含される。一般的に、任意の回路の構成のために重要な幾つかの基本２入力ゲートがある。これらは、順不同で以下の通りである：
１．ＡＮＤ
２．ＯＲ
３．ＸＯＲ              排他的ＯＲ
４．ＮＡＮＤ            否定ＡＮＤ
５．ＮＯＲ              否定ＯＲ
６．ＸＮＯＲ            排他的ＮＯＲ
７．ＩＭＰＬＹ          論理条件
８．ＮＯＴ−ＩＭＰＬＹ  実質的否包含。
【００４８】
別の一般的に使用されるゲートはＮＯＴであり、これは、１入力のみを有し、その出力は入力の反対の値である。ゲートは、通常、入力値と関連する出力値との全ての可能な組合せを提供する「真理値表」の形式で提示される。例えば、表１はＡＮＤゲート及びＮＯＴゲートを示す。
［表１］ＡＮＤゲート及びＮＯＴゲートの真理値表
【表１】
2019517175.tif 000003
【００４９】
全ての８個の基本的な２入力ゲートは、表２に示される。
［表２］８個の２入力ゲート
【表２】
2019517175.tif 000004
【００５０】
実際には、２つの２進入力が与えられた場合に出力の列を出す、１６個の可能な異なる方法がある。これらの多くは、所要の用途に依存して有用性を示し得る。これらは、それぞれ単一のゲートとして生成され得る。したがって、真理値表が単一のブロックチェーンスクリプトにより実装される場合（例えば、以下の「技術１」）、１６個の可能性のうちのいずれかが、トランザクションロックスクリプト内にコード化され得る。もちろん、可能性のうちの幾つかは、僅かしか又は全く現実の用途を有しない場合がある。完全を期すために、表３に、最初の６個のゲートについて１６個の可能性を示す。
［表３］全ての可能な２入力、１出力「ゲート」
【表３】
2019517175.tif 000005
【００５１】
前述のように、本発明は、論理ゲートの機能のうちの少なくとも部分を実装するためにブロックチェーントランザクションが生成されるソリューションを提示する。このゲートの機能は、トランザクションのロックスクリプトの中でエミュレートされる。このようなロックスクリプトは、本願明細書で便宜上「ブロックチェーンゲート」又は「ビットコインゲート」として参照される場合がある。さらに、便宜上、幾つかの例においてビットコインが参照される場合があるが、代替のブロックチェーンプロトコル及びプラットフォームが使用されて良い。
【００５２】
留意すべきことに、知られている技術によると、ブロックチェーントランザクションは、ｍ人のうちのｎ人のマルチシグオプションを利用するよう構成され得る。これは、実質的に、トランザクションに対して要求される署名の数に関して論理ゲートとして動作する。ｎ＝ｍのとき、マルチシグネチャ動作は、論理ＡＮＤゲートとして振る舞う。しかしながら、これは、入力の中で供給される署名の数にのみ関連し又はそれによってのみ影響され、ブロックチェーンにより実装される論理ゲートの評価を任意の他の種類の入力に対して許容しないので、論理ゲートの限られた実装である。本発明は、一方で、ゲート機能が、パラメータ化された入力のより広範なセットに対して作用することを可能にする。
【００５３】
本発明の種々の実施形態によると、第１ブロックチェーントランザクション（ＴＸ１）のロックスクリプトは、選択された論理ゲートの機能を提供するために使用される。言い換えると、第１トランザクションの中で提供されるロックスクリプトは、実行されると、特定の論理ゲートの真理値表に従う出力を提供するために提示された入力値を使用する何らかのコードを含む。したがって、ロックスクリプトの中の命令は、所望のゲートの真理値表を実装するために選択され構成される。ロックスクリプトは、第１トランザクションの出力（ＴＸＯ）に関連付けられる。
【００５４】
第２トランザクション（ＴＸ２）が次に生成される。第２トランザクションは、アンロックスクリプトを有する又はそれに関連付けられた入力を有する。アンロックスクリプトは、出力（ＴＸＯ）を使用するために、第１トランザクションのロックスクリプトを解除するために使用されて良い。検証は、第１及び第２トランザクションのロック及びアンロックスクリプトを実行させる。したがって、Ａ及びＢの特定値が使用される。従来知られている、トランザクション検証中にロック及びアンロックスクリプトが評価される方法の説明のために図１５を参照する。
【００５５】
ロック及びアンロックスクリプトの実行が有効トランザクションを生じる場合、トランザクションの有効性は、論理ゲートの真の出力として解釈できる。反対に、トランザクションの検証が失敗した場合、これは、論理ゲートの偽出力として解釈できる。既知のブロックチェーン技術及び複数の技術によると、失敗したスクリプトは単にそれだけなので、これは、従来技術に優る拡張である。しかしながら、本発明によると、失敗したスクリプト（つまり検証に成功しなかった）は、「偽」入力及びその後の「偽」入力に対する応答の検出を可能にする。したがって、どんな出力が起こるとしても特定の動作手順はブロックチェーンゲートの出力に依存するので、本発明は、入力が真か偽かに関わらず、有意義な後続の動作の誘導及び開始を可能にする。
【００５６】
トランザクションの有効性は、以下により決定できる：
・計算エージェント、
・ブロックチェーンネットワーク上の１又は複数のノード、
・ブロックチェーン上のブロック内のトランザクションの検出。上述のように、第１トランザクションからの出力の使用を試みるために、第２トランザクションが（ビットコイン）ネットワークに対して提示されると、マイニングノードは彼らの検証任務を実行する。トランザクションは、有効であれば、ブロックチェーンに書き込まれ、その他の場合には拒否される。したがって、計算エージェントは、該トランザクションが台帳へ出されるか否かを決定するために、ブロックチェーンの状態を監視できる。ブロックチェーンの中で検出された場合、これは、トランザクションが有効であったことを意味する。これは、論理ゲートからの真出力として計算エージェントにより解釈できる。
【００５７】
有効性又は無効性の確率は、何らかの動作の実行のためのトリガとして機能し得る。この動作は、エージェントにより実行されて良い。エージェントは、装置、システム、又はプロセスの動作を制御し又は影響を与えて良い。
【００５８】
図１２、１３、１４に示すように、第１トランザクション（ＴＸ１）は、エミュレートされるべきゲートの機能を定めることにおいて、「論理ゲートを準備する」として参照され得る。第２トランザクション（ＴＸ２）は、アンロックスクリプトを介して、ゲート出力の評価の際に使用される値を提供するので、「論理ゲートを評価する」として参照され得る。
【００５９】
図１０〜１４を参照して後述するように、上述の事柄を達成するための種々の技術が存在する。
【００６０】
＜技術１＞
図１２は、技術１の概略を提供する。鍵を定義する属性：
・入力信号Ａ及びＢは、単一のトランザクション（ＴＸ２）のトランザクション入力のアンロックスクリプトに提供される；
・Ａ及びＢは「（ビットコイン）パズル」であり、１又は複数の署名を伴って良い；
・ＴＸ２のアンロックスクリプトは、前のトランザクションＴＸ１の出力の使用を試みるために使用され、これは、それぞれＴＸ２及びＴＸ１のアンロックスクリプト及びロックスクリプトを実行させる；
・Ａ及びＢは、真／偽を評価するために、ＴＸ２のアンロックスクリプトの中で処理される；
・関連ロジック、つまり（ＴＸ１のロックスクリプトの中で提供される）選択されたゲートのためのコードは、次にこれらの処理された値を用いて実行される；
・スクリプト評価は、次に、マルチシグのような他のロジック及び命令を実行する；マルチシグ演算は、従来知られているように、選択された論理ゲートのためのコードとは別個であり、該コードの実行後に実行されることに留意する。
【００６１】
各パズルは、真又は偽である条件を表し、以下により、ロックスクリプトの実行中に評価される；
・先ず、解、つまりアンロックスクリプトによりロックスクリプトに対するパズルの値を提示する；
・ロックスクリプトは、提示された値をハッシュし、次に、それを内部に格納されたハッシュ値と比較する（「内部に格納された」は、ハッシュがロックスクリプトの部分として書き込まれていることを意味する）；提示された値のハッシュと格納されたハッシュとが等しいことは「真」を意味し、等しくないことは「偽」を意味する；したがって、各パズルについて、ハッシュの比較は中間結果を提供する；
・２つの評価された条件の中間結果は、次に、論理ゲートの出力Ｘを表す最終結果を提供するために、ロックスクリプト内で提供される関連ゲート論理コードに適用される；最終結果が真ならば、マルチシグ演算を用いて付随する署名が検証される。
【００６２】
ＴＸ１のロックスクリプトは、ビットコインプロトコルで知られているＰ２ＳＨロックスクリプト、又は代替プロトコルからの等価な機能であって良い。既知の技術によると、Ｐ２ＳＨロックスクリプトはＲｅｄｅｅｍスクリプトのハッシュを含み、ＴＸ１出力は、ハッシュされるとロックスクリプト内に格納されたハッシュに一致する正しいスクリプトの提示によってのみ使用できる。したがって、ｐａｙ−ｔｏ−ｓｃｒｉｐｔハッシュトランザクションに関して、実際のロジックはアンロックスクリプトの中で提示されるが、ロックスクリプトは、後に提供されるロジックを「知っている」。当業者は、このようなトランザクションの中のロックスクリプトの動作が知られていなければならないが、暗号的にセキュアな技術を用いて、実際の命令セットがアンロックスクリプトの部分として提供可能であることを理解する。この手法の利点は、実際にはＲｅｄｅｅｍスクリプトにより初期ハッシュとして解が提示され、初期ハッシュは比較を実行するためにロックスクリプトの実行中に再びハッシュされるので、Ｒｅｄｅｅｍスクリプトの内容又は格納されたハッシュが識別できないことである。したがって、プライバシ及びセキュリティが向上され又は維持できる。
【００６３】
別の変形では、Ａ及びＢは、ハッシュされなくて良く、ハッシュ同士の等価性テストではなく、別のテストが真及び偽を導出するために適用される。例えば、Ａは現在のダウジョーンズ指数であって良く、スクリプトはＡ＞（何らかの所定閾）についてテストして良い。この手法は、Ａ及びＢの中間結果に到達するためにハッシュを比較するためにＰ２ＳＨトランザクションタイプを使用しないが、代わりに、何らかの他の種類の所定条件を評価するためにロックスクリプトの中の「条件評価コード」を使用する。この方法では、多くの異なる種類の条件が真／偽についてテストされて良い。条件評価コードから生じる中間結果は、次に、ロックスクリプトのゲート論理部分に渡され、最終的には署名検証に渡されて良い。署名検証プロセスは、従来知られている技術に従い実行される。留意すべきことに、この特定の例では、Ａ及びＢの値がハッシュされないので、方法は、テストされる条件が秘密に保持される必要のある場合には適さない。
【００６４】
＜技術２＞
図１３は、技術２の概略を提供する。鍵を定義する属性：
・入力Ａ及びＢは、アンロックスクリプトに含まれ、（例えば制御エージェントにより）単一のトランザクション入力のロックスクリプトに提示される；
・Ａ及びＢは「真」又は「偽」であり、署名を伴って良い；
・Ａ及びＢにより表される条件は、真／偽値を導出するために、専用のコンピュータに基づくエージェントによりトランザクションの外部で予め評価され、次に制御エージェントへ安全に送信される；
・制御エージェントは、Ａ及びＢ値（及び署名）をロックスクリプトに提示するアンロックスクリプトを含む更なるトランザクションを生成する。
【００６５】
したがって、技術２は、条件がアンロックスクリプトへの提示の前に計算エージェントにより評価される点を除き、技術１と同じである。技術１と同様に、論理ゲート機能をエミュレートするコードは、第１トランザクションのロックスクリプトの中で提供され、入力の実際の値は更なるトランザクションのアンロックスクリプトにより検証中に提供される。
【００６６】
＜技術３＞
図１４は、技術３の概略を提供する。鍵を定義する属性：
・Ａ及びＢは、（同じトランザクションについて）２つの別個のトランザクション入力のロックスクリプトに提示される；
・Ａ及びＢは「（ビットコイン）パズル」であり、署名を伴って良い；
ＳＩＧＨＡＳＨフラグ（例えばANYONECANPAY）の関連する組み合わせを用いて、２つの別個のエージェントは、Ａ及びＢを別個に、（制御エージェントにより最終的に確定される）トランザクションテンプレートに提示する；
・Ａ及びＢは、各ロックスクリプトの中で真／偽を評価され、各ロックスクリプトは次に関連ゲートロジックを実行する；
・各スクリプトは、次に、従来技術に従う署名チェックのような他のロジックを実行する。
【００６７】
有効となる全体のトランザクションについて、各入力は有効でなければならない。これは、ＡＮＤ真理値表を実施する。同じ技術が任意の数の入力について使用できる。つまり、２つの条件Ａ及びＢを評価する代わりに、条件Ａ、Ｂ、Ｃ、．．．がトランザクションを生成するための要件として設定できる。
【００６８】
＜テンプレートトランザクション＞
１又は複数の実施形態では、トランザクションテンプレートが提供されて良い。トランザクションテンプレートは、コピーされ、次に、ブロックチェーンネットワークにブロードキャストされ得るトランザクションを生成するために、Ａ及びＢ入力を入力される。ブロードキャストされたトランザクションがネットワークにより有効であるとして許容された場合、上述のように、これは「真」の出力として解釈でき、また、ブロックチェーン上の永久的な変更不可能なレコードを提供するよう機能する。Ａ及びＢは、通常、真又は偽として評価できる条件を表す。任意の種類の条件が評価でき、任意の種類のデータが、条件を評価するために使用できる。例えば、条件は、現実世界のイベント、信号の受信又は不存在、計算の完了成功、２以上のデータアイテム又は電子エンティティの間の一致、等を含んで良い。リストは無限であるが、以下は、テストされ得る異なる種類の条件のうちの非常に少数の指示的サンプルを提示する。
【００６９】
ブロックチェーンゲートで使用するための、真／偽をテストされ得る例示的な条件：
１．現在の日付が２０２５年６月３０日である；
２．１，０００，０００番目のビットコインブロックに達した；
３．エンティティが符号化信号を送信した（例えば、ボブがトランザクションを使用するために「Ｇｏ！」と言った）；
４．場所Ｘにおける温度がＹ℃より低い；
５．ダウジョーンズ指数が現在２０，０００より高い；
６．Juanita  Shalala  Morgensen-Smytheとして識別できる人物が結婚した；
７．（等）。
【００７０】
ブロックチェーンゲートは、任意のエンティティにより作成されて良い。しかしながら、好適な実施形態は、ブロックチェーンゲートの生成、維持、及び送信に関連付けられた機能を実行するために１又は複数の自動ソフトウェアエージェントを設定する。用語「自動」は、タスクを完了するために、人間の介在無しに、プログラムの実行により完全に実行されることを意味すると解釈されて良い。好適な実施形態では、これらのエージェントは、種々の機能を実行可能であり、これらの機能のうちの幾つかは以下に列挙される。
【００７１】
ブロックチェーンゲートに関連してエージェントにより実行され得る例示的な機能：
１．現実世界におけるイベントを監視し、「トリガ」が検出されると、設定されたルールに従い特定の動作を実行する；
２．トリガについてブロックチェーンを監視し、「トリガ」が検出されると、設定されたルールに従い特定の動作を実行する；
３．トランザクションテンプレートのコピーをとり、設定されたルールに基づいてそれらに入力及び／又は出力を挿入し、トランザクションをブロックチェーンネットワークにブロードキャストする；
４．トリガされると、関心パーティへ警告を送信する、又はデータを送信若しくは受信するために他のエージェントと通信する、等ような、他の種類の動作を実行する。
【００７２】
ブロックチェーントランザクション内に論理ゲートを実装する多くの可能な用途及び最終用途がある。用途を実施するためにゲート又はゲートの組み合わせがどのように生成され展開されるかの詳細は、本願明細書の範囲を超える。しかしながら、本発明は、例えば電子装置の制御において使用され得る。これは、警報システム、車両解除システム、家電スイッチ、無線センサネットワーク、ＳＣＡＤＡ（Securely）、工場制御、インバータ、トランザクションロックシステム、時間に基づく安全、給水システム（等）のような、ＩｏＴ（Internet  of  Things）装置を含み得る。また、自動支払システムの展開及び計算のために使用され得る。例えば、次の通りである：
ａ．支払が時間通りに受信された場合に出力１を送信し、その他の場合に出力２を送信し、額及び利子を別個に計算する；
ｂ．時間に渡り増大又は減少するANYONECANPAYブロックチェーントランザクション。
【００７３】
＜ブロックチェーントランザクションで使用される「ゲート」の幾つかの可能な変形＞
１．Ａ及びＢは（古典的なゲートにおけるように）２進法であって良い；Ｘは、トランザクションが「真（有効）」又は「偽（無効）」であるという意味で、２進法であって良い；
２．Ａ及びＢは暗号署名であって良い；
３．Ａ及びＢは、有意義な値を表す任意の数値であって良い；例えば、日付である；
３．Ａ及びＢは、有意義な値のハッシュであって良い；
５．Ａ及びＢは、ビットコインにおける意味で「パズル」であって良い（特定ハッシュに対する解）；
６．Ａ及びＢは、上述のもののうち２以上の組み合わせであって良い（例えば署名＋パズル）；
７．Ａ及びＢは、異なる種類であって良い（例えば、Ａ＝署名＋有意義な値；Ｂ＝パズル）；
８．複数の入力Ａ、Ｂ、Ｃ、．．．が存在して良い；
９．Ｘ＝真（有効）は、第三者が幾らかのビットコインを支払われたことを意味して良い；例えば、Ａ及びＢ及び論理ゲートにより表されるような特定条件が満たされると、ビットコインを受取人に支払う；
１０．Ｘ＝真（有効）は、出力されたビットコインが単に支払人に返されることを意味し、トランザクションの目的は支払と無関係である（以下の例）；
１１．Ｘ＝真（有効）は、イベントをトリガすることを意味して良い（例えば、監視エージェントは、ＩｏＴ装置を制御するような設定された動作を行うようトリガされて良い）；
１２．Ｘ＝真（有効）は、イベントｗお登録することを意味する；つまり、トランザクションの目的は、イベントのセキュアな不変の永久的記録として動作することである；
１３．複数の入力Ｘ、Ｙ、．．．が存在して良い；これは、何人かの受取人がビットコインを支払われたこと、又は幾つかのトリガが成立したこと、又はその組み合わせを意味して良い；
１４．単一のトランザクションであって、その中に又はそれ自体がゲートを実装する単一のトランザクションが存在して良い；これはロックスクリプトの中で行われる。
【００７４】
＜本発明の一実施形態の例示的な実装＞
この説明的な例で、装置制御用途で使用されるＸＯＲゲートを実装するために上述の技術１を使用する。
【００７５】
ブロックチェーンＩｏＴ装置（Blockchain  IOT  Device：ＢＩＴ）は、ＢＩＤ外に安全に格納され暗号鍵によりアクセスされる所定の命令を実行するよう設定されるコンピューティングエージェントである。「ＢＩＤ外（off-BID）」は、命令がＢＩＤ自体の中で提供されないが、他の場所に格納され必要に応じて及び必要なときにアクセスされることを意味する。これらの命令は、選択されたタスク又は複数のタスクを実行するために選択され及び構成される。実行されると、命令は、ＩｏＴ装置の動作を制御し及び影響を与え得る。ＢＩＤは、ＩｏＴ自体に存在し、これはＢＩＤがＩｏＴ装置内に又はＩｏＴ装置上に設けられたメモリにインストールされることを意味する。しかしながら、他の実施形態では、ＢＩＤは、装置外にあり、装置へのインターネット接続を有して良い。
【００７６】
ＩｏＴ装置は、自身の暗号鍵（及びＩＰアドレス）を有し、したがって、他の装置又はＤＨＴ等と安全に通信し及び相互作用できる。その「オペレーティングシステム」は簡易な汎用システムであり、以下のための（少なくとも限定ではない）幾つかの埋め込まれた機能を備える。
【００７７】
・暗号計算、
・（ＤＨＴのような）外部ソースからの命令の読み出し、
・トグルスイッチのような（つまり、物理的ＩｏＴ装置上にあるような）単純動作の実行。
【００７８】
したがって、ＩｏＴ装置又はその関連付けられたＢＩＤは、それら自身の内蔵命令を含まず、自身が何を行うか、又はそれをどのように行うかを「知らない」。ＢＩＤは、他の場所から命令を安全に読み出すメカニズムを含むだけである。ＢＩＤは、単純動作セットを実行できるだけである（以下は、単なる説明のためであり、限定ではない）：
・自身のマスタ秘密鍵及び公開鍵ペアへのアクセス。自身の（導出可能な）ＢＴＣアドレスも有する。
・ＩＰアドレスへデータを送信する、及びＩＰアドレスからデータを受信する、能力。
・シークレット共有プロトコル計算（後述する）。好適な実施形態では、これらは機械コードで実装されて良い。
・ブロックチェーンイベントの検索及び解釈。
・（基本的に単なるスイッチセットである標準ＡＰＩによる）取り付けられる物理的装置の作動及び制御。
【００７９】
ＢＩＤの入って来る及び出て行く通信は、後述するようなセキュリティメカニズムを用いて暗号化される。これは、鍵が共有シークレットを用いて生成されることを可能にする。これは、以下を可能にする：
（ｉ）「ハッキング」からの大きなセキュリティ。
（ｉｉ）簡易な汎用ソフトウェアアップグレードプロトコル。
（ｉｉｉ）装置不可知主義。
【００８０】
本発明の本実施形態は、したがって、任意のＩｏＴ装置において使用可能な汎用オペレーティングシステムを提供する。装置自体はプログラミングされず、全てのプログラムは、別個に格納され、設定時に（或いは、幾つかの実施形態では実行時に）装置にロードされる。
【００８１】
図１を参照すると、システム１００は、それぞれ１０２ａ及び１０２ｂとして数字を付された第１及び第２クライアント装置、第１クライアント装置１０２ａ及び第２クライアント装置１０２ｂから入力を受信し並びに第１クライアント装置１０２ａ及び第２クライアント装置１０２ｂへ情報を送信するよう動作するＢＩＤ制御システム１０４、を有する。この例示的な使用例では、第１及び第２クライアント装置１０２ａ、１０２ｂは、ＢＩＤ制御システム１０４により検出可能な無線周波数認識装置（radio  frequency  identification  device：ＲＦＩＤ）である。制御システム１０４は、ブロックチェーンを使用するよう動作し、及びブロックチェーンへ出力を送信するよう動作する。
【００８２】
制御システム１０４がどのように動作するかを、アルキメデス（Ａ、Archimedes）及びバートランド（Ｂ、Bertrand）という名のキャロル（Carol）の２匹の犬の例を用いて、説明する。２匹の犬は、一日中、裏庭に放っておかれ、彼らが同時に食べなければ２匹とも互いに仲が良い。同時の食事は何らかの理由で彼らを攻撃的にさせ互いに闘わせる。Ａ及びＢは、２匹とも、ＩｏＴ（Internet  Of  Things）装置１０１により検出可能な、識別できるＲＦＩＤ首輪、つまり第１ＲＦＩＤ首輪１０２ａ及び第２ＲＦＩＤ首輪１０２ｂを有する。このＩｏＴ装置は、１匹の犬により消費される餌の指定量を分配するオートフィーダである。つまり、ＢＩＤ制御システム１０４は、ＩｏＴ給餌装置の動作を制御する。
【００８３】
本例では、ＢＩＤ１０４は、ＩｏＴオートフィーダ上で提供されるソフトウェアリソース又はコンポーネントであり、フィーダの機能を制御するためにフィーダとインタフェースする。
【００８４】
ＢＩＤは、ＤＨＴから自身の命令をダウンロードしインストールすることにより、自身の寿命を開始する。これらの命令が変更されるまで、再びこれを行う必要はない。これは、例えば、ＢＩＤがアップグレードされる必要があるとき、又はＢＩＤの動作が完全に変更されるべきとき、例えばＢＩＤの命令セットが３以上のＲＦＩＤ信号を検出するよう変更され得るとき、であって良い。
【００８５】
制御エージェントは、ＢＩＤにより送信された値を用いて、ブロックチェーントランザクションを生成し、更に後述するように、各反復の後にＢＩＤと新しいシークレットを共有する。
【００８６】
ＢＩＤ制御システム１０４の機能は、以下のロックスクリプトを用いてロックされるブロックチェーントランザクションを用いて実装される。
OP_HASH１６０  <unlocking  script  hash>  OP_EQUAL
トランザクションは、ＩｏＴオートフィーダ装置を制御するための命令セットを（分散ハッシュテーブル（distributed  hash  table：ＤＨＴ）にリンクするメタデータを介して）提供するために生成され、後述する内容に従い確立された計算リソースへの命令を含んで良い。トランザクション自体の中に命令を格納するのではなく、メタデータは、命令がアクセスされ得る場所へのポインタ又は参照を含み得る。したがって、命令は、「ブロック外（off-block）」に保持されて良い。
【００８７】
ブロックチェーンは、活動を制御するメカニズムを提供するだけでなく、行われたイベントに関する情報も記録する。例えば、ブロックチェーンは、給餌回数、何時に給餌が生じたか、どの犬が食べたか、最大餌割り当てが分配されたか、等を計数する能力を提供する。ブロックチェーンは、暗号セキュリティも提供する。
【００８８】
トランザクションの重要な機能は、一度に１匹の犬がフィーダに存在する場合にのみ、餌が分配されることを保証することである。したがって、何らかの条件が、トランザクションのスクリプト内に構築される必要がある。これは、図２に示すＸＯＲ機能の真理値表により達成される。
・ＡもＢもフィーダに存在しない場合、餌を分配しない。
・Ａがフィーダに存在するがＢが存在しない場合、餌を分配する。
・Ｂがフィーダに存在するがＡが存在しない場合、餌を分配する。
・Ａ及びＢの両方がフィーダに存在する場合、餌を分配しない。
【００８９】
Ａ又はＢがフィーダに存在するとき、ＲＦＩＤ信号が、それぞれのクライアント装置、つまり第１ＲＦＩＤ首輪１０２ａ又は第２ＲＦＩＤ首輪１０２ｂから、オートフィーダの制御システム１０４へ送信されて、当該犬のセキュアな現在のパズル解（puzzle  solution）（これは、各反復の後に新しいパズル解によりセキュアに置換される）をアンロックする。代わりに、Ａ又はＢがフィーダに存在しない場合、それぞれのＲＦＩＤ首輪からフィーダへ、乱数が送信される。言い換えると、犬が「フィーダに存在する」ことは、自身のＲＦＩＤ首輪がフィーダの検出可能範囲内にあることを意味する。この場合、送信のために関連パズルがアンロックされる。存在しない場合、規定値は乱数である。
【００９０】
パズル解は、ハッシュされると、（ビットコイン）スクリプト内の格納された値と比べたときに一致する値を結果として生じるデータである。つまり、処理は次の通りである：シークレット値（「解」）がハッシュされ、後に比較するためにロックスクリプト内に格納される。スクリプトをアンロックするために、ロックスクリプトにシークレットが提示される。ロックスクリプトは、先ず提示された値をハッシュし、次にそれを自身の格納されたハッシュと比較する。比較が、それらが等しいことを決定した場合、比較の結果は「真」である。実際には、格納された値は、シークレットのダブルハッシュ（DOUBLE-hash）であり、提示された値は、シークレットのシングルハッシュ（SINGLE-hash）である。これは、任意の長さのシークレットが、スクリプトへの入力として標準的な管理可能なサイズ（つまり、常に１６０ビットの長さ）まで短縮されることを可能にする。
【００９１】
オートフィーダＢＩＤは、ＢＩＤのキー／ペアに関連するルックアップキーを用いてＤＨＴから読み出された自身の命令を実行する。制御エージェントは、ＢＩＤへ／からのデータフローを管理する（つまり、ＲＦＩＤ信号に関連するがＢＩＤの命令セットに関連しないデータ）。したがって、オートフィーダＢＩＤは自身の状態を監視する。オートフィーダＢＩＤは、別個の制御エージェント１０３から受信した２つのシークレット値（Ｓ１及びＳ２）を格納する。制御エージェント１０３は、給餌処理を監督するよう構成された適切にプログラムされた計算リソースであり得る。シークレット値Ｓ１及びＳ２は、犬のＲＦＩＤ首輪が範囲内で検出されるとき、条件付きで使用される。適切なＤＨＴから読み出された自身の命令に基づき、範囲内でＲＦＩＤを検出すると（１日のうちの時間、前の給餌回数、他の制限、等に関連する他の条件と一緒に）、自身の制御エージェント（後述する）として作用する汎用エージェントへ信号を送信する。信号は以下を含む：
・アルキメデスのＲＦＩＤが検出された場合、Ｓ１（＝パズルＡ解）；その他の場合、乱数。
・バートランドのＲＦＩＤが検出された場合、Ｓ２（＝パズルＢ解）；その他の場合、乱数。
【００９２】
オートフィーダＢＩＤは次に、以下を行う：
・オートフィーダは、トランザクションの有効性をチェックし、幾つかの実施形態ではネットワーク上の有効なトランザクションについてチェックして良い（ブロック上に発行されていて良く又は未発行であって良いが、いずれの場合にも有効なトランザクションでなければならない）。このトランザクションは、制御エージェントにより生成されブロードキャストされる。このトランザクションは、埋め込まれたＸＯＲテストに合格した場合、有効である。合格しない場合、このトランザクションは、無効であり、ブロックチェーンネットワーク上の第１「ホップ」を超えて伝搬されない。したがって、このトランザクションは、ＢＩＤにより検出されない。あるいは、ＢＩＤが第１ホップであり、したがってトランザクションが検出される場合、（任意の他のノードに関する）ＢＩＤの関数の部分がトランザクションを検証する。したがって、結果として生じる措置を取る前に、トランザクションが有効かどうかを検出できる。有効なトランザクションは、必要な、つまり給餌イベントに関する情報がブロックチェーンに格納され及び記録されていることも保証する。
・上述の答えが真である場合、ＢＩＤは、自身の条件付き命令を実行する。本例では、ＢＩＤは幾らかの餌を分配する。
・制御エージェント１０３から送信を受信し、２つのシークレット（後述のようにＳ１及びＳ２）を共有することを可能にし、次の反復に備えてこれらのシークレット値を内部で更新する。
【００９３】
ビットコイントランザクションのためのロックスクリプトは、以下により与えられる：
OP_HASH１６０  <Puzzle-A>  OP_EQUAL  OP_SWAP
OP_HASH１６０  <Puzzle-B>  OP_EQUAL
OP_NUMEQUAL  OP_NOT  OP_VERIFY
OP_１  metadata１  PubK-Carol  OP_２  OP_CHECKMULTSIG
ここで、次の通りである。
パズルＡは、OP_HASH１６０の等価な結果である（パズルＡ解）。
パズルＢは、OP_HASH１６０の等価な結果である（パズルＢ解）。
metadata１は、ＤＨＴに格納された符号化された命令への参照を含む。
PubK-Carolはキャロルの公開鍵である。
【００９４】
エージェントのプログラミングはハードコードされて良く、又はＤＨＴから自身の命令を読み出しても良いことに留意する。符号化された命令は、メタデータを用いるブロックチェーントランザクションからの取引を参照する後述の手順に従い格納され及びアクセスされて良い。キャロルの公開鍵は、後述する処理を用いてセキュアに保持され又は再生成可能であって良い。
【００９５】
上述の説明のためのブロックチェーントランザクションをアンロックするために、以下のスクリプトが必要である：
Sig-Carol  Puzzle-B-solution  Puzzle-A-Solution  <unlocking  script>
以下のステップの説明のために図３を参照する。
【００９６】
ステップＳ３００で、制御システム１０４は、提示されたパズルＡ解をハッシュし、それを、記憶装置から読み出されたパズルＡの格納されたバージョン（このバージョンは解のハッシュである）と比較するよう動作する。パズルＡの格納されたバージョンは、制御システム１０４のローカルにある記憶装置に、又は任意の他の適切な記憶媒体に格納されて良い。それらが等しい場合、スタックの最上位＝１である。それらが異なる場合、スタックの最上位＝０である。
【００９７】
ステップＳ３０２で、スタックの最上位は、次に、パズルＢ解であるスタックの２番目のアイテムによりスワップされる。これは、ハッシュされ、記憶装置から読み出されたパズルＢの格納されたバージョンと比較され、ここでも、Ｓ３００からの結果と同様に、スタックの最上位に１又は０をプッシュする。パズルＢの格納されたバージョンは、制御システム１０４のローカルにある記憶装置に、又は任意の他の適切な記憶媒体に格納されて良い。
【００９８】
ここで、上位２つのスタックアイテムは、それぞれ０又は１である。ステップＳ３０４で、OP_NUMEQUALは、数値が等しい場合に１を返し、その他の場合に０を返す。これは、ＸＯＲ真理値表の正反対である。
【００９９】
ステップＳ３０６で、OP_NOTは、必要なＸＯＲ結果を生成するために、スタック上の最上位アイテムをフリップする。
【０１００】
ステップＳ３０８で、OP_VERIFYは、スタックの最上位にあるアイテムが１であるかどうかを調べ、否である場合、つまり、ＸＯＲ演算が失敗した場合、第１及び第２クライアント装置からの１つより多くの入力が一致するパズル解を返しているので、トランザクションは直ちに無効としてマークされる。この結果、１より多くの犬がＩｏＴ分配器に居るので、ＩｏＴ分配器から餌が分配されない。つまり、制御システム１０４の出力は、基礎にあるビットコイントランザクションの実行により制御される。
【０１０１】
OP_VERIFYが１を返す場合、制御システム１０４におる処理は、スクリプトのマルチシグへ戻り、ステップＳ３１０でキャロルの署名の存在が調べられる。
【０１０２】
アンロックスクリプトを分析する際に制御システム１０４により実行されるスタック演算は、以下に示される。先ず、制御システム１０４は、OP_EQUALを用いてハッシュをアンロックスクリプトのハッシュと比較するために、アンロックスクリプトをハッシュする。この後に、アンロックスクリプトが実行される。
【表４】
2019517175.tif 000006
2019517175.tif 000007
【０１０３】
＜共有シークレットを用いてキーを生成する＞
キーは、セキュアに保持され又は再生成されて良い。特に、公開鍵を導出するために使用され得る秘密鍵の場合には、秘密鍵は分解して格納されて良い。
【０１０４】
ユーザ、つまりアリス又はボブは彼らの秘密鍵の一部を保持して良く、サービスプロバイダが第２の部分を保持して良く、第３の部分はリモートセキュアサイトに保持されて良い。秘密鍵は、３つの部分のうちの任意の２つを用いて再構成されて良い。あるいは、より一般的には、秘密鍵が、ｎ個の部分のうちの任意のｍ個を用いて再構成されて良い。
【０１０５】
秘密鍵は、再構成可能な場合、使用点において公開鍵を再生成するために使用でき、秘密鍵及び公開鍵は使用後に再び廃棄できる。
【０１０６】
秘密鍵の分離は、シャミアの秘密分散法（Shamir’s  Secret  Sharing  Scheme）を用いて達成されて良い。秘密鍵−公開鍵ペアは、以下の方法を用いてマスタ鍵から確定的に導出できる。この方法は、シークレット値がそれらを送信することなく参加者により共有されることを可能にする。
【０１０７】
システムは、以下に記載するサブキー生成の方法を用いて参加者の公開鍵を生成して良い。
【０１０８】
図４は、通信ネットワーク５を介して第２ノード７と通信する第１ノード３を含むシステム１を示す。第１ノード３は関連する第１処理装置２３を有し、及び第２ノード５は関連する第２処理装置２７を有する。第１及び第２ノード３、７は、コンピュータ、電話機、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んで良い。一例では、第１ノード３はクライアント（ユーザ）装置であって良く、第２ノード７はサーバであって良い。サーバは、デジタルウォレットプロバイダのサーバであって良い。
【０１０９】
第１ノード３は、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号対に関連付けられる。第２ノード（７）は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号対に関連付けられる。言い換えると、第１及び第２ノードは、それぞれ、個々の公開鍵−秘密鍵ペアを保有する。
【０１１０】
個々の第１及び第２ノード３、７の第１及び第２非対称暗号対は、ウォレットの登録のような登録処理中に生成されて良い。各ノードの公開鍵は、通信ネットワーク５に渡るように、公に共有されて良い。
【０１１１】
第１ノード３及び第２ノード７の両者において共通シークレット（common  secret：ＳＣ）を決定するために、ノード３、７は、通信ネットワーク５を介して秘密鍵を通信することなく、それぞれ方法３００、４００のステップを実行する。
【０１１２】
第１ノード３により実行される方法３００は、少なくとも第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（Generator  Value：ＧＶ）に基づき、第１ノード第２秘密鍵（Ｖ２Ｃ）を決定するステップ３３０を含む。生成器値は、第１ノードと第２ノードとの間で共有されるメッセージ（Ｍ）に基づいて良い。これは、以下に詳述するように、通信ネットワーク５を介してメッセージを共有するステップを含んで良い。方法３００は、少なくとも第２ノードマスタ公開鍵（Ｐ１Ｓ）及び生成器値（Generator  Value：ＧＶ）に基づき、第２ノード第２公開鍵（Ｐ２Ｓ）を決定するステップ３７０を更に含む。方法３００は、第１ノード第２秘密鍵（Ｖ２Ｃ）及び第２ノード第２公開鍵（Ｐ２Ｓ）に基づき、共通シークレット（common  secret：ＣＳ）を決定するステップ３８０を含む。
【０１１３】
重要なことに、同じ共通シークレット（ＣＳ）が、方法４００により第２ノード７においても決定できる。方法４００は、第１ノードマスタ公開鍵（Ｐ１Ｃ）及び生成器値（Generator  Value：ＧＶ）に基づき、第１ノード第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。方法４００は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（Generator  Value：ＧＶ）に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０を更に含む。方法４００は、第２ノード第２秘密鍵（Ｖ２Ｓ）及び第１ノード第２公開鍵（Ｐ２Ｃ）に基づき、共通シークレット（common  secret：ＣＳ）を決定するステップ４８０を含む。
【０１１４】
通信ネットワーク５は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んで良い。これらのネットワークでは、データは電気線、光ファイバ、又は無線のような通信媒体を介して送信されて良く、盗聴者１１による様な盗聴を受けやすい場合がある。方法３００、４００は、通信ネットワーク５を介して共通シークレットを送信することなく、第１ノード３及び第２ノード７が共通シークレットを両方とも独立して決定できるようにする。
【０１１５】
したがって、１つの利点は、安全でない可能性のある通信ネットワーク５を介して秘密鍵を送信する必要を有しないで、共通シークレット（ＣＳ）が安全に且つ各ノードにより独立して決定できることである。また、共通シークレットは、秘密鍵として（又は秘密鍵の基礎として）使用されて良い。
【０１１６】
方法３００、４００は、追加ステップを含んで良い。図８を参照する。方法３００は、第１ノード３において、メッセージ（Ｍ）及び第１ノード第２秘密鍵（Ｖ２Ｃ）に基づき、署名メッセージ（ＳＭ１）を生成するステップを含んで良い。方法３００は、第１署名メッセージ（ＳＭ１）を通信ネットワークを介して第２ノード７へ送信するステップ３６０を更に含む。一方、第２ノード７は、第１署名メッセージ（ＳＭ１）を受信するステップ４４０を実行して良い。方法４００は、第１署名メッセージ（ＳＭ２）を第１ノード第２公開鍵（Ｐ２Ｃ）により検証するステップ４５０、及び第１署名メッセージ（ＳＭ１）を検証するステップの結果に基づき第１ノード３を認証するステップ４６０を更に含む。有利なことに、これは、第２ノード７が、（第１署名メッセージが生成された場所である）意図された第１ノードが第１ノード３であることを認証することを可能にする。これは、第１ノード３だけが、第１ノードマスタ秘密鍵（Ｖ１Ｃ）へのアクセスを有する、したがって、第１ノード３だけが、第１署名メッセージ（ＳＭ１）を生成するための第１ノード第２秘密鍵（Ｖ２Ｃ）を決定できるという仮定に基づく。理解されるべきことに、同様に、第２署名メッセージ（ＳＭ２）は、第２ノード７において生成され、第１ノード３へ送信され得る。したがって、ピアツーピアシナリオにおけるように、第１ノード３は、第２ノード７を認証できる。
【０１１７】
第１ノードと第２ノードの間のメッセージ（Ｍ）の共有は、様々な方法で達成されて良い。一例では、メッセージは、第１ノード３において生成されて良く、次に通信ネットワーク５を介して第２ノード７へ送信される。代替として、メッセージは、第２ノード７において生成されて良く、次に通信ネットワーク５を介して第１ノード３へ送信される。幾つかの例では、メッセージ（Ｍ）は公開されて良く、したがってセキュアでないネットワーク５を介して送信されて良い。１又は複数のメッセージ（Ｍ）は、データストア１３、１７、１９に格納されて良い。当業者は、メッセージの共有が様々な方法で達成できることを理解する。
【０１１８】
有利なことに、共通シークレット（ＣＳ）の再生成を可能にするレコードは、そのレコード自体が秘密に格納され又はセキュアに送信される必要がなく、保持され得る。
【０１１９】
＜登録の方法１００、２００＞
登録の方法１００、２００の一例は、図６を参照して記載される。図６では、方法１００は第１ノード３により実行され、方法２００は第２ノード７により実行される。これは、それぞれ第１ノード３及び第２ノード７のために第１及び第２非対称暗号対を確立するステップを含む。
【０１２０】
非対称暗号対は、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号対は、楕円曲線暗号システム（Elliptic  Curve  Cryptography：ＥＣＣ）及び楕円曲線演算の特性を用いて生成される。
【０１２１】
方法１００、２００では、これは、共通ＥＣＣシステムに合意している１１０、２１０、且つ基点（Ｇ）を用いる、第１ノード及び第２ノードを含む（注：基点は、共通生成器として参照され得るが、用語「基点」は、生成器値ＧＶとの混同を避けるために使用される）。一例では、共通ＥＣＣシステムは、ビットコインにより使用されるＥＣＣシステムであるｓｅｃｐ２５６Ｋ１に基づいて良い。基点（Ｇ）は、選択され、ランダムに生成され、又は割り当てられて良い。
【０１２２】
ここで第１ノード３について考えると、方法１００は、共通ＥＣＣシステム及び基点（Ｇ）を解決するステップ１１０を含む。これは、第２ノード７又は第３ノード９から、共通ＥＣＣシステム及び基点を受信するステップを含んで良い。代替として、ユーザインタフェース１５は、第１ノード３に関連付けられる。これにより、ユーザは、共通ＥＣＣシステム及び／又は基点（Ｇ）を選択的に提供できる。更に別の代替案では、共通ＥＣＣシステム及び／又は基点（Ｇ）の一方又は両方が、第１ノード３によりランダムに選択されて良い。第１ノード３は、通信ネットワーク５を介して、基点（Ｇ）と共に共通ＥＣＣシステムを使用することを示す通知を、第２ノード７へ送信して良い。また、第２ノード７は、共通ＥＣＣシステム及び基点（Ｇ）の使用に対する肯定応答を示す通知を送信することにより、解決して良い２１０。
【０１２３】
方法１００は、第１ノード３が、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を有する第１非対称暗号対を生成するステップ１２０を更に含む。これは、共通ＥＣＣシステムの中で指定された許容範囲の中のランダム整数に少なくとも部分的に基づき、第１マスタ秘密鍵（Ｖ１Ｃ）を生成するステップを含む。これは、次式に従い第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び基点（Ｇ）の楕円曲線点乗算に基づき、第１ノードマスタ公開鍵（Ｐ１Ｃ）を決定するステップを更に含む。
Ｐ１Ｃ＝Ｖ１Ｃ×Ｇ  （式１）
【０１２４】
したがって、第１非対称暗号対は、以下を含む：
Ｖ１Ｃ：第１ノードにより秘密に保持される第１ノードマスタ秘密鍵。
Ｐ１Ｃ：公に知らされる第１ノードマスタ公開鍵。
【０１２５】
第１ノード３は、第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）を、第１ノード３に関連付けられた第１データストア１３に格納して良い。セキュリティのために、第１ノードマスタ秘密鍵（Ｖ１Ｃ）は、鍵が秘密のままであることを保証するために、第１データストア１３のセキュアな部分に格納されて良い。
【０１２６】
方法１００は、図６に示すように、第１ノードマスタ公開鍵（Ｐ１Ｃ）を通信ネットワーク５を介して第２ノード７へ送信するステップ１３０を更に含む。第２ノード７は、第１ノードマスタ公開鍵（Ｐ１Ｃ）を受信すると２２０、第１ノードマスタ公開鍵（Ｐ１Ｃ）を第２ノード７に関連付けられた第２データストア１７に格納して良い２３０。
【０１２７】
第１ノード３と同様に、第２ノード７の方法２００は、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び第２ノードマスタ公開鍵（Ｐ１Ｓ）を有する第２非対称暗号対を生成するステップ２４０を含む。第２ノードマスタ秘密鍵（Ｖ１Ｓ）も、許容範囲内のランダム整数である。また、第２ノードマスタ公開鍵（Ｐ１Ｓ）は、次式により決定される。
Ｐ１Ｓ＝Ｖ１Ｓ×Ｇ  （式２）
【０１２８】
したがって、第２非対称暗号対は、以下を含む：
Ｖ１Ｓ：第２ノードにより秘密に保持される第２ノードマスタ秘密鍵。
Ｐ１Ｓ：公に知らされる第２ノードマスタ公開鍵。
【０１２９】
第２ノード７は、第２非対称暗号対を第２データストア１７に格納して良い。方法２００は、第２ノードマスタ公開鍵（Ｐ１Ｓ）を第１ノード３へ送信するステップ２５０を更に含む。また、第１ノード３は、第２ノードマスタ公開鍵（Ｐ１Ｓ）を受信し１４０、格納して良い１５０。
【０１３０】
理解されるべきことに、幾つかの代案では、それぞれの公開マスタ鍵は、受信され、（信頼できる第三者のような）第３ノード９に関連付けられた第３データストア１９に格納されて良い。これは、認証機関のような、公開ディレクトリとして動作する第三者を含んで良い。したがって、幾つかの例では、第１ノードマスタ公開鍵（Ｐ１Ｃ）は、共通シークレット（ＣＳ）が要求されるときだけ、第２ノード７により要求され受信されて良い（逆も同様である）。
【０１３１】
登録ステップは、初期設定として１度生じるだけで良い。
【０１３２】
＜セッション開始及び第１ノード３による共通シークレットの決定＞
共通シークレット（ＣＳ）を決定する一例は、図７を参照してここに記載される。共通シークレット（ＣＳ）は、第１ノード３と第２ノード７との間の特定のセッション、時間、トランザクション、又は他の目的のために使用されて良く、同じ共通シークレット（ＣＳ）を使用することが望ましい又はセキュアでなくて良い。したがって、共通シークレット（ＣＳ）は、異なるセッション、時間、トランザクション、等の間で変更されて良い。
【０１３３】
以下は、上述したセキュアな送信技術の説明のために提供される。
【０１３４】
［メッセージ（Ｍ）を生成する３１０］
本例では、第１ノード３により実行される方法３００は、メッセージ（Ｍ）を生成するステップ３１０を含む。メッセージ（Ｍ）は、ランダム、疑似ランダム、又はユーザ定義であって良い。一例では、メッセージ（Ｍ）は、Ｕｎｉｘ時間又はノンス（及び任意の値）に基づく。例えば、メッセージ（Ｍ）は次のように与えられ得る。
メッセージ（Ｍ）＝Ｕｎｉｘ時間＋ノンス    （式３）
幾つかの例では、メッセージ（Ｍ）は任意である。しかしながら、理解されるべきことに、メッセージ（Ｍ）は、幾つかのアプリケーションで有用であり得る（Ｕｎｉｘ時間、等のような）選択的値を有して良い。
【０１３５】
方法３００は、メッセージ（Ｍ）を通信ネットワーク３を介して第２ノード７へ送信するステップ３１５を含む。メッセージ（Ｍ）は秘密鍵についての情報を含まないので、メッセージ（Ｍ）は、セキュアでないネットワークを介して送信されて良い。
【０１３６】
［生成器値（ＧＶ）を決定する３２０］
方法３００は、メッセージ（Ｍ）に基づき生成器値（Generator  Value：ＧＶ）を決定するステップ３２０を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。暗号ハッシュアルゴリズムの一例は、２５６ビット発生器値（ＧＶ）を生成するためにＳＨＡ−２５６を含む。つまり、
ＧＶ＝ＳＨＡ−２５６（Ｍ）    （式４）
【０１３７】
理解されるべきことに、他のハッシュアルゴリズムが使用されて良い。これは、セキュアなハッシュアルゴリズム（Secure  Hash  Algorithm：ＳＨＡ）ファミリの中の他のハッシュアルゴリズムを含んで良い。幾つかの特定の例は、ＳＨＡ３−２２４、ＳＨＡ３−２５６、ＳＨＡ３−３８４、ＳＨＡ３−５１２、ＳＨＡＫＥ１２８、ＳＨＡＫＥ２５６を含むＳＨＡ−３サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、ＲＩＰＥＭＤ（RACE  Integrity  Primitives  Evaluation  Message  Digest）ファミリの中のアルゴリズムを含んで良い。特定の例は、ＲＩＰＥＭＤ−１６０を含んで良い。他のハッシュ関数は、Ｚｅｍｏｒ−Ｔｉｌｌｉｃｈハッシュ関数及びナップサック・ハッシュ関数に基づくファミリを含んで良い。
【０１３８】
［第１ノード第２秘密鍵を決定する３３０］
方法３００は、次に、第２ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（ＧＶ）に基づき、第１ノード第２秘密鍵（Ｖ２Ｃ）を決定するステップ３３０を含む。これは、次式に従い第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び生成器値（ＧＶ）のスカラ加算に基づき得る。
Ｖ２Ｃ＝Ｖ１Ｃ＋ＧＶ    （式５）
【０１３９】
したがって、第１ノード第２秘密鍵（Ｖ２Ｃ）は、ランダム値ではないが、代わりに第１ノードマスタ秘密鍵から確定的に導出される。暗号対の中の対応する公開鍵、つまり第１ノード第２公開鍵（Ｐ２Ｃ）は、以下の関係を有する。
Ｐ２Ｃ＝Ｖ２Ｃ×Ｇ  （式６）
【０１４０】
式５から式６にＶ２Ｃを代入すると、次式を得る。
Ｐ２Ｃ＝（Ｖ１Ｃ＋ＧＶ）×Ｇ    （式７）
ここで、「＋」演算子は楕円曲線点加算を表す。楕円曲線暗号代数は、分配的であり、式７は次式のように表すことができる。
Ｐ２Ｃ＝Ｖ１Ｃ×Ｇ＋ＧＶ×Ｇ    （式８）
【０１４１】
最後に、（式１）は（式７）に代入され、次式を得る。
Ｐ２Ｃ＝Ｐ１Ｃ＋ＧＶ×Ｇ    （式９．１）
Ｐ２Ｃ＝Ｐ１Ｃ＋ＳＨＡ−２５６（Ｍ）×Ｇ    （式９．２）
【０１４２】
したがって、対応する第１ノード第２公開鍵（Ｐ２Ｃ）は、第１ノードマスタ公開鍵（Ｐ１Ｃ）及びメッセージ（Ｍ）の導出可能な所与の知識であり得る。方法４００に関して以下に更に詳述するように、第２ノード７は、第１ノード第２公開鍵（Ｐ２Ｃ）を独立に決定するために、このような知識を有して良い。
【０１４３】
［メッセージ及び第１ノード第２秘密鍵に基づき、第１署名メッセージ（ＳＭ１）を生成する３５０］
方法３００は、メッセージ（Ｍ）及び決定した第１ノード第２秘密鍵（Ｖ２Ｃ）に基づき、第１署名メッセージ（ＳＭ１）を生成するステップ３５０を更に含む。署名メッセージを生成するステップは、メッセージ（Ｍ）にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第１署名メッセージ（ＳＭ１）を得るために、楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm：ＥＣＤＳＡ）の中でメッセージに第１ノード第２秘密鍵（Ｖ２Ｃ）を適用するステップを含む。ＥＣＤＳＡの例は、ｓｅｃｐ２５６ｋ１、ｓｅｃｐ２５６ｒ１、ｓｅｃｐ３８４ｒ１、ｓｅ３ｃｐ５２１ｒ１を有するＥＣＣシステムに基づくものを含む。
【０１４４】
第１署名メッセージ（ＳＭ１）は、第２ノード７において対応する第１ノード第２公開鍵（Ｐ２Ｃ）により検証できる。第１署名メッセージ（ＳＭ１）のこの検証は、第１ノード３を認証するために第２ノード７により使用されて良い。これは、方法４００において以下に議論される。
【０１４５】
［第２ノード第２公開鍵を決定する３７０’］
第１ノード３は、次に、第２ノード第２公開鍵（Ｐ２Ｓ）を決定して良い３７０。上述のように、第２ノード第２公開鍵（Ｐ２Ｓ）は、少なくとも第２ノードマスタ公開鍵（Ｐ１Ｓ）及び生成器値（ＧＶ）に基づいて良い。本例では、公開鍵は、基点（Ｇ）との楕円曲線点乗算により秘密鍵として決定されるので３７０’、第２ノード第２公開鍵（Ｐ２Ｓ）は、式６と同様に次のように表すことができる。
Ｐ２Ｓ＝Ｖ２Ｓ×Ｇ  （式１０．１）
Ｐ２Ｓ＝Ｐ１Ｓ＋ＧＶ×Ｇ    （式１０．２）
【０１４６】
式１０．２の数学的証明は、第１ノード第２公開鍵（Ｐ２Ｃ）について式９．１を導出するために上述したものと同じである。理解されるべきことに、第１ノード３は、第２ノード７と独立に第２ノード第２公開鍵を決定できる３７０。
【０１４７】
［第１ノード３において共通シークレットを決定する３８０］
第１ノード３は、次に、第１ノード第２秘密鍵（Ｖ２Ｃ）及び決定した第２ノード第２公開鍵（Ｐ２Ｓ）に基づき、共通シークレット（ＣＳ）を決定して良い３８０。共通シークレット（ＣＳ）は、第１ノード３により次式により決定されて良い。
Ｓ＝Ｖ２Ｃ×Ｐ２Ｓ    （式１１）
【０１４８】
＜第２ノード７において実行される方法４００＞
第２ノード７において実行される対応する方法４００が、ここで説明される。理解されるべきことに、これらのステップのうちの幾つかは、第１ノード３により実行された上述のステップと同様である。
【０１４９】
方法４００は、メッセージ（Ｍ）を通信ネットワーク５を介して第１ノード３から受信するステップ４１０を含む。これは、ステップ３１５において第１ノード３により送信されたメッセージ（Ｍ）を含んで良い。第２ノード７は、次に、メッセージ（Ｍ）に基づき生成器値（ＧＶ）を決定する４２０。第２ノード７により生成器値（ＧＶ）を決定するステップ４２０は、上述の第１ノードにより実行されるステップ３２０と同様である。本例では、第２ノード７は、第１ノード３と独立の、この決定するステップ４２０を実行する。
【０１５０】
次のステップは、第１ノードマスタ公開鍵（Ｐ１Ｃ）及び生成器値（ＧＶ）に基づき、第１ノード第２公開鍵（Ｐ２Ｃ）を決定するステップ４３０を含む。本例では、公開鍵は、基点（Ｇ）との楕円曲線点乗算により秘密鍵として決定されるので４３０’、第１ノード第２公開鍵（Ｐ２Ｃ）は、式９と同様に次のように表すことができる。
Ｐ２Ｃ＝Ｖ２Ｃ×Ｇ  （式１２．１）
Ｐ２Ｃ＝Ｐ１Ｃ＋ＧＶ×Ｇ    （式１２．２）
式１２．１及び１２．２の数学的証明は、式１０．１及び１０．２について上述したものと同じである。
【０１５１】
［第２ノード７が第１ノード３を認証する］
方法４００は、未確認第１ノード３が第１ノード３であることを認証するために、第２ノード７により実行されるステップを含んで良い。上述のように、これは、第１ノード３から第１署名メッセージ（ＳＭ１）を受信するステップ４４０を含む。第２ノード７は、次に、ステップ４３０で決定された第１ノード第２公開鍵（Ｐ２Ｃ）により第１署名メッセージ（ＳＭ１）の署名を検証して良い４５０。
【０１５２】
デジタル署名の検証は、上述の楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm：ＥＣＤＳＡ）に従い行われて良い。重要なことに、第１ノード第２秘密鍵（Ｖ２Ｃ）により署名された第１署名メッセージ（ＳＭ１）は、Ｖ２Ｃ及びＰ２Ｃが暗号対を形成するので、対応する第１ノード第２公開鍵（Ｐ２Ｃ）によってのみ正しく検証されるべきである。これらの鍵は、第１ノード３の登録で生成された第１ノードマスタ秘密鍵（Ｖ１Ｃ）及び第１ノードマスタ公開鍵（Ｐ１Ｃ）において確定するので、第１署名メッセージ（ＳＭ１）の検証は、第１署名メッセージ（ＳＭ１）を送信する未確認第１ノードが登録中と同じ第１ノード３であることを認証する基礎として使用できる。したがって、第２ノード７は、第１署名メッセージを検証するステップ（４５０）の結果に基づき、第１ノード３を認証するステップ（４６０）を更に実行して良い。
【０１５３】
［第２ノード７が共通シークレットを決定する］
方法４００は、第２ノード７が、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（ＧＶ）に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）を決定するステップ４７０を更に含んで良い。第１ノード３により実行されるステップ３３０と同様に、第２ノード第２秘密鍵（Ｖ２Ｓ）は、次式に従い、第２ノードマスタ秘密鍵（Ｖ１Ｓ）及び生成器値（ＧＶ）のスカラ加算に基づき得る。
Ｖ２Ｓ＝Ｖ１Ｓ＋ＧＶ    （式１３．１）
Ｖ２Ｓ＝Ｖ１Ｓ＋ＳＨＡ−２５６（Ｍ）    （式１３．２）
【０１５４】
第２ノード７は、次に、第１ノード３と独立して、次式に基づき、第２ノード第２秘密鍵（Ｖ２Ｓ）及び第１ノード第２公開鍵（Ｐ２Ｃ）に基づき、共通シークレット（ＣＳ）を決定して良い４８０。
Ｓ＝Ｖ２Ｓ×Ｐ２Ｃ  （式１４）
【０１５５】
［第１ノード３及び第２ノード７により決定された共通シークレット（ＣＳ）の証明］
第１ノード３により決定された共通シークレット（ＣＳ）は、第２ノード７において決定された共通シークレット（ＣＳ）と同じである。式１１及び式１４が同じ共通シークレット（ＣＳ）を提供することの数学的証明が、ここで記載される。
【０１５６】
第１ノード３により決定された共通シークレット（ＣＳ）を考えると、次のように式１０．１は式１１に代入できる。
Ｓ＝Ｖ２Ｃ×Ｐ２Ｓ    （式１１）
Ｓ＝Ｖ２Ｃ×（Ｖ２Ｓ×Ｇ）
Ｓ＝（Ｖ２Ｃ×Ｖ２Ｓ）×Ｇ  （式１５）
【０１５７】
第２ノード７により決定された共通シークレット（ＣＳ）を考えると、次のように式１２．１は式１４に代入できる。
Ｓ＝Ｖ２Ｓ×Ｐ２Ｃ  （式１４）
Ｓ＝Ｖ２Ｓ×（Ｖ２Ｃ×Ｇ）
Ｓ＝（Ｖ２Ｓ×Ｖ２Ｃ）×Ｇ  （式１６）
【０１５８】
ＥＣＣ代数学は可換性なので、次の通り式１５及び式１６は等価である。
Ｓ＝（Ｖ２Ｃ×Ｖ２Ｓ）×Ｇ＝（Ｖ２Ｓ×Ｖ２Ｃ）×Ｇ    （式１７）
【０１５９】
［共通シークレット（ＣＳ）及び秘密鍵］
共通シークレット（ＣＳ）は、ここで、第１ノード３と第２ノード７との間のセキュアな通信のために、対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として、使用できる。
【０１６０】
共通シークレット（ＣＳ）は、楕円曲線点（ｘＳ，ｙＳ）の形式であって良い。これは、ノード３、７により合意された標準的な公に知られた演算を用いて、標準的な鍵フォーマットに変換されて良い。例えば、ｘＳ値は、ＡＥＳ２５６暗号鍵として使用され得る２５６ビットの整数であって良い。これは、更に、１６０ビットの長さの鍵を必要とする任意のアプリケーションのために、ＲＩＰＥＭＤ１６０を用いて１６０ビットの整数に変換され得る。
【０１６１】
共通シークレット（ＣＳ）は、必要に応じて決定されて良い。重要なことに、共通シークレット（ＣＳ）はメッセージ（Ｍ）に基づき再決定できるので、第１ノード３は共通シークレット（ＣＳ）を格納する必要がない。幾つかの例では、使用されるメッセージ（Ｍ）は、マスタ秘密鍵のために要求されるのと同レベルのセキュリティを有しないデータストア１３、１７、１９（又は他のデータストア）に格納されて良い。幾つかの例では、メッセージ（Ｍ）は公に利用可能であって良い。
【０１６２】
しかしながら、幾つかのアプリケーションに依存して、共通シークレット（ＣＳ）が第１ノードマスタ秘密鍵（Ｖ１Ｃ）と同じくらいセキュアに保たれるならば、共通シークレット（ＣＳ）は、第１ノードに関連付けられた第１データストア（Ｘ）に格納され得る。
【０１６３】
有利なことに、この技術は、単一のマスタキー暗号対に基づき、複数のセキュアな秘密鍵に対応し得る複数の共通シークレットを決定するために使用できる。
【０１６４】
＜生成器値（鍵）の階層構造＞
例えば、一連の連続する生成器値（ＧＶ）が決定されて良い。ここで、各連続ＧＶは、前の生成器値（ＧＶ）に基づき決定されて良い。例えば、連続する専用鍵を生成するためにステップ３１０〜３７０、４１０〜４７０を繰り返す代わりに、ノード間の事前合意により、生成器値の階層構造を確立するために、前に使用された生成器値（ＧＶ）が両方のパーティにより繰り返し再ハッシュされ得る。実際に、メッセージ（Ｍ）のハッシュに基づく生成器値は、次世代生成器値（ＧＶ）のための次世代メッセージ（Ｍ鋳）になり得る。これを行うことは、計算されるべき共有シークレットの連続生成を可能にし、更なるプロトコルにより確立される送信、特に共通シークレットを生成する毎に複数のメッセージの送信の必要がない。次世代共通シークレット（ＣＳ’）は、以下のように計算できる。
【０１６５】
先ず、第１ノード３及び第２ノード７の両者が、次世代生成器値（ＧＶ’）を独立して決定する。これは、ステップ３２０及び４２０と同様であるが、次式により適応される。
Ｍ’＝ＳＨＡ−２５６（Ｍ）    （式１８）
ＧＶ’＝ＳＨＡ−２５６（Ｍ’）    （式１９．１）
ＧＶ’＝ＳＨＡ−２５６（ＳＨＡ−２５６（Ｍ））    （式１９．２）
【０１６６】
第１ノード３は、次に、次世代の第２ノード第２公開鍵（Ｐ２Ｓ’）及び第１ノード第２秘密鍵（Ｖ２Ｃ’）を上述のステップ３７０及び３３０と同様であるが次式により適応され、決定して良い。
Ｐ２Ｓ’＝Ｐ１Ｓ＋ＧＶ’×Ｇ    （式２０．１）
Ｖ２Ｃ’＝Ｖ１Ｃ＋ＧＶ’    （式２０．２）
【０１６７】
第２ノード７は、次に、次世代の第１ノード第２公開鍵（Ｐ２Ｃ’）及び第２ノード第２秘密鍵（Ｖ２Ｓ’）を上述のステップ４３０及び４７０と同様であるが次式により適応され、決定して良い。
Ｐ２Ｃ’＝Ｐ１Ｃ＋ＧＶ’×Ｇ    （式２１．１）
Ｖ２Ｓ’＝Ｖ１Ｓ＋ＧＶ’    （式２１．２）
【０１６８】
第１ノード３及び第２ノード７は、次に、それぞれ、次世代共通シークレット（ＣＳ’）を決定して良い。特に、第１ノード３は、次式により次世代共通シークレット（ＣＳ’）を決定する。
ＣＳ’＝Ｖ２Ｃ’×Ｐ２Ｓ’    （式２２）
【０１６９】
第２ノード７は、次式により次世代共通シークレット（ＣＳ’）を決定する。
ＣＳ’＝Ｖ２Ｓ’×Ｐ２Ｃ’    （式２３）
【０１７０】
更なる世代（ＣＳ’’、ＣＳ’’’、等）は、チェーン階層構造を生成するために同じ方法で計算できる。この技術は、第１ノード３及び第２ノード７の両者が元のメッセージ（Ｍ）又は最初に計算された生成器値（ＧＶ）、及びそれがどのノードに関連するか、を見失わないことを要求する。これは公に知られた情報なので、この情報の保有に関してセキュリティ問題は存在しない。したがって、この情報は、（ハッシュ値を公開鍵にリンクする）「ハッシュテーブル」に保持され、（例えばＴｏｒｒｅｎｔを用いて）ネットワーク５に渡り自由に配布されて良い。さらに、階層構造内の任意の個々の共通シークレット（ＣＳ）が今までに解決されていない場合、これは、秘密鍵Ｖ１Ｃ、Ｖ１Ｓがセキュアなままであるならば、階層構造の中の任意の他の共通シークレットのセキュリティに影響しない。
【０１７１】
＜鍵の木構造＞
上述のようなチェーン（線形）階層構造と同様に、木構造の形式の階層構造が生成できる。木構造によると、認証鍵、暗号鍵、署名鍵、支払鍵、等のような異なる目的の様々な鍵が決定されて良い。それにより、これらの鍵は、全て単一のセキュアに維持されるマスタキーにリンクされる。これは、種々の異なる鍵を有する木構造９０１を示す図１２に図示される。これらの各々は、別のパーティと共有されるシークレットを生成するために使用できる。枝分かれする木は、幾つかの方法で達成でき、それらのうちの３つが以下に記載される。
【０１７２】
（ｉ）マスタキー・スポーニング
チェーン階層構造では、乗算した再ハッシュしたメッセージを元のマスタキーに加算することにより、各々の新しい「リンク」（公開／秘密鍵ペア）が生成される。例えば（明確性のため、第１ノード３の秘密鍵のみを示す）、
Ｖ２Ｃ＝Ｖ１Ｃ＋ＳＨＡ−２５６（Ｍ）    （式２４）
Ｖ２Ｃ’＝Ｖ１Ｃ＋ＳＨＡ−２５６（ＳＨＡ−２５６（Ｍ））    （式２５）
Ｖ２Ｃ’’＝Ｖ１Ｃ＋ＳＨＡ−２５６（ＳＨＡ−２５６（ＳＨＡ−２５６（Ｍ）））    （式２６）
等である。
【０１７３】
枝を生成するために、任意の鍵がサブマスタキーとして使用できる。例えば、Ｖ２Ｃ’は、正規のマスタキーに対して行われるように、ハッシュを加算することにより、サブマスタキー（Ｖ３Ｃ）として使用できる。
Ｖ３Ｃ＝Ｖ２Ｃ’＋ＳＨＡ−２５６（Ｍ）    （式２７）
サブマスタキー（Ｖ３Ｃ）は、それ自体が、次世代鍵（Ｖ３Ｃ’）を有して良い。例えば次式の通りである。
Ｖ３Ｃ’＝Ｖ２Ｃ’＋ＳＨＡ−２５６（ＳＨＡ−２５６（Ｍ））    （式２８）
【０１７４】
これは、図１３に示すマスタキー・スポーニング（spawning）方法を用いて、木構造９０３を提供する。
【０１７５】
（ｉｉ）論理的関連付け
この方法では、木の中の全てのノード（公開／秘密鍵ペア）は、チェーンとして（又は任意の他の方法で）生成され、木の中のノード間の論理的関係は、ポインタを用いて木の中の各ノードが木の中の自身の親ノードに単純に関連付けられるテーブルにより維持される。したがって、ポインタは、セッションの共通シークレットキー（ＣＳ）を決定するために、関連する公開／秘密鍵ペアを決定するために使用できる。
【０１７６】
（ｉｉｉ）メッセージ多様性
新しい公開／秘密鍵ペアは、チェーン又は木の任意のポイントに新しいメッセージを導入することにより、生成できる。メッセージ自体は、任意であって良く、又は何らかの意味若しくは関数を伝達して良い（例えば、それは、「現実の」銀行口座番号に関連して良い、等である）。新しい公開／秘密鍵ペアを形成するためのこのような新しいメッセージがセキュアに保持されることが望ましい場合がある。
【０１７７】
＜コード化スキーム＞
トランザクションのメタデータは、ブロック外の文書に格納された命令にアクセスするために使用されて良い。この文書は、「取引（コントラクト、contract）」と呼ばれることがある。取引を参照するために使用されるメタデータは、様々な方法でフォーマット化できる。しかしながら、適切なコード化スキームがここに記載される。
【０１７８】
取引の定める権利が取引の保持者又は所有者に贈与される場合、取引は転送可能である。非転送可能取引の一例は、参加者が指名される取引である。つまり、権利が、取引の保持者ではなく特定の指名されたエンティティに贈与される。転送可能取引だけが、このコード化スキームで議論される。
【０１７９】
トークンは、取引により贈与される権利を詳述する又は定める特定取引を表す。本発明に従い、トークンは、ビットコイントランザクションの形式の取引の表現である。
【０１８０】
このコード化方法は、３つのパラメータ又はデータアイテムを有するメタデータを使用する。このデータは、以下を示し得る：
ｉ）取引の下で利用可能な持分（share、株）の量
（これは、本願明細書で「ＮｕｍＳｈａｒｅｓ」と呼ばれることがある）、
ｉｉ）送り手から少なくとも１つの受け手へ転送されるべき転送単位の量（これは、「ＳｈａｒｅＶａｌ」と呼ばれることがある）、
ｉｉｉ）転送単位の量の値を計算するための因子（これは、「ペギングレート（pegging  rate）」と呼ばれることがある）。
【０１８１】
このコード化スキームの利点は、上述の３つのパラメータだけを用いて、ブロックチェーン上のトークンとして取引をカプセル化又は表現するために使用できることである。実際に、取引は、これらの３つのデータアイテムのうちの最小限を用いて指定できる。このコード化スキームは任意の種類の転送可能取引のために使用可能なので、共通アルゴリズムが考案され適用され得る。これらのメタデータアイテムの更なる詳細は、以下に提供される。
【０１８２】
分割可能トークンは、トランザクションアウトプット上の値が、複数のトークンに渡り（つまり、複数のトランザクションに渡り）割り当てられるより小さな量に細分化され得るものである。典型は、トークン化されたフィアット通貨である。分割可能取引は、非ゼロペギングレート（Pegging  Rate）を指定する取引として定められる。分割可能取引では、トランザクションアウトプットの中で転送されるトークン化された値は、ペギングレートにより基礎ビットコイン（bitcoin：ＢＴＣ）値に結び付けられる。つまり、取引は、ペギングレートの観点で、保持者の権利を指定する。非分割可能トークンでは、ペギングレートが存在せず、取引は、固定値の観点で、保持者の権利を指定する（例えば、「この取引は、正確に＄１０００で換金できる」という無記名債券、又は「この取引は１ヘアカットと交換可能である」という商品引換券のように）。非分割可能取引では、基礎トランザクションＢＴＣ値は取引け値と無関係である。
【０１８３】
表現「基礎ＢＴＣ値」は、トランザクションアウトプットに付加されるビットコイン額（ＢＴＣ）を表す。ビットコインプロトコルでは、各トランザクションアウトプットは、有効と考えられる非ゼロＢＴＣ額を有しなければならない。実際には、ＢＴＣ額は、記述時に現在５４６サトシに設定される設定最小値（「ダスト（dust）」）より大きくなければならい。１ビットコインは、１００百万サトシに等しいと定められる。ビットコイントランザクションは本願明細書では所有権の交換を助ける手段としてのみ使用されるので、実際の基礎ＢＴＣ額は任意である。真の値は、取引仕様の中にある。理論上、全てのトークンは、ダストにより伝達され得る。
【０１８４】
本発明のコード化スキームに従い、具体的に、分割可能トークンでは、基礎ＢＴＣ値は次の意味：ペギングレートにより取引値との関係を運ぶ、を有する。ペギングレートは、それ自体任意であり、基礎ＢＴＣ額を小さく保つために選択される。単にダストを有する基礎となる各トークントランザクションではなく、ペギングレートを使用する理由は、本発明のプロトコルが可視性を実現するからである。トークンが幾つかの小さな額のトランザクションアウトプットに分けられるとき、元の取引を調整する必要がない。むしろ、各細分化トークンの取引値は、単に、ペギングレート及び基礎ＢＴＣ値の細分化された額に基づき計算される。
【０１８５】
限定トークンは、ＮｕｍＳｈａｒｅｓと呼ばれる量により定められる固定非ゼロの株数により合計発行値が固定された（又は「限定された」）トークンである。したがって、限定取引の下では更なる株は発行されない。例えば、競走馬の共同所有権のための取引は、競走馬の１００％に限定される（例えば、それぞれ１％で１００個の株、又はそれぞれ１０％で１０個の株、等）。非限定取引は、例えば要求額のフィアット通貨を彼らの引当金（Reserve  Account）に追加することにより、発行人が株の更なる発行を引き受け可能であることを意味する。ＮｕｍＳｈａｒｅｓは、全ての取引に明示的に記載されなければならない。限定取引は、ＮｕｍＳｈａｒｅｓ＞０を有しなければならない。非限定取引は、ＮｕｍＳｈａｒｅｓ＝０を設定することにより示される。
【０１８６】
典型的な例は、準備預金口座に保持される合計値が存在する約束手形（つまり未償還トークン）の合計値に一致するようにする、通貨準備（金準備と類似する）である。この概念は、通貨準備を超えて、在庫ストックにまで拡大する。例えば、認可印刷Ｔシャツトークンの発行人は、１０，０００枚のＴシャツの在庫で開始して良く、これらの１０，０００枚のＴシャツを表す分割可能トークンを発行して良い（ここで、各株＝１枚のＴシャツを表す）。元のトークンは細分化でき、各細分化トークンは、ペギングレートにより定められるトランザクションアウトプットの基礎ＢＴＣ値に従い、Ｔシャツの枚数に償還可能である。しかしながら、需要が増大する場合、発行人は更なる株を発行することを決定して良い（つまり、更に１０，０００枚だけ流通株数を増大する）。このような場合には、更なる発行を引き受けるために、発行人の準備講座（つまり、在庫倉庫）に更に１０，０００枚のＴシャツを預けることが、発行人の義務である。したがって、在庫にあるＴシャツの合計枚数は、常に、合計未償還株数である（ここで、在庫は「準備口座」として作用する）。
【０１８７】
ペギングレートは、分割可能取引にのみ適用される。ここで、（ＳｈａｒｅＶａｌと呼ばれる量により表される）株の値は、基礎ＢＴＣ額に固定される。例えば、取引は、発行人が基礎１ＢＴＣ毎に＄１０，０００のレートでトークンを償還することを約束すると指定して良い。これは、（例えば）１５，４００サトシのトークン化された基礎アウトプット値を有するトランザクションが＄１．５４で償還可能であることを意味し得る。ペギングレートについて０の値は、取引が非分割可能であることを示す（つまり、無記名債権のように、全体のみが転送可能である）。ペギングレートが０に設定されると（非分割可能トークンを意味する）、基礎ＢＴＣ値は、取引値と無関係であり、任意の額に設定可能である。通常、この場合には、運用コストを最小化するために、基礎ＢＴＣ額を可能な限り小さく保つ（つまり、ダストに設定する）ことが望ましい。
【０１８８】
ＮｕｍＳｈａｒｅｓは、（限定）取引の下で利用可能な合計（固定）株数である。限定取引では、ＮｕｍＳｈａｒｅｓは、ゼロより大きい全体数でなければならない。非限定取引では、いつでも（引き受けられるならば）より多くの株が発行可能なので、ＮｕｍＳｈａｒｅｓは固定されない。これは、値を０に設定することにより示される。
【０１８９】
株は、転送単位として定められ、ＳｈａｒｅＶａｌはその単位の値である。例えば、フィアット通貨では、転送単位は１セントに設定されて良い。あるいは、例えば、転送単位は５０セントに設定されて良く、この場合には、転送は５０セントの「ロット」でのみ実行できる。ＳｈａｒｅＶａｌは、パーセンテージとしても表現できる。例えば、ブリーダが競走馬を１０個の等しい株で売りたいと望む場合、ＳｈａｒｅＶａｌ＝０を設定１０％である。ＳｈａｒｅＶａｌは０より大きくなければならず、且つ取引において定められなければならない。
【０１９０】
ＴｏｔａｌＩｓｓｕａｎｃｅは、発行された株の合計値を表す。この値は限定取引にのみ関連する。非限定取引については、発行は固定されず、より多くの株が発行されて良い。株がパーセンテージとして表現される場合、定義によりＴｏｔａｌＩｓｓｕａｎｃｅ＝０を設定１００％である。
【０１９１】
限定取引では、ＮｕｍＳｈａｒｅｓ、ＳｈａｒｅＶａｌ、及びＴｏｔａｌＩｓｓｕａｎｃｅは、以下のように関連する。
ＮｕｍＳｈａｒｅｓ×ＳｈａｒｅＶａｌ＝ＴｏｔａｌＩｓｓｕａｎｃｅ
ＴｏｔａｌＩｓｓｕａｎｃｅの０の値は、非限定取引であることを意味する。非限定取引の一例は、フィアット通貨である（したがって、ＴｏｔａｌＩｓｓｕａｎｃｅは０に設定される）。限定取引の例は、（ｉ）限定版記念硬貨（１０００個鋳造され、１株＝１硬貨である）、ＴｏｔａｌＩｓｓｕａｎｃｅ＝１０００×１＝１０００個の硬貨、（ｉｉ）入場券のある会場の席、ＴｏｔａｌＩｓｓｕａｎｃｅ＝利用可能な合計席数、である。
【０１９２】
流通は、未使用トークンの合計値として定められる（つまり、ＵＴＸＯ（未使用トランザクションアウトプット）の中のトランザクションにより決定される）。全部の未使用トランザクションの完全な集合は、全てのビットコインノードに利用可能なリストの中に保持される。例えば、発行人が最初に＄１０，０００をフィアット通貨型のトークンとして発行し、時間を経て＄５５００の価値のトークンが償還された場合、流通＝＄４５００である（未償還トークンの値である）。この値は、関連する準備口座の差引残高に調整されるべきである。
【０１９３】
＜本発明の実施形態と共に使用するのに適する計算リソース（「エージェント」）の説明のための例＞
本発明は、所望の処理の自動化された態様を実行するために、適切に構成された計算リソース（ここでは「エージェント」）を利用できる。適切且つ好適なエージェントの一例が以下に提供されるが、他の実装が使用されて良い。
【０１９４】
エージェントは、チューリング（Turing）機械の実装において非消去可能テープとしてブロックチェーンを使用して、ブロックチェーンと連携して動作して良い。このエージェントは、ブロックチェーンネットワークと並列に実行し、（ループ）処理の実行を監督し及び扱う。ループ処理は、例えば装置又はシステムの処理又は制御の自動化のような所与のタスクを実行するよう設計される。この並列リソースは、ブロックチェーンの状態を監視し、トランザクションをブロックチェーンに書き込ませることができる。ある意味で、これは、ブロックチェーンをチューリング機械の非消去可能テープとして利用し、以下の定義及び特徴を有する。
【０１９５】
１．ブロックチェーンは、チューリング機械のテープとして作用する。ブロックチェーンの中の各トランザクションは、テープ上のセルを表す。このセルは、有限なアルファベットからの記号を含み得る。
【０１９６】
２．テープヘッドは、ブロックチェーン上に既に書き込まれているブロックから情報を読み出すことができる。
【０１９７】
３．テープヘッドは、多くのトランザクションを含む新しいブロックを、ブロックチェーンの終わりに書き込むことができる。しかしながら、それらは、既に存在するブロックに書き込むことができない、このように、ブロックチェーンテープは非消去可能である。
【０１９８】
４．各トランザクションのマルチシグネチャのＰ２ＳＨ（pay-to-script-hash）トランザクションの部分として格納され得る。
【０１９９】
エージェントに重要な機能は、ブロックチェーンの現在状態を監視する自動エンティティとして作用することである。これは更に、任意のオフブロックソースから、信号又は入力を受信できる。ブロックチェーン状態及び／又は受信した入力に依存して、エージェントは特定動作を実行して良い。エージェントは、どの動作が実行されるべきかを決定する。これらは、「現実世界」（つまり、オフブロック）の中の作用、及び／又（新しいトランザクションを生成する及びブロードキャストするような）はブロックチェーンに対する作用を含んで良く又は含まなくて良い。エージェントが取る作用は、ブロックチェーン状態によりトリガされて良い。エージェントは、更に、ビットコインネットワークにブロードキャストされるべき次のトランザクションセットについて決定し、後にブロックチェーンに書き込んで良い。
【０２００】
エージェントの作用は、並列に且つ同時にブロックチェーン（例えば、ビットコイン）ネットワークに対して実行する。ある意味で、これは、ブロックチェーン（例えば、ビットコイン）スクリプトの機能を格納する。この連続監視は、結合されたエージェント及びブロックチェーンシステムチューリング完全（Turing  Complete）を作成する「ループ」制御フロー構成を実施する。
【０２０１】
チューリング機械は、以下の２つのスタックを含む。
【０２０２】
・データスタック：これは、上述のようにブロックチェーンにより表される。
【０２０３】
・制御スタック：これは、エージェント機能により表される。これは、繰り返し制御フロー機能に関連する情報を格納する。
【０２０４】
制御スタックのデータスタックからの分離は、無限ループがビットコイン中核で生じることを防ぎ、サービス拒否攻撃を軽減するという利点を提供する。
【０２０５】
エージェントは、任意の種類のループ構成（例えば、ＦＯＲ−ＮＥＸＴ、ＲＥＰＥＡＴ  ＵＮＴＩＬ、等）によりループ可能なサブルーチンを管理し及び実行する。本願明細書に記載の説明のための実施形態は、「繰り返し（ｒｅｐｅａｔ）」構成の一例を用いる処理を含む。ユーザは、インデックス（ｉ）及び限界（Ｊ）を指定して良い。これらはそれぞれ、現在の反復番号（標準的に０から開始してカウントされる）、及び繰り返しループの合計反復数、を表す。
【０２０６】
各反復について、
１．インデックスが１だけ増大する。終了条件については、インデックスが限界に達すると、反復は停止する。
２．「if  condition  then  action（［条件］ならば［動作］する）」（ＩＣＴＡ）文を含むコードブロックが実行される。動作は、ブロックチェーン上の又は外の任意の動作であって良い。
３．このサブルーチンの暗号ハッシュが計算される。これは、トランザクションの部分としてブロックチェーンに格納できる。ハッシュは各コードにユニークなので、どのコードが使用されているかの検証を可能にする。
【０２０７】
ループ本体は、コードブロックを含む。各コードブロックは、「if  condition  then  action（［条件］ならば［動作］する）」（ＩＣＴＡ）文を含む。これは、以下に一致するトランザクションについて、ブロックチェーンの現在状態を監視する。
・開始又はトリガ条件（例えば、特定日に達したとき）、
・繰り返し条件（つまり、前の反復に関連付けられたメタデータ又はハッシュ）、
・停止条件（つまり、ループの最後の反復）。
【０２０８】
ＩＣＴＡ文は、エージェントが、ブロックチェーンの現在状態に基づき、次のトランザクションについて決定することを可能にする。次のトランザクションを生成することは、トランザクションをビットコインネットワークにブロードキャストすること、及び新しいトランザクションをブロックチェーンに書き込むことを含む。これは、この反復が実行されたことの記録として作用する。トランザクションがブロックチェーンに書き込まれると、マネジャは、続いて、前の反復が実行されブロックチェーンに書き込まれたことを知り、次の反復を実行するだろう。後者は、インデックス（ｉ）がコードブロックの中で指定された限度（Ｊ）に達するとき、繰り返しループが存在するまで継続する。
【０２０９】
各トランザクションは、再利用可能な方法で、ブロックチェーンに保存される。ビットコイン実装では、トランザクションの中の各署名は、ＳＩＧＨＡＳＨフラグを付加される。このフラグは、異なる値を取ることができる。これらの値の各々は、この署名の所有者の関与無しに、トランザクションの他の部分が変更され得るか否かを示す。再利用可能トランザクションは、トランザクションインプットのうちの１つの中にＳＩＧＨＡＳＨフラグ「ＳｉｇＨａｓｈ＿ＡｎｙｏｎｅＣａｎＰａｙ」を有する。これは、誰もがトランザクションのインプットに貢献することを許容する。このパラメータは、エージェントのＩＣＴＡ関数が、複数回、異なるインプットで、実行され且つ繰り返されることを可能にする。この関数の使用は、例えば再利用トランザクションの複製により、認可パーティに制限できる。
【０２１０】
ＩＣＴＡコードブロックの「If  condition」部分は、任意の種類の条件を監視できる。これは、他のプログラミング言語（例えば、Ｃ、Ｃ＋＋、Ｊａｖｅ）と同様であり、ブロックチェーンに格納された情報に限定されない。例えば、これは、日付及び時間（つまり、特定の日時に達したとき）を監視し、又は天気（つまり、気温が１０℃より低く且つ雨が降っているとき）を監視し、取引又は信用の条件（つまり、企業Ａが企業Ｂを買うとき）を監視し得る。
【０２１１】
ＩＣＴＡコードブロックの「Then  action」部分は、多数の動作を実行できる。本発明は、取り得る動作の数又は種類に関して限定されない。動作は、ブロックチェーン上のトランザクションに限定されないが、動作に関連するメタデータを含むトランザクションは、ブロックチェーンに書き込まれて良い。
【０２１２】
メタデータは、任意の形式であり得る。しかしながら、一実施形態では、メタデータは、動作に関連するより多くのデータ又は指示を含むファイルへのハイパーリンクを格納して良い。メタデータは、動作に関連するより多くのデータ又は指示を含むハッシュテーブルへのハイパーリンク、及びハッシュテーブルに対する検索キーとして作用する動作のハッシュの両方を格納して良い。
【０２１３】
エージェントの制御スタックは、各ユーザの必要に特化した多数の方法で実装できる。例えば、制御スタックの繰り返しループは、任意のチューリング完全言語に基づき得る。言語の１つの可能な選択は、Ｆｏｒｔｈ型スタックに基づく言語である。この言語を使用する利点は、制御スタックを、既知であり且つ広く使用されているビットコインスクリプトとプログラミング型において一貫性を保つことである。
【０２１４】
＜ビットコインスクリプトの交互形式スタック（Alternate  Stack）をデータ記憶空間として使用する＞
ビットコインスクリプトは、コマンド、更に呼び出されるオペコード、を含む。これらは、ユーザが、データを「ａｌｔ  ｓｔａｃｋ」として知られる交互形式スタックに移動させることを可能にする。
【０２１５】
オペコードは、次の通りである。
・ＯＰ＿ＴＯＡＬＴＳＴＡＣＫ。これは、データを主スタックの最上部からａｌｔ  ｓｔａｃｋの最上部に移動させる。
・ＯＰ＿ＦＲＯＭＡＬＴＳＴＡＣＫ。これは、データをａｌｔ  ｓｔａｃｋの最上部から主スタックの最上部に移動させる。
【０２１６】
これは、計算機にデータを格納させる「記憶（memory）」機能と同様に、中間計算ステップからのデータをａｌｔ  ｓｔａｃｋに格納させる。一実施形態では、ａｌｔ  ｓｔａｃｋは、小さな計算タスクを解決するようビットコインスクリプトを構成するために、及び結果を計算に返すために、使用される。
【０２１７】
＜エージェントを管理するためにコードレジスタを使用する＞
エージェントは、また、自身の所有し且つ実行する全てのコードのレジストリを管理する。このレジストリは、特定キーを特定値にマッピングするルックアップテーブル又は辞書のように構造化される。キー及び値ペアは、それぞれ、コードブロックのハッシュ（Ｈ１）及びコードが格納された場所のＩＰｖ６アドレスにより表される。キーＨ１を用いてコードブロックを読み出すために、ルックアップテーブルが使用されて、関連する値（これは、コードの格納されている場所である）を読み出し、及びそれに応じてソースコードを読み出す。コードレジストリの実装は変化し得る。
【０２１８】
＜エージェントのコードのトランザクションメタデータ、及びループの再スポーニング＞
特定の反復でエージェントのループを再スポーニングするために必要な情報は、ブロックチェーンに記録されたトランザクションの中にメタデータとして格納される。
【０２１９】
このように、ブロックチェーン上のトランザクションは、エージェント上で実行されているループの所与の反復に関する情報を格納し、又はそれへのアクセスを提供する。この情報は、ループに関連付けられた任意の変数の値、例えばインデックスｉ、及び任意の他の必要な情報、例えばコードブロック内で使用されるパラメータの値又は更に要求される情報がアクセス可能な場所の位置関連データ、を含み得る。
【０２２０】
メタデータ自体は、トランザクションの中のマルチシグネチャのＰ２ＳＨ（pay-to-script-hash）スクリプトの部分として格納される。トランザクションと共に記録されたメタデータは、コードが過去にどのように実行されたかのオーディットトレイルを記録する能力も与える。
【０２２１】
エージェントが各反復で繰り返しループコードブロックを再スポーニングできる幾つかの方法が存在する。コードブロックは、エージェント自体にハードコードされて良く、又は秘密に若しくは公に利用可能なファイルに格納でき、又は、秘密若しくは公開ハッシュテーブルファイル上のエントリとして格納され得る、又はこれらの組み合わせである。コードブロックは、ハードコードされた変数に固定され、又は固定であるが、移植可能なパラメータを含み得る。パラメータは、任意のデータフォーマットの単一値であって良く、又は小さなコードチャンクであって良く、又はそれらの組み合わせであって良い。パラメータは、トランザクション（例えば、ビットコイントランザクション）の中のメタデータから、又は内部データベース又は秘密／公開ファイル又はハッシュテーブル又はこれらの任意の組み合わせのような外部ソースから、直接に該パラメータを読み出すことにより移植され得る。パラメータ値の外部ソースへのポインタは、トランザクションの中のメタデータに格納されて良い。
【０２２２】
以下のステップは、エージェントがｉ番目の反復で繰り返しループコードブロックをどのように再スポーニングできるかの一例を提供する。本例では、コードレジストリは、ハッシュテーブルである。これにより、ハッシュ値がテーブルの検索キーとして作用し、トランザクション上のメタデータに格納される。
１．エージェントは、コードレジストリ内のエントリに一致するコードブロックのハッシュを含むトランザクションについて、ブロックチェーンを監視する。
２．エージェントは、対応するハッシュ（Ｈ１）を含むトランザクションを見付ける。
３．エージェントは、「メタデータ−ＣｏｄｅＨａｓｈ」を読み出し、Ｈ１を得るためにＣｏｄｅＨａｓｈフィールドを得て、Ｈ１を用いてコード（Ｃ１）を読み出す。ＲＩＰＥＭＤ−１６０（ＳＨＡ２５６（Ｃ１））がＨ１に等しい場合、コードは変化しておらず、安全に次のステップに進める。
４．エージェントは、インデックスＩを格納する「メタデータ−ＣｏｄｅＨａｓｈ」を読み出し、ｉ番目の反復でコードを再スポーニングする。言い換えると、ループが、適切な反復で「リロード」される。
５．メタデータの発生元を検証するために、ユーザの署名がＰ２ＳＨコマンドに含まれる。
６．これらのデータがループのこの反復のために必要な場合、エージェントは、「メタデータ−ＯｕｔｐｕｔＨａｓｈ」及び「メタデータ−ＯｕｔｐｕｔＰｏｉｎｔｅｒ」を読み出し、前のステップのアウトプットを検索する。
【０２２３】
理解されるべき事に、上述の変形の異なる組み合わせに基づき、ビットコインゲートを実装するための多くの異なるパターンが存在する。以下は、単に説明のためのパターンの選択であり、限定を意図しない。各パターンは、パターンの特定の属性及びゲートロジックの意図された使用に依存して、１種類の、又は複数種類の、又は全種類のゲートを実装のに適切であって良い。
【０２２４】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する（comprising又はcomprises）」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する（comprises）」は「含む（includes）又は構成される（consists  of）」を意味し、「有する（comprising）」は「含む（including）又は構成される（including  of）」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、１つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【図１】
2019517175.tif 000008
【図２】
2019517175.tif 000009
【図３】
2019517175.tif 000010
【図４】
2019517175.tif 000011
【図５】
2019517175.tif 000012
【図６】
2019517175.tif 000013
【図７】
2019517175.tif 000014
【図８】
2019517175.tif 000015
【図９】
2019517175.tif 000016
【図１０】
2019517175.tif 000017
【図１１】
2019517175.tif 000018
【図１２】
2019517175.tif 000019
【図１３】
2019517175.tif 000020
【図１４】
2019517175.tif 000021
【図１５】
2019517175.tif 000022
【国際調査報告】
2019517175.tif 000023
2019517175.tif 000024