(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-12
(45)【発行日】2024-06-20
(54)【発明の名称】ブロックチェーン上で高レベル演算を提供する方法及びシステム
(51)【国際特許分類】
G06F 8/30 20180101AFI20240613BHJP
G06F 8/41 20180101ALI20240613BHJP
【FI】
G06F8/30
G06F8/41 100
【外国語出願】
(21)【出願番号】P 2023012689
(22)【出願日】2023-01-31
(62)【分割の表示】P 2019568221の分割
【原出願日】2018-07-05
【審査請求日】2023-01-31
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】PCT/IB2017/054110
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】IB
(31)【優先権主張番号】PCT/IB2017/054113
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】IB
(31)【優先権主張番号】PCT/IB2017/054114
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】IB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】サヴァナ,ステファヌ
【審査官】小林 秀和
(56)【参考文献】
【文献】国際公開第2017/024071(WO,A1)
【文献】“Solidity Documentation Release 0.4.3-develop”,[online],2017年02月13日,p.34~p.45,[検索日 2024.01.15], インターネット <URL: https://buildmedia.readthedocs.org/media/pdf/solidity/v0.4.3/solidity.pdf>
【文献】“sol-unit Unit testing framework for Solidity contracts”,[online],Internet Archive,2016年10月02日,[検索日 2024.01.15], インターネット <URL: https://web.archive.org/web/20161002144418/https://www.npmjs.com/package/sol-unit >
【文献】“A 101 Noob Intro to Programming Smart Contracts on Ethereum”,[online],Internet Archive,2017年01月20日,[検索日 2024.01.15], インターネット <URL: https://web.archive.org/web/20170120083031/https://medium.com/@Consensys/a-101-noob-intro-to-programming-smart-contracts-on-ethereum-695d15c1dab4 >
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30
G06F 8/41
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、
複数のブロックチェーンプリミティブを格納するステップであって、前記ブロックチェーンプリミティブは、高レベルスクリプト言語演算子の機能を実行するために配置され及び/又は選択されたものである、ステップと、
記憶装置から前記複数のプリミティブを読み出すステップと、
前記複数のプリミティブをブロックチェーントランザクションの中のスクリプトに挿入するステップ
であって、前記複数のブロックチェーンプリミティブが前記スクリプトに挿入される回数は、センサから受信されたインプット又は信号により制御される、ステップと、
を含む方法。
【請求項2】
前記方法は、前記トランザクションを評価し及び/又は該トランザクションをブロックチェーンネットワークに提出するステップを含む請求項1に記載の方法。
【請求項3】
前記方法は、前記トランザクションを実行するステップを含む請求項2に記載の方法。
【請求項4】
前記複数のブロックチェーンプリミティブの各々は、スクリプト言語のワード又は命令セットから選択される、請求項1~3のいずれかに記載の方法。
【請求項5】
前記ブロックチェーンプリミティブは、前記スクリプト言語に固有である、請求項4に記載の方法。
【請求項6】
前記スクリプト言語は機能的に制約されている、請求項4又5に記載の方法。
【請求項7】
コンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、実行されると、プロセッサを、請求項1~6のいずれか一項に記載の方法を実行するよう構成する、コンピュータ可読記憶媒体。
【請求項8】
電子装置であって、
インタフェース装置と、
前記インタフェース装置に結合されたプロセッサと、
前記プロセッサに結合されたメモリであって、前記メモリはコンピュータ実行可能命令を格納し、前記コンピュータ実行可能命令は、実行されると、前記プロセッサを、請求項1~6のいずれか一項に記載の方法を実行するよう構成する、メモリと、
を含む電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、分散台帳技術に関し、特に、Bitcoinブロックチェーン又は任意の他のブロックチェーン/暗号通貨プロトコルの変形のようなブロックチェーン技術に関する。本発明は、限定ではなく、ブロックチェーントランザクション(Tx)内のスクリプトが実行のために構成される方法を制御する際に、したがって、デジタルリソースの制御若しくは所有権がブロックチェーンネットワークを介して移転される方法を制御する際に、使用されることに適する。
【背景技術】
【0002】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳技術を含むよう使用される。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、サイドチェーン、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はBitcoin台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はBitcoinのブロックチェーンの変形と共に使用することに限定されず、代替ブロックチェーン実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピア電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに組み込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、Scriptと呼ばれるスタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)トランザクションを受信した第1ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ii)マイナーにより構築された新しいブロックに追加し、iii)マイニングされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、Bitcoinの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利であり、したがってブロックチェーンに実装される技術の適用性を広げる。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点(例えば、永久的、イベントの耐タンパレコード、分散プロセス、等)を利用できる。
【0006】
しかしながら、このような技術の機能を向上するために、現在存在する幾つかの技術的制限を解決する必要がある。1つ以上のBitcoinプロトコルでは、例えば、プログラマのプログラムがScriptで記述されるとき、特定の演算子はプログラマに利用可能でなくてよい。セキュリティ関連の懸念事項は、プロトコルの元のバージョンの中で提供されたScriptオペコードの幾つかを、Bitcoinコミュニティにより無効にさせてしまう。これらは、乗算及び除算のような特定の算術演算を実行するための演算子を含む。したがって、現在、幾つかのプロトコルでは、Script内のこのような演算を実行する固有のメカニズムが存在せず、これは、スクリプトコードが現在達成できることに制約をもたらす。無効なオペコードを含むスクリプトは、失敗し異常終了するだろう。これは、基礎にあるブロックチェーンプロトコル等に実装される技術の機能に制限をもたらす。所望の実装が基礎にあるプロトコル内で提供されない機能を使用する必要のあるときに生じる技術的課題が存在する。プロトコルの変更は、常に望ましく又は実現可能ではない場合がある。一方で、このようなブロックチェーンプラットフォームは機能的に制約されたままである。
【0007】
したがって、ブロックチェーンスクリプト言語のセキュリティ及び完全性を保ちたいという要望をそのままに、スクリプトプログラマにより大きなプログラミング能力を与え並びに言語の多様性、可用性及び適用性を向上する、ソリューションを提供する必要もある。このようなソリューションは、改良されたブロックチェーンネットワークを提供し得る。これから、限定ではなく、以下を含む多数の利益が導かれ得る。
【0008】
・複雑なブロックチェーンに関連する移転の自動化を可能にする、
・ブロックチェーンに記録されるメタデータストリームを制御する、
・ブロックチェーンに実装される技術の機能及び用途を拡張する。
【0009】
このようなソリューションの一例がここに提供される。
【発明の概要】
【0010】
本発明によると、添付の請求の範囲に定められるようなシステム及び/又は方法が提供される。
【0011】
本発明の実施形態は、ブロックチェーンにより実装される方法/システムを提供し得る。本発明は、制御方法/システムであってよい。これは、ブロックチェーントランザクション(Tx)に埋め込まれるスクリプトの実行を及び/又はアウトプットがアンロックされるか否かを制御するよう、及び/又はトランザクションによりあるエンティティから別のエンティティへのリソースの移転を制御するよう、構成されてよい。
【0012】
ブロックチェーンは、プロトコル及びスクリプト言語に関連付けられてよい。スクリプト言語は、スタックに基づく言語であってよい。スクリプト言語は、スクリプト言語がループ及び/又はジャンプ反復のような複雑な制御フローメカニズムを許可しないという意味で、機能的に制約されてよい。これは、Bitcoinスクリプト言語、Script、又は代替のものであってよい。
【0013】
本発明の実施形態は、ブロックチェーンスクリプトの中で演算の機能をエミュレートする又は実装するメカニズムを提供し得る。演算は、ブロックチェーンプロトコルに関連付けられたスクリプト言語により本来サポートされない演算であってよい。これは無効な演算であってよい。これは、高レベル演算と呼ばれてよい。これは、ブロックチェーンスクリプト言語のワードセット(オペコード、コマンド、命令、又は関数)に対して、高レベルであってよい。高レベル演算は、固有のプリミティブ演算又は言語本来のオペコードから除去されたレベル抽象化で機能する演算であってよい。高レベル演算は、乗算及び除算のような算術演算であってよい。このことの利点は、本発明が、この機能を便利な方法で組み込むスクリプトを記述するために使用可能であり、スクリプト言語又はブロックチェーンプロトコルを変更する必要がないことである。したがって、本発明は、改良されたブロックチェーンシステムを提供し、より機能的に複雑な、より機能的に多様なアプリケーションをブロックチェーン上で実行可能にし、及びアプリケーションのプログラミングをエラーの低減と共により容易に且つ迅速に達成可能にする。したがって、結果として、より多様な、機能的に強力且つ有用なブロックチェーンをもたらす。一方で、本発明は、より多くのブロックチェーンにより実装される技術を構築可能にする。
【0014】
追加又は代替として、当該方法は、実行されると高レベルスクリプト言語プリミティブの機能を提供するよう、複数の(ブロックチェーン)スクリプト言語プリミティブを構成するステップであって、前記のスクリプト言語は、ブロックチェーンプロトコルに関連付けられてよい、ステップと、前記複数のスクリプト言語プリミティブを少なくとも1回、スクリプトに挿入するステップと、及び/又は、前記スクリプトをブロックチェーントランザクション(Tx)に挿入するステップと、を含んでよい。
【0015】
追加又は代替として、本発明による方法は、高レベルスクリプト言語演算子の機能を実行するために構成され及び/又は選択された複数のブロックチェーンオペコード(プリミティブ)を格納するステップと、前記複数のオペコードを記憶装置から読み出すステップと、前記複数のオペコードをブロックチェーントランザクションの中のスクリプトに挿入するステップと、を含んでよい。
【0016】
前記複数のオペコードは「チャンク」として記載されてよい。
【0017】
当該方法は、トランザクションを評価し及び/又は該トランザクションをブロックチェーンネットワークに提出するステップを含んでよい。当該方法は、前記トランザクションを実行するステップを含んでよい。
【0018】
前記複数のスクリプト言語プリミティブの各々は、ワード、コマンド、又は関数としても知られ得る。これらは、「高レベルプリミティブ」と呼ばれてよい。便宜上、用語「オペコード」は、「スクリプト言語プリミティブ」のために使用される。複数のオペコードのうちの1つ、一部又は全部は、スクリプト言語のワード若しくは命令セットから選択されてよい。それらは、スクリプト言語に固有であってよい。
【0019】
高レベルスクリプト言語プリミティブは、構成されたオペコードのグループ又は選択であってよい。それらは、所望の抽象化された機能を提供するために意図的に構成されてよい。これは、参照を容易にするために、「高レベルプリミティブ」として参照されてよい。高レベルプリミティブは、算術演算又はデータコピー、論理若しくはプログラム(フロー)制御演算を実行してよい。これは、コンピュータのスタック上のメモリに残される結果を生成してよい。高レベルプリミティブは、言語の固有のワードセットに含まれない又は無効にされているオペコードの機能をエミュレート又は提供してよい。高レベルプリミティブは、言語に固有の及び/又は機能的により単純な演算を実行するより多くの基本的又は基礎的演算に分解できるという意味で「高レベル」であってよい。高レベルプリミティブは、オペコードより一層抽象化されたレベルであるが、単一の演算を実行し又は結果を生成するために構成されてよい。
【0020】
スクリプト言語はScript言語であってよい。ブロックチェーンプロトコルは、Bitcoinプロトコルであってよい。しかしながら、他の言語及びプロトコルが、本発明の範囲内に包含されてよい。スクリプト言語は機能的に制約されてよい。用語「チューリング不完全(non-Turing complete)」は、本願明細書では、用語「機能的に制約された」と同義的に使用されることがある。言語は、言語がループ及び/又はジャンプ反復のような1つ以上の制御フローメカニズムを元々サポートしないという意味で、機能的に制約されてよい。
【0021】
当該方法は、前記複数のスクリプト言語プリミティブのうちの1つ、一部、又は全部を、前記スクリプト言語のワードセット又は命令セットから、選択するステップを更に含んでよい。
【0022】
当該方法は、コンピュータに基づく記憶リソースに前記複数のスクリプト言語プリミティブを保存する及び/又は格納するステップ、を更に含んでよい。これは、不揮発性コンピュータメモリであってよい。当該方法は、前記複数のスクリプト言語プリミティブを前記スクリプトに挿入する前に、コンピュータに基づく記憶リソースから前記複数のスクリプト言語プリミティブを読み出すステップ、を更に含んでよい。
【0023】
前記スクリプトは、アンロックスクリプト、ロックスクリプト、又はRedeemスクリプトであってよい。
【0024】
スクリプトは、ブロックチェーントランザクションのインプット又はアウトプットに関連付けられてブロックチェーントランザクション(Tx)に挿入される。
【0025】
当該方法は、ソースからインプット又は信号を受信し、前記インプット又は信号を使用して、前記複数のスクリプト言語プリミティブがスクリプトに挿入される回数を制御するステップ、を更に含んでよい。
【0026】
当該方法は、前記トランザクションをブロックチェーンネットワークへ提出するステップを更に含んでよい。
【0027】
前記複数のスクリプト言語プリミティブは、テンプレートスクリプト及び/又はテンプレートトランザクション(Tx)に挿入される。前記テンプレートは、前記スクリプト/トランザクションの不完全バージョンであってよい。
【0028】
本発明は、コンピュータにより実装されるシステムも提供する。当該システムは、上述の方法の任意の実施形態を実行するよう構成されてよい。本発明のある1つ以上の態様に関連して記載された任意の特徴は、任意の他の態様に適用可能であってよい。方法に関連して記載された任意の特徴は、対応するシステムにも適用可能であってよく、逆も同様である。
【0029】
本発明は、システムであって、プロセッサと、前記プロセッサによる実行の結果として前記システムに本願明細書に記載のコンピュータにより実施される方法の任意の実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【0030】
本発明は、実行可能命令を格納した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに本願明細書に記載のコンピュータにより実施される方法の実施形態を少なくとも実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【0031】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【0032】
【
図1】従来知られているような、何からの暗号通貨の所有権の制御を移転するために、トランザクションがブロックチェーン上でどのように一緒にチェーンできるかを示す。
【
図2】本発明の一実施形態による使用に適する、及び説明のための使用例と関連する、制御トランザクションを示す。
【
図3】ブロックチェーンに関連付けられた例示的なネットワークを示す。
【発明を実施するための形態】
【0033】
本発明は、ブロックチェーンの関連付けられたプロトコルのスクリプト言語が高レベル演算のような固有のオペコードを提供しない又はそれらが無効にされているときでも、ブロックチェーンスクリプトの中で高レベル演算の機能を実装する改良されたメカニズムを提供する。本発明は、言語の既存の低レベルオペコードの選択を利用し、それらを新規な方法で結合して、所望の機能を達成する。プリミティブオペコードの選択された結合は、所望の高レベル機能を提供するために選択され及び/又は構成される。選択された固有のオペコードの結合は、便宜上及び参照を容易にするために、「高レベル演算子」と呼ばれてよい。したがって、用語「高レベル」は、演算が、望ましくはスクリプト言語に固有であるより基礎的若しくは基本的演算に分解できることを意味するために使用されてよい。複数のオペコード又はオペコードのチャンク(chunk)は、参照、使用若しくは援用を容易にするために、ラベル又は識別子に関連付けられてよい。
【0034】
高レベル演算子を構成するコード部分は、予め定められ又は予め選択されてよい。この文脈における「予め」は、コード部分が最終的に置かれる最終使用又は用途の前であることを意味してよい。追加又は代替として、これは、実行又は実行時間の前を意味してよい。コード部分(又は「チャンク(chuck)」)は、不揮発性メモリのようなコンピュータに基づくリソースに格納される。スクリプトが所与の目的のために必要とされるとき、格納されたオペコードは、アクセスされ、コピーされ、実行時間において所望の制御及び機能を提供するために1つ以上の選択された位置でスクリプトに挿入されることが可能である。高レベル演算子が挿入されたスクリプトは、記憶装置からアクセスされるテンプレートであってよい。したがって、機能的に複雑なブロックチェーントランザクションが、便利に且つ即座に生成でき、プログラミング時間、努力を節約し、コーディングエラーの可能性を低減する。エラーの可能性を低減することにより、本発明は、ブロックチェーントランザクションのために使用されるコードの品質を保証するメカニズムを提供する。これは、また、実行のときに、スクリプト(したがってトランザクション)の失敗数を低減する。この意味で、本発明は、ブロックチェーン上でトランザクションを実行し及びあるトランザクションのアウトプットを介して第2トランザクションのインプットへと、あるパーティから別のパーティへの移転を実行する、より効率的且つエラーの低減されたソリューションを提供する。
【0035】
実行のとき、1つ以上の信号又はインプットをソースから受信でき、インプットは、高レベル演算子がスクリプト内で使用される回数に影響を与え又はそれを制御するために使用できる。特定の実施形態では、インプットはセンサから受信される。したがって、スクリプトは、何らかの外部又は環境因子に応答して結果が計算されるように、生成され得る。
【0036】
別の利点は、既存スクリプト言語の設計、実装、又は展開が何らか補正又は変更される必要がないことである。無効な又は実装されないプリミティブ演算子の機能は、容易に且つ混乱なく、その現在の形式でブロックチェーンプロトコルに提供可能である。
【0037】
以後、私達は、高レベルの乗算及び除算演算子のエミュレーションを可能にする本発明の実施形態によるソリューションを提示する。これらの実施形態は、演算子の所望の機能及び動作を提供する、Scriptに基づく演算シーケンスを含む。この演算子は、ブロックチェーンにより実装されるプログラムがどのように実行するかを制御するメカニズムを提供する。これらのプログラムがブロックチェーントランザクション(Tx)のインプット及びアウトプットに埋め込まれるとき、それらは、したがって、トランザクションがどのように実行されるか、したがってパーティからパーティへ暗号通貨の所有権の制御を移転するか、に影響を与え及びそれを制御するメカニズムを提供する。
【0038】
<例:乗算>
本実施形態では、私達は、ブロックチェーンスクリプトの中の乗算のためのメカニズムを提供する。これは、乗算が、X及びYを掛け算したい値とするという知識を利用する。Script言語のシンタックスで記述すると、乗算演算子は以下の通りである。
【数1】
【0039】
上記を実行した結果は、積がAltスタックに残されることである。
【数2】
【0040】
上述のコードでは、開始セグメントの目的は、より少ない加算しか実行する必要がないことを保証するために、必要に応じてオペランドを交換することである。例えば、2×3がより少ない加算しか必要しなくなるよう、3×2になる。これは、労力を削減し、時間及び計算量の観点でコード全体をより効率的にする。「交換(スワップ、swap)」セグメントは次の通りである。
【数3】
【0041】
以下のコードの目的は、カウンタメカニズムを提供することである。
【数4】
【0042】
カウンタの値は、加算が実行される回数を制御するために使用できる。
【0043】
上述の例では、点線の枠内に示されたコードは、加算を実行するためのコードである。加算は、後続の点線の枠内に示されるように繰り返される。簡単のため及び読み易さのために内容は繰り返されない。加算コードの最後にあるOP_EQUAL演算は、加算が十分な回数だけ実行されたか否かを調べるために使用される。
【0044】
二重線の枠内に示されたコードは、スタックの「一掃(cleaning up)」及び結果を返す役割を実行する。
【0045】
<動作例:乗算>
本技術を更に説明するために、私達は、以下に2つのオペランド、2及び3を用いる作業例を提供する。以下の例では、主スタック及びAltスタックの状態が示される。左の列は主スタックであり、右の列はAltスタックである。
【数5】
【0046】
これは、スタックの状態を以下の通りにする(注:簡単及び明確にするために、重複はここに示されない)。
【数6】
【0047】
次に、一番上のスタックアイテムが偽であるならば、以下を用いてコードの「本体(body)」を実行する。
【数7】
【0048】
OP_ROT演算の使用は、上位3個のアイテムを左に回転させる。
【数8】
【0049】
<例:除算>
この第2の例では、私達は、除算が減算を繰り返すことにより実行できるという知識を用いて、乗算の代わりに除算を実施する。私達は、除算演算子の動作をエミュレートする、Scriptに基づく演算シーケンスを提供する。X及びYを、除算したい値とする。Script言語のシンタックスで記述すると、除算演算子は以下の通りである。
【数9】
【0050】
上記のアウトプットは、Altスタックの左の通りである。
【数10】
【0051】
<動作例:除算>
この動作例で、私達は11を3で除算する。
【数11】
【0052】
<第2動作例:除算>
この第2動作例では、私達は、ソリューションがゼロによる除算をどのように扱うかを示す。ゼロによる除算は、有限機械には無限を表現する能力がないので、計算実装においてコーディングエラーの原因になり得る。本例では、私達は、0による3の除算を通じて進める。
【数12】
【0053】
<第3動作例:除算>
第3動作例では、私達は、3による0の除算を通じて進める。
【数13】
【0054】
<説明のための使用例ブロックチェーンにより実装される制御システム>
本発明は、プロトコルの言語が目的の低レベルオペコードを含まないときでも、ブロックチェーンスクリプトの中で高レベル演算を実装する技術を提供する。これは、ブロックチェーンプラットフォーム上でソリューションを実装するための非常に多様な構成を提供する。
【0055】
これを説明するために、私達は、ここで、他の装置の動作を調整するために、複数のインプットを結合するシステムを提示する。一例として、私達は、以下のインプットを提供する2個のセンサを想定する。
(i)船内のタンクコンテナの数n、
(ii)コンテナの重さw、コンテナの重さwは正確に同じであると仮定する。
【0056】
装置は、この単純な例では貨物船であり、以下の2つの状態を有し得る。
(i)貨物船が埠頭に滞在している(state1)、
(ii)貨物船が港を出る(state2)。最初に、システムはstate1にある。
【0057】
私達は、閾条件Wtを定める。貨物船で運ばれる全体の重さWは、その動作を制御する。
【0058】
・W>Wtならば、システムはstate2である。
【0059】
図2は、ブロックチェーンに提出される制御トランザクション(Tx)を示す。オペコードPro_MULTは、上述の高レベル算術演算(X)を表す。センサは、値n及びwをアンロックスクリプトに提供する。ロックスクリプトに提示される必要のある対応するアンロックスクリプトは、したがって以下の通りである。
【数14】
【0060】
<ブロックチェーンネットワーク>
図3を参照すると、
図3は、ブロックチェーンに関連付けられた例示的なネットワークをブロック図形式で示す。該ネットワークは、ここではブロックチェーンネットワーク100として参照されてよく、本発明の実装のために利用されてよい。ブロックチェーンネットワーク100は、他の会員からの招待無しに又は承認無しに誰でも参加し得るピアツーピア開放型会員制ネットワークである。ブロックチェーンプロトコルの下でブロックチェーンネットワーク100が動作し、該ブロックチェーンプロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーンネットワーク100に参加してよい。このような分散型電子装置は、ノード102と呼ばれてよい。ブロックチェーンプロトコルは、例えばBitcoinプロトコル、又は他の暗号通貨であってよい。
【0061】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子装置は、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む様々な種類であってよい。
【0062】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク100は、少なくとも部分的にインターネット上で実施され、ノード102の幾つかは、地理的に離散した位置に置かれてよい。
【0063】
ノード102は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。該トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は、分散台帳であり、各ノード102はグローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード102によるトランザクションは、他のノード102により検証される。その結果、グローバル台帳の有効性が維持される。Bitcoinプロトコルを使用することのような、ブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【0064】
各トランザクションは、標準的に、1つ以上のインプット及び1つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるアドレスであってよい。価値は、次に、未使用トランザクションアウトプット(UTXO)として該アウトプットアドレスに関連付けられる。後続のトランザクションは、次に、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【0065】
ノード102は、ネットワークルーティングからウォレットサービスまで、多数の異なる機能を満たすことができ、ロバスト且つセキュアな分散パブリック台帳を維持する。「フルノード(Full nodes)」は、ブロックチェーンの完全な最新のコピーを有し、したがって、パブリック台帳上の任意のトランザクション(使用又は未使用)を検証できる。「軽量ノード(Lightweight nodes)」(又はSPV)は、ブロックチェーンのサブセットを維持し、「簡易支払検証」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダだけをダウンロードする。これらのノードは、したがって、それらのトランザクションを検証するピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、ブロックチェーン上のトランザクションを検証し及び新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを扱う。ノード102は、TCP/IP(Transmission Control Protocol)のようなコネクション指向プロトコルを用いて互いに通信する。
【0066】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【符号の説明】
【0067】
100 ブロックチェーンネットワーク
102 ノード