IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特開2024-73535ブロックチェーンを用いる論理ゲート機能の実装
<>
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図1
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図2
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図3
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図4
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図5
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図6
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図7
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図8
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図9
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図10
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図11
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図12
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図13
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図14
  • 特開-ブロックチェーンを用いる論理ゲート機能の実装 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024073535
(43)【公開日】2024-05-29
(54)【発明の名称】ブロックチェーンを用いる論理ゲート機能の実装
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240522BHJP
【FI】
H04L9/32 200Z
【審査請求】有
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024038520
(22)【出願日】2024-03-13
(62)【分割の表示】P 2022066654の分割
【原出願日】2017-04-28
(31)【優先権主張番号】1607569.9
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607553.3
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607539.2
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607541.8
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607566.5
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607555.8
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607584.8
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607472.6
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607538.4
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607530.1
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607564.0
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607537.6
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607520.2
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607525.1
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607527.7
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607561.6
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607552.5
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607529.3
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607554.1
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1607558.2
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】サヴァナ,ステファヌ
(57)【要約】      (修正有)
【課題】論理ゲートの機能を実装するためにブロックチェーントランザクションを生成する方法及びシステムを提供する。
【解決手段】ビットコインプラットフォーム又は代替のブロックチェーンプラットフォームで実施されるシステム100であって、トランザクションは、OR、AND、XOR、NOT、等のような論理ゲートの機能を実装するために選択された命令を有するロックスクリプトを含む。命令は、ハッシュされた形式で提供され、スクリプトが実行されると、入力は、真又は偽の出力を提供するために、条件付き命令により処理される。第2トランザクションは、検証のためにブロックチェーンネットワークへ送信され、有効であると決定した場合に、ブロックチェーンに書き込まれる。第2トランザクションの有効性は、真の出力として解釈できる。したがって、第1トランザクションのロックスクリプトは、所望の論理ゲートの機能を提供する。
【選択図】図12
【特許請求の範囲】
【請求項1】
コンピュータにより実施される制御方法であって、
第1ブロックチェーントランザクションの中でロックスクリプトを提供するステップであって、前記ロックスクリプトは、少なくとも1つのブール入力を処理するよう構成される少なくとも1つの命令を含む、ステップと、
アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップと、
少なくとも1つの計算リソース又はエージェントにより、少なくとも1つの入力信号を処理して少なくとも1つのブール入力を提供するステップと、
前記少なくとも1つのブール入力を使用して、前記第1ブロックチェーントランザクション及び更なるブロックチェーントランザクションの前記ロックスクリプト及びアンロックスクリプトを実行し、前記計算リソース又はエージェントは、前記更なるブロックチェーントランザクションの有効性に基づき、装置又は処理の動作に影響を与えるよう構成され、前記更なるブロックチェーントランザクション及び/又は第1ブロックチェーントランザクションを検証のためにブロックチェーンネットワークへ送信し、ブロックチェーン又は前記ブロックチェーンネットワーク内における前記更なるブロックチェーントランザクションの検出を論理ゲートの真の出力として解釈し、前記ブロックチェーン又はブロックチェーンネットワーク内における前記更なるブロックチェーントランザクションの検出の失敗を論理ゲートの偽の出力として解釈するステップと、
を有する方法。
【請求項2】
前記更なるブロックチェーントランザクション及び/又は第1ブロックチェーントランザクションを検証のためにブロックチェーンネットワークへ送信するステップ、
を含む請求項1に記載の方法。
【請求項3】
前記更なるブロックチェーントランザクションの有効性に基づき装置又は処理を制御するステップであって、前記有効性は、コンピュータに基づく制御エージェントにより、又は前記ブロックチェーンネットワークを監視してネットワークノードにより前記更なるブロックチェーントランザクションが妥当性確認されたかどうかを決定することにより、及び/又は前記ブロックチェーンの状態を監視して前記更なるブロックチェーントランザクションが前記ブロックチェーンに書き込まれたかどうかを決定することにより、決定され又は確立される、ステップと、
を含む請求項1に記載の方法。
【請求項4】
前記ロックスクリプト内の前記少なくとも1つの命令は、論理ゲートの真理値表を実装するよう構成される、請求項1に記載の方法。
【請求項5】
前記論理ゲートはORゲート、XORゲート、NANDゲート、NORゲート、NOTゲート、XNORゲート、IMPLYゲート、逆包含ゲートである、請求項4に記載の方法。
【請求項6】
前記論理ゲートはANDゲートである、請求項5に記載の方法。
【請求項7】
前記少なくとも1つの入力は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び/又はビットコインの他のブロックチェーン関連アドレス、を含む、請求項1に記載の方法。
【請求項8】
前記第1ブロックチェーントランザクション及び/又は更なるブロックチェーントランザクションは、コンピュータに基づくリソースで実行する自動プロセスにより、生成され及び/又はブロックチェーンネットワークへ送信される、請求項1に記載の方法。
【請求項9】
前記少なくとも1つの命令は、
ブール条件又は演算子を有する、及び/又は、
スタック型プログラミング言語を用いて記述され及び/又は実行される、
請求項1に記載の方法。
【請求項10】
請求項1に記載の方法を実装するよう構成されるコンピュータにより実装されるシステム。
【請求項11】
ブロックチェーンを用いる又はブロックチェーン上で実施されるブール計算又は演算を組み込む制御システムであって、前記ブール計算又は演算は、
少なくとも1つの入力と少なくとも1つの命令とを含むブロックチェーントランザクションを有し、
前記少なくとも1つの命令は、前記少なくとも1つの入力を処理して少なくとも1つのブール出力を提供することにより、ブール真理値表の機能を実装するよう選択される、制御システム。
【請求項12】
前記ブール真理値表はORゲート、XORゲート、NANDゲート、NORゲート、NOTゲート、IMPLYゲート、NOT IMPLY又はXNORゲートの真理値表である、請求項11に記載の制御システム。
【請求項13】
前記ブール真理値表はANDゲートの真理値表である、請求項11に記載の制御システム。
【請求項14】
前出力はブール値である、又は、
前記少なくとも1つの命令は、前記ブロックチェーントランザクションに関連付けられたスクリプトの中で提供され、前記スクリプトはロックスクリプトである、
請求項11に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、分散台帳(ブロックチェーン)技術に関する。本発明は、限定ではないがビットコインブロックチェーンを含む任意のブロックチェーン関連技術であり得る。本発明の態様は、論理ゲート及び組み合わせ論理の分野にも関する。本発明は、制御システム又は処理と共に使用することに適する場合がある。
【発明の概要】
【0002】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳を含むよう使用される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、サイドチェーン及び代替チェーン技術、共有台帳、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。用語「ユーザ」は、人間又はコンピュータに基づくリソースを表すことがある。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピア電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタル資産の制御の転送を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークにより拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、アンロックスクリプトは、ロックスクリプトの評価のために入力を提供できる。これは標準的に署名に基づく入力の形式であるが、他の入力形式が可能であることが知られている。さらに、スクリプト言語におけるコマンドの多くは、真又は偽の結果を提供するブール演算子(例えば、OP-EQUAL)である。これは、トランザクションの中に条件付けを構築することを可能にする。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用のために最も広く知られている。しかしながら、更に近年は、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステムの使用、及びブロックチェーンに格納可能なデータの両者を探索し始めている。本発明は、ブロックチェーン技術の1つのこのような新しい新規な適応に関する。特に、本発明は、広範な且つ様々な範囲のコンピュータにより実装されるシステムを生成するための簡易だが効率的且つ強力なメカニズムとして使用可能な、論理ゲートの機能を実装し又はエミュレートするためのブロックチェーンの使用に関する。このようなシステムは、処理を制御する及び/又は装置及びシステムの動作を指示する制御ユニットを含み得る。
【0006】
制御ユニットの基本要素は論理ゲートである。ゲート論理をブロックチェーントランザクション(Tx)内に構築することにより、ブロックチェーン技術により与えられる利益を利用する強力な処理を実装できる。これらの利益は、限定ではないが、拡張されたサイバーセキュリティ、分散化装置/システム/処理制御、レガシーシステムとの可能な統合、及び記録の不変性/永続性を含む。
【0007】
したがって、論理ゲートの機能を提供し又はエミュレートする又はブロックチェーンを介するソリューションを提供することが望ましい。このようなソリューションでは、論理ゲートは、ブロックチェーントランザクションのロックスクリプトにより実装され得る。論理ゲートの基本構造への拡張は、任意の数の入力及び任意の数の出力を可能にするために提供され得る。
【0008】
このような改良されたソリューションが考案されている。したがって、本発明によると、添付の請求の範囲に定められるようなソリューションが提供される。
【0009】
本発明の実施形態は、コンピュータにより実装される方法及び対応するシステムを提供し得る。これらは、制御方法/システムとして記載され得る。
【0010】
本発明は、ロックスクリプトを有するブロックチェーントランザクション(TX)を提供する又は使用するステップであって、ロックスクリプトは、実行により、論理ゲートの機能を実装する及び/又はエミュレートするよう選択され及び構成されたコードの一部を実行する、ステップを有する方法を提供し得る。コードの一部の実行は、該コードの一部への入力を生成する少なくとも1つの条件の評価の後に実行されて良い。
【0011】
少なくとも1つの条件の評価は、ブール入力を生成して良い。コードの一部は、1又は複数の命令を有して良い。これらは、オペコードであって良い。オペコードは、スタックへデータをプッシュし、又はスタックからデータをポップして良い。コードの一部は、1又は複数の条件の結果を用いて実行するために構成されて良い。コードの一部は、特に論理ゲートをエミュレートする目的のために、ユーザ(つまり、プログラマ又はトランザクションの作成者)により選択されて良い。
【0012】
追加又は代替として、方法は、第1ブロックチェーントランザクション内でロックスクリプトを提供するステップを有して良い。第1(及び/又は更なる)トランザクションは、自動プロセスにより、つまり人間の介在無しにコンピュータにより、生成されて良い。
【0013】
ロックスクリプトは、少なくとも1つのブール入力を処理するよう構成される少なくとも1つの命令(つまりコードの一部)を有して良い。1又は複数の実施形態では、少なくとも1つの命令は、少なくとも1つの命令のハッシュとして、ロックスクリプト内で提供されて良い。したがって、命令は、ハッシュされた形式であって良い。少なくとも1つの命令は、ブール入力を計算で使用することにより又はブール入力に対して何らかの演算を実行することにより、ブール入力を処理して良い。
【0014】
ブール入力は、コードの一部を実行する前に、条件を評価することにより生成されて良い。条件は、ハッシュ値と格納されたハッシュ値との間の等価テストを有して良い。予め格納されたハッシュ値は、ロックスクリプトの中で提供されて良い。代替として、条件は、ロックスクリプト内で提供される1又は複数の命令/オペコードにより実装されて良い。
【0015】
方法は、アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップを有して良い。アンロックスクリプトは、Redeemスクリプトを有して良い。実際の命令がアンロック(Redeem)スクリプトにより提供されるように、少なくとも1つの命令は、ロックスクリプト内でハッシュとして提供されて良い。ここで、提供される命令のハッシュは、使用されるべきトランザクションのアウトプットのために、ロックスクリプト内のハッシュに一致しなければならない。
【0016】
方法は、少なくとも1つのブール入力を提供するために、少なくとも1つの入力信号を処理するステップを有して良い。入力信号は、任意のソースから受信され又は導出されて良い。
【0017】
方法は第1及び更なるブロックチェーントランザクションのそれぞれロックスクリプト及びアンロックスクリプトを実行するために、少なくとも1つのブール入力を用いるステップを有して良い。
【0018】
少なくとも1つのブール入力を提供するために少なくとも1つの入力信号を処理するステップは、更なるブロックチェーントランザクションのアンロックスクリプトにより実行されて良い。
【0019】
代替又は追加として、アンロックスクリプトへの入力として使用される前に、少なくとも1つの計算リソース又はエージェントにより実行されて良い。計算リソースは、ブロックチェーンネットワークの部分ではないことを意味する「ブロック外(off block)」リソースであって良い。
【0020】
方法は、更なるトランザクション及び/又は第1トランザクションを、評価のためにブロックチェーンネットワークへ送信するステップ、を更に有して良い。ネットワークは、ビットコインネットワークであって良い。
【0021】
方法は、更なるトランザクションの存在又は不存在を決定するために、ネットワークのブロックチェーンを監視し又は検索するステップを有して良い。
【0022】
方法は、ブロックチェーン内の更なるトランザクションの検出に基づき、装置又はプロセスの動作に影響を与えるよう構成される計算リソースを提供するステップを有して良い。
【0023】
方法は、更なるトランザクションの有効性を、論理ゲートにより提供される真の出力として解釈するステップを有して良い。有効性は、制御エージェントにより、又はブロックチェーン及び/又はブロックチェーンネットワークを監視することにより、決定されて良い。
【0024】
更なるトランザクションの有効性の決定は、動作を計算リソース/エージェントにより実行させるトリガとして機能して良い。
【0025】
ブロックチェーンネットワーク内の更なるトランザクションの検証は、アンロックスクリプトの実行に依存して良い。
【0026】
方法は、ブロックチェーン内の更なるトランザクションの存在又は不存在の決定に基づき、装置、システム又はプロセスの活動又は動作を制御するステップを有して良い。これは、任意の種類の装置、システム、又は技術的プロセルであって良い。制御される装置、システム又はプロセスは、ブロック外で実施されて良く、つまり、ブロックチェーンネットワークから離れて又は区別されて良い。
【0027】
ロックスクリプト内の少なくとも1つの命令は、論理ゲートの真理値表を実装するよう構成されて良い。
【0028】
ゲートは、ORゲート、XORゲート、NANDゲート、NORゲート、及びNOTゲート、又はXNORゲートであって良い。ゲートは、ANDゲートであって良い。ゲートは、IMPLYゲート(論理的条件、実質的条件、又は実質的含意としても知られる)であって良い。ゲートは逆包含(Converse implication)ゲートであって良い。
【0029】
少なくとも1つの入力信号は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び/又はビットコインの他のブロックチェーン関連アドレス、を有して良い。
【0030】
第1及び/又は更なるトランザクションは、コンピュータに基づくリソース上で実行する自動プロセスにより、生成され及び/又はブロックチェーンネットワークへ送信されて良い。
【0031】
少なくとも1つの命令は、ブール条件又は演算子を有して良い。少なくとも1つの命令は、スタック型プログラミング言語を用いて記述され及び/又は実行されて良い。
【0032】
本発明は、上述の方法の任意のバージョンを実施するよう構成されるコンピュータにより実装されるシステムも提供し得る。
【0033】
本発明は、ブロックチェーンを用いる又はブロックチェーン上で実施されるブール計算又は条件を組み込む制御システムであって、ブール計算又は演算は、ロックスクリプトを有するブロックチェーントランザクションを有し、ロックスクリプトは、少なくとも1つのブール出力を提供するために少なくとも1つの入力を処理することによりブール真理値表の機能を実装するよう選択される少なくとも1つの命令を有する、制御システムを提供し得る。
【0034】
真理値表は、ORゲート、XORゲート、NANDゲート、NORゲート、及びNOTゲート、又はXNORゲートの真理値表であって良い。真理値表は、IMPLYゲート(論理的条件、実質的条件、又は実質的含意としても知られる)の真理値表であって良い。真理値表は、ANDゲートの真理値表であって良い。
【0035】
本発明の別の態様によると、実質的に後述する「技術3」に従う、コンピュータにより実施される制御方法が提供され得る。このような方法は、複数の第1ブロックチェーントランザクション(のうちの各々)の中で(それぞれの)ロックスクリプトを提供するステップであって、前記(各)ロックスクリプトは、少なくとも1つの入力信号を処理するよう構成される少なくとも1つの命令を有する、ステップと、アンロックスクリプトを有する更なるブロックチェーントランザクションを提供するステップと、少なくとも1つのトランザクション出力を生成するために少なくとも1つの入力信号を処理するステップと、第1及び更なるブロックチェーントランザクションのロック及びアンロックスクリプトを実行するために、少なくとも1つのトランザクション出力を使用するステップと、を有して良い。
【0036】
少なくとも1つのトランザクション出力を生成するために少なくとも1つの入力信号を処理するステップは、i)更なるブロックチェーントランザクションのアンロックスクリプトにより、又は、ii)少なくとも1つの計算リソース又はエージェントにより、実行されて良い。
【0037】
方法は、評価のために更なるトランザクション及び/又は第1トランザクションをブロックチェーンネットワークへ送信するステップと、及び/又は、更なるトランザクションの存在又は不存在を決定するために、ブロックチェーン又はブロックチェーンネットワークを監視し又は検索するステップと、及び/又は、ブロックチェーン又はブロックチェーンネットワーク内の更なるトランザクションの検出、及び/又は更なるトランザクションの有効性、に基づき、装置又はプロセスの動作に影響を与えるよう構成される計算リソースを提供するステップと、を有して良い。
【0038】
方法は、ブロックチェーン又はブロックチェーンネットワーク内の更なるトランザクションの検出を、論理ゲートの真の出力として解釈するステップ、を有して良い。ブロックチェーンネットワーク内の更なるトランザクションの検証は、アンロックスクリプトの実行に依存して良い。
【0039】
方法は、更なるトランザクションの有効性に基づき、装置又はプロセスを制御するステップであって、有効性は、コンピュータに基づく制御エージェントにより、又はネットワークノードにより検証されたかどうかを決定するために前記ブロックチェーンネットワークを監視することにより、又は前記トランザクションが前記ブロックチェーンに書き込まれたか否かを決定するために前記ブロックチェーンの状態を監視することにより、決定され又は確立される、ステップ、を有して良い。
【0040】
ロックスクリプト内の少なくとも1つの命令は、ANDゲートの真理値表を実装するよう構成されて良い。少なくとも1つの入力は、数値、一定値、ハッシュ関数の結果、暗号鍵、ブロックチェーンパズル、及び/又はビットコインの他のブロックチェーン関連アドレス、を有して良い。第1及び/又は更なるトランザクションは、コンピュータに基づくリソース上で実行する自動プロセスにより、生成され及び/又はブロックチェーンネットワークへ送信されて良い。少なくとも1つの命令は、条件又は条件付き演算子を有して良く、及び/又は、スタック型プログラミング言語を用いて記述され及び/又は実行されて良い。本発明は、本発明の本態様に従う任意の方法を実施するよう構成されるコンピュータにより実装されるシステムを提供し得る。
【0041】
ある実施形態又は態様に関連して上述した任意の特徴は、別の実施形態又は態様に関連して使用されても良い。例えば、方法に関連して記載された任意の特徴は、システムに適用可能であり、逆も同様である。
【0042】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【0043】
図1】本発明の一実施形態により構成され、説明的使用例に関する、システムを示す。
図2図1の制御システムのための真理値表を示す。
図3図1の例のためのアンロックトランザクションの処理のステップを示す。
図4】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
図5】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
図6】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
図7】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
図8】シークレットを共有する及び公開鍵又は秘密鍵を生成するために使用可能な技術を示す。
図9】ブール出力Xを生成するために、2つのブール入力A及びBが第1トランザクションのロックスクリプト内で評価される、本発明の説明のための実施形態の機能を示す。
図10】第1及び第2トランザクションを有する、本発明の一実施形態の概略を示す。
図11】本発明の一実施形態によるプロセスを示す。
図12】後述する本発明の「技術1」に従う一実施形態の概略を示す。
図13】後述する本発明の「技術2」に従う一実施形態の概略を示す。
図14】後述する本発明の「技術3」に従う一実施形態の概略を示す。
図15】従来技術によりロック及びアンロックスクリプトが評価される方法の説明を提供する。
【発明を実施するための形態】
【0044】
本発明は、特定の真理値表の論理を実装するために、ブロックチェーントランザクションのロックスクリプトを使用するメカニズムを提供する。従来知られているように、このような真理値表は、論理ゲートを実装するために使用される。標準的に、基本ゲートは2つの入力A及びBと、単一の出力Xとを有する。図9は、出力Xを生成するために、2つの入力A及びBがトランザクション内で評価される、本発明の説明のための実施形態により生成される構造の概略を示す。入力値A及びBは、論理ゲートコードを含むロックスクリプトに関連付けられた前のトランザクションの出力を使用しようとするブロックチェーントランザクションのアンロックスクリプトを介して提供される。アンロックスクリプトは、1又は複数の実施形態では、Redeemスクリプトを有して良い。したがって、少なくとも2つのトランザクションは、本発明の任意の実施形態を実施するために必要である。第1トランザクションは、ゲート論理を埋め込んだロックスクリプトにより、ビットコイン又は他の暗号通貨額をロックする。第2トランザクションは、A及びB値を(場合によっては署名と一緒に)提示することにより、第1トランザクションの出力を使用する。
【0045】
伝統的なゲートでは、A、B、及びXは、2進法であり、真(1)又は偽(0)と等価な値を取る。しかしながら、本発明の一実施形態によると、伝統的なゲートは、より複雑な変形を含むよう複製され拡張される。特に、ブロックチェーンゲートへの入力は、「真」又は「偽」入力自体ではなくて良く、幾つかの異なる値、フォーマット又は種類の値のうちの任意のものであって良い。例えば、A及びBは、整数、ハッシュ値、暗号鍵、BTCアドレス(等)であって良く、A及びBの真の値は、出力を生成するためにトランザクション内で評価されて良い。出力は、トランザクションが有効(「真」)又は無効(「偽」)であり得るという意味で、必ずしも2進法ではない。
【0046】
しかしながら、出力は、幾つかのより複雑な関数のうちの任意のものとして機能して良い。例えば、出力は、条件セットを満たすことを条件とする重要な支払いを表して良く、又は、出力は、普通の支払であって良いが、イベントの安全な永久的レコードとして作用しない。ブロックチェーンゲートの変形の使用の更なる例は、後述される。
【0047】
多くの異なる種類の論理ゲートがあり、その全ては、本発明の範囲に包含される。一般的に、任意の回路の構成のために重要な幾つかの基本2入力ゲートがある。これらは、順不同で以下の通りである:
1.AND
2.OR
3.XOR 排他的OR
4.NAND 否定AND
5.NOR 否定OR
6.XNOR 排他的NOR
7.IMPLY 論理条件
8.NOT-IMPLY 実質的否包含。
【0048】
別の一般的に使用されるゲートはNOTであり、これは、1入力のみを有し、その出力は入力の反対の値である。ゲートは、通常、入力値と関連する出力値との全ての可能な組合せを提供する「真理値表」の形式で提示される。例えば、表1はANDゲート及びNOTゲートを示す。
[表1]ANDゲート及びNOTゲートの真理値表
【表1】
【0049】
全ての8個の基本的な2入力ゲートは、表2に示される。
[表2]8個の2入力ゲート
【表2】
【0050】
実際には、2つの2進入力が与えられた場合に出力の列を出す、16個の可能な異なる方法がある。これらの多くは、所要の用途に依存して有用性を示し得る。これらは、それぞれ単一のゲートとして生成され得る。したがって、真理値表が単一のブロックチェーンスクリプトにより実装される場合(例えば、以下の「技術1」)、16個の可能性のうちのいずれかが、トランザクションロックスクリプト内にコード化され得る。もちろん、可能性のうちの幾つかは、僅かしか又は全く現実の用途を有しない場合がある。完全を期すために、表3に、最初の6個のゲートについて16個の可能性を示す。
[表3]全ての可能な2入力、1出力「ゲート」
【表3】
【0051】
前述のように、本発明は、論理ゲートの機能のうちの少なくとも部分を実装するためにブロックチェーントランザクションが生成されるソリューションを提示する。このゲートの機能は、トランザクションのロックスクリプトの中でエミュレートされる。このようなロックスクリプトは、本願明細書で便宜上「ブロックチェーンゲート」又は「ビットコインゲート」として参照される場合がある。さらに、便宜上、幾つかの例においてビットコインが参照される場合があるが、代替のブロックチェーンプロトコル及びプラットフォームが使用されて良い。
【0052】
留意すべきことに、知られている技術によると、ブロックチェーントランザクションは、m人のうちのn人のマルチシグオプションを利用するよう構成され得る。これは、実質的に、トランザクションに対して要求される署名の数に関して論理ゲートとして動作する。n=mのとき、マルチシグネチャ動作は、論理ANDゲートとして振る舞う。しかしながら、これは、入力の中で供給される署名の数にのみ関連し又はそれによってのみ影響され、ブロックチェーンにより実装される論理ゲートの評価を任意の他の種類の入力に対して許容しないので、論理ゲートの限られた実装である。本発明は、一方で、ゲート機能が、パラメータ化された入力のより広範なセットに対して作用することを可能にする。
【0053】
本発明の種々の実施形態によると、第1ブロックチェーントランザクション(TX)のロックスクリプトは、選択された論理ゲートの機能を提供するために使用される。言い換えると、第1トランザクションの中で提供されるロックスクリプトは、実行されると、特定の論理ゲートの真理値表に従う出力を提供するために提示された入力値を使用する何らかのコードを含む。したがって、ロックスクリプトの中の命令は、所望のゲートの真理値表を実装するために選択され構成される。ロックスクリプトは、第1トランザクションの出力(TXO)に関連付けられる。
【0054】
第2トランザクション(TX)が次に生成される。第2トランザクションは、アンロックスクリプトを有する又はそれに関連付けられた入力を有する。アンロックスクリプトは、出力(TXO)を使用するために、第1トランザクションのロックスクリプトを解除するために使用されて良い。検証は、第1及び第2トランザクションのロック及びアンロックスクリプトを実行させる。したがって、A及びBの特定値が使用される。従来知られている、トランザクション検証中にロック及びアンロックスクリプトが評価される方法の説明のために図15を参照する。
【0055】
ロック及びアンロックスクリプトの実行が有効トランザクションを生じる場合、トランザクションの有効性は、論理ゲートの真の出力として解釈できる。反対に、トランザクションの検証が失敗した場合、これは、論理ゲートの偽出力として解釈できる。既知のブロックチェーン技術及び複数の技術によると、失敗したスクリプトは単にそれだけなので、これは、従来技術に優る拡張である。しかしながら、本発明によると、失敗したスクリプト(つまり検証に成功しなかった)は、「偽」入力及びその後の「偽」入力に対する応答の検出を可能にする。したがって、どんな出力が起こるとしても特定の動作手順はブロックチェーンゲートの出力に依存するので、本発明は、入力が真か偽かに関わらず、有意義な後続の動作の誘導及び開始を可能にする。
【0056】
トランザクションの有効性は、以下により決定できる:
・計算エージェント、
・ブロックチェーンネットワーク上の1又は複数のノード、
・ブロックチェーン上のブロック内のトランザクションの検出。上述のように、第1トランザクションからの出力の使用を試みるために、第2トランザクションが(ビットコイン)ネットワークに対して提示されると、マイニングノードは彼らの検証任務を実行する。トランザクションは、有効であれば、ブロックチェーンに書き込まれ、その他の場合には拒否される。したがって、計算エージェントは、該トランザクションが台帳へ出されるか否かを決定するために、ブロックチェーンの状態を監視できる。ブロックチェーンの中で検出された場合、これは、トランザクションが有効であったことを意味する。これは、論理ゲートからの真出力として計算エージェントにより解釈できる。
【0057】
有効性又は無効性の確率は、何らかの動作の実行のためのトリガとして機能し得る。この動作は、エージェントにより実行されて良い。エージェントは、装置、システム、又はプロセスの動作を制御し又は影響を与えて良い。
【0058】
図12、13、14に示すように、第1トランザクション(TX)は、エミュレートされるべきゲートの機能を定めることにおいて、「論理ゲートを準備する」として参照され得る。第2トランザクション(TX)は、アンロックスクリプトを介して、ゲート出力の評価の際に使用される値を提供するので、「論理ゲートを評価する」として参照され得る。
【0059】
図10~14を参照して後述するように、上述の事柄を達成するための種々の技術が存在する。
【0060】
<技術1>
図12は、技術1の概略を提供する。鍵を定義する属性:
・入力信号A及びBは、単一のトランザクション(TX)のトランザクション入力のアンロックスクリプトに提供される;
・A及びBは「(ビットコイン)パズル」であり、1又は複数の署名を伴って良い;
・TXのアンロックスクリプトは、前のトランザクションTXの出力の使用を試みるために使用され、これは、それぞれTX及びTXのアンロックスクリプト及びロックスクリプトを実行させる;
・A及びBは、真/偽を評価するために、TXのアンロックスクリプトの中で処理される;
・関連ロジック、つまり(TXのロックスクリプトの中で提供される)選択されたゲートのためのコードは、次にこれらの処理された値を用いて実行される;
・スクリプト評価は、次に、マルチシグのような他のロジック及び命令を実行する;マルチシグ演算は、従来知られているように、選択された論理ゲートのためのコードとは別個であり、該コードの実行後に実行されることに留意する。
【0061】
各パズルは、真又は偽である条件を表し、以下により、ロックスクリプトの実行中に評価される;
・先ず、解、つまりアンロックスクリプトによりロックスクリプトに対するパズルの値を提示する;
・ロックスクリプトは、提示された値をハッシュし、次に、それを内部に格納されたハッシュ値と比較する(「内部に格納された」は、ハッシュがロックスクリプトの部分として書き込まれていることを意味する);提示された値のハッシュと格納されたハッシュとが等しいことは「真」を意味し、等しくないことは「偽」を意味する;したがって、各パズルについて、ハッシュの比較は中間結果を提供する;
・2つの評価された条件の中間結果は、次に、論理ゲートの出力Xを表す最終結果を提供するために、ロックスクリプト内で提供される関連ゲート論理コードに適用される;最終結果が真ならば、マルチシグ演算を用いて付随する署名が検証される。
【0062】
TXのロックスクリプトは、ビットコインプロトコルで知られているP2SHロックスクリプト、又は代替プロトコルからの等価な機能であって良い。既知の技術によると、P2SHロックスクリプトはRedeemスクリプトのハッシュを含み、TX出力は、ハッシュされるとロックスクリプト内に格納されたハッシュに一致する正しいスクリプトの提示によってのみ使用できる。したがって、pay-to-scriptハッシュトランザクションに関して、実際のロジックはアンロックスクリプトの中で提示されるが、ロックスクリプトは、後に提供されるロジックを「知っている」。当業者は、このようなトランザクションの中のロックスクリプトの動作が知られていなければならないが、暗号的にセキュアな技術を用いて、実際の命令セットがアンロックスクリプトの部分として提供可能であることを理解する。この手法の利点は、実際にはRedeemスクリプトにより初期ハッシュとして解が提示され、初期ハッシュは比較を実行するためにロックスクリプトの実行中に再びハッシュされるので、Redeemスクリプトの内容又は格納されたハッシュが識別できないことである。したがって、プライバシ及びセキュリティが向上され又は維持できる。
【0063】
別の変形では、A及びBは、ハッシュされなくて良く、ハッシュ同士の等価性テストではなく、別のテストが真及び偽を導出するために適用される。例えば、Aは現在のダウジョーンズ指数であって良く、スクリプトはA>(何らかの所定閾)についてテストして良い。この手法は、A及びBの中間結果に到達するためにハッシュを比較するためにP2SHトランザクションタイプを使用しないが、代わりに、何らかの他の種類の所定条件を評価するためにロックスクリプトの中の「条件評価コード」を使用する。この方法では、多くの異なる種類の条件が真/偽についてテストされて良い。条件評価コードから生じる中間結果は、次に、ロックスクリプトのゲート論理部分に渡され、最終的には署名検証に渡されて良い。署名検証プロセスは、従来知られている技術に従い実行される。留意すべきことに、この特定の例では、A及びBの値がハッシュされないので、方法は、テストされる条件が秘密に保持される必要のある場合には適さない。
【0064】
<技術2>
図13は、技術2の概略を提供する。鍵を定義する属性:
・入力A及びBは、アンロックスクリプトに含まれ、(例えば制御エージェントにより)単一のトランザクション入力のロックスクリプトに提示される;
・A及びBは「真」又は「偽」であり、署名を伴って良い;
・A及びBにより表される条件は、真/偽値を導出するために、専用のコンピュータに基づくエージェントによりトランザクションの外部で予め評価され、次に制御エージェントへ安全に送信される;
・制御エージェントは、A及びB値(及び署名)をロックスクリプトに提示するアンロックスクリプトを含む更なるトランザクションを生成する。
【0065】
したがって、技術2は、条件がアンロックスクリプトへの提示の前に計算エージェントにより評価される点を除き、技術1と同じである。技術1と同様に、論理ゲート機能をエミュレートするコードは、第1トランザクションのロックスクリプトの中で提供され、入力の実際の値は更なるトランザクションのアンロックスクリプトにより検証中に提供される。
【0066】
<技術3>
図14は、技術3の概略を提供する。鍵を定義する属性:
・A及びBは、(同じトランザクションについて)2つの別個のトランザクション入力のロックスクリプトに提示される;
・A及びBは「(ビットコイン)パズル」であり、署名を伴って良い;
SIGHASHフラグ(例えばANYONECANPAY)の関連する組み合わせを用いて、2つの別個のエージェントは、A及びBを別個に、(制御エージェントにより最終的に確定される)トランザクションテンプレートに提示する;
・A及びBは、各ロックスクリプトの中で真/偽を評価され、各ロックスクリプトは次に関連ゲートロジックを実行する;
・各スクリプトは、次に、従来技術に従う署名チェックのような他のロジックを実行する。
【0067】
有効となる全体のトランザクションについて、各入力は有効でなければならない。これは、AND真理値表を実施する。同じ技術が任意の数の入力について使用できる。つまり、2つの条件A及びBを評価する代わりに、条件A、B、C、...がトランザクションを生成するための要件として設定できる。
【0068】
<テンプレートトランザクション>
1又は複数の実施形態では、トランザクションテンプレートが提供されて良い。トランザクションテンプレートは、コピーされ、次に、ブロックチェーンネットワークにブロードキャストされ得るトランザクションを生成するために、A及びB入力を入力される。ブロードキャストされたトランザクションがネットワークにより有効であるとして許容された場合、上述のように、これは「真」の出力として解釈でき、また、ブロックチェーン上の永久的な変更不可能なレコードを提供するよう機能する。A及びBは、通常、真又は偽として評価できる条件を表す。任意の種類の条件が評価でき、任意の種類のデータが、条件を評価するために使用できる。例えば、条件は、現実世界のイベント、信号の受信又は不存在、計算の完了成功、2以上のデータアイテム又は電子エンティティの間の一致、等を含んで良い。リストは無限であるが、以下は、テストされ得る異なる種類の条件のうちの非常に少数の指示的サンプルを提示する。
【0069】
ブロックチェーンゲートで使用するための、真/偽をテストされ得る例示的な条件:
1.現在の日付が2025年6月30日である;
2.1,000,000番目のビットコインブロックに達した;
3.エンティティが符号化信号を送信した(例えば、ボブがトランザクションを使用するために「Go!」と言った);
4.場所Xにおける温度がY℃より低い;
5.ダウジョーンズ指数が現在20,000より高い;
6.Juanita Shalala Morgensen-Smytheとして識別できる人物が結婚した;
7.(等)。
【0070】
ブロックチェーンゲートは、任意のエンティティにより作成されて良い。しかしながら、好適な実施形態は、ブロックチェーンゲートの生成、維持、及び送信に関連付けられた機能を実行するために1又は複数の自動ソフトウェアエージェントを設定する。用語「自動」は、タスクを完了するために、人間の介在無しに、プログラムの実行により完全に実行されることを意味すると解釈されて良い。好適な実施形態では、これらのエージェントは、種々の機能を実行可能であり、これらの機能のうちの幾つかは以下に列挙される。
【0071】
ブロックチェーンゲートに関連してエージェントにより実行され得る例示的な機能:
1.現実世界におけるイベントを監視し、「トリガ」が検出されると、設定されたルールに従い特定の動作を実行する;
2.トリガについてブロックチェーンを監視し、「トリガ」が検出されると、設定されたルールに従い特定の動作を実行する;
3.トランザクションテンプレートのコピーをとり、設定されたルールに基づいてそれらに入力及び/又は出力を挿入し、トランザクションをブロックチェーンネットワークにブロードキャストする;
4.トリガされると、関心パーティへ警告を送信する、又はデータを送信若しくは受信するために他のエージェントと通信する、等ような、他の種類の動作を実行する。
【0072】
ブロックチェーントランザクション内に論理ゲートを実装する多くの可能な用途及び最終用途がある。用途を実施するためにゲート又はゲートの組み合わせがどのように生成され展開されるかの詳細は、本願明細書の範囲を超える。しかしながら、本発明は、例えば電子装置の制御において使用され得る。これは、警報システム、車両解除システム、家電スイッチ、無線センサネットワーク、SCADA(Securely)、工場制御、インバータ、トランザクションロックシステム、時間に基づく安全、給水システム(等)のような、IoT(Internet of Things)装置を含み得る。また、自動支払システムの展開及び計算のために使用され得る。例えば、次の通りである:
a.支払が時間通りに受信された場合に出力1を送信し、その他の場合に出力2を送信し、額及び利子を別個に計算する;
b.時間に渡り増大又は減少するANYONECANPAYブロックチェーントランザクション。
【0073】
<ブロックチェーントランザクションで使用される「ゲート」の幾つかの可能な変形>
1.A及びBは(古典的なゲートにおけるように)2進法であって良い;Xは、トランザクションが「真(有効)」又は「偽(無効)」であるという意味で、2進法であって良い;
2.A及びBは暗号署名であって良い;
3.A及びBは、有意義な値を表す任意の数値であって良い;例えば、日付である;
3.A及びBは、有意義な値のハッシュであって良い;
5.A及びBは、ビットコインにおける意味で「パズル」であって良い(特定ハッシュに対する解);
6.A及びBは、上述のもののうち2以上の組み合わせであって良い(例えば署名+パズル);
7.A及びBは、異なる種類であって良い(例えば、A=署名+有意義な値;B=パズル);
8.複数の入力A、B、C、...が存在して良い;
9.X=真(有効)は、第三者が幾らかのビットコインを支払われたことを意味して良い;例えば、A及びB及び論理ゲートにより表されるような特定条件が満たされると、ビットコインを受取人に支払う;
10.X=真(有効)は、出力されたビットコインが単に支払人に返されることを意味し、トランザクションの目的は支払と無関係である(以下の例);
11.X=真(有効)は、イベントをトリガすることを意味して良い(例えば、監視エージェントは、IoT装置を制御するような設定された動作を行うようトリガされて良い);
12.X=真(有効)は、イベントwお登録することを意味する;つまり、トランザクションの目的は、イベントのセキュアな不変の永久的記録として動作することである;
13.複数の入力X、Y、...が存在して良い;これは、何人かの受取人がビットコインを支払われたこと、又は幾つかのトリガが成立したこと、又はその組み合わせを意味して良い;
14.単一のトランザクションであって、その中に又はそれ自体がゲートを実装する単一のトランザクションが存在して良い;これはロックスクリプトの中で行われる。
【0074】
<本発明の一実施形態の例示的な実装>
この説明的な例で、装置制御用途で使用されるXORゲートを実装するために上述の技術1を使用する。
【0075】
ブロックチェーンIoT装置(Blockchain IOT Device:BIT)は、BID外に安全に格納され暗号鍵によりアクセスされる所定の命令を実行するよう設定されるコンピューティングエージェントである。「BID外(off-BID)」は、命令がBID自体の中で提供されないが、他の場所に格納され必要に応じて及び必要なときにアクセスされることを意味する。これらの命令は、選択されたタスク又は複数のタスクを実行するために選択され及び構成される。実行されると、命令は、IoT装置の動作を制御し及び影響を与え得る。BIDは、IoT自体に存在し、これはBIDがIoT装置内に又はIoT装置上に設けられたメモリにインストールされることを意味する。しかしながら、他の実施形態では、BIDは、装置外にあり、装置へのインターネット接続を有して良い。
【0076】
IoT装置は、自身の暗号鍵(及びIPアドレス)を有し、したがって、他の装置又はDHT等と安全に通信し及び相互作用できる。その「オペレーティングシステム」は簡易な汎用システムであり、以下のための(少なくとも限定ではない)幾つかの埋め込まれた機能を備える。
【0077】
・暗号計算、
・(DHTのような)外部ソースからの命令の読み出し、
・トグルスイッチのような(つまり、物理的IoT装置上にあるような)単純動作の実行。
【0078】
したがって、IoT装置又はその関連付けられたBIDは、それら自身の内蔵命令を含まず、自身が何を行うか、又はそれをどのように行うかを「知らない」。BIDは、他の場所から命令を安全に読み出すメカニズムを含むだけである。BIDは、単純動作セットを実行できるだけである(以下は、単なる説明のためであり、限定ではない):
・自身のマスタ秘密鍵及び公開鍵ペアへのアクセス。自身の(導出可能な)BTCアドレスも有する。
・IPアドレスへデータを送信する、及びIPアドレスからデータを受信する、能力。
・シークレット共有プロトコル計算(後述する)。好適な実施形態では、これらは機械コードで実装されて良い。
・ブロックチェーンイベントの検索及び解釈。
・(基本的に単なるスイッチセットである標準APIによる)取り付けられる物理的装置の作動及び制御。
【0079】
BIDの入って来る及び出て行く通信は、後述するようなセキュリティメカニズムを用いて暗号化される。これは、鍵が共有シークレットを用いて生成されることを可能にする。これは、以下を可能にする:
(i)「ハッキング」からの大きなセキュリティ。
(ii)簡易な汎用ソフトウェアアップグレードプロトコル。
(iii)装置不可知主義。
【0080】
本発明の本実施形態は、したがって、任意のIoT装置において使用可能な汎用オペレーティングシステムを提供する。装置自体はプログラミングされず、全てのプログラムは、別個に格納され、設定時に(或いは、幾つかの実施形態では実行時に)装置にロードされる。
【0081】
図1を参照すると、システム100は、それぞれ102a及び102bとして数字を付された第1及び第2クライアント装置、第1クライアント装置102a及び第2クライアント装置102bから入力を受信し並びに第1クライアント装置102a及び第2クライアント装置102bへ情報を送信するよう動作するBID制御システム104、を有する。この例示的な使用例では、第1及び第2クライアント装置102a、102bは、BID制御システム104により検出可能な無線周波数認識装置(radio frequency identification device:RFID)である。制御システム104は、ブロックチェーンを使用するよう動作し、及びブロックチェーンへ出力を送信するよう動作する。
【0082】
制御システム104がどのように動作するかを、アルキメデス(A、Archimedes)及びバートランド(B、Bertrand)という名のキャロル(Carol)の2匹の犬の例を用いて、説明する。2匹の犬は、一日中、裏庭に放っておかれ、彼らが同時に食べなければ2匹とも互いに仲が良い。同時の食事は何らかの理由で彼らを攻撃的にさせ互いに闘わせる。A及びBは、2匹とも、IoT(Internet Of Things)装置101により検出可能な、識別できるRFID首輪、つまり第1RFID首輪102a及び第2RFID首輪102bを有する。このIoT装置は、1匹の犬により消費される餌の指定量を分配するオートフィーダである。つまり、BID制御システム104は、IoT給餌装置の動作を制御する。
【0083】
本例では、BID104は、IoTオートフィーダ上で提供されるソフトウェアリソース又はコンポーネントであり、フィーダの機能を制御するためにフィーダとインタフェースする。
【0084】
BIDは、DHTから自身の命令をダウンロードしインストールすることにより、自身の寿命を開始する。これらの命令が変更されるまで、再びこれを行う必要はない。これは、例えば、BIDがアップグレードされる必要があるとき、又はBIDの動作が完全に変更されるべきとき、例えばBIDの命令セットが3以上のRFID信号を検出するよう変更され得るとき、であって良い。
【0085】
制御エージェントは、BIDにより送信された値を用いて、ブロックチェーントランザクションを生成し、更に後述するように、各反復の後にBIDと新しいシークレットを共有する。
【0086】
BID制御システム104の機能は、以下のロックスクリプトを用いてロックされるブロックチェーントランザクションを用いて実装される。
OP_HASH160 <unlocking script hash> OP_EQUAL
トランザクションは、IoTオートフィーダ装置を制御するための命令セットを(分散ハッシュテーブル(distributed hash table:DHT)にリンクするメタデータを介して)提供するために生成され、後述する内容に従い確立された計算リソースへの命令を含んで良い。トランザクション自体の中に命令を格納するのではなく、メタデータは、命令がアクセスされ得る場所へのポインタ又は参照を含み得る。したがって、命令は、「ブロック外(off-block)」に保持されて良い。
【0087】
ブロックチェーンは、活動を制御するメカニズムを提供するだけでなく、行われたイベントに関する情報も記録する。例えば、ブロックチェーンは、給餌回数、何時に給餌が生じたか、どの犬が食べたか、最大餌割り当てが分配されたか、等を計数する能力を提供する。ブロックチェーンは、暗号セキュリティも提供する。
【0088】
トランザクションの重要な機能は、一度に1匹の犬がフィーダに存在する場合にのみ、餌が分配されることを保証することである。したがって、何らかの条件が、トランザクションのスクリプト内に構築される必要がある。これは、図2に示すXOR機能の真理値表により達成される。
・AもBもフィーダに存在しない場合、餌を分配しない。
・Aがフィーダに存在するがBが存在しない場合、餌を分配する。
・Bがフィーダに存在するがAが存在しない場合、餌を分配する。
・A及びBの両方がフィーダに存在する場合、餌を分配しない。
【0089】
A又はBがフィーダに存在するとき、RFID信号が、それぞれのクライアント装置、つまり第1RFID首輪102a又は第2RFID首輪102bから、オートフィーダの制御システム104へ送信されて、当該犬のセキュアな現在のパズル解(puzzle solution)(これは、各反復の後に新しいパズル解によりセキュアに置換される)をアンロックする。代わりに、A又はBがフィーダに存在しない場合、それぞれのRFID首輪からフィーダへ、乱数が送信される。言い換えると、犬が「フィーダに存在する」ことは、自身のRFID首輪がフィーダの検出可能範囲内にあることを意味する。この場合、送信のために関連パズルがアンロックされる。存在しない場合、規定値は乱数である。
【0090】
パズル解は、ハッシュされると、(ビットコイン)スクリプト内の格納された値と比べたときに一致する値を結果として生じるデータである。つまり、処理は次の通りである:シークレット値(「解」)がハッシュされ、後に比較するためにロックスクリプト内に格納される。スクリプトをアンロックするために、ロックスクリプトにシークレットが提示される。ロックスクリプトは、先ず提示された値をハッシュし、次にそれを自身の格納されたハッシュと比較する。比較が、それらが等しいことを決定した場合、比較の結果は「真」である。実際には、格納された値は、シークレットのダブルハッシュ(DOUBLE-hash)であり、提示された値は、シークレットのシングルハッシュ(SINGLE-hash)である。これは、任意の長さのシークレットが、スクリプトへの入力として標準的な管理可能なサイズ(つまり、常に160ビットの長さ)まで短縮されることを可能にする。
【0091】
オートフィーダBIDは、BIDのキー/ペアに関連するルックアップキーを用いてDHTから読み出された自身の命令を実行する。制御エージェントは、BIDへ/からのデータフローを管理する(つまり、RFID信号に関連するがBIDの命令セットに関連しないデータ)。したがって、オートフィーダBIDは自身の状態を監視する。オートフィーダBIDは、別個の制御エージェント103から受信した2つのシークレット値(S1及びS2)を格納する。制御エージェント103は、給餌処理を監督するよう構成された適切にプログラムされた計算リソースであり得る。シークレット値S1及びS2は、犬のRFID首輪が範囲内で検出されるとき、条件付きで使用される。適切なDHTから読み出された自身の命令に基づき、範囲内でRFIDを検出すると(1日のうちの時間、前の給餌回数、他の制限、等に関連する他の条件と一緒に)、自身の制御エージェント(後述する)として作用する汎用エージェントへ信号を送信する。信号は以下を含む:
・アルキメデスのRFIDが検出された場合、S1(=パズルA解);その他の場合、乱数。
・バートランドのRFIDが検出された場合、S2(=パズルB解);その他の場合、乱数。
【0092】
オートフィーダBIDは次に、以下を行う:
・オートフィーダは、トランザクションの有効性をチェックし、幾つかの実施形態ではネットワーク上の有効なトランザクションについてチェックして良い(ブロック上に発行されていて良く又は未発行であって良いが、いずれの場合にも有効なトランザクションでなければならない)。このトランザクションは、制御エージェントにより生成されブロードキャストされる。このトランザクションは、埋め込まれたXORテストに合格した場合、有効である。合格しない場合、このトランザクションは、無効であり、ブロックチェーンネットワーク上の第1「ホップ」を超えて伝搬されない。したがって、このトランザクションは、BIDにより検出されない。あるいは、BIDが第1ホップであり、したがってトランザクションが検出される場合、(任意の他のノードに関する)BIDの関数の部分がトランザクションを検証する。したがって、結果として生じる措置を取る前に、トランザクションが有効かどうかを検出できる。有効なトランザクションは、必要な、つまり給餌イベントに関する情報がブロックチェーンに格納され及び記録されていることも保証する。
・上述の答えが真である場合、BIDは、自身の条件付き命令を実行する。本例では、BIDは幾らかの餌を分配する。
・制御エージェント103から送信を受信し、2つのシークレット(後述のようにS1及びS2)を共有することを可能にし、次の反復に備えてこれらのシークレット値を内部で更新する。
【0093】
ビットコイントランザクションのためのロックスクリプトは、以下により与えられる:
OP_HASH160 <Puzzle-A> OP_EQUAL OP_SWAP
OP_HASH160 <Puzzle-B> OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_1 metadata1 PubK-Carol OP_2 OP_CHECKMULTSIG
ここで、次の通りである。
パズルAは、OP_HASH160の等価な結果である(パズルA解)。
パズルBは、OP_HASH160の等価な結果である(パズルB解)。
metadata1は、DHTに格納された符号化された命令への参照を含む。
PubK-Carolはキャロルの公開鍵である。
【0094】
エージェントのプログラミングはハードコードされて良く、又はDHTから自身の命令を読み出しても良いことに留意する。符号化された命令は、メタデータを用いるブロックチェーントランザクションからの取引を参照する後述の手順に従い格納され及びアクセスされて良い。キャロルの公開鍵は、後述する処理を用いてセキュアに保持され又は再生成可能であって良い。
【0095】
上述の説明のためのブロックチェーントランザクションをアンロックするために、以下のスクリプトが必要である:
Sig-Carol Puzzle-B-solution Puzzle-A-Solution <unlocking script>
以下のステップの説明のために図3を参照する。
【0096】
ステップS300で、制御システム104は、提示されたパズルA解をハッシュし、それを、記憶装置から読み出されたパズルAの格納されたバージョン(このバージョンは解のハッシュである)と比較するよう動作する。パズルAの格納されたバージョンは、制御システム104のローカルにある記憶装置に、又は任意の他の適切な記憶媒体に格納されて良い。それらが等しい場合、スタックの最上位=1である。それらが異なる場合、スタックの最上位=0である。
【0097】
ステップS302で、スタックの最上位は、次に、パズルB解であるスタックの2番目のアイテムによりスワップされる。これは、ハッシュされ、記憶装置から読み出されたパズルBの格納されたバージョンと比較され、ここでも、S300からの結果と同様に、スタックの最上位に1又は0をプッシュする。パズルBの格納されたバージョンは、制御システム104のローカルにある記憶装置に、又は任意の他の適切な記憶媒体に格納されて良い。
【0098】
ここで、上位2つのスタックアイテムは、それぞれ0又は1である。ステップS304で、OP_NUMEQUALは、数値が等しい場合に1を返し、その他の場合に0を返す。これは、XOR真理値表の正反対である。
【0099】
ステップS306で、OP_NOTは、必要なXOR結果を生成するために、スタック上の最上位アイテムをフリップする。
【0100】
ステップS308で、OP_VERIFYは、スタックの最上位にあるアイテムが1であるかどうかを調べ、否である場合、つまり、XOR演算が失敗した場合、第1及び第2クライアント装置からの1つより多くの入力が一致するパズル解を返しているので、トランザクションは直ちに無効としてマークされる。この結果、1より多くの犬がIoT分配器に居るので、IoT分配器から餌が分配されない。つまり、制御システム104の出力は、基礎にあるビットコイントランザクションの実行により制御される。
【0101】
OP_VERIFYが1を返す場合、制御システム104におる処理は、スクリプトのマルチシグへ戻り、ステップS310でキャロルの署名の存在が調べられる。
【0102】
アンロックスクリプトを分析する際に制御システム104により実行されるスタック演算は、以下に示される。先ず、制御システム104は、OP_EQUALを用いてハッシュをアンロックスクリプトのハッシュと比較するために、アンロックスクリプトをハッシュする。この後に、アンロックスクリプトが実行される。
【表4-1】
【表4-2】
【0103】
<共有シークレットを用いてキーを生成する>
キーは、セキュアに保持され又は再生成されて良い。特に、公開鍵を導出するために使用され得る秘密鍵の場合には、秘密鍵は分解して格納されて良い。
【0104】
ユーザ、つまりアリス又はボブは彼らの秘密鍵の一部を保持して良く、サービスプロバイダが第2の部分を保持して良く、第3の部分はリモートセキュアサイトに保持されて良い。秘密鍵は、3つの部分のうちの任意の2つを用いて再構成されて良い。あるいは、より一般的には、秘密鍵が、n個の部分のうちの任意のm個を用いて再構成されて良い。
【0105】
秘密鍵は、再構成可能な場合、使用点において公開鍵を再生成するために使用でき、秘密鍵及び公開鍵は使用後に再び廃棄できる。
【0106】
秘密鍵の分離は、シャミアの秘密分散法(Shamir’s Secret Sharing Scheme)を用いて達成されて良い。秘密鍵-公開鍵ペアは、以下の方法を用いてマスタ鍵から確定的に導出できる。この方法は、シークレット値がそれらを送信することなく参加者により共有されることを可能にする。
【0107】
システムは、以下に記載するサブキー生成の方法を用いて参加者の公開鍵を生成して良い。
【0108】
図4は、通信ネットワーク5を介して第2ノード7と通信する第1ノード3を含むシステム1を示す。第1ノード3は関連する第1処理装置23を有し、及び第2ノード5は関連する第2処理装置27を有する。第1及び第2ノード3、7は、コンピュータ、電話機、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んで良い。一例では、第1ノード3はクライアント(ユーザ)装置であって良く、第2ノード7はサーバであって良い。サーバは、デジタルウォレットプロバイダのサーバであって良い。
【0109】
第1ノード3は、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を有する第1非対称暗号対に関連付けられる。第2ノード(7)は、第2ノードマスタ秘密鍵(V1S)及び第2ノードマスタ公開鍵(P1S)を有する第2非対称暗号対に関連付けられる。言い換えると、第1及び第2ノードは、それぞれ、個々の公開鍵-秘密鍵ペアを保有する。
【0110】
個々の第1及び第2ノード3、7の第1及び第2非対称暗号対は、ウォレットの登録のような登録処理中に生成されて良い。各ノードの公開鍵は、通信ネットワーク5に渡るように、公に共有されて良い。
【0111】
第1ノード3及び第2ノード7の両者において共通シークレット(common secret:SC)を決定するために、ノード3、7は、通信ネットワーク5を介して秘密鍵を通信することなく、それぞれ方法300、400のステップを実行する。
【0112】
第1ノード3により実行される方法300は、少なくとも第1ノードマスタ秘密鍵(V1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2秘密鍵(V2C)を決定するステップ330を含む。生成器値は、第1ノードと第2ノードとの間で共有されるメッセージ(M)に基づいて良い。これは、以下に詳述するように、通信ネットワーク5を介してメッセージを共有するステップを含んで良い。方法300は、少なくとも第2ノードマスタ公開鍵(P1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2公開鍵(P2S)を決定するステップ370を更に含む。方法300は、第1ノード第2秘密鍵(V2C)及び第2ノード第2公開鍵(P2S)に基づき、共通シークレット(common secret:CS)を決定するステップ380を含む。
【0113】
重要なことに、同じ共通シークレット(CS)が、方法400により第2ノード7においても決定できる。方法400は、第1ノードマスタ公開鍵(P1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2公開鍵(P2C)を決定するステップ430を含む。方法400は、第2ノードマスタ秘密鍵(V1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2秘密鍵(V2S)を決定するステップ470を更に含む。方法400は、第2ノード第2秘密鍵(V2S)及び第1ノード第2公開鍵(P2C)に基づき、共通シークレット(common secret:CS)を決定するステップ480を含む。
【0114】
通信ネットワーク5は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んで良い。これらのネットワークでは、データは電気線、光ファイバ、又は無線のような通信媒体を介して送信されて良く、盗聴者11による様な盗聴を受けやすい場合がある。方法300、400は、通信ネットワーク5を介して共通シークレットを送信することなく、第1ノード3及び第2ノード7が共通シークレットを両方とも独立して決定できるようにする。
【0115】
したがって、1つの利点は、安全でない可能性のある通信ネットワーク5を介して秘密鍵を送信する必要を有しないで、共通シークレット(CS)が安全に且つ各ノードにより独立して決定できることである。また、共通シークレットは、秘密鍵として(又は秘密鍵の基礎として)使用されて良い。
【0116】
方法300、400は、追加ステップを含んで良い。図8を参照する。方法300は、第1ノード3において、メッセージ(M)及び第1ノード第2秘密鍵(V2C)に基づき、署名メッセージ(SM1)を生成するステップを含んで良い。方法300は、第1署名メッセージ(SM1)を通信ネットワークを介して第2ノード7へ送信するステップ360を更に含む。一方、第2ノード7は、第1署名メッセージ(SM1)を受信するステップ440を実行して良い。方法400は、第1署名メッセージ(SM2)を第1ノード第2公開鍵(P2C)により検証するステップ450、及び第1署名メッセージ(SM1)を検証するステップの結果に基づき第1ノード3を認証するステップ460を更に含む。有利なことに、これは、第2ノード7が、(第1署名メッセージが生成された場所である)意図された第1ノードが第1ノード3であることを認証することを可能にする。これは、第1ノード3だけが、第1ノードマスタ秘密鍵(V1C)へのアクセスを有する、したがって、第1ノード3だけが、第1署名メッセージ(SM1)を生成するための第1ノード第2秘密鍵(V2C)を決定できるという仮定に基づく。理解されるべきことに、同様に、第2署名メッセージ(SM2)は、第2ノード7において生成され、第1ノード3へ送信され得る。したがって、ピアツーピアシナリオにおけるように、第1ノード3は、第2ノード7を認証できる。
【0117】
第1ノードと第2ノードの間のメッセージ(M)の共有は、様々な方法で達成されて良い。一例では、メッセージは、第1ノード3において生成されて良く、次に通信ネットワーク5を介して第2ノード7へ送信される。代替として、メッセージは、第2ノード7において生成されて良く、次に通信ネットワーク5を介して第1ノード3へ送信される。幾つかの例では、メッセージ(M)は公開されて良く、したがってセキュアでないネットワーク5を介して送信されて良い。1又は複数のメッセージ(M)は、データストア13、17、19に格納されて良い。当業者は、メッセージの共有が様々な方法で達成できることを理解する。
【0118】
有利なことに、共通シークレット(CS)の再生成を可能にするレコードは、そのレコード自体が秘密に格納され又はセキュアに送信される必要がなく、保持され得る。
【0119】
<登録の方法100、200>
登録の方法100、200の一例は、図6を参照して記載される。図6では、方法100は第1ノード3により実行され、方法200は第2ノード7により実行される。これは、それぞれ第1ノード3及び第2ノード7のために第1及び第2非対称暗号対を確立するステップを含む。
【0120】
非対称暗号対は、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号対は、楕円曲線暗号システム(Elliptic Curve Cryptography:ECC)及び楕円曲線演算の特性を用いて生成される。
【0121】
方法100、200では、これは、共通ECCシステムに合意している110、210、且つ基点(G)を用いる、第1ノード及び第2ノードを含む(注:基点は、共通生成器として参照され得るが、用語「基点」は、生成器値GVとの混同を避けるために使用される)。一例では、共通ECCシステムは、ビットコインにより使用されるECCシステムであるsecp256K1に基づいて良い。基点(G)は、選択され、ランダムに生成され、又は割り当てられて良い。
【0122】
ここで第1ノード3について考えると、方法100は、共通ECCシステム及び基点(G)を解決するステップ110を含む。これは、第2ノード7又は第3ノード9から、共通ECCシステム及び基点を受信するステップを含んで良い。代替として、ユーザインタフェース15は、第1ノード3に関連付けられる。これにより、ユーザは、共通ECCシステム及び/又は基点(G)を選択的に提供できる。更に別の代替案では、共通ECCシステム及び/又は基点(G)の一方又は両方が、第1ノード3によりランダムに選択されて良い。第1ノード3は、通信ネットワーク5を介して、基点(G)と共に共通ECCシステムを使用することを示す通知を、第2ノード7へ送信して良い。また、第2ノード7は、共通ECCシステム及び基点(G)の使用に対する肯定応答を示す通知を送信することにより、解決して良い210。
【0123】
方法100は、第1ノード3が、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を有する第1非対称暗号対を生成するステップ120を更に含む。これは、共通ECCシステムの中で指定された許容範囲の中のランダム整数に少なくとも部分的に基づき、第1マスタ秘密鍵(V1C)を生成するステップを含む。これは、次式に従い第1ノードマスタ秘密鍵(V1C)及び基点(G)の楕円曲線点乗算に基づき、第1ノードマスタ公開鍵(P1C)を決定するステップを更に含む。
1C=V1C×G (式1)
【0124】
したがって、第1非対称暗号対は、以下を含む:
1C:第1ノードにより秘密に保持される第1ノードマスタ秘密鍵。
1C:公に知らされる第1ノードマスタ公開鍵。
【0125】
第1ノード3は、第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)を、第1ノード3に関連付けられた第1データストア13に格納して良い。セキュリティのために、第1ノードマスタ秘密鍵(V1C)は、鍵が秘密のままであることを保証するために、第1データストア13のセキュアな部分に格納されて良い。
【0126】
方法100は、図6に示すように、第1ノードマスタ公開鍵(P1C)を通信ネットワーク5を介して第2ノード7へ送信するステップ130を更に含む。第2ノード7は、第1ノードマスタ公開鍵(P1C)を受信すると220、第1ノードマスタ公開鍵(P1C)を第2ノード7に関連付けられた第2データストア17に格納して良い230。
【0127】
第1ノード3と同様に、第2ノード7の方法200は、第2ノードマスタ秘密鍵(V1S)及び第2ノードマスタ公開鍵(P1S)を有する第2非対称暗号対を生成するステップ240を含む。第2ノードマスタ秘密鍵(V1S)も、許容範囲内のランダム整数である。また、第2ノードマスタ公開鍵(P1S)は、次式により決定される。
1S=V1S×G (式2)
【0128】
したがって、第2非対称暗号対は、以下を含む:
1S:第2ノードにより秘密に保持される第2ノードマスタ秘密鍵。
1S:公に知らされる第2ノードマスタ公開鍵。
【0129】
第2ノード7は、第2非対称暗号対を第2データストア17に格納して良い。方法200は、第2ノードマスタ公開鍵(P1S)を第1ノード3へ送信するステップ250を更に含む。また、第1ノード3は、第2ノードマスタ公開鍵(P1S)を受信し140、格納して良い150。
【0130】
理解されるべきことに、幾つかの代案では、それぞれの公開マスタ鍵は、受信され、(信頼できる第三者のような)第3ノード9に関連付けられた第3データストア19に格納されて良い。これは、認証機関のような、公開ディレクトリとして動作する第三者を含んで良い。したがって、幾つかの例では、第1ノードマスタ公開鍵(P1C)は、共通シークレット(CS)が要求されるときだけ、第2ノード7により要求され受信されて良い(逆も同様である)。
【0131】
登録ステップは、初期設定として1度生じるだけで良い。
【0132】
<セッション開始及び第1ノード3による共通シークレットの決定>
共通シークレット(CS)を決定する一例は、図7を参照してここに記載される。共通シークレット(CS)は、第1ノード3と第2ノード7との間の特定のセッション、時間、トランザクション、又は他の目的のために使用されて良く、同じ共通シークレット(CS)を使用することが望ましい又はセキュアでなくて良い。したがって、共通シークレット(CS)は、異なるセッション、時間、トランザクション、等の間で変更されて良い。
【0133】
以下は、上述したセキュアな送信技術の説明のために提供される。
【0134】
[メッセージ(M)を生成する310]
本例では、第1ノード3により実行される方法300は、メッセージ(M)を生成するステップ310を含む。メッセージ(M)は、ランダム、疑似ランダム、又はユーザ定義であって良い。一例では、メッセージ(M)は、Unix時間又はノンス(及び任意の値)に基づく。例えば、メッセージ(M)は次のように与えられ得る。
メッセージ(M)=Unix時間+ノンス (式3)
幾つかの例では、メッセージ(M)は任意である。しかしながら、理解されるべきことに、メッセージ(M)は、幾つかのアプリケーションで有用であり得る(Unix時間、等のような)選択的値を有して良い。
【0135】
方法300は、メッセージ(M)を通信ネットワーク3を介して第2ノード7へ送信するステップ315を含む。メッセージ(M)は秘密鍵についての情報を含まないので、メッセージ(M)は、セキュアでないネットワークを介して送信されて良い。
【0136】
[生成器値(GV)を決定する320]
方法300は、メッセージ(M)に基づき生成器値(Generator Value:GV)を決定するステップ320を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。暗号ハッシュアルゴリズムの一例は、256ビット発生器値(GV)を生成するためにSHA-256を含む。つまり、
GV=SHA-256(M) (式4)
【0137】
理解されるべきことに、他のハッシュアルゴリズムが使用されて良い。これは、セキュアなハッシュアルゴリズム(Secure Hash Algorithm:SHA)ファミリの中の他のハッシュアルゴリズムを含んで良い。幾つかの特定の例は、SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256を含むSHA-3サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、RIPEMD(RACE Integrity Primitives Evaluation Message Digest)ファミリの中のアルゴリズムを含んで良い。特定の例は、RIPEMD-160を含んで良い。他のハッシュ関数は、Zemor-Tillichハッシュ関数及びナップサック・ハッシュ関数に基づくファミリを含んで良い。
【0138】
[第1ノード第2秘密鍵を決定する330]
方法300は、次に、第2ノードマスタ秘密鍵(V1C)及び生成器値(GV)に基づき、第1ノード第2秘密鍵(V2C)を決定するステップ330を含む。これは、次式に従い第1ノードマスタ秘密鍵(V1C)及び生成器値(GV)のスカラ加算に基づき得る。
2C=V1C+GV (式5)
【0139】
したがって、第1ノード第2秘密鍵(V2C)は、ランダム値ではないが、代わりに第1ノードマスタ秘密鍵から確定的に導出される。暗号対の中の対応する公開鍵、つまり第1ノード第2公開鍵(P2C)は、以下の関係を有する。
2C=V2C×G (式6)
【0140】
式5から式6にV2Cを代入すると、次式を得る。
2C=(V1C+GV)×G (式7)
ここで、「+」演算子は楕円曲線点加算を表す。楕円曲線暗号代数は、分配的であり、式7は次式のように表すことができる。
2C=V1C×G+GV×G (式8)
【0141】
最後に、(式1)は(式7)に代入され、次式を得る。
2C=P1C+GV×G (式9.1)
2C=P1C+SHA-256(M)×G (式9.2)
【0142】
したがって、対応する第1ノード第2公開鍵(P2C)は、第1ノードマスタ公開鍵(P1C)及びメッセージ(M)の導出可能な所与の知識であり得る。方法400に関して以下に更に詳述するように、第2ノード7は、第1ノード第2公開鍵(P2C)を独立に決定するために、このような知識を有して良い。
【0143】
[メッセージ及び第1ノード第2秘密鍵に基づき、第1署名メッセージ(SM1)を生成する350]
方法300は、メッセージ(M)及び決定した第1ノード第2秘密鍵(V2C)に基づき、第1署名メッセージ(SM1)を生成するステップ350を更に含む。署名メッセージを生成するステップは、メッセージ(M)にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第1署名メッセージ(SM1)を得るために、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)の中でメッセージに第1ノード第2秘密鍵(V2C)を適用するステップを含む。ECDSAの例は、secp256k1、secp256r1、secp384r1、se3cp521r1を有するECCシステムに基づくものを含む。
【0144】
第1署名メッセージ(SM1)は、第2ノード7において対応する第1ノード第2公開鍵(P2C)により検証できる。第1署名メッセージ(SM1)のこの検証は、第1ノード3を認証するために第2ノード7により使用されて良い。これは、方法400において以下に議論される。
【0145】
[第2ノード第2公開鍵を決定する370’]
第1ノード3は、次に、第2ノード第2公開鍵(P2S)を決定して良い370。上述のように、第2ノード第2公開鍵(P2S)は、少なくとも第2ノードマスタ公開鍵(P1S)及び生成器値(GV)に基づいて良い。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので370’、第2ノード第2公開鍵(P2S)は、式6と同様に次のように表すことができる。
2S=V2S×G (式10.1)
2S=P1S+GV×G (式10.2)
【0146】
式10.2の数学的証明は、第1ノード第2公開鍵(P2C)について式9.1を導出するために上述したものと同じである。理解されるべきことに、第1ノード3は、第2ノード7と独立に第2ノード第2公開鍵を決定できる370。
【0147】
[第1ノード3において共通シークレットを決定する380]
第1ノード3は、次に、第1ノード第2秘密鍵(V2C)及び決定した第2ノード第2公開鍵(P2S)に基づき、共通シークレット(CS)を決定して良い380。共通シークレット(CS)は、第1ノード3により次式により決定されて良い。
S=V2C×P2S (式11)
【0148】
<第2ノード7において実行される方法400>
第2ノード7において実行される対応する方法400が、ここで説明される。理解されるべきことに、これらのステップのうちの幾つかは、第1ノード3により実行された上述のステップと同様である。
【0149】
方法400は、メッセージ(M)を通信ネットワーク5を介して第1ノード3から受信するステップ410を含む。これは、ステップ315において第1ノード3により送信されたメッセージ(M)を含んで良い。第2ノード7は、次に、メッセージ(M)に基づき生成器値(GV)を決定する420。第2ノード7により生成器値(GV)を決定するステップ420は、上述の第1ノードにより実行されるステップ320と同様である。本例では、第2ノード7は、第1ノード3と独立の、この決定するステップ420を実行する。
【0150】
次のステップは、第1ノードマスタ公開鍵(P1C)及び生成器値(GV)に基づき、第1ノード第2公開鍵(P2C)を決定するステップ430を含む。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので430’、第1ノード第2公開鍵(P2C)は、式9と同様に次のように表すことができる。
2C=V2C×G (式12.1)
2C=P1C+GV×G (式12.2)
式12.1及び12.2の数学的証明は、式10.1及び10.2について上述したものと同じである。
【0151】
[第2ノード7が第1ノード3を認証する]
方法400は、未確認第1ノード3が第1ノード3であることを認証するために、第2ノード7により実行されるステップを含んで良い。上述のように、これは、第1ノード3から第1署名メッセージ(SM1)を受信するステップ440を含む。第2ノード7は、次に、ステップ430で決定された第1ノード第2公開鍵(P2C)により第1署名メッセージ(SM1)の署名を検証して良い450。
【0152】
デジタル署名の検証は、上述の楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)に従い行われて良い。重要なことに、第1ノード第2秘密鍵(V2C)により署名された第1署名メッセージ(SM1)は、V2C及びP2Cが暗号対を形成するので、対応する第1ノード第2公開鍵(P2C)によってのみ正しく検証されるべきである。これらの鍵は、第1ノード3の登録で生成された第1ノードマスタ秘密鍵(V1C)及び第1ノードマスタ公開鍵(P1C)において確定するので、第1署名メッセージ(SM1)の検証は、第1署名メッセージ(SM1)を送信する未確認第1ノードが登録中と同じ第1ノード3であることを認証する基礎として使用できる。したがって、第2ノード7は、第1署名メッセージを検証するステップ(450)の結果に基づき、第1ノード3を認証するステップ(460)を更に実行して良い。
【0153】
[第2ノード7が共通シークレットを決定する]
方法400は、第2ノード7が、第2ノードマスタ秘密鍵(V1S)及び生成器値(GV)に基づき、第2ノード第2秘密鍵(V2S)を決定するステップ470を更に含んで良い。第1ノード3により実行されるステップ330と同様に、第2ノード第2秘密鍵(V2S)は、次式に従い、第2ノードマスタ秘密鍵(V1S)及び生成器値(GV)のスカラ加算に基づき得る。
2S=V1S+GV (式13.1)
2S=V1S+SHA-256(M) (式13.2)
【0154】
第2ノード7は、次に、第1ノード3と独立して、次式に基づき、第2ノード第2秘密鍵(V2S)及び第1ノード第2公開鍵(P2C)に基づき、共通シークレット(CS)を決定して良い480。
S=V2S×P2C (式14)
【0155】
[第1ノード3及び第2ノード7により決定された共通シークレット(CS)の証明]
第1ノード3により決定された共通シークレット(CS)は、第2ノード7において決定された共通シークレット(CS)と同じである。式11及び式14が同じ共通シークレット(CS)を提供することの数学的証明が、ここで記載される。
【0156】
第1ノード3により決定された共通シークレット(CS)を考えると、次のように式10.1は式11に代入できる。
S=V2C×P2S (式11)
S=V2C×(V2S×G)
S=(V2C×V2S)×G (式15)
【0157】
第2ノード7により決定された共通シークレット(CS)を考えると、次のように式12.1は式14に代入できる。
S=V2S×P2C (式14)
S=V2S×(V2C×G)
S=(V2S×V2C)×G (式16)
【0158】
ECC代数学は可換性なので、次の通り式15及び式16は等価である。
S=(V2C×V2S)×G=(V2S×V2C)×G (式17)
【0159】
[共通シークレット(CS)及び秘密鍵]
共通シークレット(CS)は、ここで、第1ノード3と第2ノード7との間のセキュアな通信のために、対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として、使用できる。
【0160】
共通シークレット(CS)は、楕円曲線点(x,y)の形式であって良い。これは、ノード3、7により合意された標準的な公に知られた演算を用いて、標準的な鍵フォーマットに変換されて良い。例えば、x値は、AES256暗号鍵として使用され得る256ビットの整数であって良い。これは、更に、160ビットの長さの鍵を必要とする任意のアプリケーションのために、RIPEMD160を用いて160ビットの整数に変換され得る。
【0161】
共通シークレット(CS)は、必要に応じて決定されて良い。重要なことに、共通シークレット(CS)はメッセージ(M)に基づき再決定できるので、第1ノード3は共通シークレット(CS)を格納する必要がない。幾つかの例では、使用されるメッセージ(M)は、マスタ秘密鍵のために要求されるのと同レベルのセキュリティを有しないデータストア13、17、19(又は他のデータストア)に格納されて良い。幾つかの例では、メッセージ(M)は公に利用可能であって良い。
【0162】
しかしながら、幾つかのアプリケーションに依存して、共通シークレット(CS)が第1ノードマスタ秘密鍵(V1C)と同じくらいセキュアに保たれるならば、共通シークレット(CS)は、第1ノードに関連付けられた第1データストア(X)に格納され得る。
【0163】
有利なことに、この技術は、単一のマスタキー暗号対に基づき、複数のセキュアな秘密鍵に対応し得る複数の共通シークレットを決定するために使用できる。
【0164】
<生成器値(鍵)の階層構造>
例えば、一連の連続する生成器値(GV)が決定されて良い。ここで、各連続GVは、前の生成器値(GV)に基づき決定されて良い。例えば、連続する専用鍵を生成するためにステップ310~370、410~470を繰り返す代わりに、ノード間の事前合意により、生成器値の階層構造を確立するために、前に使用された生成器値(GV)が両方のパーティにより繰り返し再ハッシュされ得る。実際に、メッセージ(M)のハッシュに基づく生成器値は、次世代生成器値(GV)のための次世代メッセージ(M鋳)になり得る。これを行うことは、計算されるべき共有シークレットの連続生成を可能にし、更なるプロトコルにより確立される送信、特に共通シークレットを生成する毎に複数のメッセージの送信の必要がない。次世代共通シークレット(CS’)は、以下のように計算できる。
【0165】
先ず、第1ノード3及び第2ノード7の両者が、次世代生成器値(GV’)を独立して決定する。これは、ステップ320及び420と同様であるが、次式により適応される。
M’=SHA-256(M) (式18)
GV’=SHA-256(M’) (式19.1)
GV’=SHA-256(SHA-256(M)) (式19.2)
【0166】
第1ノード3は、次に、次世代の第2ノード第2公開鍵(P2S’)及び第1ノード第2秘密鍵(V2C’)を上述のステップ370及び330と同様であるが次式により適応され、決定して良い。
2S’=P1S+GV’×G (式20.1)
2C’=V1C+GV’ (式20.2)
【0167】
第2ノード7は、次に、次世代の第1ノード第2公開鍵(P2C’)及び第2ノード第2秘密鍵(V2S’)を上述のステップ430及び470と同様であるが次式により適応され、決定して良い。
2C’=P1C+GV’×G (式21.1)
2S’=V1S+GV’ (式21.2)
【0168】
第1ノード3及び第2ノード7は、次に、それぞれ、次世代共通シークレット(CS’)を決定して良い。特に、第1ノード3は、次式により次世代共通シークレット(CS’)を決定する。
CS’=V2C’×P2S’ (式22)
【0169】
第2ノード7は、次式により次世代共通シークレット(CS’)を決定する。
CS’=V2S’×P2C’ (式23)
【0170】
更なる世代(CS’’、CS’’’、等)は、チェーン階層構造を生成するために同じ方法で計算できる。この技術は、第1ノード3及び第2ノード7の両者が元のメッセージ(M)又は最初に計算された生成器値(GV)、及びそれがどのノードに関連するか、を見失わないことを要求する。これは公に知られた情報なので、この情報の保有に関してセキュリティ問題は存在しない。したがって、この情報は、(ハッシュ値を公開鍵にリンクする)「ハッシュテーブル」に保持され、(例えばTorrentを用いて)ネットワーク5に渡り自由に配布されて良い。さらに、階層構造内の任意の個々の共通シークレット(CS)が今までに解決されていない場合、これは、秘密鍵V1C、V1Sがセキュアなままであるならば、階層構造の中の任意の他の共通シークレットのセキュリティに影響しない。
【0171】
<鍵の木構造>
上述のようなチェーン(線形)階層構造と同様に、木構造の形式の階層構造が生成できる。木構造によると、認証鍵、暗号鍵、署名鍵、支払鍵、等のような異なる目的の様々な鍵が決定されて良い。それにより、これらの鍵は、全て単一のセキュアに維持されるマスタキーにリンクされる。これは、種々の異なる鍵を有する木構造901を示す図12に図示される。これらの各々は、別のパーティと共有されるシークレットを生成するために使用できる。枝分かれする木は、幾つかの方法で達成でき、それらのうちの3つが以下に記載される。
【0172】
(i)マスタキー・スポーニング
チェーン階層構造では、乗算した再ハッシュしたメッセージを元のマスタキーに加算することにより、各々の新しい「リンク」(公開/秘密鍵ペア)が生成される。例えば(明確性のため、第1ノード3の秘密鍵のみを示す)、
2C=V1C+SHA-256(M) (式24)
2C’=V1C+SHA-256(SHA-256(M)) (式25)
2C’’=V1C+SHA-256(SHA-256(SHA-256(M))) (式26)
等である。
【0173】
枝を生成するために、任意の鍵がサブマスタキーとして使用できる。例えば、V2C’は、正規のマスタキーに対して行われるように、ハッシュを加算することにより、サブマスタキー(V3C)として使用できる。
3C=V2C’+SHA-256(M) (式27)
サブマスタキー(V3C)は、それ自体が、次世代鍵(V3C’)を有して良い。例えば次式の通りである。
3C’=V2C’+SHA-256(SHA-256(M)) (式28)
【0174】
これは、図13に示すマスタキー・スポーニング(spawning)方法を用いて、木構造903を提供する。
【0175】
(ii)論理的関連付け
この方法では、木の中の全てのノード(公開/秘密鍵ペア)は、チェーンとして(又は任意の他の方法で)生成され、木の中のノード間の論理的関係は、ポインタを用いて木の中の各ノードが木の中の自身の親ノードに単純に関連付けられるテーブルにより維持される。したがって、ポインタは、セッションの共通シークレットキー(CS)を決定するために、関連する公開/秘密鍵ペアを決定するために使用できる。
【0176】
(iii)メッセージ多様性
新しい公開/秘密鍵ペアは、チェーン又は木の任意のポイントに新しいメッセージを導入することにより、生成できる。メッセージ自体は、任意であって良く、又は何らかの意味若しくは関数を伝達して良い(例えば、それは、「現実の」銀行口座番号に関連して良い、等である)。新しい公開/秘密鍵ペアを形成するためのこのような新しいメッセージがセキュアに保持されることが望ましい場合がある。
【0177】
<コード化スキーム>
トランザクションのメタデータは、ブロック外の文書に格納された命令にアクセスするために使用されて良い。この文書は、「取引(コントラクト、contract)」と呼ばれることがある。取引を参照するために使用されるメタデータは、様々な方法でフォーマット化できる。しかしながら、適切なコード化スキームがここに記載される。
【0178】
取引の定める権利が取引の保持者又は所有者に贈与される場合、取引は転送可能である。非転送可能取引の一例は、参加者が指名される取引である。つまり、権利が、取引の保持者ではなく特定の指名されたエンティティに贈与される。転送可能取引だけが、このコード化スキームで議論される。
【0179】
トークンは、取引により贈与される権利を詳述する又は定める特定取引を表す。本発明に従い、トークンは、ビットコイントランザクションの形式の取引の表現である。
【0180】
このコード化方法は、3つのパラメータ又はデータアイテムを有するメタデータを使用する。このデータは、以下を示し得る:
i)取引の下で利用可能な持分(share、株)の量
(これは、本願明細書で「NumShares」と呼ばれることがある)、
ii)送り手から少なくとも1つの受け手へ転送されるべき転送単位の量(これは、「ShareVal」と呼ばれることがある)、
iii)転送単位の量の値を計算するための因子(これは、「ペギングレート(pegging rate)」と呼ばれることがある)。
【0181】
このコード化スキームの利点は、上述の3つのパラメータだけを用いて、ブロックチェーン上のトークンとして取引をカプセル化又は表現するために使用できることである。実際に、取引は、これらの3つのデータアイテムのうちの最小限を用いて指定できる。このコード化スキームは任意の種類の転送可能取引のために使用可能なので、共通アルゴリズムが考案され適用され得る。これらのメタデータアイテムの更なる詳細は、以下に提供される。
【0182】
分割可能トークンは、トランザクションアウトプット上の値が、複数のトークンに渡り(つまり、複数のトランザクションに渡り)割り当てられるより小さな量に細分化され得るものである。典型は、トークン化されたフィアット通貨である。分割可能取引は、非ゼロペギングレート(Pegging Rate)を指定する取引として定められる。分割可能取引では、トランザクションアウトプットの中で転送されるトークン化された値は、ペギングレートにより基礎ビットコイン(bitcoin:BTC)値に結び付けられる。つまり、取引は、ペギングレートの観点で、保持者の権利を指定する。非分割可能トークンでは、ペギングレートが存在せず、取引は、固定値の観点で、保持者の権利を指定する(例えば、「この取引は、正確に$1000で換金できる」という無記名債券、又は「この取引は1ヘアカットと交換可能である」という商品引換券のように)。非分割可能取引では、基礎トランザクションBTC値は取引け値と無関係である。
【0183】
表現「基礎BTC値」は、トランザクションアウトプットに付加されるビットコイン額(BTC)を表す。ビットコインプロトコルでは、各トランザクションアウトプットは、有効と考えられる非ゼロBTC額を有しなければならない。実際には、BTC額は、記述時に現在546サトシに設定される設定最小値(「ダスト(dust)」)より大きくなければならい。1ビットコインは、100百万サトシに等しいと定められる。ビットコイントランザクションは本願明細書では所有権の交換を助ける手段としてのみ使用されるので、実際の基礎BTC額は任意である。真の値は、取引仕様の中にある。理論上、全てのトークンは、ダストにより伝達され得る。
【0184】
本発明のコード化スキームに従い、具体的に、分割可能トークンでは、基礎BTC値は次の意味:ペギングレートにより取引値との関係を運ぶ、を有する。ペギングレートは、それ自体任意であり、基礎BTC額を小さく保つために選択される。単にダストを有する基礎となる各トークントランザクションではなく、ペギングレートを使用する理由は、本発明のプロトコルが可視性を実現するからである。トークンが幾つかの小さな額のトランザクションアウトプットに分けられるとき、元の取引を調整する必要がない。むしろ、各細分化トークンの取引値は、単に、ペギングレート及び基礎BTC値の細分化された額に基づき計算される。
【0185】
限定トークンは、NumSharesと呼ばれる量により定められる固定非ゼロの株数により合計発行値が固定された(又は「限定された」)トークンである。したがって、限定取引の下では更なる株は発行されない。例えば、競走馬の共同所有権のための取引は、競走馬の100%に限定される(例えば、それぞれ1%で100個の株、又はそれぞれ10%で10個の株、等)。非限定取引は、例えば要求額のフィアット通貨を彼らの引当金(Reserve Account)に追加することにより、発行人が株の更なる発行を引き受け可能であることを意味する。NumSharesは、全ての取引に明示的に記載されなければならない。限定取引は、NumShares>0を有しなければならない。非限定取引は、NumShares=0を設定することにより示される。
【0186】
典型的な例は、準備預金口座に保持される合計値が存在する約束手形(つまり未償還トークン)の合計値に一致するようにする、通貨準備(金準備と類似する)である。この概念は、通貨準備を超えて、在庫ストックにまで拡大する。例えば、認可印刷Tシャツトークンの発行人は、10,000枚のTシャツの在庫で開始して良く、これらの10,000枚のTシャツを表す分割可能トークンを発行して良い(ここで、各株=1枚のTシャツを表す)。元のトークンは細分化でき、各細分化トークンは、ペギングレートにより定められるトランザクションアウトプットの基礎BTC値に従い、Tシャツの枚数に償還可能である。しかしながら、需要が増大する場合、発行人は更なる株を発行することを決定して良い(つまり、更に10,000枚だけ流通株数を増大する)。このような場合には、更なる発行を引き受けるために、発行人の準備講座(つまり、在庫倉庫)に更に10,000枚のTシャツを預けることが、発行人の義務である。したがって、在庫にあるTシャツの合計枚数は、常に、合計未償還株数である(ここで、在庫は「準備口座」として作用する)。
【0187】
ペギングレートは、分割可能取引にのみ適用される。ここで、(ShareValと呼ばれる量により表される)株の値は、基礎BTC額に固定される。例えば、取引は、発行人が基礎1BTC毎に$10,000のレートでトークンを償還することを約束すると指定して良い。これは、(例えば)15,400サトシのトークン化された基礎アウトプット値を有するトランザクションが$1.54で償還可能であることを意味し得る。ペギングレートについて0の値は、取引が非分割可能であることを示す(つまり、無記名債権のように、全体のみが転送可能である)。ペギングレートが0に設定されると(非分割可能トークンを意味する)、基礎BTC値は、取引値と無関係であり、任意の額に設定可能である。通常、この場合には、運用コストを最小化するために、基礎BTC額を可能な限り小さく保つ(つまり、ダストに設定する)ことが望ましい。
【0188】
NumSharesは、(限定)取引の下で利用可能な合計(固定)株数である。限定取引では、NumSharesは、ゼロより大きい全体数でなければならない。非限定取引では、いつでも(引き受けられるならば)より多くの株が発行可能なので、NumSharesは固定されない。これは、値を0に設定することにより示される。
【0189】
株は、転送単位として定められ、ShareValはその単位の値である。例えば、フィアット通貨では、転送単位は1セントに設定されて良い。あるいは、例えば、転送単位は50セントに設定されて良く、この場合には、転送は50セントの「ロット」でのみ実行できる。ShareValは、パーセンテージとしても表現できる。例えば、ブリーダが競走馬を10個の等しい株で売りたいと望む場合、ShareVal=0を設定10%である。ShareValは0より大きくなければならず、且つ取引において定められなければならない。
【0190】
TotalIssuanceは、発行された株の合計値を表す。この値は限定取引にのみ関連する。非限定取引については、発行は固定されず、より多くの株が発行されて良い。株がパーセンテージとして表現される場合、定義によりTotalIssuance=0を設定100%である。
【0191】
限定取引では、NumShares、ShareVal、及びTotalIssuanceは、以下のように関連する。
NumShares×ShareVal=TotalIssuance
TotalIssuanceの0の値は、非限定取引であることを意味する。非限定取引の一例は、フィアット通貨である(したがって、TotalIssuanceは0に設定される)。限定取引の例は、(i)限定版記念硬貨(1000個鋳造され、1株=1硬貨である)、TotalIssuance=1000×1=1000個の硬貨、(ii)入場券のある会場の席、TotalIssuance=利用可能な合計席数、である。
【0192】
流通は、未使用トークンの合計値として定められる(つまり、UTXO(未使用トランザクションアウトプット)の中のトランザクションにより決定される)。全部の未使用トランザクションの完全な集合は、全てのビットコインノードに利用可能なリストの中に保持される。例えば、発行人が最初に$10,000をフィアット通貨型のトークンとして発行し、時間を経て$5500の価値のトークンが償還された場合、流通=$4500である(未償還トークンの値である)。この値は、関連する準備口座の差引残高に調整されるべきである。
【0193】
<本発明の実施形態と共に使用するのに適する計算リソース(「エージェント」)の説明のための例>
本発明は、所望の処理の自動化された態様を実行するために、適切に構成された計算リソース(ここでは「エージェント」)を利用できる。適切且つ好適なエージェントの一例が以下に提供されるが、他の実装が使用されて良い。
【0194】
エージェントは、チューリング(Turing)機械の実装において非消去可能テープとしてブロックチェーンを使用して、ブロックチェーンと連携して動作して良い。このエージェントは、ブロックチェーンネットワークと並列に実行し、(ループ)処理の実行を監督し及び扱う。ループ処理は、例えば装置又はシステムの処理又は制御の自動化のような所与のタスクを実行するよう設計される。この並列リソースは、ブロックチェーンの状態を監視し、トランザクションをブロックチェーンに書き込ませることができる。ある意味で、これは、ブロックチェーンをチューリング機械の非消去可能テープとして利用し、以下の定義及び特徴を有する。
【0195】
1.ブロックチェーンは、チューリング機械のテープとして作用する。ブロックチェーンの中の各トランザクションは、テープ上のセルを表す。このセルは、有限なアルファベットからの記号を含み得る。
【0196】
2.テープヘッドは、ブロックチェーン上に既に書き込まれているブロックから情報を読み出すことができる。
【0197】
3.テープヘッドは、多くのトランザクションを含む新しいブロックを、ブロックチェーンの終わりに書き込むことができる。しかしながら、それらは、既に存在するブロックに書き込むことができない、このように、ブロックチェーンテープは非消去可能である。
【0198】
4.各トランザクションのマルチシグネチャのP2SH(pay-to-script-hash)トランザクションの部分として格納され得る。
【0199】
エージェントに重要な機能は、ブロックチェーンの現在状態を監視する自動エンティティとして作用することである。これは更に、任意のオフブロックソースから、信号又は入力を受信できる。ブロックチェーン状態及び/又は受信した入力に依存して、エージェントは特定動作を実行して良い。エージェントは、どの動作が実行されるべきかを決定する。これらは、「現実世界」(つまり、オフブロック)の中の作用、及び/又(新しいトランザクションを生成する及びブロードキャストするような)はブロックチェーンに対する作用を含んで良く又は含まなくて良い。エージェントが取る作用は、ブロックチェーン状態によりトリガされて良い。エージェントは、更に、ビットコインネットワークにブロードキャストされるべき次のトランザクションセットについて決定し、後にブロックチェーンに書き込んで良い。
【0200】
エージェントの作用は、並列に且つ同時にブロックチェーン(例えば、ビットコイン)ネットワークに対して実行する。ある意味で、これは、ブロックチェーン(例えば、ビットコイン)スクリプトの機能を格納する。この連続監視は、結合されたエージェント及びブロックチェーンシステムチューリング完全(Turing Complete)を作成する「ループ」制御フロー構成を実施する。
【0201】
チューリング機械は、以下の2つのスタックを含む。
【0202】
・データスタック:これは、上述のようにブロックチェーンにより表される。
【0203】
・制御スタック:これは、エージェント機能により表される。これは、繰り返し制御フロー機能に関連する情報を格納する。
【0204】
制御スタックのデータスタックからの分離は、無限ループがビットコイン中核で生じることを防ぎ、サービス拒否攻撃を軽減するという利点を提供する。
【0205】
エージェントは、任意の種類のループ構成(例えば、FOR-NEXT、REPEAT UNTIL、等)によりループ可能なサブルーチンを管理し及び実行する。本願明細書に記載の説明のための実施形態は、「繰り返し(repeat)」構成の一例を用いる処理を含む。ユーザは、インデックス(i)及び限界(J)を指定して良い。これらはそれぞれ、現在の反復番号(標準的に0から開始してカウントされる)、及び繰り返しループの合計反復数、を表す。
【0206】
各反復について、
1.インデックスが1だけ増大する。終了条件については、インデックスが限界に達すると、反復は停止する。
2.「if condition then action([条件]ならば[動作]する)」(ICTA)文を含むコードブロックが実行される。動作は、ブロックチェーン上の又は外の任意の動作であって良い。
3.このサブルーチンの暗号ハッシュが計算される。これは、トランザクションの部分としてブロックチェーンに格納できる。ハッシュは各コードにユニークなので、どのコードが使用されているかの検証を可能にする。
【0207】
ループ本体は、コードブロックを含む。各コードブロックは、「if condition then action([条件]ならば[動作]する)」(ICTA)文を含む。これは、以下に一致するトランザクションについて、ブロックチェーンの現在状態を監視する。
・開始又はトリガ条件(例えば、特定日に達したとき)、
・繰り返し条件(つまり、前の反復に関連付けられたメタデータ又はハッシュ)、
・停止条件(つまり、ループの最後の反復)。
【0208】
ICTA文は、エージェントが、ブロックチェーンの現在状態に基づき、次のトランザクションについて決定することを可能にする。次のトランザクションを生成することは、トランザクションをビットコインネットワークにブロードキャストすること、及び新しいトランザクションをブロックチェーンに書き込むことを含む。これは、この反復が実行されたことの記録として作用する。トランザクションがブロックチェーンに書き込まれると、マネジャは、続いて、前の反復が実行されブロックチェーンに書き込まれたことを知り、次の反復を実行するだろう。後者は、インデックス(i)がコードブロックの中で指定された限度(J)に達するとき、繰り返しループが存在するまで継続する。
【0209】
各トランザクションは、再利用可能な方法で、ブロックチェーンに保存される。ビットコイン実装では、トランザクションの中の各署名は、SIGHASHフラグを付加される。このフラグは、異なる値を取ることができる。これらの値の各々は、この署名の所有者の関与無しに、トランザクションの他の部分が変更され得るか否かを示す。再利用可能トランザクションは、トランザクションインプットのうちの1つの中にSIGHASHフラグ「SigHash_AnyoneCanPay」を有する。これは、誰もがトランザクションのインプットに貢献することを許容する。このパラメータは、エージェントのICTA関数が、複数回、異なるインプットで、実行され且つ繰り返されることを可能にする。この関数の使用は、例えば再利用トランザクションの複製により、認可パーティに制限できる。
【0210】
ICTAコードブロックの「If condition」部分は、任意の種類の条件を監視できる。これは、他のプログラミング言語(例えば、C、C++、Jave)と同様であり、ブロックチェーンに格納された情報に限定されない。例えば、これは、日付及び時間(つまり、特定の日時に達したとき)を監視し、又は天気(つまり、気温が10℃より低く且つ雨が降っているとき)を監視し、取引又は信用の条件(つまり、企業Aが企業Bを買うとき)を監視し得る。
【0211】
ICTAコードブロックの「Then action」部分は、多数の動作を実行できる。本発明は、取り得る動作の数又は種類に関して限定されない。動作は、ブロックチェーン上のトランザクションに限定されないが、動作に関連するメタデータを含むトランザクションは、ブロックチェーンに書き込まれて良い。
【0212】
メタデータは、任意の形式であり得る。しかしながら、一実施形態では、メタデータは、動作に関連するより多くのデータ又は指示を含むファイルへのハイパーリンクを格納して良い。メタデータは、動作に関連するより多くのデータ又は指示を含むハッシュテーブルへのハイパーリンク、及びハッシュテーブルに対する検索キーとして作用する動作のハッシュの両方を格納して良い。
【0213】
エージェントの制御スタックは、各ユーザの必要に特化した多数の方法で実装できる。例えば、制御スタックの繰り返しループは、任意のチューリング完全言語に基づき得る。言語の1つの可能な選択は、Forth型スタックに基づく言語である。この言語を使用する利点は、制御スタックを、既知であり且つ広く使用されているビットコインスクリプトとプログラミング型において一貫性を保つことである。
【0214】
<ビットコインスクリプトの交互形式スタック(Alternate Stack)をデータ記憶空間として使用する>
ビットコインスクリプトは、コマンド、更に呼び出されるオペコード、を含む。これらは、ユーザが、データを「alt stack」として知られる交互形式スタックに移動させることを可能にする。
【0215】
オペコードは、次の通りである。
・OP_TOALTSTACK。これは、データを主スタックの最上部からalt stackの最上部に移動させる。
・OP_FROMALTSTACK。これは、データをalt stackの最上部から主スタックの最上部に移動させる。
【0216】
これは、計算機にデータを格納させる「記憶(memory)」機能と同様に、中間計算ステップからのデータをalt stackに格納させる。一実施形態では、alt stackは、小さな計算タスクを解決するようビットコインスクリプトを構成するために、及び結果を計算に返すために、使用される。
【0217】
<エージェントを管理するためにコードレジスタを使用する>
エージェントは、また、自身の所有し且つ実行する全てのコードのレジストリを管理する。このレジストリは、特定キーを特定値にマッピングするルックアップテーブル又は辞書のように構造化される。キー及び値ペアは、それぞれ、コードブロックのハッシュ(H)及びコードが格納された場所のIPv6アドレスにより表される。キーHを用いてコードブロックを読み出すために、ルックアップテーブルが使用されて、関連する値(これは、コードの格納されている場所である)を読み出し、及びそれに応じてソースコードを読み出す。コードレジストリの実装は変化し得る。
【0218】
<エージェントのコードのトランザクションメタデータ、及びループの再スポーニング>
特定の反復でエージェントのループを再スポーニングするために必要な情報は、ブロックチェーンに記録されたトランザクションの中にメタデータとして格納される。
【0219】
このように、ブロックチェーン上のトランザクションは、エージェント上で実行されているループの所与の反復に関する情報を格納し、又はそれへのアクセスを提供する。この情報は、ループに関連付けられた任意の変数の値、例えばインデックスi、及び任意の他の必要な情報、例えばコードブロック内で使用されるパラメータの値又は更に要求される情報がアクセス可能な場所の位置関連データ、を含み得る。
【0220】
メタデータ自体は、トランザクションの中のマルチシグネチャのP2SH(pay-to-script-hash)スクリプトの部分として格納される。トランザクションと共に記録されたメタデータは、コードが過去にどのように実行されたかのオーディットトレイルを記録する能力も与える。
【0221】
エージェントが各反復で繰り返しループコードブロックを再スポーニングできる幾つかの方法が存在する。コードブロックは、エージェント自体にハードコードされて良く、又は秘密に若しくは公に利用可能なファイルに格納でき、又は、秘密若しくは公開ハッシュテーブルファイル上のエントリとして格納され得る、又はこれらの組み合わせである。コードブロックは、ハードコードされた変数に固定され、又は固定であるが、移植可能なパラメータを含み得る。パラメータは、任意のデータフォーマットの単一値であって良く、又は小さなコードチャンクであって良く、又はそれらの組み合わせであって良い。パラメータは、トランザクション(例えば、ビットコイントランザクション)の中のメタデータから、又は内部データベース又は秘密/公開ファイル又はハッシュテーブル又はこれらの任意の組み合わせのような外部ソースから、直接に該パラメータを読み出すことにより移植され得る。パラメータ値の外部ソースへのポインタは、トランザクションの中のメタデータに格納されて良い。
【0222】
以下のステップは、エージェントがi番目の反復で繰り返しループコードブロックをどのように再スポーニングできるかの一例を提供する。本例では、コードレジストリは、ハッシュテーブルである。これにより、ハッシュ値がテーブルの検索キーとして作用し、トランザクション上のメタデータに格納される。
1.エージェントは、コードレジストリ内のエントリに一致するコードブロックのハッシュを含むトランザクションについて、ブロックチェーンを監視する。
2.エージェントは、対応するハッシュ(H)を含むトランザクションを見付ける。
3.エージェントは、「メタデータ-CodeHash」を読み出し、Hを得るためにCodeHashフィールドを得て、Hを用いてコード(C)を読み出す。RIPEMD-160(SHA256(C))がHに等しい場合、コードは変化しておらず、安全に次のステップに進める。
4.エージェントは、インデックスIを格納する「メタデータ-CodeHash」を読み出し、i番目の反復でコードを再スポーニングする。言い換えると、ループが、適切な反復で「リロード」される。
5.メタデータの発生元を検証するために、ユーザの署名がP2SHコマンドに含まれる。
6.これらのデータがループのこの反復のために必要な場合、エージェントは、「メタデータ-OutputHash」及び「メタデータ-OutputPointer」を読み出し、前のステップのアウトプットを検索する。
【0223】
理解されるべき事に、上述の変形の異なる組み合わせに基づき、ビットコインゲートを実装するための多くの異なるパターンが存在する。以下は、単に説明のためのパターンの選択であり、限定を意図しない。各パターンは、パターンの特定の属性及びゲートロジックの意図された使用に依存して、1種類の、又は複数種類の、又は全種類のゲートを実装するのに適切であって良い。
【0224】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【符号の説明】
【0225】
100 システム
101 IoT装置
102 クライアント装置
103 制御エージェント
104 BID制御システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
【外国語明細書】