(57)【要約】  本発明は、容易に及び効率的方法で、追加機能をブロックチェーンスクリプトに挿入させることを可能にする方法及びシステムを提供する。一実施形態によると、本発明は、ブロックチェーンに実装される方法であって、実行されると高レベルスクリプト言語プリミティブの機能を提供するよう、複数のスクリプト言語プリミティブを構成する又はそれを選択するステップであって、前記のスクリプト言語は、ブロックチェーンプロトコルに関連付けられる、ステップと、前記複数のスクリプト言語プリミティブを少なくとも１回、スクリプトに挿入するステップと、前記スクリプトをブロックチェーントランザクション（Tx）に挿入するステップと、を含む方法を提供する。高レベルスクリプト言語プリミティブは、例えば、乗算又は除算のような算術演算を実行してよい。スクリプト言語プリミティブは、オペコード、ワード、又はコマンドと呼ばれてよく、スクリプト言語に固有である。スクリプト言語はScriptであってよく、ブロックチェーンプロトコルはBitcoinプロトコルのバージョンであってよい。
2020526810.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンに実装される方法であって、
実行されると高レベルスクリプト言語プリミティブの機能を提供するよう、複数のスクリプト言語プリミティブを構成するステップであって、前記のスクリプト言語は、ブロックチェーンプロトコルに関連付けられる、ステップと、
前記複数のスクリプト言語プリミティブを少なくとも１回、スクリプトに挿入するステップと、
前記スクリプトをブロックチェーントランザクション（Tx）に挿入するステップと、
を含む方法。
【請求項２】
前記高レベルスクリプト言語プリミティブは、算術演算を実行する、請求項１に記載の方法。
【請求項３】
前記スクリプト言語はScript言語であり、及び／又は前記ブロックチェーンプロトコルはBitcoinプロトコルである、請求項１又は２に記載の方法。
【請求項４】
前記スクリプト言語のワードセット又は命令セットから、前記複数のスクリプト言語プリミティブを選択するステップ、を更に含む請求項１乃至３のいずれかに記載の方法。
【請求項５】
コンピュータに基づく記憶リソースに前記複数のスクリプト言語プリミティブを保存する及び／又は格納するステップ、を更に含む請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記複数のスクリプト言語プリミティブを前記スクリプトに挿入する前に、コンピュータに基づく記憶リソースから前記複数のスクリプト言語プリミティブを読み出すステップ、を更に含む請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記スクリプトはアンロックスクリプト、ロックスクリプト、又はRedeemスクリプトである、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記スクリプトは、前記ブロックチェーントランザクションのインプット又はアウトプットに関連して前記トランザクションに挿入される、請求項１乃至７のいずれかに記載の方法。
【請求項９】
ソースからインプット又は信号を受信し、前記インプット又は信号を使用して、前記複数のスクリプト言語プリミティブがスクリプトに挿入される回数を制御するステップ、を更に含む請求項１乃至８のいずれかに記載の方法。
【請求項１０】
前記トランザクションをブロックチェーンネットワークに提出するステップ、を更に含む請求項１乃至９のいずれかに記載の方法。
【請求項１１】
前記複数のスクリプト言語プリミティブは、テンプレートスクリプト及び／又はテンプレートトランザクション（Tx）に挿入される、請求項１乃至１０のいずれかに記載の方法。
【請求項１２】
前記複数のスクリプト言語プリミティブは、ラベル又は識別子に関連付けられる、請求項１乃至１１のいずれかに記載の方法。
【請求項１３】
前記スクリプト言語は機能的に制約される、請求項１乃至１２のいずれかに記載の方法。
【請求項１４】
請求項１乃至１３のいずれかに記載の方法を実行するよう構成されたコンピュータにより実装されるシステム。
【請求項１５】
実行されると、請求項１乃至１３のいずれか一項に記載の方法を実行するようプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
【請求項１６】
電子装置であって、
インタフェース装置と、
前記インタフェース装置に結合されたプロセッサと、
前記プロセッサに結合されたメモリであって、前記メモリは、実行されると、請求項１乃至１３のいずれか一項に記載の方法を実行するよう前記プロセッサを構成するコンピュータ実行可能命令を格納している、メモリと、
を含む電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、分散台帳技術に関し、特に、Bitcoinブロックチェーン又は任意の他のブロックチェーン／暗号通貨プロトコルの変形のようなブロックチェーン技術に関する。本発明は、限定ではなく、ブロックチェーントランザクション（Tx）内のスクリプトが実行のために構成される方法を制御する際に、したがって、デジタルリソースの制御若しくは所有権がブロックチェーンネットワークを介して移転される方法を制御する際に、使用されることに適する。
【背景技術】
【０００２】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳技術を含むよう使用される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、サイドチェーン、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はBitcoin台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はBitcoinのブロックチェーンの変形と共に使用することに限定されず、代替ブロックチェーン実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピア電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに組み込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、Scriptと呼ばれるスタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード（マイナー）は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション（UTXO）に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ｉｉ）マイナーにより構築された新しいブロックに追加し、ｉｉｉ）マイニングされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、Bitcoinの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利であり、したがってブロックチェーンに実装される技術の適用性を広げる。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点（例えば、永久的、イベントの耐タンパレコード、分散プロセス、等）を利用できる。
【０００６】
しかしながら、このような技術の機能を向上するために、現在存在する幾つかの技術的制限を解決する必要がある。１つ以上のBitcoinプロトコルでは、例えば、プログラマのプログラムがScriptで記述されるとき、特定の演算子はプログラマに利用可能でなくてよい。セキュリティ関連の懸念事項は、プロトコルの元のバージョンの中で提供されたScriptオペコードの幾つかを、Bitcoinコミュニティにより無効にさせてしまう。これらは、乗算及び除算のような特定の算術演算を実行するための演算子を含む。したがって、現在、幾つかのプロトコルでは、Script内のこのような演算を実行する固有のメカニズムが存在せず、これは、スクリプトコードが現在達成できることに制約をもたらす。無効なオペコードを含むスクリプトは、失敗し異常終了するだろう。これは、基礎にあるブロックチェーンプロトコル等に実装される技術の機能に制限をもたらす。所望の実装が基礎にあるプロトコル内で提供されない機能を使用する必要のあるときに生じる技術的課題が存在する。プロトコルの変更は、常に望ましく又は実現可能ではない場合がある。一方で、このようなブロックチェーンプラットフォームは機能的に制約されたままである。
【０００７】
したがって、ブロックチェーンスクリプト言語のセキュリティ及び完全性を保ちたいという要望をそのままに、スクリプトプログラマにより大きなプログラミング能力を与え並びに言語の多様性、可用性及び適用性を向上する、ソリューションを提供する必要もある。このようなソリューションは、改良されたブロックチェーンネットワークを提供し得る。これから、限定ではなく、以下を含む多数の利益が導かれ得る。
【０００８】
・複雑なブロックチェーンに関連する移転の自動化を可能にする、
・ブロックチェーンに記録されるメタデータストリームを制御する、
・ブロックチェーンに実装される技術の機能及び用途を拡張する。
【０００９】
このようなソリューションの一例がここに提供される。
【発明の概要】
【００１０】
本発明によると、添付の請求の範囲に定められるようなシステム及び／又は方法が提供される。
【００１１】
本発明の実施形態は、ブロックチェーンにより実装される方法／システムを提供し得る。本発明は、制御方法／システムであってよい。これは、ブロックチェーントランザクション（Tx）に埋め込まれるスクリプトの実行を及び／又はアウトプットがアンロックされるか否かを制御するよう、及び／又はトランザクションによりあるエンティティから別のエンティティへのリソースの移転を制御するよう、構成されてよい。
【００１２】
ブロックチェーンは、プロトコル及びスクリプト言語に関連付けられてよい。スクリプト言語は、スタックに基づく言語であってよい。スクリプト言語は、スクリプト言語がループ及び／又はジャンプ反復のような複雑な制御フローメカニズムを許可しないという意味で、機能的に制約されてよい。これは、Bitcoinスクリプト言語、Script、又は代替のものであってよい。
【００１３】
本発明の実施形態は、ブロックチェーンスクリプトの中で演算の機能をエミュレートする又は実装するメカニズムを提供し得る。演算は、ブロックチェーンプロトコルに関連付けられたスクリプト言語により本来サポートされない演算であってよい。これは無効な演算であってよい。これは、高レベル演算と呼ばれてよい。これは、ブロックチェーンスクリプト言語のワードセット（オペコード、コマンド、命令、又は関数）に対して、高レベルであってよい。高レベル演算は、固有のプリミティブ演算又は言語本来のオペコードから除去されたレベル抽象化で機能する演算であってよい。高レベル演算は、乗算及び除算のような算術演算であってよい。このことの利点は、本発明が、この機能を便利な方法で組み込むスクリプトを記述するために使用可能であり、スクリプト言語又はブロックチェーンプロトコルを変更する必要がないことである。したがって、本発明は、改良されたブロックチェーンシステムを提供し、より機能的に複雑な、より機能的に多様なアプリケーションをブロックチェーン上で実行可能にし、及びアプリケーションのプログラミングをエラーの低減と共により容易に且つ迅速に達成可能にする。したがって、結果として、より多様な、機能的に強力且つ有用なブロックチェーンをもたらす。一方で、本発明は、より多くのブロックチェーンにより実装される技術を構築可能にする。
【００１４】
追加又は代替として、当該方法は、実行されると高レベルスクリプト言語プリミティブの機能を提供するよう、複数の（ブロックチェーン）スクリプト言語プリミティブを構成するステップであって、前記のスクリプト言語は、ブロックチェーンプロトコルに関連付けられてよい、ステップと、前記複数のスクリプト言語プリミティブを少なくとも１回、スクリプトに挿入するステップと、及び／又は、前記スクリプトをブロックチェーントランザクション（Tx）に挿入するステップと、を含んでよい。
【００１５】
追加又は代替として、本発明による方法は、高レベルスクリプト言語演算子の機能を実行するために構成され及び／又は選択された複数のブロックチェーンオペコード（プリミティブ）を格納するステップと、前記複数のオペコードを記憶装置から読み出すステップと、前記複数のオペコードをブロックチェーントランザクションの中のスクリプトに挿入するステップと、を含んでよい。
【００１６】
前記複数のオペコードは「チャンク」として記載されてよい。
【００１７】
当該方法は、トランザクションを評価し及び／又は該トランザクションをブロックチェーンネットワークに提出するステップを含んでよい。当該方法は、前記トランザクションを実行するステップを含んでよい。
【００１８】
前記複数のスクリプト言語プリミティブの各々は、ワード、コマンド、又は関数としても知られ得る。これらは、「高レベルプリミティブ」と呼ばれてよい。便宜上、用語「オペコード」は、「スクリプト言語プリミティブ」のために使用される。複数のオペコードのうちの１つ、一部又は全部は、スクリプト言語のワード若しくは命令セットから選択されてよい。それらは、スクリプト言語に固有であってよい。
【００１９】
高レベルスクリプト言語プリミティブは、構成されたオペコードのグループ又は選択であってよい。それらは、所望の抽象化された機能を提供するために意図的に構成されてよい。これは、参照を容易にするために、「高レベルプリミティブ」として参照されてよい。高レベルプリミティブは、算術演算又はデータコピー、論理若しくはプログラム（フロー）制御演算を実行してよい。これは、コンピュータのスタック上のメモリに残される結果を生成してよい。高レベルプリミティブは、言語の固有のワードセットに含まれない又は無効にされているオペコードの機能をエミュレート又は提供してよい。高レベルプリミティブは、言語に固有の及び／又は機能的により単純な演算を実行するより多くの基本的又は基礎的演算に分解できるという意味で「高レベル」であってよい。高レベルプリミティブは、オペコードより一層抽象化されたレベルであるが、単一の演算を実行し又は結果を生成するために構成されてよい。
【００２０】
スクリプト言語はScript言語であってよい。ブロックチェーンプロトコルは、Bitcoinプロトコルであってよい。しかしながら、他の言語及びプロトコルが、本発明の範囲内に包含されてよい。スクリプト言語は機能的に制約されてよい。用語「チューリング不完全（non−Turing  complete）」は、本願明細書では、用語「機能的に制約された」と同義的に使用されることがある。言語は、言語がループ及び／又はジャンプ反復のような１つ以上の制御フローメカニズムを元々サポートしないという意味で、機能的に制約されてよい。
【００２１】
当該方法は、前記複数のスクリプト言語プリミティブのうちの１つ、一部、又は全部を、前記スクリプト言語のワードセット又は命令セットから、選択するステップを更に含んでよい。
【００２２】
当該方法は、コンピュータに基づく記憶リソースに前記複数のスクリプト言語プリミティブを保存する及び／又は格納するステップ、を更に含んでよい。これは、不揮発性コンピュータメモリであってよい。当該方法は、前記複数のスクリプト言語プリミティブを前記スクリプトに挿入する前に、コンピュータに基づく記憶リソースから前記複数のスクリプト言語プリミティブを読み出すステップ、を更に含んでよい。
【００２３】
前記スクリプトは、アンロックスクリプト、ロックスクリプト、又はRedeemスクリプトであってよい。
【００２４】
スクリプトは、ブロックチェーントランザクションのインプット又はアウトプットに関連付けられてブロックチェーントランザクション（Tx）に挿入される。
【００２５】
当該方法は、ソースからインプット又は信号を受信し、前記インプット又は信号を使用して、前記複数のスクリプト言語プリミティブがスクリプトに挿入される回数を制御するステップ、を更に含んでよい。
【００２６】
当該方法は、前記トランザクションをブロックチェーンネットワークへ提出するステップを更に含んでよい。
【００２７】
前記複数のスクリプト言語プリミティブは、テンプレートスクリプト及び／又はテンプレートトランザクション（Tx）に挿入される。前記テンプレートは、前記スクリプト／トランザクションの不完全バージョンであってよい。
【００２８】
本発明は、コンピュータにより実装されるシステムも提供する。当該システムは、上述の方法の任意の実施形態を実行するよう構成されてよい。本発明のある１つ以上の態様に関連して記載された任意の特徴は、任意の他の態様に適用可能であってよい。方法に関連して記載された任意の特徴は、対応するシステムにも適用可能であってよく、逆も同様である。
【００２９】
本発明は、システムであって、プロセッサと、前記プロセッサによる実行の結果として前記システムに本願明細書に記載のコンピュータにより実施される方法の任意の実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【００３０】
本発明は、実行可能命令を格納した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに本願明細書に記載のコンピュータにより実施される方法の実施形態を少なくとも実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【００３１】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【００３２】
【図１】従来知られているような、何からの暗号通貨の所有権の制御を移転するために、トランザクションがブロックチェーン上でどのように一緒にチェーンできるかを示す。
【図２】本発明の一実施形態による使用に適する、及び説明のための使用例と関連する、制御トランザクションを示す。
【図３】ブロックチェーンに関連付けられた例示的なネットワークを示す。
【発明を実施するための形態】
【００３３】
本発明は、ブロックチェーンの関連付けられたプロトコルのスクリプト言語が高レベル演算のような固有のオペコードを提供しない又はそれらが無効にされているときでも、ブロックチェーンスクリプトの中で高レベル演算の機能を実装する改良されたメカニズムを提供する。本発明は、言語の既存の低レベルオペコードの選択を利用し、それらを新規な方法で結合して、所望の機能を達成する。プリミティブオペコードの選択された結合は、所望の高レベル機能を提供するために選択され及び／又は構成される。選択された固有のオペコードの結合は、便宜上及び参照を容易にするために、「高レベル演算子」と呼ばれてよい。したがって、用語「高レベル」は、演算が、望ましくはスクリプト言語に固有であるより基礎的若しくは基本的演算に分解できることを意味するために使用されてよい。複数のオペコード又はオペコードのチャンク（chunk）は、参照、使用若しくは援用を容易にするために、ラベル又は識別子に関連付けられてよい。
【００３４】
高レベル演算子を構成するコード部分は、予め定められ又は予め選択されてよい。この文脈における「予め」は、コード部分が最終的に置かれる最終使用又は用途の前であることを意味してよい。追加又は代替として、これは、実行又は実行時間の前を意味してよい。コード部分（又は「チャンク（chuck）」）は、不揮発性メモリのようなコンピュータに基づくリソースに格納される。スクリプトが所与の目的のために必要とされるとき、格納されたオペコードは、アクセスされ、コピーされ、実行時間において所望の制御及び機能を提供するために１つ以上の選択された位置でスクリプトに挿入されることが可能である。高レベル演算子が挿入されたスクリプトは、記憶装置からアクセスされるテンプレートであってよい。したがって、機能的に複雑なブロックチェーントランザクションが、便利に且つ即座に生成でき、プログラミング時間、努力を節約し、コーディングエラーの可能性を低減する。エラーの可能性を低減することにより、本発明は、ブロックチェーントランザクションのために使用されるコードの品質を保証するメカニズムを提供する。これは、また、実行のときに、スクリプト（したがってトランザクション）の失敗数を低減する。この意味で、本発明は、ブロックチェーン上でトランザクションを実行し及びあるトランザクションのアウトプットを介して第２トランザクションのインプットへと、あるパーティから別のパーティへの移転を実行する、より効率的且つエラーの低減されたソリューションを提供する。
【００３５】
実行のとき、１つ以上の信号又はインプットをソースから受信でき、インプットは、高レベル演算子がスクリプト内で使用される回数に影響を与え又はそれを制御するために使用できる。特定の実施形態では、インプットはセンサから受信される。したがって、スクリプトは、何らかの外部又は環境因子に応答して結果が計算されるように、生成され得る。
【００３６】
別の利点は、既存スクリプト言語の設計、実装、又は展開が何らか補正又は変更される必要がないことである。無効な又は実装されないプリミティブ演算子の機能は、容易に且つ混乱なく、その現在の形式でブロックチェーンプロトコルに提供可能である。
【００３７】
以後、私達は、高レベルの乗算及び除算演算子のエミュレーションを可能にする本発明の実施形態によるソリューションを提示する。これらの実施形態は、演算子の所望の機能及び動作を提供する、Scriptに基づく演算シーケンスを含む。この演算子は、ブロックチェーンにより実装されるプログラムがどのように実行するかを制御するメカニズムを提供する。これらのプログラムがブロックチェーントランザクション（Tx）のインプット及びアウトプットに埋め込まれるとき、それらは、したがって、トランザクションがどのように実行されるか、したがってパーティからパーティへ暗号通貨の所有権の制御を移転するか、に影響を与え及びそれを制御するメカニズムを提供する。
【００３８】
＜例：乗算＞
本実施形態では、私達は、ブロックチェーンスクリプトの中の乗算のためのメカニズムを提供する。これは、乗算が、X及びYを掛け算したい値とするという知識を利用する。Script言語のシンタックスで記述すると、乗算演算子は以下の通りである。
【数１】
2020526810.tif 000003
【００３９】
上記を実行した結果は、積がAltスタックに残されることである。
【数２】
2020526810.tif 000004
【００４０】
上述のコードでは、開始セグメントの目的は、より少ない加算しか実行する必要がないことを保証するために、必要に応じてオペランドを交換することである。例えば、２×３がより少ない加算しか必要しなくなるよう、３×２になる。これは、労力を削減し、時間及び計算量の観点でコード全体をより効率的にする。「交換（スワップ、swap）」セグメントは次の通りである。
【数３】
2020526810.tif 000005
【００４１】
以下のコードの目的は、カウンタメカニズムを提供することである。
【数４】
2020526810.tif 000006
【００４２】
カウンタの値は、加算が実行される回数を制御するために使用できる。
【００４３】
上述の例では、点線の枠内に示されたコードは、加算を実行するためのコードである。加算は、後続の点線の枠内に示されるように繰り返される。簡単のため及び読み易さのために内容は繰り返されない。加算コードの最後にあるOP_EQUAL演算は、加算が十分な回数だけ実行されたか否かを調べるために使用される。
【００４４】
二重線の枠内に示されたコードは、スタックの「一掃（cleaning  up）」及び結果を返す役割を実行する。
【００４５】
＜動作例：乗算＞
本技術を更に説明するために、私達は、以下に２つのオペランド、２及び３を用いる作業例を提供する。以下の例では、主スタック及びAltスタックの状態が示される。左の列は主スタックであり、右の列はAltスタックである。
【数５】
2020526810.tif 000007
【００４６】
これは、スタックの状態を以下の通りにする（注：簡単及び明確にするために、重複はここに示されない）。
【数６】
2020526810.tif 000008
【００４７】
次に、一番上のスタックアイテムが偽であるならば、以下を用いてコードの「本体（body）」を実行する。
【数７】
2020526810.tif 000009
【００４８】
OP_ROT演算の使用は、上位３個のアイテムを左に回転させる。
【数８】
2020526810.tif 000010
【００４９】
＜例：除算＞
この第２の例では、私達は、除算が減算を繰り返すことにより実行できるという知識を用いて、乗算の代わりに除算を実施する。私達は、除算演算子の動作をエミュレートする、Scriptに基づく演算シーケンスを提供する。X及びYを、除算したい値とする。Script言語のシンタックスで記述すると、除算演算子は以下の通りである。
【数９】
2020526810.tif 000011
【００５０】
上記のアウトプットは、Altスタックの左の通りである。
【数１０】
2020526810.tif 000012
【００５１】
＜動作例：除算＞
この動作例で、私達は１１を３で除算する。
【数１１】
2020526810.tif 000013
【００５２】
＜第２動作例：除算＞
この第２動作例では、私達は、ソリューションがゼロによる除算をどのように扱うかを示す。ゼロによる除算は、有限機械には無限を表現する能力がないので、計算実装においてコーディングエラーの原因になり得る。本例では、私達は、０による３の除算を通じて進める。
【数１２】
2020526810.tif 000014
【００５３】
＜第３動作例：除算＞
第３動作例では、私達は、３による０の除算を通じて進める。
【数１３】
2020526810.tif 000015
【００５４】
＜説明のための使用例ブロックチェーンにより実装される制御システム＞
本発明は、プロトコルの言語が目的の低レベルオペコードを含まないときでも、ブロックチェーンスクリプトの中で高レベル演算を実装する技術を提供する。これは、ブロックチェーンプラットフォーム上でソリューションを実装するための非常に多様な構成を提供する。
【００５５】
これを説明するために、私達は、ここで、他の装置の動作を調整するために、複数のインプットを結合するシステムを提示する。一例として、私達は、以下のインプットを提供する２個のセンサを想定する。
(i)船内のタンクコンテナの数n、
(ii)コンテナの重さw、コンテナの重さwは正確に同じであると仮定する。
【００５６】
装置は、この単純な例では貨物船であり、以下の２つの状態を有し得る。
(i)貨物船が埠頭に滞在している（state１）、
(ii)貨物船が港を出る（state２）。最初に、システムはstate１にある。
【００５７】
私達は、閾条件Wtを定める。貨物船で運ばれる全体の重さWは、その動作を制御する。
【００５８】
・W>Wtならば、システムはstate２である。
【００５９】
図２は、ブロックチェーンに提出される制御トランザクション（Tx）を示す。オペコードPro_MULTは、上述の高レベル算術演算（X）を表す。センサは、値n及びwをアンロックスクリプトに提供する。ロックスクリプトに提示される必要のある対応するアンロックスクリプトは、したがって以下の通りである。
【数１４】
2020526810.tif 000016
【００６０】
＜ブロックチェーンネットワーク＞
図３を参照すると、図３は、ブロックチェーンに関連付けられた例示的なネットワークをブロック図形式で示す。該ネットワークは、ここではブロックチェーンネットワーク１００として参照されてよく、本発明の実装のために利用されてよい。ブロックチェーンネットワーク１００は、他の会員からの招待無しに又は承認無しに誰でも参加し得るピアツーピア開放型会員制ネットワークである。ブロックチェーンプロトコルの下でブロックチェーンネットワーク１００が動作し、該ブロックチェーンプロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーンネットワーク１００に参加してよい。このような分散型電子装置は、ノード１０２と呼ばれてよい。ブロックチェーンプロトコルは、例えばBitcoinプロトコル、又は他の暗号通貨であってよい。
【００６１】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む様々な種類であってよい。
【００６２】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実施され、ノード１０２の幾つかは、地理的に離散した位置に置かれてよい。
【００６３】
ノード１０２は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。該トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は、分散台帳であり、各ノード１０２はグローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２により検証される。その結果、グローバル台帳の有効性が維持される。Bitcoinプロトコルを使用することのような、ブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【００６４】
各トランザクションは、標準的に、１つ以上のインプット及び１つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるアドレスであってよい。価値は、次に、未使用トランザクションアウトプット（UTXO）として該アウトプットアドレスに関連付けられる。後続のトランザクションは、次に、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【００６５】
ノード１０２は、ネットワークルーティングからウォレットサービスまで、多数の異なる機能を満たすことができ、ロバスト且つセキュアな分散パブリック台帳を維持する。「フルノード（Full  nodes）」は、ブロックチェーンの完全な最新のコピーを有し、したがって、パブリック台帳上の任意のトランザクション（使用又は未使用）を検証できる。「軽量ノード（Lightweight  nodes）」（又はSPV）は、ブロックチェーンのサブセットを維持し、「簡易支払検証」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダだけをダウンロードする。これらのノードは、したがって、それらのトランザクションを検証するピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、ブロックチェーン上のトランザクションを検証し及び新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを扱う。ノード１０２は、TCP/IP（Transmission  Control  Protocol）のようなコネクション指向プロトコルを用いて互いに通信する。
【００６６】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する（comprising又はcomprises）」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する（comprises）」は「含む（includes）又は構成される（consists  of）」を意味し、「有する（comprising）」は「含む（including）又は構成される（including  of）」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、１つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【図１】
2020526810.tif 000017
【図２】
2020526810.tif 000018
【図３】
2020526810.tif 000019
【国際調査報告】
2020526810.tif 000020
2020526810.tif 000021