(57)【要約】  本発明は、一般にブロックチェーンの実現形態に関連し、限定されることなく、ビットコインブロックチェーンによる利用に適している。それは、デバイス/システム制御、プロセス制御、分散計算及び格納などの自動化された処理の実現形態に利用可能である。本発明は、イベント検出、モニタ及び/又は計数機構を提供する。イベントは、例えば、所与のエンティティによって行われる投票、決定又は選択であってもよい。本発明は、ブロックチェーンと同時にパラレルに実行する計算リソースがループベース処理を管理する計数手段を提供する。計算リソースは、ブロックチェーンの状態と共に、他の何れかのオフブロックチェーン入力データ又はソースを継続的にモニタする。ループの実行は、ブロックチェーンの状態によって影響を受ける。計算リソースによって実行されるループの各繰り返しは、ブロックチェーンに書き込まれるトランザクションに記録される。それは、トランザクションのメタデータ内のハッシュとして格納される。計算リソースがループに関連するハッシュを含むトランザクションを検出した場合、それは、コードの関連する部分にアクセスする。ループは、計算リソースが何れのアクションをとるか決定することを可能にする条件付きステートメントを含む。当該条件は、ブロックチェーンの状態又は他の何れかのデータソースに依存してもよい。アクションは、ブロックチェーン上の又は離れた何れかのタイプのアクションとすることができる。従って、計算リソース及びブロックチェーンの組み合わせは、チューリング完全な手段を提供する。
2019512909.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実現されるイベント計数又は処理方法であって、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって生成された1つ以上のイベントの計数を維持するため計算リソース上でループを実行するステップと、
を有する方法。
【請求項２】
i)前記1つ以上のイベントは、前記少なくとも1つのエンティティによって行われた投票、選択、決定又はアクションであり、及び/又は、
ii)1つ以上のイベントの計数は、前記ブロックチェーン及び/又は前記ブロックチェーンの代替スタックに格納される、請求項1記載の方法。
【請求項３】
スクリプトを利用して前記ループを実現するステップを更に有する、請求項1又は2記載の方法。
【請求項４】
前記スクリプトの暗号化ハッシュを生成するステップを更に有する、請求項3記載の方法。
【請求項５】
秘密交換プロトコルを利用して、前記少なくとも1つのトークンを前記少なくとも1つのエンティティに配布又は配分するステップを更に有する、請求項1乃至4何れか一項記載の方法。
【請求項６】
アクションの1つ以上の選択又は可能な行程を表すアイテムと共に各パブリックキー及びアドレスをロードするステップを更に有し、好ましくは、前記アイテムは通貨の額である、請求項1乃至5何れか一項記載の方法。
【請求項７】
前記計算リソース上で又は関連して、認証された各エンティティ及び/又はトークンに関連するパブリックキーのリストを維持するステップを更に有する、請求項1乃至6何れか一項記載の方法。
【請求項８】
プライベートキーのリストと、前記エンティティの識別情報とそれらの配分されたトークンとの間のマッピングとを破壊する、又は決して格納しないステップを更に有する、請求項7記載の方法。
【請求項９】
アドレスのリストを維持するステップを更に有し、
少なくとも1つのアドレスは前記少なくとも1つのエンティティに関連し、好ましくは、前記リストはブロックチェーンスクリプトにより表現又は定義される、請求項1乃至8何れか一項記載の方法。
【請求項１０】
格納のため前記アドレスのリストを前記代替スタックに転送するステップを更に有し、好ましくは、アドレスは、前記アドレスに対する投票が計数されると、前記代替スタックから削除される、請求項9記載の方法。
【請求項１１】
前記アドレスのリストが空になるまで、前記ループを実行するステップを更に有する、請求項10記載の方法。
【請求項１２】
前記ループの少なくとも1つの繰り返しに関連する情報が、前記ブロックチェーン上のトランザクションに格納される、請求項1乃至11何れか一項記載の方法。
【請求項１３】
前記情報は、前記トランザクションにおいてメタデータとして格納される、請求項12記載の方法。
【請求項１４】
前記ループに関連するコードの暗号化ハッシュを生成し、好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納するステップを更に有する、請求項1乃至13何れか一項記載の方法。
【請求項１５】
前記計算リソースは、前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタするよう構成される、請求項1乃至14何れか一項記載の方法。
【請求項１６】
前記ループの各繰り返しについて、
条件を評価し、前記評価の結果に基づき少なくとも1つのアクションを実行するステップを更に有し、
前記少なくとも1つのアクションは、
少なくとも1つのトランザクションを前記ブロックチェーンに書き込ませるステップ、及び/又は、
オフブロックチェーンアクションを実行させるステップ
を有する、請求項1乃至15何れか一項記載の方法。
【請求項１７】
前記条件は、前記計算リソースによって受信、検出又は生成されたデータ、又は前記ブロックチェーンの状態に関連する、請求項16記載の方法。
【請求項１８】
前記計算リソースは、
前記ブロックチェーンの状態、
前記計算リソースによって生成又は受信された値、及び/又は
前記ブロックチェーンから離れて提供されたデータ又は信号ソース
をモニタするよう構成される、請求項1乃至17何れか一項記載の方法。
【請求項１９】
i)データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとして前記ブロックチェーンを利用するステップと、
ii)チューリング完全な処理のための制御フロー管理コンポーネントとして計算リソースを利用するステップであって、前記計算リソースはループ機構を実行するよう構成される、利用するステップと、
を有する、請求項1乃至18何れか一項記載の方法。
【請求項２０】
前記計算リソースが前記ブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、前記ループを指定された繰り返しにおいて再開するステップを更に有する、請求項1乃至19何れか一項記載の方法。
【請求項２１】
前記繰り返しに関連する情報は、前記トランザクション内において又は関連して提供されるメタデータを利用して指定される、請求項10記載の方法。
【請求項２２】
前記ループのコードは、
前記計算リソース内に又は上にハードコード化され、
プライベート又はパブリックに利用可能なファイルに格納され、
プライベート又はパブリックなハッシュテーブルファイル上のエントリとして格納され、及び/又は、
ハードコード化された変数又は少なくとも1つのパラメータを備えた静的なコードブロック、
である、請求項1乃至21何れか一項記載の方法。
【請求項２３】
前記ループのコードは、
何れかのデータフォーマットの単一の値により入力、初期化又はインスタンス化された少なくとも1つのパラメータと、
ブロックチェーンのトランザクションにおけるメタデータから又は前記計算リソースの外部のソースから抽出され、データベース若しくはプライベート若しくはパブリックファイル若しくはハッシュテーブルから抽出され、及び/又は、データソースに対する少なくとも1つのポインタを利用してアクセスされる値を利用して入力されたコードの一部とに関連し又は有し、
好ましくは、前記少なくとも1つのポインタは前記ブロックチェーン上のトランザクションにおけるメタデータとして格納される、請求項1乃至22何れか一項記載の方法。
【請求項２４】
前記計算リソースは、前記計算リソースがサブルーチンの予め格納されたバージョンにアクセスすることを可能にするレジストリを有するか、又は通信する、請求項1乃至23何れか一項記載の方法。
【請求項２５】
前記レジストリは、
i)前記ループに関連するコードの暗号化ハッシュと、
ii)前記コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納する、請求項24記載の方法。
【請求項２６】
ブロックチェーントランザクションを利用して、既存のコードが新たなコードと置換されるように、前記ループのためのコードを更新するステップを更に有し、
好ましくは、前記トランザクションは、マルチシグネチャP2SHトランザクションである、請求項1乃至25何れか一項記載の方法。
【請求項２７】
前記既存のコードのハッシュと前記新たなコードのハッシュとを格納するステップを更に有する、請求項16記載の方法。
【請求項２８】
請求項1乃至27何れか一項記載の方法を実現するよう構成されるコンピュータベースシステムであって、
ブロックチェーンと、
ループの実行が前記ブロックチェーンの状態によって影響を受けるように前記ループを実行するよう構成される計算リソースと、
を有するシステム。
【請求項２９】
前記ループの少なくとも1つの繰り返しに関連する情報は、前記ブロックチェーン上のトランザクションにおいて格納され、
好ましくは、前記情報は、前記トランザクションにおけるメタデータとして格納される、請求項28記載のシステム。
【請求項３０】
前記計算リソースは、
i)前記ループに関連するコードの暗号化ハッシュを生成し、好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納し、及び/又は、
ii)前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタする、
よう構成される、請求項28又は29記載のシステム。
【請求項３１】
前記ループの各繰り返しについて、
条件が評価され、少なくとも1つのアクションが前記評価の結果に基づき実行され、
前記少なくとも1つのアクションは、
少なくとも1つのトランザクションを前記ブロックチェーンに書き込ませること、及び/又は、
オフブロックチェーンアクションを実行させること、
を有する、請求項28乃至30何れか一項記載のシステム。
【請求項３２】
前記条件は、前記計算リソースによって受信、検出又は生成されたデータ、又は前記ブロックチェーンの状態に関連する、請求項31記載のシステム。
【請求項３３】
前記計算リソースは、
前記ブロックチェーンの状態、
前記計算リソースによって生成又は受信された値、及び/又は、
前記ブロックチェーンから離れて提供されたデータ又は信号ソース
をモニタするよう構成される、請求項28乃至32何れか一項記載のシステム。
【請求項３４】
i)前記ブロックチェーンは、データ、命令又はデータ及び/又は命令に対するポインタのための格納コンポーネントとして機能し、
ii)前記計算リソースは、チューリング完全な処理のための制御フロー管理コンポーネントとして機能し、前記計算リソースはループ機構を実行するよう構成される、請求項28乃至33何れか一項記載のシステム。
【請求項３５】
前記計算リソースが前記ブロックチェーン内のトランザクションにおいてコードの一部の所定のハッシュを検出した場合、前記ループは、指定された繰り返しにおいて再開される、請求項28乃至34何れか一項記載のシステム。
【請求項３６】
前記繰り返しに関連する情報は、前記トランザクション内において又は関連して提供されるメタデータを利用して指定される、請求項35記載のシステム。
【請求項３７】
前記計算リソースは、前記計算リソースがサブルーチンの予め格納されたバージョンにアクセスすることを可能にするレジストリを有するか、又は通信する、請求項28乃至36何れか一項記載のシステム。
【請求項３８】
前記レジストリは、
i)前記ループに関連するコードの暗号化ハッシュと、
ii)前記コードのコピーがアクセス可能なアクセス元の位置を示す情報と、
を格納する、請求項37記載のシステム。
【請求項３９】
当該システムは、ブロックチェーントランザクションを利用して、既存のコードが新たなコードに置換されるように、前記ループのためのコードを更新するよう構成され、
好ましくは、前記トランザクションはマルチシグネチャP2SHトランザクションである、請求項28乃至38何れか一項記載のシステム。
【請求項４０】
当該システムは、前記既存のコードのハッシュと、前記新たなコードのハッシュとを格納するよう構成される、請求項39記載のシステム。
【請求項４１】
コンピュータによって実現される投票又は決定計数方法であって、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって生成される又は関連する1つ以上の投票又は決定の計数を維持するため、計算リソース上でスクリプトを利用して実現されるループを実行し、前記スクリプトの暗号化ハッシュを生成するステップと、
を有する方法。
【請求項４２】
コンピュータによって実現される投票又は決定計数方法であって、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
を有し、
前記ループの少なくとも1つの繰り返しに関連する情報は、前記ブロックチェーン上のトランザクションに格納される方法。
【請求項４３】
コンピュータによって実現される投票又は決定計数方法であって、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
前記ループに関連するコードの暗号化ハッシュを生成するステップと、
を有し、
好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納するステップを有する方法。
【請求項４４】
コンピュータによって実現される投票又は決定計数方法であって、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
を有し、
前記計算リソースは、前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタするよう構成される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ブロックチェーンの実装及び技術に関する。本発明は、限定することなく、ビットコインブロックチェーンによる、及びデバイス/システム制御、プロセス制御、分散計算及び格納などの用途のための利用に特に適している。特に、本発明は、投票、計数、選択及び/又は意思決定プロセスを管理するための技術的解決策に関する。本発明は、政治的な投票用途又はシナリオにおける使用に限定されない。
【背景技術】
【０００２】
本明細書では、コンセンサスベースの電子的でコンピュータベースの分散された台帳の全ての形式を含むよう“ブロックチェーン”という用語を使用する。これには、限定されることなく、ブロックチェーン及びトランザクションチェーン技術、許可型及び非許可型台帳、共有型台帳及びこれらの変形が含まれる。他のブロックチェーンの実現形態が提案及び開発されてきたが、ブロックチェーン技術の最も広く知られているアプリケーションは、ビットコイン台帳である。ここでは、ビットコインが便宜上及び説明のために参照されるが、本発明がビットコインブロックチェーンによる利用に限定されず、他のブロックチェーン実現形態及びプロトコルが本発明の範囲内に属することに留意すべきである。
【０００３】
ブロックチェーンは、トランザクションから構成されるブロックから構成されるコンピュータベースの非中央化された分散システムとして実現されるコンセンサスベースの電子台帳である。各トランザクションは、ブロックチェーンシステムにおける参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つの入力と少なくとも1つの出力とを含む。各ブロックは、その開始以来のブロックチェーンに書き込まれた全てのトランザクションの永続的で変更不可なレコードを作成するように、一緒にチェーン化されたブロックに対する前のブロックのハッシュを含む。トランザクションは、トランザクションの出力がどのように、また誰によってアクセス可能であるかを指定する、それらの入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含む。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるため、それは“検証（validated）”される必要がある。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒絶されることによって、各トランザクションが有効であることを保証するための作業を実行する。ノード上にインストールされたソフトウェアクライアントは、それのロック及びアンロックスクリプトを実行することによって、未使用トランザクション（UTXO）に対する当該検証作業を実行する。ロック及びアンロックスクリプトの実行がTRUEに評価した場合、トランザクションは有効であり、ブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるため、それは、i)トランザクションを受信した第1のノードによって検証される必要があり、トランザクションが検証された場合、ノードはそれをネットワークにおけるその他のノードに中継し、ii)マイナーによって構築された新たなブロックに追加され、iii)マイニング、すなわち、過去のトランザクションの公開台帳に追加される必要がある。
【０００５】
ブロックチェーン技術が仮想通貨の実現形態の利用に対して最も広く知られているが、デジタル起業家は、ビットコインが基づく暗号化セキュリティシステムと、新たなシステムを実現するためブロックチェーン上に格納可能なデータとの双方の利用を探求し始めた。これらは、以下に限定されず、
・メタデータの格納
・デジタルトークンの実現
・デジタル署名により署名された契約の確定
を含む。
【０００６】
ブロックチェーンが、仮想通貨の領域に限定されない自動化されたタスク及びプロセスに利用可能である場合、それは大変効果的であろう。そのような解決策は、その用途においてより多才でありながら、ブロックチェーンの利益（例えば、イベントの永続的な改ざん耐性的な記録、分散処理、暗号化セキュリティ機能など）を利用可能であろう。
【０００７】
ブロックチェーンコミュニティ内における現在の１つの関心領域は、チューリング完全性であり、具体的には、セキュリティの理由のため機能を制限するよう設計されているチューリング完全な動作をブロックチェーン技術にどのように実現するかである。
【０００８】
ビットコインスクリプト言語がチューリング完全であるか検討されており、なぜなら、それは、例えば、ループの実行などの複雑なフロー制御機能を本来サポートしないためである。この制限の１つの効果は、プログラムが予測可能な実行回数を有することである。
【０００９】
ビットコインスクリプトを線形又はツリー状の決定タスクに限定する他の有意な効果は、これがDoS（Denial  of  Service）又はDDoS攻撃などのローンチング（launching）利用の手段として利用可能な無限ループを回避することである。この限定の結果として、ビットコインスクリプトは、自動タスクの制御、デバイス管理などのより複雑な用途でなく、線形なタスクにしばしば利用されることが限定される。
【００１０】
イーサリアムブロックチェーンは、Solidityと呼ばれる“組み込み”チューリング完全な言語を搭載することによって、この問題にアプローチする。この言語は、イーサリアムプラットフォームに由来するものであり、Solidityで記述されたスクリプトはループなどの制御フロー機構を含みうる。しかしながら、イーサリアムは複数の攻撃及び利用から被害を受けてきた。
【００１１】
上述したセキュリティの懸念のため、また、ビットコインによって利用されるスクリプト言語の広範な利用及び精通のため、ブロックチェーン技術に関連してこれらの限定されたスクリプト言語の利用を保持するためのブロックチェーンコミュニティの有意な部分内における要求がまた残っている。
【発明の概要】
【００１２】
従って、無限ループなどの潜在的なセキュリティの弱点の有害な影響を回避しながら、ブロックチェーンスクリプトに統合又は組み合わせされるループ機構及び他の複雑な制御構造などのチューリング完全な機能を実現する解決策を提供することが望ましい。そのような解決策は、
・複雑なブロックチェーン関連トランザクションの自動化を可能にすること
・ブロックチェーンに記録されるメタデータストリームを制御すること
・チューリング完全な言語に意図的に依拠又は搭載しないブロックチェーンプラットフォームの機能及び用途を拡張すること
を含む多数の利点を提供する。
【００１３】
そのような改良された解決策が現在考案された。本発明は、ループのエミュレーション、シミュレーション及び/又は搭載と、典型的なブロックチェーンスクリプトの外部の他のチューリング完全な機能とを可能にするパラレルな計算リソースに結合されたブロックチェーンの新規な組み合わせを有する解決策を提供する。さらに、これは、例えば、分散データストレージ、分散計算及びドローン又は何れかのIoT（Internet of Things)デバイスの制御などに関連する自動化されたタスクのための多数のアプリケーションを実現する。そのようなアプリケーションは、メタデータストレージのためにブロックチェーンを利用し、デジタルトークンを管理し、契約を確定することを含むものであってもよい。他の有用なアプリケーションは、投票又は選択の計数処理の自動化である。
【００１４】
以下は、本発明の技術分野に対する背景資料、US2016/027229 A、WO2016/022864 A及びUS6061449 Aを提供する。出願時において利用可能である以下のオンラインリソースは、技術的背景を提供する。
https://nxt.org/what-is-nxt/voting/
http://bitcoin-development.narkive.com/uRciVtAQ/standard-bip-draft-turing-pseudocompleteness
https://news.ycombinator.com/item?id=7287155
https://news.ycombinator.com/item?id=11372455
http://cryptonomics.org/2014/02/01/ethereum-turing-complete
従って、本発明によると、添付した請求項に規定される解決策が提供される。本発明によると、（処理）制御方法及び対応するシステムが提供されうる。本発明は、ブロックチェーンにより実現される制御方法/システムとして参照されうる。それは、自動化されたタスク又はプロセスを制御しうる。
【００１５】
本発明は、ブロックチェーンを利用してチューリング完全性をエミュレート/シミュレートするよう構成されてもよい。さらに又はあるいは、本発明は、チューリング完全な制御機構に関するアプリケーションがブロックチェーンプラットフォーム上で実行されることを可能にしうる。
【００１６】
さらに又はあるいは、本発明は、ブロックチェーン及び/又は1つ以上のブロックチェーントランザクションを利用して、オフブロック計算リソース上で実行されるプロセスを制御するよう構成される方法又はシステムとして説明されうる。従って、本発明は、互いに機能的及び構造的に異なる別々の計算コンポーネントが新規な技術的結果を提供するように相互作用するよう構成される構成を有する。異なる計算システム（計算リソース及びブロックチェーン）の相互作用は、大変強力な制御手段をもたらす。
【００１７】
計算リソースの観点から、本発明は、プログラムの実行の永続的で改ざん耐性な記録の効果を提供する。ブロックチェーンの観点から、本発明は、改良されたブロックチェーン実現形態を提供する。なぜなら、それがブロックチェーンの利用を介しチューリング完全な動作が少なくとも部分的にシミュレートされ、次に更に機能的に複雑なブロックチェーンベースのアプリケーションが配置されることを可能にするためである。これは全て、ブロックチェーントランザクションのための限定されたスクリプト言語の利用を維持しながら達成される。スクリプト言語は、それの設計又は実現形態がループなどの複雑な制御フロー機構を当該言語で記述されたコードに搭載することを妨げるか、あるいは、少なくとも本来的にはサポートしない点で限定（制限）されうる。プログラマが利用可能な言語の命令セット、すなわち、“コマンド”又は“オペコード”は、それが複雑なフロー制御機構のためのコマンドを含まないように構成されてもよい。
【００１８】
ブロックチェーンは、限定された言語を有するブロックチェーンプロトコルと関連付けされてもよいし、あるいは、利用されてもよい。これはスクリプト言語であってもよい。本発明は、ブロックチェーンを利用して、タスクの実行のための限定されたスクリプト言語の機能を拡張してもよい。
【００１９】
本発明は、ブロックチェーンの状態を利用してループベース処理を実行してもよい。ループベース処理は、ブロックチェーンネットワークとパラレルに動作する計算リソース上で実行されてもよい。計算リソースは、ブロックチェーンネットワークと別個（一部でない）であってもよい。計算リソースは、“オラクル”又は“ボット”として参照されうる。
【００２０】
これは、ループ機構などの制御フロー機構がブロックチェーンから離れて実現されることを可能にしながら、ブロックチェーンプロトコルが機能的に限定されたスクリプト言語を利用することを可能にする。この新規な組み合わせは、セキュリティを担保しながら、ブロックチェーン技術の多才さを高める。
【００２１】
本発明の1つ以上の実施例によると、コンピュータによって実現されるイベント対処、モニタ、検出及び/又は計数処理及び対応するシステムが提供されうる。本発明の実施例は、エンティティによって生成されるイベントに応答するよう構成されうる。本発明は、投票、選択、決定又は他のタイプのイベントをモニタ/検出及び/又は計数してもよい。ここでの便宜のため、“投票”又は“決定”という用語は、本発明によってモニタ、計数、記録及び/又は検出等されるイベントを参照するのに利用されうる。
【００２２】
本発明の1つ以上の実施例は、制御方法及び対応するシステムとして説明されてもよい。それは、ブロックチェーンにより実現される方法/システムとして説明されうる。本発明は、処理を制御するよう構成されうる。当該処理は、産業用又は非産業用処理であってもよい。決定などのイベントは、機械、電子/ソフトウェアベースのエンティティ、自然人、法人又はその他によって行われてもよい。本発明の1つ以上の実施例は、イベントを計数、モニタ、記録、検出及び/又は処理する方法/システムを有してもよい。イベントは、アプリケーションエリア内のエンティティによって行われた投票などの決定又は選択であってもよい。それは、この目的のために利用可能であるが、政治的なコンテクストにおける政治的な投票又はイベントを計数することに制限されない。それは、例えば、マシーンが特定の選択を何回したか、あるいは、細胞が突然変異した回数などを記録するのに利用されてもよい。当該決定は、二択又は非二択であってもよい。それは、イベントが行われる/行われない回数を計数又は記録してもよい。
【００２３】
当該方法は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンは暗号化パブリックキーとプライベートキーとのペアによって表される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって生成された1つ以上のイベント（例えば、投票、選択、アクション又は決定）の計数を維持するため計算リソース上でループを実行するステップと、
を有してもよい。
【００２４】
本発明は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われる1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
を有するコンピュータによって実現される投票又は決定計数方法を提供してもよい。
【００２５】
暗号化キーのペアは、“ブロックチェーンのパブリック及びプライベートキーのペア”として参照されてもよい。それは、ブロックチェーンプラットフォームとの利用のためであって、当該技術において知られるように、ブロックチェーントランザクションの入力と出力との間の値のセキュアな転送のために構成されてもよい。キーは、ブロックチェーンアドレスとして機能しうる。
【００２６】
本発明は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって生成される又は関連する1つ以上の投票又は決定の計数を維持するため、計算リソース上でスクリプトを利用して実現されるループを実行し、前記スクリプトの暗号化ハッシュを生成するステップと、
を有するコンピュータによって実現される投票又は決定計数方法を提供してもよい。
【００２７】
本発明は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
を有し、
前記ループの少なくとも1つの繰り返しに関連する情報は、前記ブロックチェーン上のトランザクションに格納されるコンピュータによって実現される投票又は決定計数方法を提供してもよい。
【００２８】
本発明は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
前記ループに関連するコードの暗号化ハッシュを生成するステップと、
を有し、
好ましくは、前記ブロックチェーン上のトランザクション内に前記暗号化ハッシュを格納するステップを有するコンピュータによって実現される投票又は決定計数方法を提供してもよい。
【００２９】
本発明は、
少なくとも1つのトークンを少なくとも1つの所定のエンティティに配布又は配分するステップであって、前記少なくとも1つのトークンはブロックチェーンのパブリックキーとプライベートキーとのペアによって表現される、配布又は配分するステップと、
前記少なくとも1つのエンティティによって行われた1つ以上の投票又は決定の計数を維持するため、計算リソース上でループを実行するステップと、
を有し、
前記計算リソースは、前記ループに関連するコードの暗号化ハッシュを有するトランザクションについて前記ブロックチェーンの状態をモニタするよう構成されるコンピュータによって実現される投票又は決定計数方法を提供してもよい。
【００３０】
少なくとも1つの所定/予め選択されたエンティティは、機械、電子/ソフトウェアエンティティであってもよい。他の実施例では、エンティティは、自然人、法人又はその他であってもよい。ブロックチェーンは、ビットコインブロックチェーン又は他のブロックチェーンプラットフォームであってもよい。配布は、ブロックチェーンネットワークにブロードキャストすることによって実行されてもよい。複数のエンティティ（例えば、投票者又は意思決定者）がいてもよい。少なくとも1つのトークンは、これら複数内の各エンティティのそれぞれに配布及び/又は配分されてもよい。
【００３１】
1つ以上の投票又は決定の計数は、ブロックチェーン（例えば、トランザクションにおける）及び/又はブロックチェーンの代替スタックに格納されてもよい。
【００３２】
当該方法は、スクリプトを利用してループを実現するステップを有してもよい。スクリプトは、スクリプト言語で記述されてもよい。それは、Forthスクリプト言語に基づくものであってもよい。当該言語は、非チューリング完全であってもよい。それは、スタックベース言語であってもよい。スクリプト言語は、その設計又は実現形態がループなどの複雑な制御フロー機構を当該言語で記述されたコードに搭載することを妨げる又は少なくとも本来的にはサポートしないため、限定（制限）されうる。プログラマが利用可能な言語の命令セット、すなわち、“コマンド”又は“オペコード”は、それが複雑なフロー制御機構のコマンドを含まないように構成されてもよい。
【００３３】
当該方法は、スクリプト又はその一部の暗号化ハッシュを生成するステップを更に有してもよい。
【００３４】
当該方法は、秘密交換プロトコルを利用して、少なくとも1つのトークンを少なくとも1つのエンティティに配布又は配分するステップを更に有してもよい。
【００３５】
当該方法は、1つ以上のアクションを表すアイテムと共に各パブリックキー及びアドレスをロードするステップを更に有してもよく、好ましくは、当該アイテムは通貨の額である。通貨はビットコイン関連であってもよい。
【００３６】
当該方法は、計算リソース上で又は関連して、認証された各エンティティ及び/又はトークンに関連するパブリックキーのリストを維持するステップを更に有してもよい。当該方法は、プライベートキーのリストと、エンティティの識別情報とそれらの配分されたトークンとの間のマッピング/関連付けとを破壊（又は決して格納しない）するステップを更に有してもよい。
【００３７】
当該方法は、アドレスのリストを維持するステップを更に有してもよい。リストは、空のリストであってもよいしあるいは、1つ以上のアドレスを有してもよい。少なくとも1つのアドレスは、少なくとも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)は、消去不可なテープがチューリング完全であって、ユニバーサルチューリングマシーン上でまた実行可能な何れかのアルゴリズムを実行可能であるマシーンを実現するのにどのように利用可能であるかを説明した。
【００７３】
本発明は、チューリングマシーンの実現形態において消去不可なテープとしてそれを利用して、ブロックチェーンに関連して動作する計算リソースを含む。この計算リソースは、ループ処理の実行を管理及び処理しながら、ブロックチェーンネットワークとパラレルに実行される。ループ処理は、例えば、プロセスの自動化又はデバイス又はシステムの制御などの所与のタスクを実行するよう設計される。このパラレルなリソースは、ブロックチェーンの状態をモニタし、トランザクションがブロックチェーンに書き込まれることを可能にする。従って、それは、参照の便宜上、“マネージャ”としてここで参照されてもよい。
【００７４】
本発明の特徴及び効果は、
・ブロックチェーンがチューリングマシーンの消去不可なテープとして機能することを可能にすること
・ブロックチェーンに並行して動作するコンピュータベースモニタリング及び管理コンポーネント（マネージャ）の機能及び実現形態
・チューリングマシーンの命令テーブルとしてマネージャを利用すること
・コードレジストリを利用してマネージャを管理すること
・マネージャのコード及びループの再開に関連するトランザクションメタデータ
・デジタルシグネチャを利用してマネージャに対するソフトウェアアップデートを実現すること
・他のブロックチェーンを利用したマネージャの特別な実現形態
を含む。
【００７５】
チューリングマシーンの消去不可なテープとしてのブロックチェーン
図1を参照して、本発明は、以下の定義及び特徴によるチューリングマシーンの消去不可なテープとしてブロックチェーンを利用する。
1．ブロックチェーンは、チューリングマシーンのテープとして動作する。ブロックチェーンにおける各トランザクションは、テープ上のセルを表す。このセルは、有限のアルファベットからのシンボルを含むことができる。
2．テープヘッドは、ブロックチェーンに既に書き込まれたブロックから情報を読み取り可能である。
3．テープヘッドは、多数のトランザクションを含む新たなブロックをブロックチェーンのエンドに書き込み可能である。しかしながら、それらは、既に存在するブロックに書き込むことはできない。また、ブロックチェーンテープは消去不可である。
4．各トランザクションのメタデータは、マルチシグネチャペイ・ツー・スクリプト・ハッシュ（P2SH）トランザクションの一部として格納可能である。
【００７６】
マネージャの重要な機能は、ブロックチェーンの現在状態をモニタするエージェントとして動作することである。それはまた、何れかのオフブロックソースから信号又は入力を受信可能である。ブロックチェーンの状態及び／又は受信した入力に応じて、マネージャは特定のアクションを実行してもよい。マネージャは、何れのアクションが実行されるべきかを決定する。これらは、“実世界”（すなわち、オフブロック）におけるアクション及び／又はブロックチェーンに対するアクション（新たなトランザクションの作成及びブロードキャストなど）に関するものであってもよいし、あるいはそうでなくてもよい。マネージャがとるアクションは、ブロックチェーンの状態によってトリガされてもよい。マネージャはまた、ビットコインネットワークにブロードキャストされ、ブロックチェーンに以降に書き込まれるべき次のトランザクションセットを決定してもよい。
【００７７】
マネージャのアクションは、ビットコインネットワークとパラレル且つ同時に実行される。ある意味では、これは動作制限されたビットコインスクリプトの機能を格納する。この連続的なモニタリングは、組み合わされたマネージャ及びブロックチェーンシステムをチューリング完全にする“ループ”制御フロー構成を実現する。
【００７８】
チューリングマシーンの命令テーブルとしてのマネージャ
本発明の実施例によると、チューリングマシーンは、
・データスタック：これは、上述したようなブロックチェーンによって表される。
・制御スタック：これは、マネージャ機能によって表される。これは、繰り返し制御フロー機能に関連する情報を格納する。
【００７９】
データスタックからの制御スタックの分離は、ビットコインコア内で無限ループが発生することを防ぐという効果を提供する。さらに、これは、ビットコインシステムに対するDoS攻撃を軽減する。
【００８０】
マネージャは、何れかのタイプのループ構成（例えば、FOR-NEXT; REPEAT UNTILなど）を介しループ可能なサブルーチンを管理及び実行する。ここで説明される例示的な実施例は、“繰り返し”構成の一例を利用したプロセスを含む（図2を参照）。ユーザは、インデックス(i)及びリミット（J）を指定する。これらは、繰り返しループの現在の繰り返し数（典型的には、0からスタートして計数される）及び繰り返し総数をそれぞれ表す。
【００８１】
各繰り返しについて、
1.インデックスは1だけインクリメントされる。イグジット条件について、インデックスがリミットに到達すると、繰り返しは停止する。
2．“if condition then action”（ICTA）ステートメントを含むコードブロックが実行され、アクションはブロックチェーン上又は離れた何れかのアクションであってもよい。
3．このサブルーチンの暗号化ハッシュが計算される。これは、トランザクションの一部としてブロックチェーンに格納可能である。ハッシュは各コードに一意的であるため、それは、何れのコードが利用されたかの検証を可能にする。
【００８２】
ループのボディは、コードブロックを含む。各コードブロックは、“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を参照）。マルチシグネチャトランザクションは、図5に示されるように、古い及び新しいコードブロックのメタデータを記録する。これは、古いコードの新たなコードへの切り替えのレコードを行い、これにより、ソフトウェアアップデートの追跡記録を提供する。マネージャは、ソースコードの古い及び新しいブロックの全てのハッシュを格納する必要がある。新たな及び古いソースコードブロックのハッシュは、コードファイルのインテグリティを検証するのに利用可能である。
【０１００】
本発明の実施例によると、複数のシグネチャがトランザクションをアンロックするのに必要とされる（例えば、ユーザ、オペレーティングシステム、ソフトウェア開発者及びソフトウェアベンダ）。これは、マネージャによって利用されるコードのソフトウェア更新及びパッチを管理するためのDRMシステムを提供する。
【０１０１】
実行中にソフトウェアが更新されることを可能にしない大部分のソフトウェアと異なって、本発明の効果は、ソフトウェア更新がループの実行の途中において実行可能であることである。これは、本発明によって制御されているプロセスに対して最小限の中断によってリアルタイムに再設定可能な動的で応答性のある解決策を提供する。
【０１０２】
ブロックチェーン上でキャプチャされる情報（図8及び図9を参照）は、ループの途中で新たなコードに更新し、古いコードから前の繰り返しから出力されるメタデータを利用して次の繰り返しステップを開始するのに利用可能である。
【０１０３】
投票計数発明
現在のビットコインスクリプト言語は、ループが行われることを可能にしない。これは、外部介入がない場合、ビットコインの支払の利用が連続的で自動化されたアクションをトリガすることを防ぐ。しかしながら、マネージャがブロックチェーン上で情報を継続的にモニタするとき、これは、自動化されたアクションがブロックチェーン上の最新の情報に基づき実行されることを可能にする。
【０１０４】
以下は、マネージャの制御スタックが自動化されたオンラインの投票計数ボットに関係する処理を自動化するのにどのように利用可能であるかを説明する。
【０１０５】
本発明の投票計数ボットは、投票計数処理のセキュアで変更不可な追跡記録を記録したブロックチェーンによって、公平で擬似匿名性のある投票を実現するよう設計される。投票計数ボットは、マネージャの制御スタック及び繰り返しループを用いて自動化される（図10を参照）。以下のシナリオは、これの実施例がどのように動作するかを示す。
【０１０６】
100人の投票者がいると仮定する。57の一意的な“Yes”の投票が2016年1月1日までに受信された場合、支払はChair, Jasonにリリースされる。投票処理は、
・トークン配布
・計数
の2つのパートに分割される。
【０１０７】
トークン配布について、それぞれが認証された各投票者に対する100の投票トークンが配布される。各トークンは、（例えば）ビットコインパブリックキー及びプライベートキーのペアによって表される。これは、秘密の交換プロトコルを利用して各投票者に配布される。キー交換プロトコルは、当該技術分野において知られている。各ビットコインパブリックキー及びアドレスは、1つの投票を表す少量のビットコインと共にロード（関連付け）される。ボットは、認証された各トークンに関連するパブリックキーのリストを維持し、当該リストを投票開始前にパブリックにする。投票が不正不可であって匿名化されていることを保証するため、プライベートキーのリストと、投票者の識別情報とそのトークンとの間のマッピングとが破壊される（すなわち、決して格納されない）。
【０１０８】
匿名化されて予め認証されたアドレスのリストを有することは、他の重要な利点を提供する。それは、認証されたもののみが有効な投票を投じることができることを保証する。それはまた、投票者の識別情報を傷つけることなく、特定のアドレス（例えば、スパマー、不正な投票者）を起源とする何れかの所望されない投票の排除を実現可能である。計数処理を実現するため、マネージャは繰り返しループを実行する。アドレスのリストは、ビットコインスクリプトに維持され、データの格納のために代替スタックに転送される。アドレスがカウントされると、それは代替スタックから削除され、次のトランザクションにもはや追加されない。アドレスのリストが空になると、繰り返しループが停止する。
【０１０９】
整数インデックスiを利用して、ループが現在ある場所を追跡する代わりに、投票ボットマネージャは、それを利用して、投票計数の中間値を格納する。これは、投票計数の中間値がブロックチェーンに格納されることを保証する。これは、追跡記録を提供し、投票計数処理が公平であることを示す。
【０１１０】
受信した一意的な“Yes”投票の数が５７に達した場合、合意されたビットコインの量がJasonの口座に支払われる。投票計数スクリプトの暗号化ハッシュと、当該スクリプトが格納されている場所のIPv6アドレスとが、パブリックにリリースされる。これは、パブリックが再計数を実行し、投票計数処理が公平で正しいことを保証するのに十分な情報を有することを意味する。
【０１１１】
上述した実施例は本発明を限定するのでなく例示するものであり、当業者は添付した請求項によって規定される本発明の範囲から逸脱することなく他の多数の実施例を設計可能であることが留意されるべきである。請求項では、括弧内に配置される何れの参照符号も請求項を限定するものとして解釈されるべきでない。“有する”などの単語は、何れかの請求項又は明細書全体に列記された以外の要素又はステップの存在を排除しない。本明細書では、“有する”は“含む、又は構成される”を意味する。要素の単数形の参照は、そのような要素の複数の参照を排除するものでなく、その逆もである。本発明は、複数の異なる要素を有するハードウェアによって、また適切にプログラムされたコンピュータによって実現されてもよい。複数の手段を列挙した装置の請求項では、これらの手段のいくつかは、１つの同一のハードウェアアイテムによって具現化されてもよい。特定の手段が互いに異なる従属形式の請求項に記載されているという単なる事実は、これらの手段の組み合わせが効果的には利用可能でないことを示すものでない。
【図１】
2019512909.tif 000003
【図２】
2019512909.tif 000004
【図３】
2019512909.tif 000005
【図４】
2019512909.tif 000006
【図５】
2019512909.tif 000007
【図６】
2019512909.tif 000008
【図７】
2019512909.tif 000009
【図８】
2019512909.tif 000010
【図９】
2019512909.tif 000011
【図１０】
2019512909.tif 000012
【国際調査報告】
2019512909.tif 000013
2019512909.tif 000014
2019512909.tif 000015