IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7535359ブロックチェーンスクリプトにおける制御フロー
<>
  • 特許-ブロックチェーンスクリプトにおける制御フロー 図1
  • 特許-ブロックチェーンスクリプトにおける制御フロー 図2
  • 特許-ブロックチェーンスクリプトにおける制御フロー 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-07
(45)【発行日】2024-08-16
(54)【発明の名称】ブロックチェーンスクリプトにおける制御フロー
(51)【国際特許分類】
   G06F 21/54 20130101AFI20240808BHJP
   G06F 9/44 20180101ALI20240808BHJP
   G06F 8/41 20180101ALI20240808BHJP
   G06F 9/455 20180101ALI20240808BHJP
   H04L 9/32 20060101ALI20240808BHJP
【FI】
G06F21/54
G06F9/44
G06F8/41
G06F9/455
H04L9/32 200Z
【請求項の数】 11
【外国語出願】
(21)【出願番号】P 2023079779
(22)【出願日】2023-05-15
(62)【分割の表示】P 2019568229の分割
【原出願日】2018-07-05
(65)【公開番号】P2023100981
(43)【公開日】2023-07-19
【審査請求日】2023-05-15
(31)【優先権主張番号】1710971.1
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1710974.5
(32)【優先日】2017-07-07
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1710967.9
(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)【参考文献】
【文献】米国特許出願公開第2018/0293157(US,A1)
【文献】米国特許出願公開第2016/0330034(US,A1)
【文献】米国特許出願公開第2015/0074655(US,A1)
【文献】国際公開第2017/024071(WO,A1)
【文献】特表2018-530175(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/54
G06F 9/44
G06F 8/41
G06F 9/455
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、
少なくとも1つのデータアイテムを受信し、生成し、又は導出するステップと、
少なくとも1つのコード部分を少なくとも1回、ブロックチェーントランザクションに関連付けられたスクリプトに挿入するステップであって、その結果、前記スクリプトが実行されると、制御フローメカニズムの機能を提供し、前記制御フローメカニズムの動作は、前記少なくとも1つのデータアイテムにより制御され又は影響される、ステップと、
前記少なくとも1つのコード部分を前記スクリプトに1回より多く、及び/又は前記スクリプト内の1つより多くの位置に挿入する及び/又はコピーするステップと、
を含み、
前記制御フローメカニズムの機能は、少なくとも、前記少なくとも1つのデータアイテムを用いて、前記少なくとも1つのコード部分を前記スクリプトに挿入する又はコピーする回数を決定することにより、前記スクリプト内で有効になり又はエミュレートされ、
前記スクリプトは機能的に制約されたスタックに基づくスクリプト言語で記述され、
前記コード部分は、前記スクリプトの実行により少なくとも1回インクリメントされるカウンタ又はインデックスを含み、前記カウンタ又はインデックスは前記スクリプトの前記実行を制御し又は影響を与えるために使用される、方法。
【請求項2】
前記スクリプトは、前記ブロックチェーントランザクションのインプット又はアウトプットに関連付けられる、請求項1に記載の方法。
【請求項3】
前記ブロックチェーントランザクションは、ブロックチェーンプロトコルに従い又はブロックチェーンプロトコルと共に使用するために生成される、請求項1又は2に記載の方法。
【請求項4】
前記ブロックチェーンプロトコルはBitcoinプロトコル又はBitcoinプロトコルの変形である、請求項3に記載の方法。
【請求項5】
前記少なくとも1つのデータアイテムを用いて、前記少なくとも1つのコード部分が前記スクリプトに何回挿入/コピーされたかを決定するステップ、を含む請求項1乃至4のいずれかに記載の方法。
【請求項6】
前記制御フローメカニズムは、forループのようなループ、又はswitch文のような選択制御メカニズムである、請求項1乃至5のいずれかに記載の方法。
【請求項7】
前記少なくとも1つのデータアイテムは、高レベル言語(HLL)からのコードをブロックチェーントランザクションスクリプトに変換するよう構成されるコンパイラから導出される、請求項1乃至6のいずれかに記載の方法。
【請求項8】
前記カウンタ又はインデックスは、2つのスタックに基づくデータ構造に格納された及び/又は該データ構造から読み出された値を用いてインクリメントされ又は操作される、請求項1に記載の方法。
【請求項9】
請求項1乃至8のいずれかに記載の方法を実施するよう構成されたコンピュータにより実装されるシステム。
【請求項10】
実行されると、請求項1乃至8のいずれか一項に記載の方法を実行するようプロセッサを構成するコンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
【請求項11】
電子装置であって、
インタフェース装置と、
前記インタフェース装置に結合されたプロセッサと、
前記プロセッサに結合されたメモリであって、前記メモリは、実行されると、請求項1乃至8のいずれか一項に記載の方法を実行するよう前記プロセッサを構成するコンピュータ実行可能命令を格納している、メモリと、
を含む電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ブロックチェーン技術に関し、特に、ブロックチェーンを介して複雑な機能を実施することに関する。有利なことに、本発明は、ブロックチェーントランザクションに、通常は制御フロー構造により提供される機能を含めることを可能にするメカニズムを提供する。したがって、本発明は、ブロックチェーンスクリプト、したがってブロックチェーンプロトコル自体の、能力及び機能を拡張し、基礎にある既存のプロトコルを変更する必要がない。本発明に従い生成されるトランザクションは、コンピュータにより実施されるプロセスの活動を有効にし、影響を与え、及び指示する制御メカニズムとして使用可能である。本発明は、限定ではないが、自動処理の実装及び制御に適する。
【背景技術】
【0002】
本願明細書では、ブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含むがこれらに限定されない、総意に基づく電子、コンピュータに基づく分散型台帳の全ての形式を包含するために、用語「ブロックチェーン」を使用する。最も広く知られているブロックチェーン技術の用途はBitcoin台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される総意に基づく電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに組み込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)トランザクションを受信した第1ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ii)マイナーにより構築された新しいブロックに追加し、iii)マイニングされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、Bitcoinの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点(例えば、永久的、イベントの耐タンパレコード、分散プロセス、等)を利用できる。
【発明の概要】
【0006】
本発明によると、添付の請求の範囲に定められるようなコンピュータにより実装されるシステム及び/又は方法が提供される。
【0007】
本発明は、コンピュータにより実施される方法を提供し得る。本発明は、ブロックチェーントランザクション(Tx)の生成を有効にし又はそれに適するよう構成される方法として記載され得る。追加又は代替として、本発明は、ブロックチェーントランザクションに関連付けられたアウトプットがアンロック(使用)可能か否かを制御する又はそれに影響を与えるトランザクション(Tx)スクリプトの実行を制御する方法として記載され得る。したがって、本発明は、暗号化処理を制御する又はそれに影響を与える方法である。本発明は、ブロックチェーンネットワークを介してリソースの移転又は交換を制御するとしても記載され得る。本発明は、セキュリティ上の弱点に対する回復力を危険に晒すことなく、チューリング完全機能をブロックチェーンスクリプト内で又はそれにより提供可能にする又は有効にするセキュリティ技術を提供するとしても記載され得る。したがって、本発明は、プロトコルのセキュリティ上の弱点に対するセキュリティ及び保護を保ちながら、より高機能且つ技術的に優れた方法でブロックチェーンネットワークに渡り移転及び交換を実行することが可能なので、改良ブロックチェーンを提供する。
【0008】
当該方法は、ソフトウェアリソースを用いて、少なくとも1つのデータアイテムを受信し又は生成し又は導出するステップを含んでよい。データアイテムは、「信号」、「値」、「パラメータ」、又は「入力」とも呼ばれてよい。データアイテムは、信号として受信されてよい。これは、オフチェーンソースから受信されてよい。したがって、データアイテムは、コードがスクリプトに何回コピーされ又は挿入されるかを決定するために使用されてよく、スクリプトの外部で決定され及び/又は生成されてよい。これは、計算リソースにより計算結果として生成されてよい。これは、乱数又は疑似乱数生成部の使用により生成されてよい。
【0009】
本発明は、少なくとも1回、少なくとも1つのコード部分を、ブロックチェーントランザクションに関連付けられた又はそのためのスクリプトに挿入するステップを含んでよい。その結果、スクリプトが実行されると、該スクリプトは、制御フローメカニズムの機能を提供する。コード部分は、予め指定され又は予め記述されてよい。これは、コンピュータに基づくリソースに格納されてよく、スクリプトに挿入される前に記憶装置から読み出されてよい。
【0010】
スクリプトは、トランザクションの部分を形成する及び/又はトランザクションを用いて移転されるべき暗号通貨の一部をロック/アンロックするために使用できるという点で、トランザクションに関連付けられてよい。
【0011】
方法は、ブロックチェーントランザクションを生成するステップを含んでよい。当該方法は、前記トランザクションをブロックチェーンネットワークへ提出するステップを含んでよい。当該方法は、トランザクションを用いて、ネットワーク上のあるノード又はパーティから別のノード又はパーティへ、リソース又はリソースの制御を移転するステップを含んでよい。
【0012】
制御フローメカニズムの動作/実行は、少なくとも1つのデータアイテムにより制御され又は影響されてよい。望ましくは、スクリプトは、少なくとも1つのコード部分の挿入に従うチューリング完全構造(例えば、ループ、再帰的ジャンプ、高レベル制御構造)を含まなくてよい。望ましくは、少なくとも1つのコード部分の少なくとも1回の挿入に従い、スクリプトは、機能的に制約された(チューリング不完全)言語を使用するブロックチェーン上の実行と互換性がある。これは、Bitcoinプロトコル又はその変形を実装するブロックチェーンにより使用されるScript言語であってよい。
【0013】
スクリプトは、ブロックチェーントランザクションのインプット又はアウトプットに関連付けられてよい。トランザクションは、ブロックチェーンプロトコルに従い生成されてよい。これは、Bitcoinプロトコルであってよい。スクリプトは、Scriptプログラミング言語又は別のスタックに基づくスクリプト言語で記述されてよい。スクリプトは、機能的に制約された(代替として「チューリング不完全」と呼ばれてよい)言語で記述されてよい。言語は、言語がループ及び/又はジャンプ反復のような1つ以上の制御フローメカニズムを元々サポートしないという意味で、機能的に制約されてよい。
【0014】
当該方法は、前記少なくとも1つのコード部分を前記スクリプトに1回より多く、及び/又は前記スクリプト内の1つより多くの位置に挿入する及び/又はコピーするステップ、を含んでよい。
【0015】
当該方法は、前記少なくとも1つのデータアイテムを用いて、前記少なくとも1つのコード部分が前記スクリプトに何回挿入/コピーされるかを決定するステップ、を含んでよい。
【0016】
前記制御フローメカニズムは、for又はwhileループのようなループ、又はswitch/Case文のような選択制御メカニズムであってよい。
【0017】
前記少なくとも1つのデータアイテムは、高レベル言語(High Level Language:HLL)からのコードをブロックチェーントランザクションスクリプトに変換するよう構成されるコンパイラから導出されてよい。
【0018】
前記コード部分は、前記スクリプトの実行により少なくとも1回インクリメントされるカウンタ又はインデックスを含み、前記カウンタ又はインデックスは前記スクリプトの前記実行を制御し又は影響を与えるために使用されてよい。
【0019】
前記カウンタ又はインデックスは、2つのスタックに基づくデータ構造に格納された及び/又は該データ構造から読み出された値を用いてインクリメントされ又は操作されてよい。
【0020】
本発明は、本願明細書に記載の任意の実施形態の方法を実施するよう構成されるコンピュータにより実装されるシステムも提供し得る。方法に関連して記載された任意の態様又は特徴は、対応するシステムにも適用してよい。システムは、少なくとも1つのコンピュータに基づくリソースを含んでよい。当該システムは、1つ以上のブロックチェーンノードを含んでよい。
【0021】
本発明は、システムであって、プロセッサと、前記プロセッサによる実行の結果として前記システムに本願明細書に記載のコンピュータにより実施される方法の任意の実施形態を実行させる実行可能命令を含むメモリと、を含むシステムも提供する。
【0022】
本発明は、実行可能命令を格納した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに本願明細書に記載のコンピュータにより実施される方法の実施形態を少なくとも実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【0023】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【0024】
図1】従来知られているような、分散ブロックチェーンネットワークの簡易図を提供する。
図2】本発明による一実施形態を示すフローチャートを示す。
図3】本発明に従い使用され得るブロックチェーンに関連付けられた例示的なネットワークを示す。
【発明を実施するための形態】
【0025】
Bitcoinネットワークは、図1に示されるように、ブロックチェーン実装の一例である。Bitcoinは、Scriptとして知られるスクリプト言語を利用する。Scriptは、比較的簡単なプログラムの生成のための、オペコード(op_code)として知られるプリミティブ演算子又はコマンドのセットを使用するForthのような言語である。Scriptは、プログラム実行中のデータアイテム(変数及び定数)の一時的記憶のために、スタックとして知られるデータ構造を使用する。アイテムは、スタックにプッシュされ、1つが他のアイテムの上に置かれ、逆の順序で取り出される(popped off)。標準的に、スタックにプッシュされたアイテムは、後に、それらを次の演算のオペランドとして使用するために取り出される。Scriptプログラムが終了するとき、スタックの一番上に残された値は戻り値である。
【0026】
Forthのような他のスタックに基づく言語で知られているように、更なるスタックにアクセスすることは時に便利である。Scriptでは、この第2スタックはaltスタックとして知られており、第1スタックは主スタックとして知られている。Altスタックは、標準的に、スクリプト実行中にデータを一時的に格納するために使用される。
【0027】
しかしながら、Forthと対照的に、Scriptは、ループのような複雑な制御フロー文を実行するビルトインシンタックスを特徴としない。制御フロー文は、プログラムが実行する方法に影響し及び指示する(つまり、制御する)ために使用されるプログラミングメカニズムである。実行するときにロジックがどのパスを取るかを決定するために、特定値が使用される。これらの値は、プログラム中にハードコードされ、又はランタイムに動的入力として提供され得る。次に、値は、決定処理において使用され得る(例えば、値b以下の値か?、文字列x="Hello World!"か?)。制御フロー文の例は、whileループ、forループ、及びswitch-case文を含む。
【0028】
スクリプトのこのようなメカニズムの禁止は、意図的なセキュリティ機能である。つまり、複雑な制御メカニズムは、潜在的に、サービス拒否(Denial-of-Service:DOS又はDDOS)攻撃のようなセキュリティ上の弱点に対して脆弱なブロックチェーンネットワークに委ねる。しかしながら、プログラマは、Scriptコードが記述可能な方法に関して制約されるというトレードオフがある。例えば、ソースコードにループを含めることができない。これは、一部の者にScriptをチューリング不完全であると説明させる(他の者はこの定義に意義を唱えるが)。1つの知られているBitcoinの代替である、Ethereumは、チューリング完全言語をそのプロトコルに固有機能として組み込むことにより、この制約を克服しようと試みた。しかしながら、記述のときに、Ethereumは少なくとも1つの深刻なセキュリティ上の弱点に苦しんだ。
【0029】
したがって、Scriptのような機能的に制約されたブロックチェーンスクリプト言語により提供されるセキュリティと、ブロックチェーンプラットフォームにより、より複雑な機能を実行したいという要求との間のトレードオフを解決する技術的ソリューションを提供する必要がある。理想的には、これは、例えばソフトウェアリソースによる自動化により符号化処理を促進する方法で達成され得る。
【0030】
本発明は、少なくともこの問題のためのソリューションを提供し、それにより、複雑な制御フローメカニズムの機能が達成でき、又はブロックチェーン上で機能的に制約されたスクリプト言語を用いて少なくともエミュレートできる機能を可能にする。(Scriptのチューリング完全に関する分野における論争により、私達は、ここで、このような言語を「チューリング不完全」ではなく、「機能的に制約された」として参照することがあるが、用語は同義的に使用されることがある)。私達がここで使用する例は、単に説明を目的とし、forループ及びswitch-case制御シーケンスの両者のエミュレーションを可能にするソリューションを提示する。当業者は、他の種類の制御フローメカニズムが本発明により提供され得ることを理解するだろう。
【0031】
本発明に従い使用可能な処理は、図2のフローチャートに示される。本発明によると、トランザクション(Tx)スクリプトの中でロジックがどのように制御されるべきかに関して決定が行われる。例えば、これは、反復ごとにループ本体(body)の中で実行されるべき文(ステートメント)又はswitch構成の中のオプション(case)毎に実行されるべきステートメントの事前決定であり得る。これらは、スクリプト/トランザクションの生成の間に、後の読み出しのためにコード部分として格納され得る。
【0032】
一旦生成され又は受信されると、決定は、次に、ブロックチェーントランザクションのスクリプトのためにコードを生成するために使用される。これは、アンロックスクリプト、Redeemスクリプト、又はアンロックスクリプト言語であり得る。特に、コード部分は、スクリプトに所望の回数だけ、スクリプト内の適切な位置に挿入される。
【0033】
コード部分は、例えば、ループのインスタンスを実行するコード、又はswitchコマンドシーケンス内のオプションであってよい。コード部分は、必要に応じてスクリプト内で繰り返される。その結果、1つ以上のステートメントが、データアイテムの値及び/又は条件の評価に基づき実行される可能性がある。例えば、if(i<3) Then <execute body of loop>、又はif(i==2) Then <execute statement(s) and break out of switch>である。
【0034】
スクリプトコードの生成は手動で実行できる。しかしながら、本発明の好適な実施形態では、コード(及びトランザクション全体)は、自動処理により、つまりプロセッサ上で実行する適切に構成されたソフトウェアリソース又はエージェントにより生成される。
【0035】
このような実施形態では、ソフトウェアエージェントは、データアイテムを受信する又は生成するために構成される。データアイテムは、コード部分がスクリプト内で提供される必要のある回数を決定するために使用可能なインプット又は信号である。同じ又は別のデータアイテムが、評価中に、例えばループを制御する条件内での使用により、又はswitch-caseがテストされる値としての使用により、スクリプトの実行を制御するために使用できる。
【0036】
さらに、コード部分は、事前決定され、メモリに格納できる。ソフトウェアエージェントがスクリプトを生成する必要のあるとき、コード部分は、メモリからアクセスされ、スクリプトに必要な回数だけ挿入され、したがって上述のデータアイテムを用いる関連する制御条件をテストするために適応され得る。
【0037】
したがって、ソフトウェアエージェントは、関連データアイテムを受信し、該データアイテムを、実行のときに必要に応じて、複雑な制御フロー機能をエミュレートするためのコードを含むトランザクションスクリプトを生成するために使用できる。このスクリプトは、ブロックチェーントランザクションの生成において使用可能である。次にブロックチェーントランザクションは、検証及び伝搬のためにネットワークに提出されてよい。
【0038】
したがって、本発明は、ブロックチェーントランザクションのインプット/アウトプットに関連付けられたスクリプトの実行する方法を制御するために使用できる。実際に、これは、トランザクション(Tx)に関連付けられたアウトプットが使用可能か否か、また、ブロックチェーン上のアセット(例えば、暗号通貨の一部、トークン、等)の暗号化所有権があるエンティティから別のエンティティへと転送可能か否か、を制御する。別の意味では、本発明は、暗号化処理を制御し、又はそれに影響を与える。
【0039】
以下に、上述の概念及び技術を分析し及び説明するために、例が提供される。
【0040】
<使用例1:forループのエミュレーション>
本例では、私達は、言語により本来サポートされるかのように、forループの動作をエミュレートするScriptに基づく演算シーケンスを提供する。
【0041】
ループは以下の形式である。
【数1】
【0042】
K及びNは、それぞれ、区間I=[K:N]の下限及び上限とする。演算シーケンスは、以下の形式を取る。
【数2】
【0043】
留意すべきことに、ループのインスタンスを表す枠が複数回、つまりP回、P>N、提供される。また、ループ本体のコード<EXECUTE STATEMENTS>は、主スタック又はaltスタックのいずれの状態も変更すべきではない。
【0044】
<ループの例1:0~2のループ>
以下の例では、私達は、枠内のコードが3回コピーされると仮定する。本例では、私達は、<EXECUTE STATEMENTS>が2回実行されることを検証する。
【0045】
以下のコード片を検討する。
【数3】
【0046】
スタックはこれと同様に見えるべきである(左の列が主スタックであり、右の列がaltスタックである)。
【数4】
【0047】
<使用例2:switch-caseコマンドシーケンスのエミュレーション>
本例では、私達は、switchコマンドシーケンスのBitcoin Scriptエミュレーションを記載する。私達は、以下の種類のコマンドシーケンスをエミュレートすることを望む。
【数5】
【0048】
ここで、Xを、私達がチェックしたい値とする。Bitcoin Script言語のシンタックスを用いて記述すると、switch caseコードは以下の通りになる。
【数6】
【0049】
(例1)
インプット信号はOP_2である。私達は、コードが<EXECUTE STATEMENTS 2>のみを実行することをチェックし、私達はコードが3個の文を含むと仮定する。
【数7】
【0050】
<ブロックチェーンネットワーク>
図3を参照すると、図3は、ブロックチェーンに関連付けられた例示的なネットワークをブロック図形式で示す。該ネットワークは、ここではブロックチェーンネットワーク100として参照されてよく、本発明の実装のために利用されてよい。ブロックチェーンネットワーク100は、他の会員からの招待無しに又は承認無しに誰でも参加し得るピアツーピア開放型会員制ネットワークである。ブロックチェーンプロトコルの下でブロックチェーンネットワーク100が動作し、該ブロックチェーンプロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーンネットワーク100に参加してよい。このような分散型電子装置は、ノード102と呼ばれてよい。ブロックチェーンプロトコルは、例えばBitcoinプロトコル、又は他の暗号通貨であってよい。
【0051】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子装置は、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む様々な種類であってよい。
【0052】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク100は、少なくとも部分的にインターネット上で実施され、ノード102の幾つかは、地理的に離散した位置に置かれてよい。
【0053】
ノード102は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。該トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は、分散台帳であり、各ノード102はグローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード102によるトランザクションは、他のノード102により検証される。その結果、グローバル台帳の有効性が維持される。Bitcoinプロトコルを使用することのような、ブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【0054】
各トランザクションは、標準的に、1つ以上のインプット及び1つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるアドレスであってよい。価値は、次に、未使用トランザクションアウトプット(UTXO)として該アウトプットアドレスに関連付けられる。後続のトランザクションは、次に、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【0055】
ノード102は、ネットワークルーティングからウォレットサービスまで、多数の異なる機能を満たすことができ、ロバスト且つセキュアな分散パブリック台帳を維持する。「フルノード(Full nodes)」は、ブロックチェーンの完全な最新のコピーを有し、したがって、パブリック台帳上の任意のトランザクション(使用又は未使用)を検証できる。「軽量ノード(Lightweight nodes)」(又はSPV)は、ブロックチェーンのサブセットを維持し、「簡易支払検証」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダだけをダウンロードする。これらのノードは、したがって、それらのトランザクションを検証するピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、ブロックチェーン上のトランザクションを検証し及び新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを扱う。ノード102は、TCP/IP(Transmission Control Protocol)のようなコネクション指向プロトコルを用いて互いに通信する。
【0056】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることができないことを示すものではない。
【符号の説明】
【0057】
100 ブロックチェーンネットワーク
102 ノード
図1
図2
図3