(57)【要約】  未決定データに基づいてブロックチェーン・トランザクションをロックするためのコンピュータで実施される方法について説明する。本発明は、ブロックチェーン・ネットワークを使用して実施される。これは、例えば、ビットコイン・ブロックチェーンであり得る。ロックノードは、デジタル資産をロックするためにブロックチェーン・トランザクションにロック・スクリプトを含めることができる。ロック・スクリプトには、特定のデータソースの公開キーと、ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、ａ）特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びｂ）修正された公開キーに基づいてロック解除スクリプト内の暗号署名を評価することにより、検証させる命令とが含まれる。ロック・スクリプトを含むブロックチェーン・トランザクションは、ロックノードによってブロックチェーン・ネットワークに送信される。ロックは、データに基づいて修正された秘密キーから生成された暗号署名を使用して解除することができる。
2020513178.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって、当該方法は、
ブロックチェーン・ネットワーク内のノードが、ブロックチェーン・トランザクションに関連付けられたデジタル資産をロックするために、前記ブロックチェーン・トランザクション内にロック・スクリプトを含めるステップであって、該ロック・スクリプトは、特定のデータソースの公開キーを含み、且つ前記ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、ａ）前記特定のデータソースの前記公開キー及び前記ロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びｂ）該修正された公開キーに基づいて前記ロック解除スクリプト内の暗号署名を評価することにより、検証させる命令を含む、含めるステップと、
前記ノードが、前記ブロックチェーン・トランザクションを前記ブロックチェーン・ネットワークに送信するステップと、を含む、
コンピュータで実施される方法。
【請求項２】
前記ロック・スクリプトは、１つ又は複数のデータ制約をさらに規定し、前記ロック・スクリプトは、前記１つ又は複数のデータ制約が前記データによって満たされていない場合に、前記検証ノードに、前記ロック解除スクリプトを含むブロックチェーン・トランザクションを無効化させる命令をさらに含む、請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記１つ又は複数のデータ制約は、１つ又は複数の値と、前記データ及び前記１つ又は複数の値に基づいて比較を行う比較関数とを規定する、請求項２に記載のコンピュータで実施される方法。
【請求項４】
前記検証ノードに、前記修正された公開キーに基づいて前記ロック解除スクリプト内の前記暗号署名を評価させる前記命令は、前記特定のデータソースに関連付けられた修正された秘密キーを使用して前記暗号署名が生成されていない場合に、前記検証ノードに、前記ロック解除スクリプトを含む前記ブロックチェーン・トランザクションを無効化させるように設定され、前記修正された秘密キーは、前記特定のデータソースの秘密キー及び前記データに基づいて前記特定のデータソースによって生成される、請求項１乃至３のいずれか一項に記載のコンピュータで実施される方法。
【請求項５】
前記命令は、前記修正された秘密キーを生成するために使用される演算に対応する演算を行うことにより、前記検証ノードに、前記修正された公開キーを生成させるように設定される、請求項４に記載のコンピュータで実施される方法。
【請求項６】
前記修正された秘密キーは、前記データ及び前記特定のデータソースの前記秘密キーに基づいて有限フィールド算術演算を行うことによって生成された鍵である、請求項４又は５に記載のコンピュータで実施される方法。
【請求項７】
前記命令は、前記データ及び前記特定のデータソースの前記公開キーに基づいて楕円曲線有限フィールド算術演算を行うことにより、前記ロック・スクリプトを実行する前記検証ノードに、前記修正された公開キーを生成させるように設定される、請求項６に記載のコンピュータで実施される方法。
【請求項８】
前記楕円曲線有限フィールド算術演算は、スカラーによる楕円曲線乗算を行う、請求項７に記載のコンピュータで実施される方法。
【請求項９】
前記ロック・スクリプトは、規定された期間後に、前記ノードによる前記デジタル資産のロックの解除のための命令を含むようにさらに設定される、請求項１乃至８のいずれか一項に記載のコンピュータで実施される方法。
【請求項１０】
実行されると、プロセッサに請求項１乃至９のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
【請求項１１】
電子装置であって、当該電子装置は、
インターフェイス装置と、
該インターフェイス装置に結合されるプロセッサと、
該プロセッサに結合されるメモリであって、実行されると、前記プロセッサに、請求項１乃至９のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を格納したメモリと、を有する、
電子装置。
【請求項１２】
コンピュータで実施される方法であって、当該方法は、
ノードが、データ及び秘密キーに基づいて修正された秘密キーを生成するステップと、
該修正された秘密キーを使用して、ロック・スクリプトによってロックされたデジタル資産を参照するブロックチェーン・トランザクションの暗号署名を生成するステップと、
該暗号署名及び前記データを前記ブロックチェーン・トランザクションに追加するステップと、
前記ブロックチェーン・トランザクションを別のノードに通信するステップと、を含む、
コンピュータで実施される方法。
【請求項１３】
修正された秘密キーを生成するステップは、前記データ及び前記秘密キーに対して有限フィールド算術演算を行うステップを含む、請求項１２に記載のコンピュータで実施される方法。
【請求項１４】
有限フィールド算術演算によって乗算が行われる、請求項１２又は１３に記載のコンピュータで実施される方法。
【請求項１５】
前記ロック・スクリプトは、特定のデータソースの公開キーを指定し、且つ前記ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、ａ）前記特定のデータソースの前記公開キー及び前記ロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びｂ）該修正された公開キーに基づいて前記ロック解除スクリプト内の暗号署名を評価することにより、評価させる命令を含む、請求項１２乃至１４のいずれか一項に記載のコンピュータで実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、デジタルロックに関し、より具体的には、特定のデータソースからの未決定データに基づいてデジタル資産をロックするための方法及びシステムに関する。本発明は、デジタル資産のロック時にロック当事者が利用できないデータに基づいて、ブロックチェーン・ネットワーク上でデジタル資産の条件付きロック解除を提供する用途に特に適しているが、これに限定されるものではない。
【０００２】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、ブロックチェーン及びトランザクションチェーン技術、アクセス許可された台帳及びアクセス許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的でビットコインについて参照しているが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルが本発明の範囲内にあることに留意されたい。例えば、本発明は、署名検証においてビットコインと同様の制限を有する他のブロックチェーン実施態様において有用であり得る。
【０００３】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクション及び他の情報で構成される。ビットコインの場合に、ブロックチェーン・システムの参加者同士の間でデジタル資産の制御を移す各トランザクションには、少なくとも１つの入力と少なくとも１つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して記述される。
【０００４】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。検証は、ブロック生成能力を有する大多数のノードにより使用される共通の規則セットに基づいて、ノードによって決定される。例えば、ビットコイン・プロトコルでは、いくつかのネットワークノードはマイナー（採掘者：miners）として機能し、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされたソフトウェアクライアントは、未使用（unspent）トランザクション出力（ＵＴＸＯ）を参照するトランザクションでこの検証作業を行う。検証は、そのロック及びロック解除スクリプトを実行することにより行われ得る。ロック及びロック解除スクリプトの実行がＴＲＵＥと評価され、且つ他の特定の条件が満たされた場合に、トランザクションは有効であり、そのトランザクションをブロックチェーンに書き込むことができる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、ｉ）トランザクションを受信するノードによって検証する（トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する）；ｉｉ）マイナーによって構築された新しいブロックに追加する；ｉｉｉ）採掘する、つまり過去のトランザクションの公的な台帳に追加する必要がある。トランザクションは、トランザクションを実質的に不可逆にするために十分な数のブロックがブロックチェーンに追加されたときに確認されたとみなされる。
【０００５】
トランザクション出力には、ビットコイン等のデジタル資産や、制限（encumbrance）又はロックとも呼ばれ得るロック・スクリプトが含まれる。ロック・スクリプトは、出力を使う（spend）ために満たす必要がある条件を指定することにより、デジタル資産をロックする。例えば、ロック・スクリプトでは、関連するデジタル資産をロック解除するために、特定のデータをロック解除スクリプトに提供する必要があり得る。デジタル資産のロックを解除するためにロック当事者にデータの提供を要求する従来の手法では、ロック・スクリプト内にデータのハッシュを埋め込む必要がある。ただし、このロック及びロック解除の手法では、ロック・スクリプトの作成時にデータを決定（つまり、既知にし且つ固定）する必要がある。
【０００６】
こうして、これらの態様の１つ又は複数においてブロックチェーン技術を改良する改善された方法及び装置を提供することが望ましい。
【発明の概要】
【０００７】
こうして、本発明によれば、添付の特許請求の範囲で規定される方法が提供される。
【０００８】
以下でより詳細に説明するように、コンピュータで実施される方法及び電子装置は、未決定データに基づいてトランザクションをロックするように構成される。
【０００９】
従って、本発明によれば、コンピュータで実施される方法（及び、対応するシステム）が提供され得る。この方法は、セキュリティ及び／又は制御方法として説明することができる。この方法は、ブロックチェーン・トランザクション（ＴＸ）の出力をブロックチェーン・ネットワークを介して誰が及び／又はどの様にロック解除及び使用できるかを制御するように構成することができる。出力の使用（支出）により、暗号通貨の転送が可能になる。本発明は、ブロックチェーン・トランザクション（Ｔｘ）のロック・スクリプトに埋め込まれた暗号公開キーを、別のトランザクションのロック解除スクリプトで提供される未決定データで修正するように構成された方法（及び、対応するシステム）を提供し得る。本発明により、未決定データに基づいてブロックチェーン・トランザクションをセキュリティ保護することができる。つまり、本発明によって、ロックをブロックチェーン・トランザクションに適用した時点では利用可能ではないが、将来利用可能になると予定されるデータに基づいて、ブロックチェーン・トランザクションをロックすることができる。
【００１０】
本発明の一実施形態による方法は、
ｉ）ブロックチェーン・ネットワーク内のノードが、トランザクション（つまり、ブロックチェーン・トランザクション）に関連付けられたデジタル資産を制限する（encumber）（つまり、ロックする）ために、トランザクション（つまり、ブロックチェーン・トランザクション）にロック・スクリプトを含めるステップであって、ロック・スクリプトは、特定のデータソースの公開キーを含み、且つロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、ａ）特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びｂ）修正された公開キーに基づいてロック解除スクリプト内の署名（つまり、暗号署名）を評価することにより、検証させる命令を含む、含めるステップと、
ｉｉ）ノードが、トランザクション（つまり、ブロックチェーン・トランザクション）をブロックチェーン・ネットワークに送信するステップと、を含む。
【００１１】
いくつかの実施態様では、ロック・スクリプトは、１つ又は複数のデータ制約をさらに規定し、ロック・スクリプトは、１つ又は複数のデータ制約がデータによって満たされていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクション（つまり、ブロックチェーン・トランザクション）を無効化させる命令をさらに含む。いくつかの実施態様では、１つ又は複数のデータ制約は、１つ又は複数の値と、データ及び１つ又は複数の値に基づいて比較を行う比較関数とを規定する。
【００１２】
いくつかの実施態様では、検証ノードに、修正された公開キーに基づいてロック解除スクリプト内の署名（つまり、暗号署名）を評価させる命令は、特定のデータソースに関連付けられた修正された秘密キーを使用して署名（つまり、暗号署名）が生成されていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクション（つまり、ブロックチェーン・トランザクション）を無効化させるように設定される。修正された秘密キーは、特定のデータソースの秘密キー及びデータに基づいて、特定のデータソースによって生成され得る。
【００１３】
いくつかの実施態様では、ロック・スクリプトは、修正された秘密キーを生成するために使用される演算に対応する演算を行うことにより、検証ノードに、修正された公開キーを生成させるように設定される。
【００１４】
いくつかの実施態様では、修正された秘密キーは、データ及び特定のデータソースの秘密キーに基づいて有限フィールド算術演算を行うことによって生成されたキーである。
【００１５】
いくつかの実施態様では、命令は、ロック・スクリプトを実行する検証ノードに、データ及び特定のデータソースの公開キーに基づいて楕円曲線有限フィールド算術演算を行うことにより、修正された公開キーを生成させるように設定される。いくつかの実施態様では、楕円曲線有限フィールド算術演算は、スカラーによる楕円曲線の乗算を行う。
【００１６】
いくつかの実施態様では、ロック・スクリプトは、規定された期間後に、ノードによるデジタル資産の制限（つまり、ロック）の解除のための命令を含むようにさらに設定される。
【００１７】
本発明によれば、コンピュータで実施される方法を提供することができ、この方法は、
ａ）ノードが、データ及び秘密キーに基づいて修正された秘密キーを生成するステップと、
ｂ）修正された秘密キーを使用して、ロック・スクリプトによって制限された（つまり、ロックされた）デジタル資産を参照するトランザクションの署名（つまり、暗号署名）を生成するステップと、
ｃ）（暗号）署名及びデータを（ブロックチェーン）トランザクションに追加するステップと、
ｄ）（ブロックチェーン）トランザクションを別のノードに通信するステップと、を含む。
【００１８】
いくつかの実施態様では、修正された秘密キーを生成するステップは、データ及び秘密キーに対して有限フィールド算術演算を行うステップを含む。いくつかの実施態様では、有限フィールド算術演算によって乗算が行われる。
【００１９】
いくつかの実施態様では、ロック・スクリプトは、特定のデータソースの公開キーを指定し、且つロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、ａ）特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びｂ）修正された公開キーに基づいてロック解除スクリプト内の署名（つまり、暗号署名）を評価することにより、評価させる命令を含む。
【００２０】
本発明によれば、電子装置を提供することができる。電子装置は、インターフェイス装置と、インターフェイス装置に結合されるプロセッサと、プロセッサに結合されるメモリとを含む。メモリは、実行されると、プロセッサに、本明細書に記載される方法を実行させるコンピュータ実行可能命令を格納している。
【００２１】
本発明によれば、コンピュータ可読記憶媒体が提供され得る。コンピュータ可読記憶媒体は、実行されると、プロセッサに、本明細書に記載の方法を実行させるコンピュータ実行可能命令を含む。
【００２２】
本発明によれば、実行されると、プロセッサに、本明細書に記載のロック・スクリプトの機能を実行させるコンピュータ実行可能命令を含む、ロック・スクリプトを含むコンピュータ可読記憶媒体が提供され得る。
【００２３】
本発明のこれら及び他の態様は、本明細書に記載される実施形態を参照して説明され、この実施形態から明らかになろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００２４】
【図１】例示的なブロックチェーン・ネットワークのブロック図である。
【図２】ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子装置のブロック図である。
【図３】ロック・スクリプトを用いてトランザクションを設定する例示的な方法のフローチャートである。
【図４】ロック・スクリプトに必要な署名を用いて提案されるトランザクションを設定する例示的な方法のフローチャートである。
【図５】ロック・スクリプトによってロックされたデジタル資産に関連付けられたトランザクションを検証する例示的な方法のフローチャートである。
【発明を実施するための形態】
【００２５】
最初に図１を参照すると、この図は、ブロックチェーンに関連付けられた例示的なブロックチェーン・ネットワーク１００をブロック図形式で示す。ブロックチェーン・ネットワーク１００の動作下でブロックチェーンプロトコルのインスタンスを実行する分散電子装置が、ブロックチェーン・ネットワーク１００に参加し得る。そのような分散電子装置は、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコイン・プロトコルであり得る。
【００２６】
ブロックチェーンプロトコルを実行し、且つブロックチェーン・ネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバー、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は他の電子装置等のコンピュータを含む様々なタイプのものであり得る。
【００２７】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーンに関連付けられたプロトコルを尊守する。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合に、ビットコイン・プロトコルを使用することができる。
【００２８】
ノード１０２は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。こうして、グローバル元帳は分散型元帳である。各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを格納することができる。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２によって検証され、それによってグローバル台帳の有効性が維持される。ブロックチェーンが作業照明（proof  of  work）ベースのブロックチェーンである場合に、ブロックと共に送信された作業照明をチェックすることでブロックも検証される。
【００２９】
ノード１０２の少なくともいくつかは、ブロックチェーン・ネットワーク１００のマイナー（採掘者：miners）１０４として動作する。図１のブロックチェーンは、マイナー１０４がブロックチェーン上でのトランザクションを促進するために費用のかかる計算を行う作業証明である。例えば、作業証明ブロックチェーンでは、マイナーが暗号問題を解く必要がある場合がある。ビットコインでは、マイナー１０４は、ブロックヘッダーをＳＨＡ−２５６でダブルハッシュして、現在の困難性により規定される値よりも小さい数になるようにナンス（nonce）を見つける。作業証明アルゴリズムに必要なハッシュ能力は、トランザクションが、特定の数のブロックがその上でマイニングされた後に、実質的に不可逆とみなされることを意味する。暗号問題を解くマイナー１０４は、ブロックチェーンに新しいブロックを作成し、この新しいブロックを他のノード１０２にブロードキャストする。他のノード１０２は、マイナー１０４が実際に暗号問題を解き、従って、ブロックをブロックチェーンに追加することを受け入れる前に、十分な作業証明を実証したことを検証する。他のノード１０２は、ブロックをブロックチェーンに追加することを受け入れる前に、ブロック自体が有効であること（例えば、トランザクション及びブロックのブロックヘッダーが有効であること）も検証する。ブロックは、ノード１０２のコンセンサスによってブロックチェーン（つまり、グローバル分散型台帳）に追加される。
【００３０】
マイナー１０４によって作成されたブロックは、ノード１０２によってブロックチェーンにブロードキャストされたトランザクションを含む。例えば、ブロックは、あるノード１０２に関連付けられたアドレスから別のノード１０２に関連付けられたアドレスへのトランザクションを含み得る。このように、ブロックはあるアドレスから別のアドレスへのトランザクションの記録として機能する。トランザクションをブロックに含めることを要求する当事者（party）は、公開キーに対応する秘密キーを使用してその要求に署名することにより、転送を開始する（例えばビットコインの場合に、ビットコインを使う等）権限があることを証明する。その要求が有効に署名されている場合にのみ、その転送がブロックに追加される。
【００３１】
ビットコインの場合に、公開キーとアドレスとの間には１対１の対応関係がある。つまり、各公開キーは単一のアドレスに関連付けられている。こうして、ここでの公開キーとの間のデジタル資産の移転（例えば、公開キーへの支払い）及びその公開キーに関連付けられたアドレスとの間のデジタル資産の移転への言及は、一般的な動作を指す。
【００３２】
ノード１０２のいくつかは、マイナーとして動作せず、代わりに検証ノードとして参加し得る。トランザクションの検証には、署名（ここでは暗号署名とも呼ばれ得る）又はロック・スクリプトで指定された他の条件の確認、有効なＵＴＸＯへの参照の確認等が含まれ得る。
【００３３】
図１の例は、６つのノード１０２を含み、そのうちの２つがマイナー１０４として参加している。実際には、ノード１０２又はマイナー１０４の数は異なっていてもよい。多くのブロックチェーン・ネットワークでは、ノード１０２及びマイナー１０４の数は、図１に示されている数よりはるかに多くてもよい。
【００３４】
図２は、ピアツーピア・ブロックチェーン・ネットワーク１００（図１）においてノード１０２（図１）として機能し得る例示的な電子装置２００のコンポーネントを示すブロック図である。例示的な電子装置２００は、処理装置と呼ばれる場合もある。電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバー、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は別のタイプの形式を含む様々な形態を取ることができる。
【００３５】
電子装置２００は、プロセッサ２１０、メモリ２２０、及びインターフェイス装置２３０を含む。これらのコンポーネントは、互いに直接又は間接的に結合してもよく、互いに通信してもよい。例えば、プロセッサ２１０、メモリ２２０、及びインターフェイス装置２３０は、バス２４０を介して互いに通信することができる。メモリ２２０は、本明細書で説明する機能を実行するための機械可読命令及びデータを含むコンピュータソフトウェアプログラムを格納する。例えば、メモリは、プロセッサ２１０によって実行されると、電子装置に本明細書に記載の方法を実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ２１０によって実行されると、電子装置にブロックチェーン・ネットワーク１００（図１）に関連するプロトコルを実装させる命令を含み得る。例えば、命令には、ビットコイン・プロトコルを実装するための命令が含まれる場合がある。
【００３６】
メモリ２２０は、ブロックチェーン・ネットワーク１００（図１）のグローバル台帳又はその一部を格納してもよい。つまり、メモリ２２０は、ブロックチェーンの全てのブロック、又は最新のブロック等のブロックの一部、又はいくつかのブロックにおける情報の一部を格納することができる。
【００３７】
図２では、メモリ２２０が単一のブロックで示されているが、実際には、電子装置２００は複数のメモリ・コンポーネントを含んでもよい。メモリ・コンポーネントは、例えば、ＲＡＭ、ＨＤＤ、ＳＳＤ、フラッシュドライブ等を含む様々なタイプのものであり得る。異なるタイプのメモリが異なる目的に適している場合がある。さらに、メモリ２２０がプロセッサ２１０とは別に示されているが、プロセッサ２１０は埋込み型メモリを含んでもよい。
【００３８】
本発明は、別のトランザクションのロック解除スクリプトで提供される未決定データを使用して、ブロックチェーン・トランザクション（Ｔｘ）のロック・スクリプトに埋め込まれた暗号公開キーを修正するように構成された方法（及び、対応するシステム）を提供し得る。例えば、トランザクション・バイトコードをメッセージとして使用するビットコイン・プロトコル（例えば、ＯＰ＿ＣＨＥＣＫＳＩＧ等）において署名チェックオペコード（opcode）と組み合わせて使用される場合に、トランザクションとデータとの両方で、公開キーの所有者からの承認又は認可が必要である。これにより、それらトランザクション及びデータが交替から保護される。こうして、本発明は、セキュリティ、暗号化、認可、及び転送制御に関する利点を与える。
【００３９】
ここで図３を参照すると、ブロックチェーン・ネットワーク上のデジタル資産をロックする方法３００が示されている。方法３００は、ブロックチェーン・ネットワーク１００（図１）のノード１０２によって実行され、安全な未決定データに基づいてデジタル資産をロックすることができる。ロックが設定される時点でロックを設定するノードがデータを知る必要がないという点で、データは未決定であり、データは、権限のない当事者によるデータの修正によってトランザクションを無効になるようにロックが設定されているという点で、安全である。参照の便宜上、方法３００を実行するノード１０２は、本明細書ではロックノードと呼ばれる場合がある。ロックノードは、ロックノードのプロセッサによって実行されると、方法３００を実行するプロセッサ実行可能命令で設定してもよい。
【００４０】
従って、デジタル資産をロックするために使用される未決定データは、ロック時にロックノードに未だ知られていないデータであり得る。このデータは、未だ確立されていないデータ（将来作成される予定であるが未だ作成されていないデータ等）、又は別のノードには知られているがロックノードには未だ利用できないデータである。ただし、そのデータは、特定の（determined）データソースから（現在又は将来）利用可能になると予定されるデータである。データソースは、ロック・スクリプトの生成時にデータソースのＩＤがわかるように決定される。ロック・スクリプトが単一のデータソースのデータに依存するように設定されているいくつかの実施態様では（ロック・スクリプトが複数のデータソースからのデータを受け入れ、どのデータソースに依存するかを決定する実施態様とは対照的に）、そのデータソースは信頼できるデータソースと呼ばれる場合がある。
【００４１】
方法３００は、動作３０２において、未決定データに基づいてデジタル資産をロックするためのロック・スクリプトを準備するステップを含む。ロック・スクリプトは、将来出力を使うために満たす必要がある条件を指定するトランザクションの出力に配置される、コンピュータ実行可能コード又は命令の形式の制限である。より具体的には、ロック・スクリプトは、ロック解除スクリプトからデータを受け取り、そのデータに基づいて特定の動作を実行し、検証ノードが、ロック解除スクリプトによってロック・スクリプトを首尾よくロック解除するかどうかを判定できるように設定される。
【００４２】
ロック・スクリプトは、１つ又は複数のデータ制約（constraints）を規定できる。データ制約は、ロック解除スクリプトで提供されるデータがロック・スクリプトを首尾よく評価する（例えば、ビットコインの場合にＴＲＵＥと評価する）ために満たす必要がある要件である。従って、動作３０２において、ロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータをデータ制約に対して評価させる命令を含むように設定することができる。ロック・スクリプトのデータ制約は、しきい値又は値、及びデータと規定された値又はしきい値との間の必要な関係を規定し得る。比較関数を使用して、ロック解除スクリプトで提供されるデータに基づいてロック・スクリプトを実行する検証ノードに、データと１つ又は複数の値とに基づいて比較を行わせることができる。例として、データ制約は、データが、ロック・スクリプトで指定された値と等しい、ロック・スクリプトで指定された値よりも大きい、ロック・スクリプトで指定された値よりも小さい、ロック・スクリプトで指定された値と等しくないこと等を要求することができる。可能な他の多くのデータ制約も規定できる。
【００４３】
例として、ビットコインでは、データが特定の条件を満たしていることを確認するために、ロック・スクリプトのデータ制約部分に含まれ得る可能な命令コードのいくつかの例を以下に示す。以下の比較関数のいずれかを使用する前に、他の演算も可能であり、スクリプトがデータを何らかの方法（例えば、乗算、減算、除算、加算、又は別の演算等）で修正する可能性があることに留意されたい。
・ＯＰ＿ＧＲＥＡＴＥＲＴＨＡＮ：これは、スタック内の２番目のアイテムがスタックの１番上のアイテムより大きい場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＬＥＳＳＴＨＡＮＯＲＥＱＵＡＬ：これは、スタック内の２番目のアイテムが１番上のアイテム以下の場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＧＲＥＡＴＥＲＴＨＡＮＯＲＥＱＵＡＬ：これは、スタック内の２番目のアイテムが一番上のアイテム以上の場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＷＩＴＨＩＮ：これは、スタック内の３番目のアイテムが２番目のアイテムと１番目のアイテムとの間にある場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＮＵＭＥＱＵＡＬ：これは、スタック内の上位アイテムが同じ数である場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＮＵＭＮＯＴＥＱＵＡＬ：これは、上位２つのアイテムが同じ数でない場合に、ＴＲＵＥの値を返す。
・ＯＰ＿ＬＥＳＳＴＨＡＮ：これは、スタック内の２番目のアイテムが１番上のアイテムよりも小さい場合に、ＴＲＵＥの値を返す。
【００４４】
ロック・スクリプトには、データによってデータ制約が満たされない場合に、ロック・スクリプトをロック解除することを意図したロック解除スクリプトを含むトランザクションを無効にする検証関数等の命令が含まれることもある。例として、ブロックチェーン・ネットワークがビットコインの場合に、ＯＰ＿ＶＥＲＩＦＹ命令コードが比較関数の後に含まれることがある。ＯＰ＿ＶＥＲＩＦＹコードは、スタックの最上部をチェックし、スタックの最上部の値がＴＲＵＥでない場合に、トランザクションを停止して無効にする。
【００４５】
こうして、少なくともいくつかの実施形態では、ロック・スクリプトのデータ制約部分は以下の形式となり得る：
＜制約をチェックするスクリプト＞ＯＰ＿ＶＥＲＩＦＹ
ここで、＜制約をチェックするスクリプト＞は、ロック解除スクリプトのデータが１つ又は複数の規定された制約を満たすかどうかを評価し、そのような評価に基づいてＴＲＵＥ又はＦＡＬＳＥを返すスクリプトである。
【００４６】
ロック・スクリプトには、ロック・スクリプトを実行する検証ノードに、データのソースを評価させるコンピュータ実行可能命令が含まれる場合もある。例えば、ロック・スクリプトでは、他のノードによる改ざんのない、特定のノード等の特定のデータソースによりデータを提供する必要があり得る。つまり、ロック・スクリプトは、そのような改ざんによってロック・スクリプトのロック解除を意図するトランザクションが無効になるように設定される。
【００４７】
ロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、楕円曲線有限フィールド演算を使用して、データのソース（ロック・スクリプトのロック解除を意図するロック解除スクリプトで提供されるデータのソース）を検証させる。より具体的には、ロック・スクリプトは、実行時に、ロックノードによってロック・スクリプトに含められる特定のデータソースの公開キー及びデータに基づいて、ノードに楕円曲線有限フィールド演算を行わせるように設定することができる。つまり、ロック・スクリプトは、ロック・スクリプトを実行するノードに、ロック・スクリプトで規定された特定のデータソースの公開キーと、ロック解除スクリプトで規定されたデータとに基づいて、特定のデータソースの修正された公開キーを生成させるように設定することができる。修正された公開キーは、ロック・スクリプトに埋め込まれる特定のデータソースの公開キーと、ロック解除スクリプトで提供されるデータとに基づいて、楕円曲線有限フィールド算術演算を行うことによって決定される。修正された公開キーは、複数の演算（例えば、データ×データ×公開キー等）を使用して決定することもできる。
【００４８】
ロック・スクリプトをロック解除するには、特定のデータソースは、データソースの秘密キー及びデータに基づいて有限フィールド算術演算を行うことにより、修正された秘密キーを取得する必要がある。より具体的には、秘密キーに対して行われる演算は、ロック・スクリプトが公開キーに対して行うように設定される演算に対応する。公開キーの場合と同様に、修正された秘密キー（データ×データ×秘密キー等）を取得するために、複数の演算が秘密キーに対して行われる場合がある。修正された秘密キーは、ロック解除スクリプトに含めることができる署名を生成するために、特定のデータソースによって使用される。本明細書では、この署名を、修正された秘密キーからの署名と呼ぶ場合がある。
【００４９】
データを用いて秘密キー及び公開キーを同様に修正することにより、データのソースの検証がどのように可能になるかを理解するには、秘密キーと公開キーの関係を考慮することが役立つ。より具体的には、楕円曲線公開キーは以下のように計算される：
Ｄ＝ｄ×Ｇ
ここで、ｄは秘密キーであり、Ｄは対応する公開キーであり、Ｇは楕円曲線有限フィールド発生元要素である。
【００５０】
秘密キーと公開キーとの間の関係により、データを用いて公開キーに変更がなされた場合に、対応する変更を秘密キーに行う必要がある。演算を有限フィールド加算に分解できる限り、データを用いて秘密キー及び公開キーを修正する方法はいくつでも使用できる。
【００５１】
例として、ｄが元の秘密キーであり、ｄ’が修正された秘密キーであり、Ｄが元の公開キーであり、Ｄ’が修正された公開キーである場合に、修正された公開キー及び修正された秘密キーは、以下のように決定され得る（データはｄａｔａである）：
ｄ’＝ｄ×ｄａｔａ
Ｄ’＝ｄ’×Ｇ＝ｄ×ｄａｔａ×Ｇ＝ｄａｔａ×Ｄ
又は、修正された公開キー及び修正された秘密キーは、以下のように決定され得る：
ｄ’＝ｄ＋ｄａｔａ
Ｄ’＝ｄ’×Ｇ＝（ｄ＋ｄａｔａ）×Ｇ＝Ｄ＋ＤＡＴＡ
ここで、ＤＡＴＡは楕円曲線ポイントである。
【００５２】
いくつかの既存のブロックチェーン・ネットワークは、楕円曲線有限フィールド算術演算を行うための特定の命令コードを含まない場合があるが、そのような演算を提供するためにブロックチェーン・ネットワーク１００（図１）の動作を制御するプロトコルで命令コードを提供してもよい。例として、エンコードされた楕円曲線ポイント及び数値を取り、且つスカラーによる楕円曲線の乗算を行う命令コードＯＰ＿ＥＣＰＭＵＬＴを規定できる。この命令コードは、結果を、エンコードされた楕円曲線ポイントとして出力する。
【００５３】
楕円曲線有限フィールド演算を行うには、特定の２つの楕円曲線演算を使用することができる：
・ポイントの追加（Ｐ＋Ｑ）が、楕円曲線上の新しい点をこの曲線の交点の否定（negation：交点ではない点）として計算するために使用される。これは、Ｒ＝Ｐ＋Ｑとして説明できる。
・ポイントの倍増（Ｐ＋Ｐ）が、ポイントの加算を使用してＰのポイントの倍を計算する。これは、Ｒ＝Ｐ＋Ｐ＝２Ｐと記述できる。
【００５４】
これらの演算は以下のように表現できる。
ｘ３＝ｓ２−ｘ１−ｘ２  ｍｏｄ  ｐ
ｙ３＝ｓ（ｘ１−ｘ３）−ｙ１  ｍｏｄ  ｐ
ここで、
【数１】
2020513178.tif 000003
これらの演算を任意数に対して使用して、スカラーによる楕円曲線ポイントの乗算等の楕円曲線演算を得ることができる。
【００５５】
こうして、方法３００の動作３０２で準備されるロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、対応するロック解除スクリプトで提供されるデータが、上述した手法を使用してデータソースの修正された公開キーを取得することにより、特定のデータソースにより提供されたかどうかを確認させるように設定することができる。ロック・スクリプトは、検証ノードに、修正された秘密キーからの署名（つまり、データに基づいて修正された秘密キーから生成された署名）を評価させるように設定することができる。より具体的には、修正された秘密キーからの署名が修正された公開キーに対応するかどうか、従って有効な署名であるかどうかを確認する署名確認命令コードをロック・スクリプトに含めることができる。例として、ＯＰ＿ＣＨＥＣＫＳＩＧ命令コードが使用され得る。ＯＰ＿ＣＨＥＣＫＳＩＧは、スタックから公開キー及び署名をポップ（pops）し、トランザクションのハッシュデータの署名を検証する。値が一致する場合に、ＯＰ＿ＣＨＥＣＫＳＩＧはＴＲＵＥを返す。こうして、修正された公開キーに基づいてロック解除スクリプト内の署名を評価するように検証ノードを設定するロック・スクリプト内の命令は、そのロック解除スクリプト内に含まれる署名が特定のデータソースに関連付けられた修正された秘密キーを使用して生成されていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクションを無効にさせるように設定することができる。つまり、特定のデータソースの秘密キーとデータとに基づいて特定のデータソースによって生成された修正された秘密キーを用いて署名が生成されていない場合に、意図したロック解除スクリプトを含むトランザクションは検証ノードによって無効にされる。
【００５６】
例として、ＯＰ＿ＣＨＥＣＫＳＩＧは、以下のようにロック・スクリプトで楕円曲線有限フィールド算術演算と一緒に使用できる。
＜公開キーＤ＞ＯＰ＿ＥＣＰＭＵＬＴ  ＯＰ＿ＣＨＥＣＫＳＩＧ
ここで、公開キーＤは、データを提供する特定のデータソースの公開キーである。
【００５７】
ロック・スクリプトのこの部分を首尾よく検証するロック解除スクリプトの対応する部分は以下のとおりである：
＜Ｓｉｇ’＞＜Ｄａｔａ＞
ここで、＜Ｄａｔａ＞はデータであり、＜Ｓｉｇ’＞は、修正された秘密キー（つまり、データに基づいて修正された秘密キー）によって生成された署名である。
【００５８】
ロック・スクリプトのデータ制約部分とロック・スクリプトのデータソースチェック部分の順序は逆にすることができる。例えば、ロック・スクリプトは、データがデータ制約を満たしているかどうかを検討する前に、最初に検証ノードに、データが特定のデータソースによって提供されたことを確認させる場合がある。
【００５９】
ロック・スクリプトには、上記の機能に加えて他のロック機能を含めることができる。例えば、ロック・スクリプトでは、別のノードの追加の署名も要求する場合がある。例えば、ロック・スクリプトでは、トランザクションの受信者（つまり、トランザクションに関連付けられたデジタル資産を受け取る当事者）が有効な署名を送信して、ロック・スクリプトをロック解除するように要求する場合がある。例えば、ロック・スクリプトには以下が含まれ得る：
＜公開キーＢ＞ＯＰ＿ＣＨＥＣＫＳＩＧ
ここで、公開キーＢは、ロック・スクリプトによって制限されるデジタル資産の受信者であるノードの公開キーである。
【００６０】
また、ロック・スクリプトは、ロック・スクリプトがＴＲＵＥと検証される前に、ロックノード自体に関連付けられた署名の追加を要求するように設定され、デジタル資産がもはやロック・スクリプトによって制限されないようにすることができる。例えば、ロック・スクリプトには以下が含まれ得る。
＜公開キーＡ＞ＯＰ＿ＣＨＥＣＫＳＩＧＶＥＲＩＦＹ
ここで、公開キーＡは、ロック・スクリプトによって制限されるデジタル資産の受信者であるノードの公開キーである。ＯＰ＿ＣＨＥＣＫＳＩＧＶＥＲＩＦＹはＯＰ＿ＣＨＥＣＫＳＩＧと同様に動作するが、ＯＰ＿ＣＨＥＣＫＳＩＧＶＥＲＩＦＹは、ＯＰ＿ＣＨＥＣＫＳＩＧがＴＲＵＥと評価されない場合に、ＯＰ＿ＶＥＲＩＦＹを使用して停止する。
【００６１】
さらに、動作３０２において準備されるロック・スクリプトは、規定された期間後に、ロック・スクリプトによってデジタル資産になされた制限を解除するための命令を含むように設定してもよい。つまり、ロック・スクリプトは、ロック当事者が特定の条件下でデジタル資産を回収（reclaim）できるようにする１つ又は複数の条件を含むように設定してもよい。例えば、データが、一度決定され、ロック・スクリプトに必要なデータ制約を満たせなかった場合に、ロック・スクリプトによって、ロックノードがデジタル資産を回収することができる。例えば、ロック・スクリプトは、ロック・スクリプトで指定された期間の経過後に、そのようなデジタル資産がこの期間中に他に請求されない場合に、ロックノード（又は、公開キーで指定された他の当事者）がデジタル資産を請求できるように設定することができる。
【００６２】
例として、ロック・スクリプトには、以下を含む条件付き分岐が含まれる場合がある：
＜制限時間＞ＯＰ＿ＣＨＥＣＫＳＥＱＵＥＮＣＥＶＥＲＩＦＹ
＜公開キーＡ＞ＯＰ＿ＣＨＥＣＫＳＩＧ
ここで、＜制限時間＞はロック・スクリプトに埋め込まれた期間であり、ＯＰ＿ＣＨＥＣＫＳＥＱＵＥＮＣＥＶＥＲＩＦＹは、使用されている出力が少なくとも指定された期間と同じ位期間が経過した（old）場合にのみ特定のパスウェイの実行を許可する命令コードである。例えば、＜制限時間＞が１０日に設定された場合に、（公開キー＜公開キーＡ（PubKey  A）＞に対応する秘密キーを有する）ロックノードは、ロックノードの秘密キーで署名された署名を提供することで１０日経過後に出力を回収することができる。
【００６３】
こうして、ロック・スクリプトには、ロック解除のために満たす必要がある多数の条件が含まれる場合がある。ロック・スクリプトは多くの形式を取り得るが、使用可能なスクリプトの例を以下に示す：
ＯＰ＿ＩＦ
＜ＰｕｂＫｅｙＡ＞ＯＰ＿ＣＨＥＣＫＳＩＧＶＥＲＩＦＹ
ＯＰ＿ＤＵＰ＜９０＞ＯＰ＿ＧＲＥＡＴＥＲＴＨＡＮ  ＯＰ＿ＶＥＲＩＦＹ
＜ＰｕｂＫｅｙＣ＞ＯＰ＿ＥＣＰＭＵＬＴ  ＯＰ＿ＣＨＥＣＫＳＩＧＶＥＲＩＦＹ
＜ＰｕｂＫｅｙＢ＞ＯＰ＿ＣＨＥＣＫＳＩＧ
ＯＰ＿ＥＬＳＥ
＜１０ｄａｙｓ＞ＯＰ＿ＣＨＥＣＫＳＥＱＵＥＮＣＥＶＥＲＩＦＹ
＜ＰｕｂＫｅｙＡ＞ＯＰ＿ＣＨＥＣＫＳＩＧ
ＯＰ＿ＥＮＤＩＦ
【００６４】
この例示的なロック・スクリプトは、ロックノードＡが、特定のデータソースＣから９０より大きいデータを要求するのを可能にする。さらに、ロック・スクリプトは、特定のデータソースが修正された秘密キーから（つまり、データに基づいて修正された秘密キーから）生成された署名を提供することによりデータのソースを証明することを要求する。また、例示的なロック・スクリプトは、ロックノードＡと転送中のデジタル資産の受信者となり得る別のノードＢとの両方が、ロック解除スクリプトに有効な署名を提供することを要求する。
【００６５】
例示的なロック・スクリプトには複数の分岐が含まれており、そのうちの１つでは、ロックノードＡが、それらデジタル資産が１０日以内に請求されない場合に、ロック・スクリプトによって制限されたデジタル資産を回収することができる。
【００６６】
例示的なロック・スクリプトは、例えば、ある当事者に関連付けられたロックノードＡによって別の当事者に関連付けられたノードＢに報酬を与えるために使用され、特定のデータソースＣが９０を超えるデータを提供する場合に、そのノードＢに報酬を与える。データは、例えば、マーク又は等級の形式のテスト結果であり、特定のデータソースは教師（teacher:採点者）であり得る。そのような場合に、ノードＢは、問題のマーク又は等級を受け取った当事者に関連付けられ、ノードＡは、マーク又は等級が満たされている場合にマーク又は等級を受け取った当事者に報酬を与えることを希望する当事者に関連付けられる。
【００６７】
動作３０２で準備されるロック・スクリプトは、ロックノードによるブロックチェーン・トランザクションに含められる。つまり、ロックノードは、（方法３００の動作３０４で）ブロックチェーン・トランザクションの出力にロック・スクリプトを埋め込み、トランザクションに関連付けられたデジタル資産を制限（つまり、ロック）することができる。トランザクションは、ロックノードによってブロックチェーン・ネットワーク１００（図１）に送信される。つまり、ロック・スクリプトを含むトランザクションは、ブロックチェーン・ネットワーク１００（図１）にブロードキャストされ得る。十分なマイニング料金を含める等、特定の基準が満たされている場合に、トランザクション（第１のトランザクション又は第１のブロックチェーン・トランザクションと呼ばれることもある）が、ブロックチェーン・ネットワーク１００（図１）上でマイナー１０４（図１）によって生成されたブロックに追加される。ロックノードは、ブロックがブロックチェーンにマイニングされ、確認されるまで待機する場合がある。
【００６８】
動作３０６において、ロックノードは、第１のトランザクションに出力として含まれるデジタル資産を使う更なるブロックチェーン・トランザクション（第２のトランザクション又は第２のブロックチェーン・トランザクションと呼ばれることもある）のトランザクション入力を準備することができる。つまり、トランザクションには、第２のトランザクションへの入力として、第１のトランザクションに関連付けられたＵＴＸＯが含まれる場合がある。ロックノードは、ロックノードの秘密キーに基づいて署名を生成し、且つその署名を第２のトランザクションのロック解除スクリプトに含めることができる。また、ロックノードには、トランザクションへの入力として、ロック・スクリプト内の条件分岐の特定の１つの動作をトリガーするために使用される分岐トリガーを含めることができる。例えば、上述した例示的なロック・スクリプトには２つの条件分岐が含まれ、第１の条件分岐では、別の当事者Ｂが第１のトランザクションに含まれるデジタル資産を要求でき、第２の条件分岐では、それらデジタル資産が指定された期間内にＢによって他に請求されない場合にロックノードがそのようなデジタル資産を回収することができる。第２のトランザクションのロック解除スクリプトに第２の分岐ではなく第１の分岐をトリガーさせるようにするには、ＯＰ＿ＩＦがＴＲＵＥと評価されて第１の分岐を実行させるように、ロックノードにトランザクションへの入力として「１」を含めることができる。
【００６９】
ロックノードの署名は、ロックノードの承認を必要とせずに、他のノードがトランザクションに追加できるように方法で追加される。例えば、署名はＳＩＧＨＡＳＨ＿ＮＯＮＥ｜ＳＩＧＨＡＳＨ＿ＡＮＹＯＮＥＣＡＮＰＡＹとして追加できる。ＳＩＧＨＡＳＨ＿ＡＮＹＯＮＥＣＡＮＰＡＹは現在の入力のみに署名する署名ハッシュタイプであり、ＳＩＧＨＡＳＨ＿ＮＯＮＥは入力のみに署名する署名ハッシュタイプであり、ロックノードの許可を必要とせずに誰でも出力を変更できる。
【００７０】
こうして、動作３０６において、ロックノードは署名を生成してこの署名をトランザクションに追加し、別の当事者が入力及び出力を追加できるようにトランザクションを設定し、トランザクションに分岐トリガーを追加してロック・スクリプトの特定の条件付き分岐の動作をトリガーすることができる。
【００７１】
ロックノードは、（動作３０８において）動作３０６で準備された第２のトランザクションを、当事者Ｂ等の別の当事者の別のノードに、又は特定のデータソースＣに提供することができる。
【００７２】
ここで図４を参照すると、ブロックチェーン・ネットワーク上のデジタル資産のロック解除を容易にする方法４００が示されている。方法４００は、ブロックチェーン・ネットワーク１００（図１）のノード１０２によって、又はブロックチェーン・ネットワーク１００に加わらなくてもよい別の電子装置によって実行され得る。方法４００を実行するノード１０２は、特定の（determined）データソースと呼ばれ得る。特定のデータソースは、特定のデータソースのプロセッサによって実行されると、方法４００を実行するプロセッサ実行可能命令で構成され得る。
【００７３】
動作４０２において、特定のデータソースは、方法３００の動作３０６においてロックノードによって準備されたトランザクションであり得る提案される（proposed）トランザクションを受信することができる。つまり、トランザクションは、ロック・スクリプトによって制限された（つまり、ロックされた）１つ又は複数のデジタル資産を参照するトランザクションである。
【００７４】
動作４０４において、特定のデータソースは、特定のデータソースの秘密キーと、特定のデータソースによってブロックチェーン・トランザクションで提供されるデータとに基づいて修正された秘密キーを生成する。修正された秘密キーは、上記の手法を使用して生成される。例えば、修正された秘密キーは、修正された秘密キーを生成するためにロック・スクリプトで規定された動作（演算）に対応する動作（演算）を使用して、データを用いて秘密キーを修正することによって生成することができる。こうして、動作４０４は、図３を参照して上記で説明したタイプのものであり得る。例えば、修正された秘密キーは、秘密キー及びデータに対して有限フィールド算術演算を行うことにより決定され得る。例えば、有限フィールド算術演算は乗算を行い得る。
【００７５】
動作４０６において、修正された秘密キーを使用して、提案されるトランザクションの署名が生成される。この署名は、動作４０８においてデータ自体とともにトランザクションに追加される。署名は、特定のデータソースからの承認を必要とせずに、他のノードがトランザクションに追加できるようする方法で追加してもよい。例えば、署名はＳＩＧＨＡＳＨ＿ＮＯＮＥ｜ＳＩＧＨＡＳＨ＿ＡＮＹＯＮＥＣＡＮＰＡＹとして追加してもよい。
【００７６】
動作４１０において、特定のデータソースは、トランザクションを別のノードに通信する。例えば、特定のデータソースは、（トランザクションのロック解除スクリプトをロック解除するように意図される）ロック・スクリプトで指定された公開キーに関連付けられた別のノードＢに、提案されるトランザクションを渡すことができる。この他のノードは、この他のノードの秘密キーに基づいて生成された更なる署名を追加し、トランザクションに関連付けられたデジタル資産をどの様に使うかを指定する出力も追加する。この他のノードは、トランザクション（第２のトランザクションと呼ばれることもある）をブロックチェーン・ネットワーク１００（図１）にブロードキャストすることができる。
【００７７】
ブロックチェーン・トランザクション（第２のトランザクションとも呼ばれることもある）を、ブロックチェーンに受け入れられるブロックに追加する場合に、トランザクションのロック解除スクリプトを含むトランザクションの入力は、第１のトランザクション（つまり、方法３００の動作３０４において準備されたトランザクション）のロック・スクリプトを首尾よくロック解除する必要がある。
【００７８】
ここで図５を参照すると、この図は、ブロックチェーン・ネットワーク１００のノード１０２によって実行され得る例示的な方法５００をフローチャート形式で示す。この方法を実行するノードは、そのノードがブロックチェーン・トランザクション（つまり、第１のトランザクションのロック・スクリプトをロック解除することを意図したロック解除スクリプトを含むトランザクションである第２のトランザクション）を検証して、トランザクションをブロックチェーン分散型台帳に追加すべきかを判定するため、検証ノードと呼ばれ得る。検証ノードは、マイナー１０４であってもよく、その検証ノードは、マイニングしないが、マイナー１０４によって提案されるブロック又はブロックに未だマイニングされていないトランザクションを単に検証する検証ノードであってもよい。
【００７９】
検証ノードは、（第２のトランザクションで規定される）ロック解除スクリプトを対応する（第１のトランザクションで規定される）ロック・スクリプトと一緒に実行して、ブロックチェーン・トランザクション（つまり、第２のトランザクション）が有効かどうかを判定する。より具体的には、トランザクションの各入力内のロック解除スクリプトをロック・スクリプトと一緒に実行して、そのロック解除スクリプトがロック・スクリプトによって規定された使用（支出）条件を満たすかどうかを判定できる。
【００８０】
例えば、ロック解除スクリプトは、スタック実行エンジンを使用して最初に実行され得る。ロック解除スクリプトがエラーなしで首尾よく実行されると、検証ノードによってメインスタックがコピーされ、次にロック・スクリプトが実行され得る。ロック解除スクリプトがＴＲＵＥと評価された場合に、ロック解除スクリプトは、ロック・スクリプトによって規定された使用（支出）条件を満たしている。その後、ブロックチェーン・トランザクションは有効であると判定され、特定の他の条件（例えば、マイナーが新しいブロックにトランザクションを含めるのに十分なマイニング料金等）が満たされた場合にトランザクションをブロックチェーンに書き込むことができる。
【００８１】
従って、方法５００の動作は、ロック・スクリプト内のコンピュータ実行可能命令によって規定される。従って、方法５００は、上述したロック・スクリプトの任意の機能を含み得る。
【００８２】
動作５０２において、検証ノードは、ロック解除スクリプトで提供されたデータを評価して、そのデータがロック・スクリプトで規定された１つ又は複数の制約を満たすかどうかを判定する。データ制約の例は、図３を参照して上述している。
【００８３】
検証ノードが、データが必要なデータ制約を満たしていないと判定した場合に、動作５０４において、検証ノードは、ロック解除スクリプトがロック・スクリプトに対する有効な解決策ではないと判定する。次に、検証ノードは、ロック解除スクリプトを含むブロックチェーン・トランザクション（つまり、第２のトランザクション）をブロックチェーンに追加しないように動作する。例えば、ノードがマイナー１０４（図１）である場合に、ノードは、そのマイナー１０４によって準備された次のブロックからトランザクションを除外する。
【００８４】
動作５０６において、検証ノードはデータのソースを評価する。より具体的には、検証ノードによって実行されるロック・スクリプトにより、ノードに、特定のデータソースの修正された公開キーを決定させる。修正された公開キーは、ロック・スクリプトに埋め込まれた特定のデータソースの公開キーに対して楕円曲線有限フィールド算術演算を行うことによって、またロック解除スクリプトで提供されるデータに基づいて決定される。次に、署名チェック機能が呼び出され、修正された公開キーが、修正された秘密キーに基づいて生成された署名に対応するかどうかが判定される。この動作（演算）の詳細については、ロック・スクリプトの説明において上記で詳細に説明している。署名はロック解除スクリプトで提供される。署名が無効であると判定された場合に、検証ノードは、動作５０４において、ロック解除スクリプトがロック・スクリプトに対する有効な解決策ではないと判定する。
【００８５】
データがデータ制約を満たしていると判定され、且つデータが有効であると判定された場合（つまり、そのデータが、その後の改ざんなしに、特定のデータソースによって生成又は提供されたと判定された場合）に、トランザクションは、動作５０８において（ロック・スクリプトの他の可能な要件も満たされている場合に）有効であると判定することができる。その後、トランザクションをブロックチェーンにマイニングすることができる。
【００８６】
図５の方法５００は、データが１つ又は複数の規定された制約を満たし、データが改ざんされていないことを一般的に確認する検証方法を示しているが、検証方法には、ロック・スクリプトがＴＲＵＥと評価される前（つまり、トランザクションが有効であると判定される前）に評価される他の基準を含み得る。
【００８７】
上記で議論したロック・スクリプトの例で説明した動作等、他の動作を行ってもよい。例えば、検証ノードは、ロック・スクリプトで指定された公開キーに関連付けられた他のノードが、ロック解除スクリプトを含むロック・トランザクションに有効に署名したかどうかを判定することができる。図４の議論で上述したように、これらの他のノードは、例えば、ロックノード（つまり、ロック・スクリプトを生成したノード）、受信者ノード（つまり、ロック・スクリプトを含むトランザクションで参照されるデジタル資産の受信者となることを意図したノード）、又は別のノードであり得る。これらの検証動作のいずれかの不成功は、検証の不成功を生じさせる可能性がある。
【００８８】
方法５００は、動作５０２及び５０６を実行する前に、動作５０２及び５０６を規定するロック・スクリプトの分岐をトリガーする分岐トリガーがロック解除スクリプトに含まれていることを判定するステップも含むことができる。動作５０２及び５０６は、分岐トリガーによってトリガーされた場合にのみ実行され得る。
【００８９】
動作５０２及び５０６の順序を逆にしてもよいことにも留意されたい。つまり、データのソースは、データが規定された制約を満たしていることを確認する前に、検証ノードによって確認され得る。
【００９０】
上述の実施形態は、本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む（comprising,  comprises）」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む（comprises,  comprising）」は「含む、有する（includes,  including）」又は「から構成される（consists  of,  consisting  of）」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化され得る。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【図１】
2020513178.tif 000004
【図２】
2020513178.tif 000005
【図３】
2020513178.tif 000006
【図４】
2020513178.tif 000007
【図５】
2020513178.tif 000008
【国際調査報告】
2020513178.tif 000009
2020513178.tif 000010
2020513178.tif 000011