(57)【要約】  本発明は、一般にブロックチェーンの実現形態に関連し、限定されることなく、ビットコインブロックチェーンによる利用に適している。それは、デバイス/システム制御、プロセス制御、分散計算及び格納などの自動化された処理の実現形態に利用可能である。本発明は、ブロックチェーンを利用して計算リソース上で実行される処理を制御する手段を提供する。好適な実施例では、ブロックチェーンと同時にパラレルに実行する計算リソースは、ループベース処理を管理する。計算リソースは、ブロックチェーンの状態と共に、他の何れかのオフブロックチェーン入力データ又はソースを継続的にモニタする。ループの実行は、ブロックチェーンの状態によって影響を受ける。計算リソースによって実行されるループの各繰り返しは、ブロックチェーンに書き込まれるトランザクションに記録される。それは、トランザクションのメタデータ内のハッシュとして格納される。計算リソースがループに関連するハッシュを含むトランザクションを検出した場合、それは、コードの関連する部分にアクセスする。ループは、計算リソースが何れのアクションをとるか決定することを可能にする条件付きステートメントを含む。当該条件は、ブロックチェーンの状態又は他の何れかのデータソースに依存してもよい。アクションは、ブロックチェーン上の又は離れた何れかのタイプのアクションとすることができる。従って、計算リソース及びブロックチェーンの組み合わせは、（少なくとも部分的に）チューリング完全な手段を提供する。
2019514235.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンを利用して計算リソース上で実行される処理を制御する方法であって、
前記計算リソース上でループを実行するステップと、
前記ブロックチェーンの状態を利用して前記ループの実行に影響を与えるステップと、
を有する方法。
【請求項２】
前記ループの少なくとも1つの繰り返しに関連する情報が、前記ブロックチェーン上のトランザクションに格納される、請求項1記載の方法。
【請求項３】
前記情報は、前記トランザクションにおいてメタデータとして格納される、請求項2記載の方法。
【請求項４】
前記ループに関連するコードの暗号化ハッシュを生成し、好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納するステップを更に有する、請求項1乃至3何れか一項記載の方法。
【請求項５】
前記計算リソースは、前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタするよう構成される、請求項1乃至4何れか一項記載の方法。
【請求項６】
前記ループの各繰り返しについて、
条件を評価し、前記評価の結果に基づき少なくとも1つのアクションを実行するステップを更に有し、
前記少なくとも1つのアクションは、
少なくとも1つのトランザクションを前記ブロックチェーンに書き込ませるステップ、及び/又は、
オフブロックチェーンアクションを実行させるステップ
を有する、請求項1乃至5何れか一項記載の方法。
【請求項７】
前記条件は、前記計算リソースによって受信、検出又は生成されたデータ、又は前記ブロックチェーンの状態に関連する、請求項5又は6記載の方法。
【請求項８】
前記計算リソースは、
前記ブロックチェーンの状態、
前記計算リソースによって生成又は受信された値、及び/又は
前記ブロックチェーンから離れて提供されたデータ又は信号ソース
をモニタするよう構成される、請求項1乃至7何れか一項記載の方法。
【請求項９】
i)データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとして前記ブロックチェーンを利用するステップと、
ii)チューリング完全な処理のための制御フロー管理コンポーネントとして計算リソースを利用するステップであって、前記計算リソースはループ機構を実行するよう構成される、利用するステップと、
を有する、請求項1乃至8何れか一項記載の方法。
【請求項１０】
前記計算リソースが前記ブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、前記ループを指定された繰り返しにおいて再開するステップを更に有する、請求項1乃至9何れか一項記載の方法。
【請求項１１】
前記繰り返しに関連する情報は、前記トランザクション内において又は関連して提供されるメタデータを利用して指定される、請求項10記載の方法。
【請求項１２】
前記ループのコードは、
前記計算リソース内に又は上にハードコード化され、
プライベート又はパブリックに利用可能なファイルに格納され、
プライベート又はパブリックなハッシュテーブルファイル上のエントリとして格納され、及び/又は、
ハードコード化された変数又は少なくとも1つのパラメータを備えた静的なコードブロック、
である、請求項1乃至11何れか一項記載の方法。
【請求項１３】
前記ループのコードは、
何れかのデータフォーマットの単一の値により入力、初期化又はインスタンス化された少なくとも1つのパラメータと、
ブロックチェーンのトランザクションにおけるメタデータから又は前記計算リソースの外部のソースから抽出され、データベース若しくはプライベート若しくはパブリックファイル若しくはハッシュテーブルから抽出され、及び/又は、データソースに対する少なくとも1つのポインタを利用してアクセスされる値を利用して入力されたコードの一部とに関連し又は有し、
好ましくは、前記少なくとも1つのポインタは前記ブロックチェーン上のトランザクションにおけるメタデータとして格納される、請求項1乃至12何れか一項記載の方法。
【請求項１４】
前記計算リソースは、前記計算リソースがサブルーチンの予め格納されたバージョンにアクセスすることを可能にするレジストリを有するか、又は通信する、請求項1乃至13何れか一項記載の方法。
【請求項１５】
前記レジストリは、
i)前記ループに関連するコードの暗号化ハッシュと、
ii)前記コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納する、請求項14記載の方法。
【請求項１６】
ブロックチェーントランザクションを利用して、既存のコードが新たなコードと置換されるように、前記ループのためのコードを更新するステップを更に有し、
好ましくは、前記トランザクションは、マルチシグネチャP2SHトランザクションである、請求項1乃至15何れか一項記載の方法。
【請求項１７】
前記既存のコードのハッシュと前記新たなコードのハッシュとを格納するステップを更に有する、請求項16記載の方法。
【請求項１８】
ブロックチェーンを利用して計算リソース上で実行される処理を制御するよう構成されるコンピュータベースシステムであって、
ブロックチェーンと、
ループの実行が前記ブロックチェーンの状態によって影響を受けるように前記ループを実行するよう構成される計算リソースと、
を有するシステム。
【請求項１９】
前記ループの少なくとも1つの繰り返しに関連する情報は、前記ブロックチェーン上のトランザクションにおいて格納され、
好ましくは、前記情報は、前記トランザクションにおけるメタデータとして格納される、請求項18記載のシステム。
【請求項２０】
前記計算リソースは、
i)前記ループに関連するコードの暗号化ハッシュを生成し、好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納し、及び/又は、
ii)前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタする、
よう構成される、請求項18又は19記載のシステム。
【請求項２１】
前記ループの各繰り返しについて、
条件が評価され、少なくとも1つのアクションが前記評価の結果に基づき実行され、
前記少なくとも1つのアクションは、
少なくとも1つのトランザクションを前記ブロックチェーンに書き込ませること、及び/又は、
オフブロックチェーンアクションを実行させること、
を有する、請求項18乃至20何れか一項記載のシステム。
【請求項２２】
前記条件は、前記計算リソースによって受信、検出又は生成されたデータ、又は前記ブロックチェーンの状態に関連する、請求項21記載のシステム。
【請求項２３】
前記計算リソースは、
前記ブロックチェーンの状態、
前記計算リソースによって生成又は受信された値、及び/又は、
前記ブロックチェーンから離れて提供されたデータ又は信号ソース
をモニタするよう構成される、請求項18乃至22何れか一項記載のシステム。
【請求項２４】
i)前記ブロックチェーンは、データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとして機能し、
ii)前記計算リソースは、チューリング完全な処理のための制御フロー管理コンポーネントとして機能し、前記計算リソースはループ機構を実行するよう構成される、請求項18乃至23何れか一項記載のシステム。
【請求項２５】
前記計算リソースが前記ブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、前記ループは、指定された繰り返しにおいて再開される、請求項18乃至24何れか一項記載のシステム。
【請求項２６】
前記繰り返しに関連する情報は、前記トランザクション内において又は関連して提供されるメタデータを利用して指定される、請求項25記載のシステム。
【請求項２７】
前記計算リソースは、前記計算リソースがサブルーチンの予め格納されたバージョンにアクセスすることを可能にするレジストリを有するか、又は通信する、請求項18乃至26何れか一項記載のシステム。
【請求項２８】
前記レジストリは、
i)前記ループに関連するコードの暗号化ハッシュと、
ii)前記コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納する、請求項27記載のシステム。
【請求項２９】
当該システムは、ブロックチェーントランザクションを利用して、既存のコードが新たなコードに置換されるように、前記ループのためのコードを更新するよう構成され、
好ましくは、前記トランザクションはマルチシグネチャP2SHトランザクションである、請求項18乃至28何れか一項記載のシステム。
【請求項３０】
当該システムは、前記既存のコードのハッシュと、前記新たなコードのハッシュとを格納するよう構成される、請求項29記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンセンサスベース電子台帳に関し、特にブロックチェーンの実装及び技術に関する。本発明は、限定することなく、ビットコインブロックチェーンによる、及びデバイス/システム制御、プロセス制御、分散計算及び格納などの用途のための利用に特に適している。
【背景技術】
【０００２】
本明細書では、コンセンサスベースの電子的でコンピュータベースの分散された台帳の全ての形式を含むよう“ブロックチェーン”という用語を使用する。これには、限定されることなく、ブロックチェーン及びトランザクションチェーン技術、許可型及び非許可型台帳、共有型台帳及びこれらの変形が含まれる。他のブロックチェーンの実現形態が提案及び開発されてきたが、ブロックチェーン技術の最も広く知られているアプリケーションは、ビットコイン台帳である。ここでは、ビットコインが便宜上及び説明のために参照されるが、本発明がビットコインブロックチェーンによる利用に限定されず、他のブロックチェーン実現形態及びプロトコルが本発明の範囲内に属することに留意すべきである。
【０００３】
ブロックチェーンは、トランザクションから構成されるブロックから構成されるコンピュータベースの非中央化された分散システムとして実現されるコンセンサスベースの電子台帳である。各トランザクションは、ブロックチェーンシステムにおける参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つの入力と少なくとも1つの出力とを含む。各ブロックは、その開始以来のブロックチェーンに書き込まれた全てのトランザクションの永続的で変更不可なレコードを作成するように、一緒にチェーン化されたブロックに対する前のブロックのハッシュを含む。トランザクションは、トランザクションの出力がどのように、また誰によってアクセス可能であるかを指定する、それらの入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含む。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるため、それは“検証（validated）”される必要がある。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒絶されることによって、各トランザクションが有効であることを保証するための作業を実行する。ノード上にインストールされたソフトウェアクライアントは、それのロック及びアンロックスクリプトを実行することによって、未使用トランザクション（UTXO）に対する当該検証作業を実行する。ロック及びアンロックスクリプトの実行がTRUEに評価した場合、トランザクションは有効であり、ブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるため、それは、i)トランザクションを受信した第1のノードによって検証される必要があり、トランザクションが検証された場合、ノードはそれをネットワークにおけるその他のノードに中継し、ii)マイナーによって構築された新たなブロックに追加され、iii)マイニング、すなわち、過去のトランザクションの公開台帳に追加される必要がある。
【０００５】
ブロックチェーン技術が仮想通貨の実現形態の利用に対して最も広く知られているが、デジタル起業家は、ビットコインが基づく暗号化セキュリティシステムと、新たなシステムを実現するためブロックチェーン上に格納可能なデータとの双方の利用を探求し始めた。これらは、以下に限定されず、
・メタデータの格納
・デジタルトークンの実現
・デジタル署名により署名された契約の確定
を含む。
【０００６】
ブロックチェーンが、仮想通貨の領域に限定されない自動化されたタスク及びプロセスに利用可能である場合、それは大変効果的であろう。そのような解決策は、その用途においてより多才でありながら、ブロックチェーンの利益（例えば、イベントの永続的な改ざん耐性的な記録、分散処理など）を利用可能であろう。
【０００７】
ブロックチェーンコミュニティ内における現在の１つの関心領域は、チューリング完全性であり、具体的には、セキュリティの理由のため機能を制限するよう設計されているチューリング完全な動作をブロックチェーン技術にどのように実現するかである。
【０００８】
ビットコインスクリプト言語がチューリング完全であるか検討されており、なぜなら、それは、例えば、ループの実行などの複雑なフロー制御機能を本来サポートしないためである。この制限の１つの効果は、プログラムが予測可能な実行回数を有することである。
【０００９】
ビットコインスクリプトを線形又はツリー状の決定タスクに限定する他の有意な効果は、これがDoS（Denial  of  Service）又はDDoS攻撃などのローンチング（launching）利用の手段として利用可能な無限ループを回避することである。この限定の結果として、ビットコインスクリプトは、自動タスクの制御、デバイス管理などのより複雑な用途でなく、線形なタスクにしばしば利用されることが限定される。
【００１０】
イーサリアムブロックチェーンは、Solidityと呼ばれる“組み込み”チューリング完全な言語を搭載することによって、この問題にアプローチする。この言語は、イーサリアムプラットフォームに由来するものであり、Solidityで記述されたスクリプトはループなどの制御フロー機構を含みうる。しかしながら、イーサリアムは複数の攻撃及び利用から被害を受けてきた。
【００１１】
上述したセキュリティの懸念のため、また、ビットコインによって利用されるスクリプト言語の広範な利用及び精通のため、ブロックチェーン技術に関連して限定されたスクリプト言語の利用を保持するためのブロックチェーンコミュニティの有意な部分内における要求がまた残っている。
【発明の概要】
【００１２】
従って、無限ループなどの潜在的なセキュリティの弱点の有害な影響を回避しながら、ブロックチェーンスクリプトに統合又は組み合わせされるループ機構及び他の複雑な制御構造などのチューリング完全な機能を実現する解決策を提供することが望ましい。そのような解決策は、
・複雑なブロックチェーン関連トランザクションの自動化を可能にすること
・ブロックチェーンに記録されるメタデータストリームを制御すること
・チューリング完全な言語に意図的に依拠又は搭載しないブロックチェーンプラットフォームの機能及び用途を拡張すること
を含む多数の利点を提供する。
【００１３】
そのような改良された解決策が現在考案された。本発明は、ループのエミュレーション、シミュレーション及び/又は搭載と、典型的なブロックチェーンスクリプトの外部の他のチューリング完全な機能とを可能にするパラレルな計算リソースに結合されたブロックチェーンの新規な組み合わせを有する解決策を提供する。さらに、これは、例えば、分散データストレージ、分散計算及びドローン又は何れかのIoT（Internet of Things)デバイスの制御などに関連する自動化されたタスクのための多数のアプリケーションを実現する。そのようなアプリケーションは、メタデータストレージのためにブロックチェーンを利用し、デジタルトークンを管理し、契約を確定することを含むものであってもよい。
【００１４】
従って、本発明によると、添付した請求項に規定される解決策が提供される。本発明によると、（処理）制御方法及び対応するシステムが提供されうる。本発明は、ブロックチェーンにより実現される制御方法/システムとして参照されうる。それは、自動化されたタスク又はプロセスを制御しうる。
【００１５】
本発明は、ブロックチェーンを利用してチューリング完全性をエミュレート/シミュレートするよう構成されてもよい。さらに又はあるいは、本発明は、チューリング完全な制御機構に関するアプリケーションがブロックチェーンプラットフォーム上で実行されることを可能にしうる。
【００１６】
さらに又はあるいは、本発明は、ブロックチェーン及び/又は1つ以上のブロックチェーントランザクションを利用して、オフブロック計算リソース上で実行されるプロセスを制御するよう構成される方法又はシステムとして説明されうる。従って、本発明は、互いに機能的及び構造的に異なる別々の計算コンポーネントが新規な技術的結果を提供するように相互作用するよう構成される構成を有する。異なる計算システム（計算リソース及びブロックチェーン）の相互作用は、大変強力な制御手段をもたらす。
【００１７】
計算リソースの観点から、本発明は、プログラムの実行の永続的で改ざん耐性な記録の効果を提供する。ブロックチェーンの観点から、本発明は、改良されたブロックチェーン実現形態を提供する。なぜなら、それがブロックチェーンの利用を介しチューリング完全な動作が少なくとも部分的にシミュレートされ、次に更に機能的に複雑なブロックチェーンベースのアプリケーションが配置されることを可能にするためである。これは全て、ブロックチェーントランザクションのための限定されたスクリプト言語の利用を維持しながら達成される。スクリプト言語は、それの設計又は実現形態がループなどの複雑な制御フロー機構を当該言語で記述されたコードに搭載することを妨げるか、あるいは、少なくとも本来的にはサポートしない点で限定（制限）されうる。プログラマが利用可能な言語の命令セット、すなわち、“コマンド”又は“オペコード”は、それが複雑なフロー制御機構のためのコマンドを含まないように構成されてもよい。
【００１８】
ブロックチェーンは、限定された言語を有するブロックチェーンプロトコルと関連付けされてもよいし、あるいは、利用されてもよい。これはスクリプト言語であってもよい。本発明は、ブロックチェーンを利用して、タスクの実行のための限定されたスクリプト言語の機能を拡張してもよい。
【００１９】
本発明は、ブロックチェーンの状態を利用してループベース処理を実行してもよい。ループベース処理は、ブロックチェーンネットワークとパラレルに動作する計算リソース上で実行されてもよい。計算リソースは、ブロックチェーンネットワークと別個（一部でない）であってもよい。計算リソースは、“オラクル”又は“ボット”として参照されうる。
【００２０】
これは、ループ機構などの制御フロー機構がブロックチェーンから離れて実現されることを可能にしながら、ブロックチェーンプロトコルが機能的に限定されたスクリプト言語を利用することを可能にする。この新規な組み合わせは、セキュリティを担保しながら、ブロックチェーン技術の多才さを高める。
【００２１】
当該方法は、
計算リソースは、何れかのプロセッサベースデバイス又はシステムであってもよい。それは、例えば、サーバ又は複数のサーバであってもよい。それは、スタンドアローン又は分散リソースであってもよい。ブロックチェーンは、ビットコインブロックチェーン又は他の何れかのブロックチェーン関連のプラットフォームであってもよい。ブロックチェーンは、コンセンサスベースの分散型台帳であってもよい。
【００２２】
ループの少なくとも1つの繰り返しに関連する情報が、ブロックチェーン上のトランザクションに格納されてもよい。当該情報は、トランザクションにおけるメタデータとして格納されてもよい。ループは、“If condition then action”(ICTA)命令を含んでもよい。
【００２３】
当該方法は、ループに関連するコードの暗号化ハッシュを生成し、好ましくは、ブロックチェーン上のトランザクション内に暗号化ハッシュを格納するステップを更に有してもよい。コードは、“If condition then action”ステートメントなどの制御フローステートメントを含むコードブロックであってもよい。コードブロックは、全体的又は部分的なサブルーチン（例えば、ファンクション、メソッド、プロシージャ）などのコードの一部であってもよい。制御フローステートメントは、繰り返し数など、ループがどのように実行されるかを制御又は影響を与えるものであってもよい。
【００２４】
計算リソースは、ループに関連するコードの暗号化ハッシュを有するトランザクションについてブロックチェーンの状態をモニタするよう構成されてもよい。
【００２５】
当該方法は、
ループの各繰り返しについて、
条件を評価し、評価の結果に基づき少なくとも1つのアクションを実行するステップを更に有し、
少なくとも1つのアクションは、
少なくとも1つのトランザクションを前記ブロックチェーンに書き込ませるステップ、及び/又は、
オフブロックチェーンアクションを実行させるステップ
を更に有してもよい。
【００２６】
条件は、ブロックチェーン上又は離れて、それが生成される場所、方法又は相手に関係なく、何れかの値、信号又は入力をモニタするのに利用されてもよい。条件は、計算リソースによって受信、検出又は生成されたデータ、及び/又はブロックチェーンの状態に関連するものであってもよい。条件は、“トリガ”として説明されてもよい。それは、ブロックチェーンの特定の状態、オフブロックに検出されたイベント（例えば、日付又は温度の読み取りなど）又は双方の組み合わせであってもよいし、あるいは関連してもよい。
【００２７】
アクションは、イベントをオフクロックにするための信号を送信するか、新たなトランザクションをブロードキャストするか、あるいは、双方の組み合わせを含むものであってもよい。インデックスは、(i)計算リソース（“マネージャ”）内でオフブロックに維持されてもよいし、(ii)その後にブロードキャストされるトランザクション内に格納される値であってもよい。(i)及び(ii)は、制御データを維持するための2つの代替的な方法を表す。
【００２８】
計算リソースは、
ブロックチェーンの状態、計算リソースによって生成又は受信された値、及び/又はブロックチェーンから離れて提供されたデータ又は信号ソースをモニタするよう構成されてもよい。
【００２９】
当該方法は、
i)データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとしてブロックチェーンを利用するステップと、
ii)チューリング完全な処理のための制御フロー管理コンポーネントとして計算リソースを利用するステップであって、計算リソースはループ機構を実行するよう構成される、利用するステップと、
を有してもよい。
【００３０】
従って、ブロックチェーンは、チューリングマシーンの消去不可なテープとして機能しうる。計算リソースは、プロセスの実行のフローを制御するよう機能してもよく、ループを実現し、スクリプト言語の機能を拡張する。
【００３１】
当該方法は、指定された繰り返しにおいてループを再開するステップを更に有してもよい。計算リソースがブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、ループは再開されてもよい。当該コードの一部は、ループのボディに関連するものであってもよい。それはICTAステートメントを有してもよい。
【００３２】
計算リソースは、各繰り返しにおいてループを再開してもよい。これは、様々な方法で実行されてもよい。例えば、ループのコードブロックは、
計算リソース自体にハードコード化され、
プライベート又はパブリックに利用可能なファイルに格納され、
プライベート又はパブリックなハッシュテーブルファイル上のエントリとして格納され、又は、上記の組み合わせであってもよい。
【００３３】
コードブロックは、ハードコード化された変数による静的なものであってもよいし、あるいは、静的であるが、入力可能なパラメータを含むものであってもよい。パラメータは、何れかのデータフォーマットの単一の値であってもよいし、あるいは、小さなコードのチャンクであってもよいし、あるいは、上記の組み合わせであってもよい。パラメータは、トランザクション（例えば、ビットコイントランザクション）におけるメタデータから直接、あるいは、内部データベース又はプライベート/パブリックファイル若しくはハッシュテーブル又は上記の何れかの組み合わせなどの外部ソースからそれらを抽出することによって入力されてもよい。パラメータ値の外部ソースに対するポインタは、トランザクションにおけるメタデータに格納されてもよい。
【００３４】
繰り返しに関する情報は、トランザクション内又は関連して提供されるメタデータを利用して指定されてもよい。
【００３５】
計算リソースは、当該計算リソースがサブルーチンの予め格納されているバージョンにアクセスすることを可能にするレジストリ、データベース、レポジトリ又は他のストレージ施設を有するか、あるいは、通信してもよい。レジストリは、
i)ループに関連するコードの暗号化ハッシュと、
ii)コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納してもよい。
【００３６】
当該方法は、ブロックチェーントランザクションを利用して、既存のコードが新たなコードと置換されるように、ループのためのコードを更新するステップを更に有してもよい。好ましくは、トランザクションは、マルチシグネチャP2SHトランザクションである。既存のコードのハッシュと新たなコードのハッシュとが格納されてもよい。
【００３７】
本発明はまた、上述した方法の何れかの実施例を実現するためのシステムを提供する。
【００３８】
本発明は、コンピュータベースシステムを提供しうる。当該システムは、ブロックチェーンを利用して、計算リソース上で実行されるプロセスを制御するよう構成されてもよい。さらに又はあるいは、当該システムは、ブロックチェーンを利用（やりとり）して、チューリング完全性をシミュレート又はエミュレートし、及び/又はループなどの制御フロー構造に関するタスク（アプリケーション）がブロックチェーンを介し実行されることを可能にするよう構成されてもよい。
【００３９】
システムは、
ブロックチェーンと、
ループの実行がブロックチェーンの状態によって影響を受けるようにループを実行するよう構成される計算リソースと、
を有してもよい。
【００４０】
ループの少なくとも1つの繰り返しに関連する情報は、ブロックチェーン上のトランザクションにおいて格納される。好ましくは、当該情報は、トランザクションにおけるメタデータとして格納される。
【００４１】
好ましくは、計算リソースは、ループに関連するコードの暗号化ハッシュを生成するよう構成される。好ましくは、暗号化ハッシュは、ブロックチェーン上のトランザクション内に格納される。さらに又はあるいは、計算リソースは、ループに関連するコードの暗号化ハッシュを有するトランザクションについてブロックチェーンの状態をモニタするよう構成される。
【００４２】
好ましくは、ループの各繰り返しについて、条件が評価され、少なくとも1つのアクションが評価の結果に基づき実行され、少なくとも1つのアクションは、
少なくとも1つのトランザクションをブロックチェーンに書き込ませること、及び/又は、
オフブロックチェーンアクションを実行させること、
を有する。
【００４３】
条件は、計算リソースによって受信、検出又は生成されたデータ、又はブロックチェーンの状態に関連するものであってもよい。
【００４４】
計算リソースは、
ブロックチェーンの状態、
計算リソースによって生成又は受信された値、及び/又は、
ブロックチェーンから離れて提供されたデータ又は信号ソース
をモニタするよう構成されてもよい。
【００４５】
ブロックチェーンは、データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとして機能してもよい。計算リソースは、チューリング完全な処理のための制御フロー管理コンポーネントとして機能してもよく、計算リソースはループ機構を実行するよう構成される。ブロックチェーンは、例えば、ビットコインスクリプト言語などの限定的な言語により動作するよう構成されてもよい。
【００４６】
計算リソースがブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、ループは、指定された繰り返しにおいて再開されてもよい。繰り返しに関連する情報は、トランザクション内において又は関連して提供されるメタデータを利用して指定されてもよい。
【００４７】
計算リソースは、当該計算リソースがサブルーチンの予め格納されたバージョンにアクセスすることを可能にするレジストリを有するか、又は通信してもよい。レジストリは、
i)ループに関連するコードの暗号化ハッシュと、
ii)コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納してもよい。
【００４８】
当該システムは、ブロックチェーントランザクションを利用して、既存のコードが新たなコードに置換されるように、ループのためのコードを更新するよう構成されてもよい。好ましくは、トランザクションはマルチシグネチャP2SHトランザクションである。好ましくは、当該システムは、既存のコードのハッシュと、新たなコードのハッシュとを格納するよう構成される。
【００４９】
本発明の一態様又は実施例に関して説明される何れかの特徴はまた、他の何れかの態様又は実施例に関して適用可能でありうる。例えば、方法に関して説明された何れかの特徴はまた、システムに関して利用されてもよく、その逆もである。
【００５０】
本発明の上記及び他の態様は、ここに説明された実施例から明らかであり、これを参照して明確にされるであろう。本発明の実施例は、添付した図面を参照して単に例示的に説明される。
【図面の簡単な説明】
【００５１】
【図１】チューリングマシーンの消去不可なテープとしてのブロックチェーンの例示的な利用を示す。
【図２】ブロックチェーンに関連して繰り返しループを実現するためマネージャによって利用可能なサブルーチンを示す。
【図３】本発明の実施例により利用可能なICTA（If  Condition  Then  Action）コードブロックの具体例を示す。
【図４】本発明の実施例によるユーザが代替的なスタックに及びからデータを移動することを可能にするビットコインコマンドを示す。
【図５】本発明の実施例によるマネージャのコードレジストリを示す。
【図６】本発明の実施例によるマネージャのコードブロックに関連するメタデータを示す。
【図７】本発明の実施例によるマネージャのループの特定の繰り返しにおける出力に関連するメタデータを示す。
【図８】本発明の実施例によるトランザクションスクリプト及びメタデータを示す。
【図９】例示的なマネージャソフトウェアパッチング検証及び追跡記録を示す。
【図１０】本発明の例示的な利用を示し、擬似コードにおける投票計数ボットの繰り返しループの実施例を示す。
【発明を実施するための形態】
【００５２】
以下は、ビットコインブロックチェーンを利用する例示的な実施例を説明する。しかしながら、他のブロックチェーンプロトコル及び実現形態が利用されてもよい。本発明はこれに限定されるものでない。
【００５３】
本発明は、動作限定されたブロックチェーンプラットフォーム（すなわち、複雑な制御機構をサポートしないスクリプト言語を利用したもの）上でチューリング完全性を実現し、従って、ブロックチェーンが配置可能な利用又は用途を拡張する方法の問題を解決する。Marvin Minsky (Minksy et al.,
Computation: Finite and Infinite Machines, Prentice Hall, Inc, 1967)は、消去不可なテープがチューリング完全であって、ユニバーサルチューリングマシーン上でまた実行可能な何れかのアルゴリズムを実行可能であるマシーンを実現するのにどのように利用可能であるかを説明した。
【００５４】
本発明は、チューリングマシーンの実現形態において消去不可なテープとしてそれを利用して、ブロックチェーンに関連して動作する計算リソースを含む。この計算リソースは、ループ処理の実行を管理及び処理しながら、ブロックチェーンネットワークとパラレルに実行する。ループ処理は、例えば、プロセスの自動化又はデバイス又はシステムの制御などの所与のタスクを実行するよう設計される（例えば、IoTデバイスの制御）。このパラレルなリソースは、ブロックチェーンの状態をモニタし、トランザクションがブロックチェーンに書き込まれることを可能にする。従って、それは、参照の便宜上、“マネージャ”としてここで参照されてもよい。
【００５５】
本発明の特徴及び効果は、
・ブロックチェーンがチューリングマシーンの消去不可なテープとして機能することを可能にすること
・ブロックチェーンに並行して動作するコンピュータベースモニタリング及び管理コンポーネント（マネージャ）の機能及び実現形態
・チューリングマシーンの命令テーブルとしてマネージャを利用すること
・コードレジストリを利用してマネージャを管理すること
・マネージャのコード及びループの再開に関連するトランザクションメタデータ
・デジタルシグネチャを利用してマネージャに対するソフトウェアアップデートを実現すること
・他のブロックチェーンを利用したマネージャの特別な実現形態
を含む。
【００５６】
チューリングマシーンの消去不可なテープとしてのブロックチェーン
図1を参照して、本発明は、以下の定義及び特徴によるチューリングマシーンの消去不可なテープとしてブロックチェーンを利用する。
1．ブロックチェーンは、チューリングマシーンのテープとして動作する。ブロックチェーンにおける各トランザクションは、テープ上のセルを表す。このセルは、有限のアルファベットからのシンボルを含むことができる。
2．テープヘッドは、ブロックチェーンに既に書き込まれたブロックから情報を読み取り可能である。
3．テープヘッドは、多数のトランザクションを含む新たなブロックをブロックチェーンのエンドに書き込み可能である。しかしながら、それらは、既に存在するブロックに書き込むことはできない。また、ブロックチェーンテープは消去不可である。
4．各トランザクションのメタデータは、マルチシグネチャペイ・ツー・スクリプト・ハッシュ（P2SH）トランザクションの一部として格納可能である。
【００５７】
マネージャの重要な機能は、ブロックチェーンの現在状態をモニタするエージェントとして動作することである。それはまた、何れかのオフブロックソースから信号又は入力を受信可能である。ブロックチェーンの状態及び／又は受信した入力に応じて、マネージャは特定のアクションを実行してもよい。マネージャは、何れのアクションが実行されるべきかを決定する。これらは、“実世界”（すなわち、オフブロック）におけるアクション及び／又はブロックチェーンに対するアクション（新たなトランザクションの作成及びブロードキャストなど）に関するものであってもよいし、あるいはそうでなくてもよい。マネージャがとるアクションは、ブロックチェーンの状態又はあるオフブロックな入力によってトリガされてもよい。マネージャはまた、ビットコインネットワークにブロードキャストされ、ブロックチェーンに以降に書き込まれるべき次のトランザクションセットを決定してもよい。
【００５８】
マネージャのアクションは、ビットコインネットワークとパラレル且つ同時に実行される。ある意味では、これは動作制限されたビットコインスクリプトの機能を拡張する。この連続的なモニタリングは、組み合わされたマネージャ及びブロックチェーンシステムをチューリング完全にする“ループ”制御フロー構成を実現する。
【００５９】
チューリングマシーンの命令テーブルとしてのマネージャ
本発明の実施例によると、チューリングマシーンは、
・データスタック：これは、上述したようなブロックチェーンによって表される。
・制御スタック：これは、マネージャ機能によって表される。これは、繰り返し制御フロー機能に関連する情報を格納する。
を含む。
【００６０】
データスタックからの制御スタックの分離は、ブロックチェーン（例えば、ビットコイン）コア内で無限ループが発生することを防ぐという効果を提供する。さらに、これは、ビットコインシステムに対するDoS攻撃を軽減する。
【００６１】
マネージャは、何れかのタイプのループ構成（例えば、FOR-NEXT; WHILE, REPEAT UNTILなど）を介しループ可能なサブルーチンを管理及び実行する。ここで説明される例示的な実施例は、“繰り返し”構成の一例を利用したプロセスを含む（図2を参照）。ユーザは、インデックス(i)及びリミット（J）を指定する。これらは、繰り返しループの現在の繰り返し数（典型的には、0からスタートして計数される）及び繰り返し総数をそれぞれ表す。
【００６２】
各繰り返しについて、
1.インデックスは1だけインクリメントされる。イグジット条件について、インデックスがリミットに到達すると、繰り返しは停止する。
2．“if condition then action”（ICTA）ステートメントを含むコードブロックが実行され、アクションはブロックチェーン上又は離れた何れかのアクションであってもよい。
3．このサブルーチンの暗号化ハッシュが計算される。これは、トランザクション（Tx）の一部としてブロックチェーンに格納可能である。ハッシュは各コードブロックに一意的であるため、それは、何れのコードが利用されたかの検証を可能にする。
【００６３】
従って、ループのボディは、コードブロックを含む。各コードブロックは、“if condition then action”（ICTA）ステートメントを含む（図3を参照）。これは、
・開始又はトリガ条件（例えば、特定のビットコインアドレスが10BTCに到達したとき）
・繰り返し条件（すなわち、前の繰り返しに関連するメタデータ又はハッシュ）
・停止条件（すなわち、ループの最後の繰り返し）
に一致するトランザクションについてブロックチェーンの現在状態をモニタする。
【００６４】
ICTAステートメントは、マネージャがブロックチェーンの現在状態に基づき行われるべき次のトランザクションを決定することを可能にする。次のトランザクションを行うことは、トランザクションをビットコインネットワークにブロードキャストし、新たなトランザクションをブロックチェーンに書き込むことに関する。これは、当該繰り返しが実行されたというレコードとして機能する。トランザクションがブロックチェーンに書き込まれると、マネージャは、前の繰り返しが実行されてブロックチェーンに書き込まれたことを以降に検出し、次の繰り返しを実行するであろう。後者は、インデックス(i)がコードブロックに指定されたリミット(J)に到達したときに繰り返しループがイグジットするまで継続される。
【００６５】
各トランザクションは、再利用可能な方法でブロックチェーンに保存される。ビットコインの実現形態では、トランザクションにおける各シグネチャは、SIGHASHフラグと共に添付される。このフラグは、各値がトランザクションの他の部分が当該シグネチャのオーナの関与なく補正可能であるか否かを示す異なる値をとりうる。再利用可能なトランザクションは、トランザクション入力の1つにおいてSIGHASHフラグ“SigHash_AnyoneCanPay”を有する。これは、何れかの者がトランザクションの入力に貢献することを許可する。このパラメータは、マネージャのICTA機能が実行され、異なる入力によって複数回繰り返されることを可能にする。当該機能の利用は、例えば、再利用可能なトランザクションの著作権を介し権限のある主体に制限可能である。
【００６６】
ICTAコードブロックの“If condition”部分は、何れかのタイプの条件をモニタ可能である。これは、他のプログラミング言語（例えば、C, CC++, Java）と同様であり、ブロックチェーン上に格納される情報に限定されない。いくつかの具体例となる条件が以下にリスとされる。
・日時をモニタする（すなわち、特定の日時に達するとき）
・天気をモニタする（すなわち、温度が10℃以下であって、雨が降っているとき）
・ソーシャルメディアをモニタする（すなわち、私が友人からメッセージを受信したとき）
・契約又は信託の条件をモニタする（すなわち、企業Aが企業Bを買収するとき）
・ニュース及びイベントをモニタする（すなわち、サッカーチームAが試合に勝ったとき）
・IoT(Internet of Things)からの情報をモニタする（すなわち、白熱電球が交換の必要があるとき）
・モバイル/ウェアラブルデバイスからのデータをモニタする（すなわち、装着可能なステップトラッキングデバイスが10000ステップを計数したとき）
・クラウドコンピューティングからの結果をモニタする（すなわち、計算が完了し、結果が受信されたとき）
・リモートデータストレージをモニタする（すなわち、ファイルが依然としてリモートに存在する場合）
ICTAコードブロックの“Then action”部分は、いくつかのアクションを実行可能である。本発明は、とりうるアクションの数又はタイプに関して限定されない。アクションに関連するメタデータを含むトランザクションがブロックチェーンに書き込まれうるが、アクションはブロックチェーン上のトランザクションに限定されない。
【００６７】
メタデータは、マネージャによって指定された何れかの形式を有しうる。しかしながら、本発明の一実施例によると、メタデータは、アクションに関連するより多くのデータ又は命令を含むファイルへのハイパーリンクを格納してもよい。メタデータは、ハッシュテーブルのルックアップキーとして機能するアクションのハッシュと一緒に、アクションに関連するより多くのデータ又は命令を含むハッシュテーブルへのハイパーリンクとの双方を格納してもよい。実施例は、BitTorrentのマグネットURLフォーマットと同様のスタイルのリンクを利用してもよい。
【００６８】
具体例となるアクションのリストが以下にリストされる。
・ビットコイントランザクション（すなわち、ビットコインを特定のアドレスに送信する）
・ソーシャルメディア（すなわち、メッセージを友人に送信する）
・トレーディング（すなわち、X株を売却する）
・IoT（すなわち、白熱電球をスイッチオフする）
・コマース（すなわち、アイテムをオンラインに購入する）
・オンラインサービス（すなわち、毎月の料金を支払うか、あるいは、ビットコインを用いてリクエストされたサービスについて支払う）
本発明は実行されるアクションの性質、タイプ又は数に関して限定されないため、それは、広範な用途にわたって大きな効果に適用されうる極めて多才な解決策を提供する。
【００６９】
マネージャの制御スタックは、各ユーザのニーズに固有のいくつかの方法で実現可能である。例えば、制御スタックの繰り返しループは、何れかのチューリング完全な言語に基づくものとすることができる。1つの可能な言語の選択は、Forthスタイルのスタックベース言語である。この言語の利用の効果は、制御スタックを既知であって、広範に利用されるビットコインスクリプトとプログラミングスタイルにおいて整合させ続けることである。
【００７０】
データストレージ空間としてのビットコインスクリプトの代替スタックの利用
ビットコインスクリプトは、オペコードとも呼ばれるコマンドを含み、それはユーザが“alt stack”として知られる代替スタックにデータを移動することを可能にする。
【００７１】
オペコードは、
・OP_TOALTSTACK-メインスタックの先頭からのデータを代替スタックの先頭に移動する
・OP_FROMALTSTACK-代替スタックの先頭からのデータをメインスタックの先頭に移動する（図4を参照）
これは、データが計算機に格納されることを可能にする“メモリ”機能と同様に、計算の中間ステップからのデータが代替スタックに格納されることを可能にする。本発明の例示的な実施例によると、代替スタックは、小さな計算タスクを解くようにビットコインスクリプトを設定し、計算における結果をリターンするのに利用される。
【００７２】
マネージャを管理するためのコードレジスタの利用
マネージャはまた、それが所有及び実行する全てのコードのレジスタを管理する。このレジスタは、特定のキーを特定の値にマッピングするルックアップテーブル又は辞書に類似して構成される（図5を参照）。キーと値とのペアは、コードブロックのハッシュ（H1）と、コードが格納されるIPv6アドレスとによってそれぞれ表される。キーH1を利用してコードブロックを抽出するため、ルックアップテーブルが、関連する値を抽出するのに利用され（これは、コードが格納されている位置である）、ソースコードを抽出する。
【００７３】
コードレジストリの実現形態は様々可能である。例えば、ルックアップテーブルは、ローカルに管理されたリスト又はP2P分散ハッシュテーブルを用いて実現可能である。ソースコードはローカル、リモート又は非中央化されたファイルストレージシステムを利用して格納可能である。これは、マグネットURIフォーマット又は共有されたゼロ知識暗号化を利用した何れかのリンクフォーマットにより実現可能である。
【００７４】
マネージャのコードのトランザクションメタデータ及びループの再開
特定の繰り返しにおいてマネージャのループを再開するのに必要とされる情報が、ブロックチェーン上に記録されるトランザクションにおけるメタデータとして格納される（図6及び図7を参照）。
【００７５】
このようにして、ブロックチェーン上のトランザクションは、マネージャ上で実行中のループの所与の繰り返しに関する情報を格納するか、あるいは、当該情報へのアクセスを提供する。この情報は、インデックスiなどのループに関連する何れかの変数の値と、更なる必要とされる情報がアクセス可能な場所を指定する位置に関連するデータ又はコードブロックにおいて利用されるパラメータの値などの他の何れか必要な情報とを含むことが可能である。
【００７６】
メタデータ自体は、トランザクションにおけるマルチシグネチャペイ・ツー・スクリプト・ハッシュスクリプト（P2SH）の一部として格納される。トランザクションと共に記録されるメタデータはまた、コードが以前にどのように実行されたかの追跡記録を記録するための能力を与える。
【００７７】
マネージャが各繰り返しにおいて繰り返しループのコードブロックを再開可能ないくつかの方法がある。コードブロックは、マネージャ自体にハードコード化されてもよいし、あるいは、プライベート又はパブリックに利用可能なファイルに格納可能であるか、あるいは、プライベート又はパブリックなハッシュテーブルファイルへのエントリとして格納されてもよいし、あるいは、上記の組み合わせであってもよい。コードブロックは、ハードコード化された変数による静的なものとすることが可能であるか、あるいは、静的であるが、入力可能なパラメータを含むことが可能である。パラメータは、何れかのデータフォーマットの単一の値とすることが可能であるか、あるいは、小さなコードのチャンクとすることが可能であるか、あるいは、上記の組み合わせとすることが可能である。パラメータは、トランザクション（例えば、ビットコイントランザクション）におけるメタデータから直接的に、又は内部データベース、プライベート/パブリックファイル又はハッシュテーブルなどの外部ソースから、あるいは、上記の何れかの組み合わせからそれらを抽出することによって入力可能である。パラメータ値の外部ソースに対するポインタは、トランザクションにおけるメタデータに格納されてもよい。
【００７８】
以下のステップは、マネージャがi番目の繰り返しにおいて繰り返しループのコードブロックをどのように再開可能であるかの一例を提供する。本例では、コードレジストリはハッシュテーブルであり、それによって、ハッシュ値はテーブルのルックアップキーとして機能し、トランザクション上のメタデータに格納される。
1．マネージャは、コードレジストリにおけるエントリに一致するコードブロックのハッシュを含むトランザクションについてブロックチェーンをモニタする。
2．マネージャは、対応するハッシュ（H1）を含むトランザクションを検出する。
3．マネージャは、“Metadata-CodeHash”を読み込み、H1を取得するためCodeHashフィールドを取得し、それを利用してコード（C1）を抽出する。RIPEMD-160(SHA256(C1))がH1に等しい場合、コードは変更されておらず、次のステップに進むことは安全である。
4．マネージャは、インデックスIを格納する“Metadata-CodeHash”を読み込み、i番目の繰り返しにおいてコードを再開する。すなわち、ループは適切な繰り返しにおいて“リロード”される。
5．ユーザのシグネチャは、メタデータの起源を検証するためP2SHコマンドに含まれる。
6．マネージャは、“Metadata-OutputHash”及び“Metadata-OutputPointer”を読み込み（図6を参照）、これらのデータがループの当該繰り返しについて必要とされる場合、前のステップの出力を抽出する。
【００７９】
複数のシグネチャが、トランザクションをアンロックするのに必要とされうる（例えば、ユーザ、オペレーティングシステム、ソフトウェア開発者及びソフトウェアベンダ）。これは、権利を管理するデジタル著作権管理（DRM）システムがP2SHトランザクションに関係する全ての主体によるコードを実行することを可能にする。
【００８０】
マネージャのコードの更新
マネージャに関連するコードブロックのソフトウェアアップデート及びパッチは、マルチシグネチャP2SHトランザクションを用いてセキュアに認証される（図8を参照）。マルチシグネチャトランザクションは、図8及び9に示されるように、古い及び新しいコードブロックのメタデータを記録する。これは、古いコードの新たなコードへの切り替えのレコードを作成し、これにより、ソフトウェアアップデートの追跡記録を提供する。マネージャは、ソースコードの古い及び新しいブロックの全てのハッシュを格納する必要がある。新たな及び古いソースコードブロックのハッシュは、コードファイルのインテグリティを検証するのに利用可能である。
【００８１】
本発明の実施例によると、複数のシグネチャがトランザクションをアンロックするのに必要とされる（例えば、ユーザ、オペレーティングシステム、ソフトウェア開発者及びソフトウェアベンダ）。これは、マネージャによって利用されるコードのソフトウェアアップデート及びパッチを管理するためのDRMシステムを提供する。
【００８２】
実行中にソフトウェアが更新されることを可能にしない大部分のソフトウェアと異なって、本発明の効果は、ソフトウェアアップデートがループの実行の途中において実行可能であることである。これは、本発明によって制御されているプロセスに対して最小限の中断によってリアルタイムに再設定可能な動的で応答性のある解決策を提供する。
【００８３】
ブロックチェーン上でキャプチャされる情報（図8及び図9を参照）は、ループの途中で新たなコードに更新し、古いコードから前の繰り返しから出力されるメタデータを利用して次の繰り返しステップを開始するのに利用可能である。
【００８４】
利用例
現在のビットコインスクリプト言語は、ループが行われることを可能にしない。これは、自称攻撃者がビットコインの支払を利用して外部介入を必要する連続的で自動化されたアクションがそれらを停止するようトリガすることを防ぐ。しかしながら、本発明のマネージャがブロックチェーン上で情報を継続的にモニタするとき、これは、複雑な自動化されたアクションがブロックチェーン上の最新の情報に基づき安全に実行されることを可能にする。
【００８５】
以下は、マネージャの制御スタックが自動化されたオンラインの投票計数ボットに関係する処理を自動化するのにどのように利用可能であるかを説明する。これは選挙又は政治的投票の意味における“投票”に制限されず、選択又は選択行動が関係する何れかの用途に利用可能であることが留意されるべきである。“投票”という用語は、“選択”又は“指示”を意味するのに単に利用されうる。
【００８６】
投票計数ボットは、投票計数処理の変更不可で永続的な追跡記録を記録したブロックチェーンによって、公平で擬似匿名性のある投票を実現するよう設計される。投票計数ボットは、マネージャの制御スタック及び繰り返しループを用いて自動化される（図10を参照）。以下のシナリオは、これがどのように動作するかを示す。
【００８７】
100人の投票者がいる。57の一意的な“Yes”の投票が2016年1月1日までに受信された場合、支払はChair, Jasonにリリースされる。投票処理は、
・トークン配布
・計数
の2つのパートに分割される。
【００８８】
トークン配布について、100の投票トークンが認証された各投票者に配布される。各トークンは、ビットコインパブリックキー及びプライベートキーのペアによって表される。これは、秘密の交換プロトコルを利用して各投票者に配布される。各ビットコインパブリックキー及びアドレスは、1つの投票を表す少量のビットコインと共にロードされる。ボットは、認証された各トークンに関連するパブリックキーのリストを維持し、当該リストを投票開始前にパブリックにする。投票が不正不可であって匿名化されていることを保証するため、プライベートキーのリストと、投票者の識別情報とそのトークンとの間のマッピングとが破壊される（すなわち、決して格納されない）。
【００８９】
匿名化されて予め認証されたアドレスのリストを有することは、他の重要な利点を提供する。それは、認証されたもののみが有効な投票を投じることができることを保証する。それはまた、投票者の識別情報を傷つけることなく、特定のアドレス（例えば、スパマー、不正な投票者）を起源とする何れかの所望されない投票の排除を実現可能である。計数処理を実現するため、マネージャは繰り返しループを実行する。アドレスのリストは、ビットコインスクリプトに維持され、データの格納のために代替スタックに転送される。アドレスがカウントされると、それは代替スタックから削除され、次のトランザクションにもはや追加されない。アドレスのリストが空になると、繰り返しループが停止する。
【００９０】
整数インデックスiを利用して、ループが現在ある場所を追跡する代わりに、投票ボットマネージャは、それを利用して、投票計数の中間値を格納する。これは、投票計数の中間値がブロックチェーンに格納されることを保証する。これは、追跡記録を提供し、投票計数処理が公平であることを示す。
【００９１】
受信した一意的な“Yes”投票の数が57に達した場合、合意されたビットコインの量がJasonの口座に支払われる。投票計数スクリプトの暗号化ハッシュと、当該スクリプトが格納されている場所のIPv6アドレスとが、パブリックにリリースされる。これは、パブリックが再計数を実行し、投票計数処理が公平で正しいことを保証するのに十分な情報を有することを意味する。
【００９２】
上述した実施例は本発明を限定するのでなく例示するものであり、当業者は添付した請求項によって規定される本発明の範囲から逸脱することなく他の多数の実施例を設計可能であることが留意されるべきである。請求項では、括弧内に配置される何れの参照符号も請求項を限定するものとして解釈されるべきでない。“有する”などの単語は、何れかの請求項又は明細書全体に列記された以外の要素又はステップの存在を排除しない。本明細書では、“有する”は“含む、又は構成される”を意味する。要素の単数形の参照は、そのような要素の複数の参照を排除するものでなく、その逆もである。本発明は、複数の異なる要素を有するハードウェアによって、また適切にプログラムされたコンピュータによって実現されてもよい。複数の手段を列挙した装置の請求項では、これらの手段のいくつかは、1つの同一のハードウェアアイテムによって具現化されてもよい。特定の手段が互いに異なる従属形式の請求項に記載されているという単なる事実は、これらの手段の組み合わせが効果的には利用可能でないことを示すものでない。
【図１】
2019514235.tif 000003
【図２】
2019514235.tif 000004
【図３】
2019514235.tif 000005
【図４】
2019514235.tif 000006
【図５】
2019514235.tif 000007
【図６】
2019514235.tif 000008
【図７】
2019514235.tif 000009
【図８】
2019514235.tif 000010
【図９】
2019514235.tif 000011
【図１０】
2019514235.tif 000012
【国際調査報告】
2019514235.tif 000013
2019514235.tif 000014
2019514235.tif 000015