(57)【要約】  本発明は、ブロックチェーントランザクション（Tx）を生成するためのコンピュータにより実施される方法（及び対応するシステム）を提供する。これは、Bitcoinブロックチェーン又は別のブロックチェーンプロトコルのためのトランザクションであってよい。当該方法は、ソフトウェアリソースを用いて、少なくとも１つのデータアイテムを受信し、生成し、又は導出し、次に、少なくとも１つのコード部分を、前記トランザクションに関連付けられたスクリプトに少なくとも１回挿入するステップを含む。前記スクリプトが実行されると、前記コード部分は、制御フローメカニズムの機能を提供し、制御フローメカニズムの動作は、前記少なくとも１つのデータアイテムにより制御され又は影響される。一実施形態では、コードは、１回より多く、前記スクリプトにコピーされ／挿入される。前記制御フローメカニズムは、while又はforループのようなループ、又はswitch文のような選択制御メカニズムであり得る。したがって、本発明は、より複雑なブロックチェーンスクリプトの生成を可能にし、スクリプトがブロックチェーン上で実施されたときどのように実行するかを制御する。これはまた、ブロックチェーントランザクションのアウトプットがどのように又はいつアンロックされるかに対する制御を提供する。
2020526811.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
少なくとも１つのデータアイテムを受信し、生成し、又は導出するステップと、
少なくとも１つのコード部分を少なくとも１回、ブロックチェーントランザクションに関連付けられたスクリプトに挿入するステップであって、その結果、前記スクリプトが実行されると、制御フローメカニズムの機能を提供し、前記制御フローメカニズムの動作は、前記少なくとも１つのデータアイテムにより制御され又は影響される、ステップと、
を含む方法。
【請求項２】
前記スクリプトは、前記ブロックチェーントランザクションのインプット又はアウトプットに関連付けられる、請求項１に記載の方法。
【請求項３】
前記トランザクションは、ブロックチェーンプロトコルに従い又はブロックチェーンプロトコルと共に使用するために生成される、請求項１又は２に記載の方法。
【請求項４】
前記プロトコルはBitcoinプロトコル又はBitcoinプロトコルの変形である、請求項３に記載の方法。
【請求項５】
前記少なくとも１つのコード部分を前記スクリプトに１回より多く、及び／又は前記スクリプト内の１つより多くの位置に挿入する及び／又はコピーするステップ、を含む請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記少なくとも１つのデータアイテムを用いて、前記少なくとも１つのコード部分が前記スクリプトに何回挿入／コピーされたかを決定するステップ、を含む請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記制御フローメカニズムは、forループのようなループ、又はswitch文のような選択制御メカニズムである、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記少なくとも１つのデータアイテムは、高レベル言語（HLL）からのコードをブロックチェーントランザクションスクリプトに変換するよう構成されるコンパイラから導出される、請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記コード部分は、前記スクリプトの実行により少なくとも１回インクリメントされるカウンタ又はインデックスを含み、前記カウンタ又はインデックスは前記スクリプトの前記実行を制御し又は影響を与えるために使用される、請求項１乃至８のいずれかに記載の方法。
【請求項１０】
前記カウンタ又はインデックスは、２つのスタックに基づくデータ構造に格納された及び／又は該データ構造から読み出された値を用いてインクリメントされ又は操作される、請求項９に記載の方法。
【請求項１１】
前記スクリプトは機能的に制約された言語で記述される、請求項１乃至１０のいずれかに記載の方法。
【請求項１２】
請求項１乃至１１のいずれかに記載の方法を実施するよう構成されたコンピュータにより実装されるシステム。
【請求項１３】
実行されると、請求項１乃至１１のいずれか一項に記載の方法を実行するようプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
【請求項１４】
電子装置であって、
インタフェース装置と、
前記インタフェース装置に結合されたプロセッサと、
前記プロセッサに結合されたメモリであって、前記メモリは、実行されると、請求項１乃至１１のいずれか一項に記載の方法を実行するよう前記プロセッサを構成するコンピュータ実行可能命令を格納している、メモリと、
を含む電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ブロックチェーン技術に関し、特に、ブロックチェーンを介して複雑な機能を実施することに関する。有利なことに、本発明は、ブロックチェーントランザクションに、通常は制御フロー構造により提供される機能を含めることを可能にするメカニズムを提供する。したがって、本発明は、ブロックチェーンスクリプト、したがってブロックチェーンプロトコル自体の、能力及び機能を拡張し、基礎にある既存のプロトコルを変更する必要がない。本発明に従い生成されるトランザクションは、コンピュータにより実施されるプロセスの活動を有効にし、影響を与え、及び指示する制御メカニズムとして使用可能である。本発明は、限定ではないが、自動処理の実装及び制御に適する。
【背景技術】
【０００２】
本願明細書では、ブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含むがこれらに限定されない、総意に基づく電子、コンピュータに基づく分散型台帳の全ての形式を包含するために、用語「ブロックチェーン」を使用する。最も広く知られているブロックチェーン技術の用途はBitcoin台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される総意に基づく電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに組み込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード（マイナー）は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション（UTXO）に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ｉｉ）マイナーにより構築された新しいブロックに追加し、ｉｉｉ）マイニングされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、Bitcoinの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点（例えば、永久的、イベントの耐タンパレコード、分散プロセス、等）を利用できる。
【発明の概要】
【０００６】
本発明によると、添付の請求の範囲に定められるようなコンピュータにより実装されるシステム及び／又は方法が提供される。
【０００７】
本発明は、コンピュータにより実施される方法を提供し得る。本発明は、ブロックチェーントランザクション（Tx）の生成を有効にし又はそれに適するよう構成される方法として記載され得る。追加又は代替として、本発明は、ブロックチェーントランザクションに関連付けられたアウトプットがアンロック（使用）可能か否かを制御する又はそれに影響を与えるトランザクション（Tx）スクリプトの実行を制御する方法として記載され得る。したがって、本発明は、暗号化処理を制御する又はそれに影響を与える方法である。本発明は、ブロックチェーンネットワークを介してリソースの移転又は交換を制御するとしても記載され得る。本発明は、セキュリティ上の弱点に対する回復力を危険に晒すことなく、チューリング完全機能をブロックチェーンスクリプト内で又はそれにより提供可能にする又は有効にするセキュリティ技術を提供するとしても記載され得る。したがって、本発明は、プロトコルのセキュリティ上の弱点に対するセキュリティ及び保護を保ちながら、より高機能且つ技術的に優れた方法でブロックチェーンネットワークに渡り移転及び交換を実行することが可能なので、改良ブロックチェーンを提供する。
【０００８】
当該方法は、ソフトウェアリソースを用いて、少なくとも１つのデータアイテムを受信し又は生成し又は導出するステップを含んでよい。データアイテムは、「信号」、「値」、「パラメータ」、又は「入力」とも呼ばれてよい。データアイテムは、信号として受信されてよい。これは、オフチェーンソースから受信されてよい。したがって、データアイテムは、コードがスクリプトに何回コピーされ又は挿入されるかを決定するために使用されてよく、スクリプトの外部で決定され及び／又は生成されてよい。これは、計算リソースにより計算結果として生成されてよい。これは、乱数又は疑似乱数生成部の使用により生成されてよい。
【０００９】
本発明は、少なくとも１回、少なくとも１つのコード部分を、ブロックチェーントランザクションに関連付けられた又はそのためのスクリプトに挿入するステップを含んでよい。その結果、スクリプトが実行されると、該スクリプトは、制御フローメカニズムの機能を提供する。コード部分は、予め指定され又は予め記述されてよい。これは、コンピュータに基づくリソースに格納されてよく、スクリプトに挿入される前に記憶装置から読み出されてよい。
【００１０】
スクリプトは、トランザクションの部分を形成する及び／又はトランザクションを用いて移転されるべき暗号通貨の一部をロック／アンロックするために使用できるという点で、トランザクションに関連付けられてよい。
【００１１】
方法は、ブロックチェーントランザクションを生成するステップを含んでよい。当該方法は、前記トランザクションをブロックチェーンネットワークへ提出するステップを含んでよい。当該方法は、トランザクションを用いて、ネットワーク上のあるノード又はパーティから別のノード又はパーティへ、リソース又はリソースの制御を移転するステップを含んでよい。
【００１２】
制御フローメカニズムの動作／実行は、少なくとも１つのデータアイテムにより制御され又は影響されてよい。望ましくは、スクリプトは、少なくとも１つのコード部分の挿入に従うチューリング完全構造（例えば、ループ、再帰的ジャンプ、高レベル制御構造）を含まなくてよい。望ましくは、少なくとも１つのコード部分の少なくとも１回の挿入に従い、スクリプトは、機能的に制約された（チューリング不完全）言語を使用するブロックチェーン上の実行と互換性がある。これは、Bitcoinプロトコル又はその変形を実装するブロックチェーンにより使用されるScript言語であってよい。
【００１３】
スクリプトは、ブロックチェーントランザクションのインプット又はアウトプットに関連付けられてよい。トランザクションは、ブロックチェーンプロトコルに従い生成されてよい。これは、Bitcoinプロトコルであってよい。スクリプトは、Scriptプログラミング言語又は別のスタックに基づくスクリプト言語で記述されてよい。スクリプトは、機能的に制約された（代替として「チューリング不完全」と呼ばれてよい）言語で記述されてよい。言語は、言語がループ及び／又はジャンプ反復のような１つ以上の制御フローメカニズムを元々サポートしないという意味で、機能的に制約されてよい。
【００１４】
当該方法は、前記少なくとも１つのコード部分を前記スクリプトに１回より多く、及び／又は前記スクリプト内の１つより多くの位置に挿入する及び／又はコピーするステップ、を含んでよい。
【００１５】
当該方法は、前記少なくとも１つのデータアイテムを用いて、前記少なくとも１つのコード部分が前記スクリプトに何回挿入／コピーされるかを決定するステップ、を含んでよい。
【００１６】
前記制御フローメカニズムは、for又はwhileループのようなループ、又はswitch／Case文のような選択制御メカニズムであってよい。
【００１７】
前記少なくとも１つのデータアイテムは、高レベル言語（High  Level  Language：HLL）からのコードをブロックチェーントランザクションスクリプトに変換するよう構成されるコンパイラから導出されてよい。
【００１８】
前記コード部分は、前記スクリプトの実行により少なくとも１回インクリメントされるカウンタ又はインデックスを含み、前記カウンタ又はインデックスは前記スクリプトの前記実行を制御し又は影響を与えるために使用されてよい。
【００１９】
前記カウンタ又はインデックスは、２つのスタックに基づくデータ構造に格納された及び／又は該データ構造から読み出された値を用いてインクリメントされ又は操作されてよい。
【００２０】
本発明は、本願明細書に記載の任意の実施形態の方法を実施するよう構成されるコンピュータにより実装されるシステムも提供し得る。方法に関連して記載された任意の態様又は特徴は、対応するシステムにも適用してよい。システムは、少なくとも１つのコンピュータに基づくリソースを含んでよい。当該システムは、１つ以上のブロックチェーンノードを含んでよい。
【００２１】
本発明は、システムであって、プロセッサと、前記プロセッサによる実行の結果として前記システムに本願明細書に記載のコンピュータにより実施される方法の任意の実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【００２２】
本発明は、実行可能命令を格納した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに本願明細書に記載のコンピュータにより実施される方法の実施形態を少なくとも実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【００２３】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【００２４】
【図１】従来知られているような、分散ブロックチェーンネットワークの簡易図を提供する。
【図２】本発明による一実施形態を示すフローチャートを示す。
【図３】本発明に従い使用され得るブロックチェーンに関連付けられた例示的なネットワークを示す。
【発明を実施するための形態】
【００２５】
Bitcoinネットワークは、図１に示されるように、ブロックチェーン実装の一例である。Bitcoinは、Scriptとして知られるスクリプト言語を利用する。Scriptは、比較的簡単なプログラムの生成のための、オペコード（op_code）として知られるプリミティブ演算子又はコマンドのセットを使用するForthのような言語である。Scriptは、プログラム実行中のデータアイテム（変数及び定数）の一時的記憶のために、スタックとして知られるデータ構造を使用する。アイテムは、スタックにプッシュされ、１つが他のアイテムの上に置かれ、逆の順序で取り出される（popped  off）。標準的に、スタックにプッシュされたアイテムは、後に、それらを次の演算のオペランドとして使用するために取り出される。Scriptプログラムが終了するとき、スタックの一番上に残された値は戻り値である。
【００２６】
Forthのような他のスタックに基づく言語で知られているように、更なるスタックにアクセスすることは時に便利である。Scriptでは、この第２スタックはaltスタックとして知られており、第１スタックは主スタックとして知られている。Altスタックは、標準的に、スクリプト実行中にデータを一時的に格納するために使用される。
【００２７】
しかしながら、Forthと対照的に、Scriptは、ループのような複雑な制御フロー文を実行するビルトインシンタックスを特徴としない。制御フロー文は、プログラムが実行する方法に影響し及び指示する（つまり、制御する）ために使用されるプログラミングメカニズムである。実行するときにロジックがどのパスを取るかを決定するために、特定値が使用される。これらの値は、プログラム中にハードコードされ、又はランタイムに動的入力として提供され得る。次に、値は、決定処理において使用され得る（例えば、値b以下の値か？、文字列x＝"Hello  World!"か？）。制御フロー文の例は、whileループ、forループ、及びswitch−case文を含む。
【００２８】
スクリプトのこのようなメカニズムの禁止は、意図的なセキュリティ機能である。つまり、複雑な制御メカニズムは、潜在的に、サービス拒否（Denial−of−Service：DOS又はDDOS）攻撃のようなセキュリティ上の弱点に対して脆弱なブロックチェーンネットワークに委ねる。しかしながら、プログラマは、Scriptコードが記述可能な方法に関して制約されるというトレードオフがある。例えば、ソースコードにループを含めることができない。これは、一部の者にScriptをチューリング不完全であると説明させる（他の者はこの定義に意義を唱えるが）。１つの知られているBitcoinの代替である、Ethereumは、チューリング完全言語をそのプロトコルに固有機能として組み込むことにより、この制約を克服しようと試みた。しかしながら、記述のときに、Ethereumは少なくとも１つの深刻なセキュリティ上の弱点に苦しんだ。
【００２９】
したがって、Scriptのような機能的に制約されたブロックチェーンスクリプト言語により提供されるセキュリティと、ブロックチェーンプラットフォームにより、より複雑な機能を実行したいという要求との間のトレードオフを解決する技術的ソリューションを提供する必要がある。理想的には、これは、例えばソフトウェアリソースによる自動化により符号化処理を促進する方法で達成され得る。
【００３０】
本発明は、少なくともこの問題のためのソリューションを提供し、それにより、複雑な制御フローメカニズムの機能が達成でき、又はブロックチェーン上で機能的に制約されたスクリプト言語を用いて少なくともエミュレートできる機能を可能にする。（Scriptのチューリング完全に関する分野における論争により、私達は、ここで、このような言語を「チューリング不完全」ではなく、「機能的に制約された」として参照することがあるが、用語は同義的に使用されることがある）。私達がここで使用する例は、単に説明を目的とし、forループ及びswitch−case制御シーケンスの両者のエミュレーションを可能にするソリューションを提示する。当業者は、他の種類の制御フローメカニズムが本発明により提供され得ることを理解するだろう。
【００３１】
本発明に従い使用可能な処理は、図２のフローチャートに示される。本発明によると、トランザクション（Tx）スクリプトの中でロジックがどのように制御されるべきかに関して決定が行われる。例えば、これは、反復ごとにループ本体（body）の中で実行されるべき文（ステートメント）又はswitch構成の中のオプション（case）毎に実行されるべきステートメントの事前決定であり得る。これらは、スクリプト／トランザクションの生成の間に、後の読み出しのためにコード部分として格納され得る。
【００３２】
一旦生成され又は受信されると、決定は、次に、ブロックチェーントランザクションのスクリプトのためにコードを生成するために使用される。これは、アンロックスクリプト、Redeemスクリプト、又はアンロックスクリプト言語であり得る。特に、コード部分は、スクリプトに所望の回数だけ、スクリプト内の適切な位置に挿入される。
【００３３】
コード部分は、例えば、ループのインスタンスを実行するコード、又はswitchコマンドシーケンス内のオプションであってよい。コード部分は、必要に応じてスクリプト内で繰り返される。その結果、１つ以上のステートメントが、データアイテムの値及び／又は条件の評価に基づき実行される可能性がある。例えば、if(i<３)  Then  <execute  body  of  loop>、又はif(i==２)  Then  <execute  statement(s)  and  break  out  of  switch>である。
【００３４】
スクリプトコードの生成は手動で実行できる。しかしながら、本発明の好適な実施形態では、コード（及びトランザクション全体）は、自動処理により、つまりプロセッサ上で実行する適切に構成されたソフトウェアリソース又はエージェントにより生成される。
【００３５】
このような実施形態では、ソフトウェアエージェントは、データアイテムを受信する又は生成するために構成される。データアイテムは、コード部分がスクリプト内で提供される必要のある回数を決定するために使用可能なインプット又は信号である。同じ又は別のデータアイテムが、評価中に、例えばループを制御する条件内での使用により、又はswitch−caseがテストされる値としての使用により、スクリプトの実行を制御するために使用できる。
【００３６】
さらに、コード部分は、事前決定され、メモリに格納できる。ソフトウェアエージェントがスクリプトを生成する必要のあるとき、コード部分は、メモリからアクセスされ、スクリプトに必要な回数だけ挿入され、したがって上述のデータアイテムを用いる関連する制御条件をテストするために適応され得る。
【００３７】
したがって、ソフトウェアエージェントは、関連データアイテムを受信し、該データアイテムを、実行のときに必要に応じて、複雑な制御フロー機能をエミュレートするためのコードを含むトランザクションスクリプトを生成するために使用できる。このスクリプトは、ブロックチェーントランザクションの生成において使用可能である。次にブロックチェーントランザクションは、検証及び伝搬のためにネットワークに提出されてよい。
【００３８】
したがって、本発明は、ブロックチェーントランザクションのインプット／アウトプットに関連付けられたスクリプトの実行する方法を制御するために使用できる。実際に、これは、トランザクション（Tx）に関連付けられたアウトプットが使用可能か否か、また、ブロックチェーン上のアセット（例えば、暗号通貨の一部、トークン、等）の暗号化所有権があるエンティティから別のエンティティへと転送可能か否か、を制御する。別の意味では、本発明は、暗号化処理を制御し、又はそれに影響を与える。
【００３９】
以下に、上述の概念及び技術を分析し及び説明するために、例が提供される。
【００４０】
＜使用例１：forループのエミュレーション＞
本例では、私達は、言語により本来サポートされるかのように、forループの動作をエミュレートするScriptに基づく演算シーケンスを提供する。
【００４１】
ループは以下の形式である。
【数１】
2020526811.tif 000003
【００４２】
K及びNは、それぞれ、区間I=[K:N]の下限及び上限とする。演算シーケンスは、以下の形式を取る。
【数２】
2020526811.tif 000004
【００４３】
留意すべきことに、ループのインスタンスを表す枠が複数回、つまりP回、P>N、提供される。また、ループ本体のコード<EXECUTE  STATEMENTS>は、主スタック又はaltスタックのいずれの状態も変更すべきではない。
【００４４】
＜ループの例１：０〜２のループ＞
以下の例では、私達は、枠内のコードが３回コピーされると仮定する。本例では、私達は、<EXECUTE  STATEMENTS>が２回実行されることを検証する。
【００４５】
以下のコード片を検討する。
【数３】
2020526811.tif 000005
【００４６】
スタックはこれと同様に見えるべきである（左の列が主スタックであり、右の列がaltスタックである）。
【数４】
2020526811.tif 000006
【００４７】
＜使用例２：switch−caseコマンドシーケンスのエミュレーション＞
本例では、私達は、switchコマンドシーケンスのBitcoin  Scriptエミュレーションを記載する。私達は、以下の種類のコマンドシーケンスをエミュレートすることを望む。
【数５】
2020526811.tif 000007
【００４８】
ここで、Xを、私達がチェックしたい値とする。Bitcoin  Script言語のシンタックスを用いて記述すると、switch  caseコードは以下の通りになる。
【数６】
2020526811.tif 000008
【００４９】
（例１）
インプット信号はOP_２である。私達は、コードが<EXECUTE  STATEMENTS  ２>のみを実行することをチェックし、私達はコードが３個の文を含むと仮定する。
【数７】
2020526811.tif 000009
【００５０】
＜ブロックチェーンネットワーク＞
図３を参照すると、図３は、ブロックチェーンに関連付けられた例示的なネットワークをブロック図形式で示す。該ネットワークは、ここではブロックチェーンネットワーク１００として参照されてよく、本発明の実装のために利用されてよい。ブロックチェーンネットワーク１００は、他の会員からの招待無しに又は承認無しに誰でも参加し得るピアツーピア開放型会員制ネットワークである。ブロックチェーンプロトコルの下でブロックチェーンネットワーク１００が動作し、該ブロックチェーンプロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーンネットワーク１００に参加してよい。このような分散型電子装置は、ノード１０２と呼ばれてよい。ブロックチェーンプロトコルは、例えばBitcoinプロトコル、又は他の暗号通貨であってよい。
【００５１】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む様々な種類であってよい。
【００５２】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実施され、ノード１０２の幾つかは、地理的に離散した位置に置かれてよい。
【００５３】
ノード１０２は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。該トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は、分散台帳であり、各ノード１０２はグローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２により検証される。その結果、グローバル台帳の有効性が維持される。Bitcoinプロトコルを使用することのような、ブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【００５４】
各トランザクションは、標準的に、１つ以上のインプット及び１つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるアドレスであってよい。価値は、次に、未使用トランザクションアウトプット（UTXO）として該アウトプットアドレスに関連付けられる。後続のトランザクションは、次に、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【００５５】
ノード１０２は、ネットワークルーティングからウォレットサービスまで、多数の異なる機能を満たすことができ、ロバスト且つセキュアな分散パブリック台帳を維持する。「フルノード（Full  nodes）」は、ブロックチェーンの完全な最新のコピーを有し、したがって、パブリック台帳上の任意のトランザクション（使用又は未使用）を検証できる。「軽量ノード（Lightweight  nodes）」（又はSPV）は、ブロックチェーンのサブセットを維持し、「簡易支払検証」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダだけをダウンロードする。これらのノードは、したがって、それらのトランザクションを検証するピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、ブロックチェーン上のトランザクションを検証し及び新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを扱う。ノード１０２は、TCP/IP（Transmission  Control  Protocol）のようなコネクション指向プロトコルを用いて互いに通信する。
【００５６】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する（comprising又はcomprises）」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する（comprises）」は「含む（includes）又は構成される（consists  of）」を意味し、「有する（comprising）」は「含む（including）又は構成される（including  of）」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、１つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることができないことを示すものではない。
【図１】
2020526811.tif 000010
【図２】
2020526811.tif 000011
【図３】
2020526811.tif 000012
【国際調査報告】
2020526811.tif 000013
2020526811.tif 000014