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

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

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

特開2023-155441未決定データに基づいたブロックチェーン・トランザクションの安全性確保
<>
  • 特開-未決定データに基づいたブロックチェーン・トランザクションの安全性確保 図1
  • 特開-未決定データに基づいたブロックチェーン・トランザクションの安全性確保 図2
  • 特開-未決定データに基づいたブロックチェーン・トランザクションの安全性確保 図3
  • 特開-未決定データに基づいたブロックチェーン・トランザクションの安全性確保 図4
  • 特開-未決定データに基づいたブロックチェーン・トランザクションの安全性確保 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023155441
(43)【公開日】2023-10-20
(54)【発明の名称】未決定データに基づいたブロックチェーン・トランザクションの安全性確保
(51)【国際特許分類】
   H04L 9/08 20060101AFI20231013BHJP
   H04L 9/32 20060101ALI20231013BHJP
【FI】
H04L9/08 C
H04L9/08 F
H04L9/32 200Z
【審査請求】有
【請求項の数】11
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023140800
(22)【出願日】2023-08-31
(62)【分割の表示】P 2022014597の分割
【原出願日】2018-04-06
(31)【優先権主張番号】1705749.8
(32)【優先日】2017-04-10
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チャン,イーン
(57)【要約】
【課題】 未決定データに基づいてブロックチェーン・トランザクションをロックするためのコンピュータで実施される方法を提供する。
【解決手段】ロックノードは、デジタル資産をロックするためにブロックチェーン・トランザクションにロック・スクリプトを含めることができる。ロック・スクリプトには、特定のデータソースの公開キーと、ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、a)特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びb)修正された公開キーに基づいてロック解除スクリプト内の暗号署名を評価することにより、検証させる命令とが含まれる。ロック・スクリプトを含むブロックチェーン・トランザクションは、ロックノードによってブロックチェーン・ネットワークに送信される。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータで実施される方法であって、当該コンピュータで実施される方法は、
特定のデータソースが、ロック・スクリプトによってロックされた1つ又は複数のデジタル資産を参照するブロックチェーン・トランザクションを受信するステップと、
前記特定のデータソースが、該特定のデータソースの秘密キーと、前記特定のデータソースが前記ブロックチェーン・トランザクションに提供するデータとに基づいて、修正された秘密キーを生成するステップと、
該修正された秘密キーを使用して前記ブロックチェーン・トランザクションの第1の署名を生成するステップと、
該第1の署名及び前記データを前記ブロックチェーン・トランザクションに追加するステップと、
前記ブロックチェーン・トランザクションをノードに通信するステップと、を含む、
コンピュータで実施される方法。
【請求項2】
前記修正された秘密キーを生成するステップは、前記ロック・スクリプトで規定された動作に対応する演算を使用して、前記データを用いて前記秘密キーを修正するステップを含む、請求項1に記載のコンピュータで実施される方法。
【請求項3】
前記秘密キー及び前記データに対して有限フィールド算術演算を行うことにより、前記修正された秘密キーを生成するステップをさらに含む、請求項1又は請求項2に記載のコンピュータで実施される方法。
【請求項4】
前記有限フィールド算術演算は乗算を行う、請求項3に記載のコンピュータで実施される方法。
【請求項5】
前記第1の署名は、SIGHASH_NONE|SIGHASH_ANYONECANPAYとして前記ブロックチェーン・トランザクションに追加される、請求項1乃至4のいずれか一項に記載のコンピュータで実施される方法。
【請求項6】
前記ノードは、前記ロック・スクリプトで指定された公開キーに関連付けられており、前記ブロックチェーン・トランザクションのロック解除スクリプトがロックを解除することを目的とする、請求項1乃至5のいずれか一項に記載のコンピュータで実施される方法。
【請求項7】
前記ノードが、前記ノードの前記秘密キーに基づいて、第2の署名を生成するステップと、
該第2の署名を前記ブロックチェーン・トランザクションに追加するステップと、をさらに含む、請求項1乃至6のいずれか一項に記載のコンピュータで実施される方法。
【請求項8】
前記ノードが、前記ブロックチェーン・トランザクションに関連付けられた前記1つ又は複数のデジタル資産がどのように使用されるかを指定する1つ又は複数の出力を前記ブロックチェーン・トランザクションに追加するステップをさらに含む、請求項1乃至7のいずれか一項に記載のコンピュータで実施される方法。
【請求項9】
前記ノードが、前記ブロックチェーン・トランザクションをブロックチェーン・ネットワークにブロードキャストするステップをさらに含む、請求項1乃至8のいずれか一項に記載のコンピュータで実施される方法。
【請求項10】
コンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、前記命令が実行されると、請求項1乃至9のいずれか一項に記載の方法を実行するようにプロセッサを構成する、
コンピュータ可読記憶媒体。
【請求項11】
電子装置であって、当該電子装置は、
インターフェイス装置と、
該インターフェイス装置に結合されるプロセッサと、
該プロセッサに結合されるメモリであって、実行されると、請求項1乃至9のいずれか一項に記載の方法を実行するように前記プロセッサを構成するコンピュータ実行可能命令を記憶するメモリと、を含む、
電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、デジタルロックに関し、より具体的には、特定のデータソースからの未決定データに基づいてデジタル資産をロックするための方法及びシステムに関する。本発明は、デジタル資産のロック時にロック当事者が利用できないデータに基づいて、ブロックチェーン・ネットワーク上でデジタル資産の条件付きロック解除を提供する用途に特に適しているが、これに限定されるものではない。
【0002】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、ブロックチェーン及びトランザクションチェーン技術、アクセス許可された台帳及びアクセス許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的でビットコインについて参照しているが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルが本発明の範囲内にあることに留意されたい。例えば、本発明は、署名検証においてビットコインと同様の制限を有する他のブロックチェーン実施態様において有用であり得る。
【0003】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクション及び他の情報で構成される。ビットコインの場合に、ブロックチェーン・システムの参加者同士の間でデジタル資産の制御を移す各トランザクションには、少なくとも1つの入力と少なくとも1つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して記述される。
【0004】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。検証は、ブロック生成能力を有する大多数のノードにより使用される共通の規則セットに基づいて、ノードによって決定される。例えば、ビットコイン・プロトコルでは、いくつかのネットワークノードはマイナー(採掘者:miners)として機能し、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされたソフトウェアクライアントは、未使用(unspent)トランザクション出力(UTXO)を参照するトランザクションでこの検証作業を行う。検証は、そのロック及びロック解除スクリプトを実行することにより行われ得る。ロック及びロック解除スクリプトの実行がTRUEと評価され、且つ他の特定の条件が満たされた場合に、トランザクションは有効であり、そのトランザクションをブロックチェーンに書き込むことができる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、i)トランザクションを受信するノードによって検証する(トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する);ii)マイナーによって構築された新しいブロックに追加する;iii)採掘する、つまり過去のトランザクションの公的な台帳に追加する必要がある。トランザクションは、トランザクションを実質的に不可逆にするために十分な数のブロックがブロックチェーンに追加されたときに確認されたとみなされる。
【0005】
トランザクション出力には、ビットコイン等のデジタル資産や、制限(encumbrance)又はロックとも呼ばれ得るロック・スクリプトが含まれる。ロック・スクリプトは、出力を使う(spend)ために満たす必要がある条件を指定することにより、デジタル資産をロックする。例えば、ロック・スクリプトでは、関連するデジタル資産をロック解除するために、特定のデータをロック解除スクリプトに提供する必要があり得る。デジタル資産のロックを解除するためにロック当事者にデータの提供を要求する従来の手法では、ロック・スクリプト内にデータのハッシュを埋め込む必要がある。ただし、このロック及びロック解除の手法では、ロック・スクリプトの作成時にデータを決定(つまり、既知にし且つ固定)する必要がある。
【0006】
こうして、これらの態様の1つ又は複数においてブロックチェーン技術を改良する改善された方法及び装置を提供することが望ましい。
【発明の概要】
【0007】
こうして、本発明によれば、添付の特許請求の範囲で規定される方法が提供される。
【0008】
以下でより詳細に説明するように、コンピュータで実施される方法及び電子装置は、未決定データに基づいてトランザクションをロックするように構成される。
【0009】
従って、本発明によれば、コンピュータで実施される方法(及び、対応するシステム)が提供され得る。この方法は、セキュリティ及び/又は制御方法として説明することができる。この方法は、ブロックチェーン・トランザクション(TX)の出力をブロックチェーン・ネットワークを介して誰が及び/又はどの様にロック解除及び使用できるかを制御するように構成することができる。出力の使用(支出)により、暗号通貨の転送が可能になる。本発明は、ブロックチェーン・トランザクション(Tx)のロック・スクリプトに埋め込まれた暗号公開キーを、別のトランザクションのロック解除スクリプトで提供される未決定データで修正するように構成された方法(及び、対応するシステム)を提供し得る。本発明により、未決定データに基づいてブロックチェーン・トランザクションをセキュリティ保護することができる。つまり、本発明によって、ロックをブロックチェーン・トランザクションに適用した時点では利用可能ではないが、将来利用可能になると予定されるデータに基づいて、ブロックチェーン・トランザクションをロックすることができる。
【0010】
本発明の一実施形態による方法は、
i)ブロックチェーン・ネットワーク内のノードが、トランザクション(つまり、ブロックチェーン・トランザクション)に関連付けられたデジタル資産を制限する(encumber)(つまり、ロックする)ために、トランザクション(つまり、ブロックチェーン・トランザクション)にロック・スクリプトを含めるステップであって、ロック・スクリプトは、特定のデータソースの公開キーを含み、且つロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、a)特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びb)修正された公開キーに基づいてロック解除スクリプト内の署名(つまり、暗号署名)を評価することにより、検証させる命令を含む、含めるステップと、
ii)ノードが、トランザクション(つまり、ブロックチェーン・トランザクション)をブロックチェーン・ネットワークに送信するステップと、を含む。
【0011】
いくつかの実施態様では、ロック・スクリプトは、1つ又は複数のデータ制約をさらに規定し、ロック・スクリプトは、1つ又は複数のデータ制約がデータによって満たされていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクション(つまり、ブロックチェーン・トランザクション)を無効化させる命令をさらに含む。いくつかの実施態様では、1つ又は複数のデータ制約は、1つ又は複数の値と、データ及び1つ又は複数の値に基づいて比較を行う比較関数とを規定する。
【0012】
いくつかの実施態様では、検証ノードに、修正された公開キーに基づいてロック解除スクリプト内の署名(つまり、暗号署名)を評価させる命令は、特定のデータソースに関連付けられた修正された秘密キーを使用して署名(つまり、暗号署名)が生成されていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクション(つまり、ブロックチェーン・トランザクション)を無効化させるように設定される。修正された秘密キーは、特定のデータソースの秘密キー及びデータに基づいて、特定のデータソースによって生成され得る。
【0013】
いくつかの実施態様では、ロック・スクリプトは、修正された秘密キーを生成するために使用される演算に対応する演算を行うことにより、検証ノードに、修正された公開キーを生成させるように設定される。
【0014】
いくつかの実施態様では、修正された秘密キーは、データ及び特定のデータソースの秘密キーに基づいて有限フィールド算術演算を行うことによって生成されたキーである。
【0015】
いくつかの実施態様では、命令は、ロック・スクリプトを実行する検証ノードに、データ及び特定のデータソースの公開キーに基づいて楕円曲線有限フィールド算術演算を行うことにより、修正された公開キーを生成させるように設定される。いくつかの実施態様では、楕円曲線有限フィールド算術演算は、スカラーによる楕円曲線の乗算を行う。
【0016】
いくつかの実施態様では、ロック・スクリプトは、規定された期間後に、ノードによるデジタル資産の制限(つまり、ロック)の解除のための命令を含むようにさらに設定される。
【0017】
本発明によれば、コンピュータで実施される方法を提供することができ、この方法は、
a)ノードが、データ及び秘密キーに基づいて修正された秘密キーを生成するステップと、
b)修正された秘密キーを使用して、ロック・スクリプトによって制限された(つまり、ロックされた)デジタル資産を参照するトランザクションの署名(つまり、暗号署名)を生成するステップと、
c)(暗号)署名及びデータを(ブロックチェーン)トランザクションに追加するステップと、
d)(ブロックチェーン)トランザクションを別のノードに通信するステップと、を含む。
【0018】
いくつかの実施態様では、修正された秘密キーを生成するステップは、データ及び秘密キーに対して有限フィールド算術演算を行うステップを含む。いくつかの実施態様では、有限フィールド算術演算によって乗算が行われる。
【0019】
いくつかの実施態様では、ロック・スクリプトは、特定のデータソースの公開キーを指定し、且つロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、a)特定のデータソースの公開キー及びロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びb)修正された公開キーに基づいてロック解除スクリプト内の署名(つまり、暗号署名)を評価することにより、評価させる命令を含む。
【0020】
本発明によれば、電子装置を提供することができる。電子装置は、インターフェイス装置と、インターフェイス装置に結合されるプロセッサと、プロセッサに結合されるメモリとを含む。メモリは、実行されると、プロセッサに、本明細書に記載される方法を実行させるコンピュータ実行可能命令を格納している。
【0021】
本発明によれば、コンピュータ可読記憶媒体が提供され得る。コンピュータ可読記憶媒体は、実行されると、プロセッサに、本明細書に記載の方法を実行させるコンピュータ実行可能命令を含む。
【0022】
本発明によれば、実行されると、プロセッサに、本明細書に記載のロック・スクリプトの機能を実行させるコンピュータ実行可能命令を含む、ロック・スクリプトを含むコンピュータ可読記憶媒体が提供され得る。
【0023】
本発明のこれら及び他の態様は、本明細書に記載される実施形態を参照して説明され、この実施形態から明らかになろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【0024】
図1】例示的なブロックチェーン・ネットワークのブロック図である。
図2】ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子装置のブロック図である。
図3】ロック・スクリプトを用いてトランザクションを設定する例示的な方法のフローチャートである。
図4】ロック・スクリプトに必要な署名を用いて提案されるトランザクションを設定する例示的な方法のフローチャートである。
図5】ロック・スクリプトによってロックされたデジタル資産に関連付けられたトランザクションを検証する例示的な方法のフローチャートである。
【発明を実施するための形態】
【0025】
最初に図1を参照すると、この図は、ブロックチェーンに関連付けられた例示的なブロックチェーン・ネットワーク100をブロック図形式で示す。ブロックチェーン・ネットワーク100の動作下でブロックチェーンプロトコルのインスタンスを実行する分散電子装置が、ブロックチェーン・ネットワーク100に参加し得る。そのような分散電子装置は、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコイン・プロトコルであり得る。
【0026】
ブロックチェーンプロトコルを実行し、且つブロックチェーン・ネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバー、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は他の電子装置等のコンピュータを含む様々なタイプのものであり得る。
【0027】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーンに関連付けられたプロトコルを尊守する。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合に、ビットコイン・プロトコルを使用することができる。
【0028】
ノード102は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。こうして、グローバル元帳は分散型元帳である。各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを格納することができる。グローバル台帳に影響を与えるノード102によるトランザクションは、他のノード102によって検証され、それによってグローバル台帳の有効性が維持される。ブロックチェーンが作業照明(proof of work)ベースのブロックチェーンである場合に、ブロックと共に送信された作業照明をチェックすることでブロックも検証される。
【0029】
ノード102の少なくともいくつかは、ブロックチェーン・ネットワーク100のマイナー(採掘者:miners)104として動作する。図1のブロックチェーンは、マイナー104がブロックチェーン上でのトランザクションを促進するために費用のかかる計算を行う作業証明である。例えば、作業証明ブロックチェーンでは、マイナーが暗号問題を解く必要がある場合がある。ビットコインでは、マイナー104は、ブロックヘッダーをSHA-256でダブルハッシュして、現在の困難性により規定される値よりも小さい数になるようにナンス(nonce)を見つける。作業証明アルゴリズムに必要なハッシュ能力は、トランザクションが、特定の数のブロックがその上でマイニングされた後に、実質的に不可逆とみなされることを意味する。暗号問題を解くマイナー104は、ブロックチェーンに新しいブロックを作成し、この新しいブロックを他のノード102にブロードキャストする。他のノード102は、マイナー104が実際に暗号問題を解き、従って、ブロックをブロックチェーンに追加することを受け入れる前に、十分な作業証明を実証したことを検証する。他のノード102は、ブロックをブロックチェーンに追加することを受け入れる前に、ブロック自体が有効であること(例えば、トランザクション及びブロックのブロックヘッダーが有効であること)も検証する。ブロックは、ノード102のコンセンサスによってブロックチェーン(つまり、グローバル分散型台帳)に追加される。
【0030】
マイナー104によって作成されたブロックは、ノード102によってブロックチェーンにブロードキャストされたトランザクションを含む。例えば、ブロックは、あるノード102に関連付けられたアドレスから別のノード102に関連付けられたアドレスへのトランザクションを含み得る。このように、ブロックはあるアドレスから別のアドレスへのトランザクションの記録として機能する。トランザクションをブロックに含めることを要求する当事者(party)は、公開キーに対応する秘密キーを使用してその要求に署名することにより、転送を開始する(例えばビットコインの場合に、ビットコインを使う等)権限があることを証明する。その要求が有効に署名されている場合にのみ、その転送がブロックに追加される。
【0031】
ビットコインの場合に、公開キーとアドレスとの間には1対1の対応関係がある。つまり、各公開キーは単一のアドレスに関連付けられている。こうして、ここでの公開キーとの間のデジタル資産の移転(例えば、公開キーへの支払い)及びその公開キーに関連付けられたアドレスとの間のデジタル資産の移転への言及は、一般的な動作を指す。
【0032】
ノード102のいくつかは、マイナーとして動作せず、代わりに検証ノードとして参加し得る。トランザクションの検証には、署名(ここでは暗号署名とも呼ばれ得る)又はロック・スクリプトで指定された他の条件の確認、有効なUTXOへの参照の確認等が含まれ得る。
【0033】
図1の例は、6つのノード102を含み、そのうちの2つがマイナー104として参加している。実際には、ノード102又はマイナー104の数は異なっていてもよい。多くのブロックチェーン・ネットワークでは、ノード102及びマイナー104の数は、図1に示されている数よりはるかに多くてもよい。
【0034】
図2は、ピアツーピア・ブロックチェーン・ネットワーク100(図1)においてノード102(図1)として機能し得る例示的な電子装置200のコンポーネントを示すブロック図である。例示的な電子装置200は、処理装置と呼ばれる場合もある。電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバー、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は別のタイプの形式を含む様々な形態を取ることができる。
【0035】
電子装置200は、プロセッサ210、メモリ220、及びインターフェイス装置230を含む。これらのコンポーネントは、互いに直接又は間接的に結合してもよく、互いに通信してもよい。例えば、プロセッサ210、メモリ220、及びインターフェイス装置230は、バス240を介して互いに通信することができる。メモリ220は、本明細書で説明する機能を実行するための機械可読命令及びデータを含むコンピュータソフトウェアプログラムを格納する。例えば、メモリは、プロセッサ210によって実行されると、電子装置に本明細書に記載の方法を実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ210によって実行されると、電子装置にブロックチェーン・ネットワーク100(図1)に関連するプロトコルを実装させる命令を含み得る。例えば、命令には、ビットコイン・プロトコルを実装するための命令が含まれる場合がある。
【0036】
メモリ220は、ブロックチェーン・ネットワーク100(図1)のグローバル台帳又はその一部を格納してもよい。つまり、メモリ220は、ブロックチェーンの全てのブロック、又は最新のブロック等のブロックの一部、又はいくつかのブロックにおける情報の一部を格納することができる。
【0037】
図2では、メモリ220が単一のブロックで示されているが、実際には、電子装置200は複数のメモリ・コンポーネントを含んでもよい。メモリ・コンポーネントは、例えば、RAM、HDD、SSD、フラッシュドライブ等を含む様々なタイプのものであり得る。異なるタイプのメモリが異なる目的に適している場合がある。さらに、メモリ220がプロセッサ210とは別に示されているが、プロセッサ210は埋込み型メモリを含んでもよい。
【0038】
本発明は、別のトランザクションのロック解除スクリプトで提供される未決定データを使用して、ブロックチェーン・トランザクション(Tx)のロック・スクリプトに埋め込まれた暗号公開キーを修正するように構成された方法(及び、対応するシステム)を提供し得る。例えば、トランザクション・バイトコードをメッセージとして使用するビットコイン・プロトコル(例えば、OP_CHECKSIG等)において署名チェックオペコード(opcode)と組み合わせて使用される場合に、トランザクションとデータとの両方で、公開キーの所有者からの承認又は認可が必要である。これにより、それらトランザクション及びデータが交替から保護される。こうして、本発明は、セキュリティ、暗号化、認可、及び転送制御に関する利点を与える。
【0039】
ここで図3を参照すると、ブロックチェーン・ネットワーク上のデジタル資産をロックする方法300が示されている。方法300は、ブロックチェーン・ネットワーク100(図1)のノード102によって実行され、安全な未決定データに基づいてデジタル資産をロックすることができる。ロックが設定される時点でロックを設定するノードがデータを知る必要がないという点で、データは未決定であり、データは、権限のない当事者によるデータの修正によってトランザクションを無効になるようにロックが設定されているという点で、安全である。参照の便宜上、方法300を実行するノード102は、本明細書ではロックノードと呼ばれる場合がある。ロックノードは、ロックノードのプロセッサによって実行されると、方法300を実行するプロセッサ実行可能命令で設定してもよい。
【0040】
従って、デジタル資産をロックするために使用される未決定データは、ロック時にロックノードに未だ知られていないデータであり得る。このデータは、未だ確立されていないデータ(将来作成される予定であるが未だ作成されていないデータ等)、又は別のノードには知られているがロックノードには未だ利用できないデータである。ただし、そのデータは、特定の(determined)データソースから(現在又は将来)利用可能になると予定されるデータである。データソースは、ロック・スクリプトの生成時にデータソースのIDがわかるように決定される。ロック・スクリプトが単一のデータソースのデータに依存するように設定されているいくつかの実施態様では(ロック・スクリプトが複数のデータソースからのデータを受け入れ、どのデータソースに依存するかを決定する実施態様とは対照的に)、そのデータソースは信頼できるデータソースと呼ばれる場合がある。
【0041】
方法300は、動作302において、未決定データに基づいてデジタル資産をロックするためのロック・スクリプトを準備するステップを含む。ロック・スクリプトは、将来出力を使うために満たす必要がある条件を指定するトランザクションの出力に配置される、コンピュータ実行可能コード又は命令の形式の制限である。より具体的には、ロック・スクリプトは、ロック解除スクリプトからデータを受け取り、そのデータに基づいて特定の動作を実行し、検証ノードが、ロック解除スクリプトによってロック・スクリプトを首尾よくロック解除するかどうかを判定できるように設定される。
【0042】
ロック・スクリプトは、1つ又は複数のデータ制約(constraints)を規定できる。データ制約は、ロック解除スクリプトで提供されるデータがロック・スクリプトを首尾よく評価する(例えば、ビットコインの場合にTRUEと評価する)ために満たす必要がある要件である。従って、動作302において、ロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータをデータ制約に対して評価させる命令を含むように設定することができる。ロック・スクリプトのデータ制約は、しきい値又は値、及びデータと規定された値又はしきい値との間の必要な関係を規定し得る。比較関数を使用して、ロック解除スクリプトで提供されるデータに基づいてロック・スクリプトを実行する検証ノードに、データと1つ又は複数の値とに基づいて比較を行わせることができる。例として、データ制約は、データが、ロック・スクリプトで指定された値と等しい、ロック・スクリプトで指定された値よりも大きい、ロック・スクリプトで指定された値よりも小さい、ロック・スクリプトで指定された値と等しくないこと等を要求することができる。可能な他の多くのデータ制約も規定できる。
【0043】
例として、ビットコインでは、データが特定の条件を満たしていることを確認するために、ロック・スクリプトのデータ制約部分に含まれ得る可能な命令コードのいくつかの例を以下に示す。以下の比較関数のいずれかを使用する前に、他の演算も可能であり、スクリプトがデータを何らかの方法(例えば、乗算、減算、除算、加算、又は別の演算等)で修正する可能性があることに留意されたい。
・OP_GREATERTHAN:これは、スタック内の2番目のアイテムがスタックの1番上のアイテムより大きい場合に、TRUEの値を返す。
・OP_LESSTHANOREQUAL:これは、スタック内の2番目のアイテムが1番上のアイテム以下の場合に、TRUEの値を返す。
・OP_GREATERTHANOREQUAL:これは、スタック内の2番目のアイテムが一番上のアイテム以上の場合に、TRUEの値を返す。
・OP_WITHIN:これは、スタック内の3番目のアイテムが2番目のアイテムと1番目のアイテムとの間にある場合に、TRUEの値を返す。
・OP_NUMEQUAL:これは、スタック内の上位アイテムが同じ数である場合に、TRUEの値を返す。
・OP_NUMNOTEQUAL:これは、上位2つのアイテムが同じ数でない場合に、TRUEの値を返す。
・OP_LESSTHAN:これは、スタック内の2番目のアイテムが1番上のアイテムよりも小さい場合に、TRUEの値を返す。
【0044】
ロック・スクリプトには、データによってデータ制約が満たされない場合に、ロック・スクリプトをロック解除することを意図したロック解除スクリプトを含むトランザクションを無効にする検証関数等の命令が含まれることもある。例として、ブロックチェーン・ネットワークがビットコインの場合に、OP_VERIFY命令コードが比較関数の後に含まれることがある。OP_VERIFYコードは、スタックの最上部をチェックし、スタックの最上部の値がTRUEでない場合に、トランザクションを停止して無効にする。
【0045】
こうして、少なくともいくつかの実施形態では、ロック・スクリプトのデータ制約部分は以下の形式となり得る:
<制約をチェックするスクリプト>OP_VERIFY
ここで、<制約をチェックするスクリプト>は、ロック解除スクリプトのデータが1つ又は複数の規定された制約を満たすかどうかを評価し、そのような評価に基づいてTRUE又はFALSEを返すスクリプトである。
【0046】
ロック・スクリプトには、ロック・スクリプトを実行する検証ノードに、データのソースを評価させるコンピュータ実行可能命令が含まれる場合もある。例えば、ロック・スクリプトでは、他のノードによる改ざんのない、特定のノード等の特定のデータソースによりデータを提供する必要があり得る。つまり、ロック・スクリプトは、そのような改ざんによってロック・スクリプトのロック解除を意図するトランザクションが無効になるように設定される。
【0047】
ロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、楕円曲線有限フィールド演算を使用して、データのソース(ロック・スクリプトのロック解除を意図するロック解除スクリプトで提供されるデータのソース)を検証させる。より具体的には、ロック・スクリプトは、実行時に、ロックノードによってロック・スクリプトに含められる特定のデータソースの公開キー及びデータに基づいて、ノードに楕円曲線有限フィールド演算を行わせるように設定することができる。つまり、ロック・スクリプトは、ロック・スクリプトを実行するノードに、ロック・スクリプトで規定された特定のデータソースの公開キーと、ロック解除スクリプトで規定されたデータとに基づいて、特定のデータソースの修正された公開キーを生成させるように設定することができる。修正された公開キーは、ロック・スクリプトに埋め込まれる特定のデータソースの公開キーと、ロック解除スクリプトで提供されるデータとに基づいて、楕円曲線有限フィールド算術演算を行うことによって決定される。修正された公開キーは、複数の演算(例えば、データ×データ×公開キー等)を使用して決定することもできる。
【0048】
ロック・スクリプトをロック解除するには、特定のデータソースは、データソースの秘密キー及びデータに基づいて有限フィールド算術演算を行うことにより、修正された秘密キーを取得する必要がある。より具体的には、秘密キーに対して行われる演算は、ロック・スクリプトが公開キーに対して行うように設定される演算に対応する。公開キーの場合と同様に、修正された秘密キー(データ×データ×秘密キー等)を取得するために、複数の演算が秘密キーに対して行われる場合がある。修正された秘密キーは、ロック解除スクリプトに含めることができる署名を生成するために、特定のデータソースによって使用される。本明細書では、この署名を、修正された秘密キーからの署名と呼ぶ場合がある。
【0049】
データを用いて秘密キー及び公開キーを同様に修正することにより、データのソースの検証がどのように可能になるかを理解するには、秘密キーと公開キーの関係を考慮することが役立つ。より具体的には、楕円曲線公開キーは以下のように計算される:
D=d×G
ここで、dは秘密キーであり、Dは対応する公開キーであり、Gは楕円曲線有限フィールド発生元要素である。
【0050】
秘密キーと公開キーとの間の関係により、データを用いて公開キーに変更がなされた場合に、対応する変更を秘密キーに行う必要がある。演算を有限フィールド加算に分解できる限り、データを用いて秘密キー及び公開キーを修正する方法はいくつでも使用できる。
【0051】
例として、dが元の秘密キーであり、d’が修正された秘密キーであり、Dが元の公開キーであり、D’が修正された公開キーである場合に、修正された公開キー及び修正された秘密キーは、以下のように決定され得る(データはdataである):
d’=d×data
D’=d’×G=d×data×G=data×D
又は、修正された公開キー及び修正された秘密キーは、以下のように決定され得る:
d’=d+data
D’=d’×G=(d+data)×G=D+DATA
ここで、DATAは楕円曲線ポイントである。
【0052】
いくつかの既存のブロックチェーン・ネットワークは、楕円曲線有限フィールド算術演算を行うための特定の命令コードを含まない場合があるが、そのような演算を提供するためにブロックチェーン・ネットワーク100(図1)の動作を制御するプロトコルで命令コードを提供してもよい。例として、エンコードされた楕円曲線ポイント及び数値を取り、且つスカラーによる楕円曲線の乗算を行う命令コードOP_ECPMULTを規定できる。この命令コードは、結果を、エンコードされた楕円曲線ポイントとして出力する。
【0053】
楕円曲線有限フィールド演算を行うには、特定の2つの楕円曲線演算を使用することができる:
・ポイントの追加(P+Q)が、楕円曲線上の新しい点をこの曲線の交点の否定(negation:交点ではない点)として計算するために使用される。これは、R=P+Qとして説明できる。
・ポイントの倍増(P+P)が、ポイントの加算を使用してPのポイントの倍を計算する。これは、R=P+P=2Pと記述できる。
【0054】
これらの演算は以下のように表現できる。
=s-x-x mod p
=s(x-x)-y mod p
ここで、
【数1】
これらの演算を任意数に対して使用して、スカラーによる楕円曲線ポイントの乗算等の楕円曲線演算を得ることができる。
【0055】
こうして、方法300の動作302で準備されるロック・スクリプトは、ロック・スクリプトを実行する検証ノードに、対応するロック解除スクリプトで提供されるデータが、上述した手法を使用してデータソースの修正された公開キーを取得することにより、特定のデータソースにより提供されたかどうかを確認させるように設定することができる。ロック・スクリプトは、検証ノードに、修正された秘密キーからの署名(つまり、データに基づいて修正された秘密キーから生成された署名)を評価させるように設定することができる。より具体的には、修正された秘密キーからの署名が修正された公開キーに対応するかどうか、従って有効な署名であるかどうかを確認する署名確認命令コードをロック・スクリプトに含めることができる。例として、OP_CHECKSIG命令コードが使用され得る。OP_CHECKSIGは、スタックから公開キー及び署名をポップ(pops)し、トランザクションのハッシュデータの署名を検証する。値が一致する場合に、OP_CHECKSIGはTRUEを返す。こうして、修正された公開キーに基づいてロック解除スクリプト内の署名を評価するように検証ノードを設定するロック・スクリプト内の命令は、そのロック解除スクリプト内に含まれる署名が特定のデータソースに関連付けられた修正された秘密キーを使用して生成されていない場合に、検証ノードに、ロック解除スクリプトを含むトランザクションを無効にさせるように設定することができる。つまり、特定のデータソースの秘密キーとデータとに基づいて特定のデータソースによって生成された修正された秘密キーを用いて署名が生成されていない場合に、意図したロック解除スクリプトを含むトランザクションは検証ノードによって無効にされる。
【0056】
例として、OP_CHECKSIGは、以下のようにロック・スクリプトで楕円曲線有限フィールド算術演算と一緒に使用できる。
<公開キーD>OP_ECPMULT OP_CHECKSIG
ここで、公開キーDは、データを提供する特定のデータソースの公開キーである。
【0057】
ロック・スクリプトのこの部分を首尾よく検証するロック解除スクリプトの対応する部分は以下のとおりである:
<Sig’><Data>
ここで、<Data>はデータであり、<Sig’>は、修正された秘密キー(つまり、データに基づいて修正された秘密キー)によって生成された署名である。
【0058】
ロック・スクリプトのデータ制約部分とロック・スクリプトのデータソースチェック部分の順序は逆にすることができる。例えば、ロック・スクリプトは、データがデータ制約を満たしているかどうかを検討する前に、最初に検証ノードに、データが特定のデータソースによって提供されたことを確認させる場合がある。
【0059】
ロック・スクリプトには、上記の機能に加えて他のロック機能を含めることができる。例えば、ロック・スクリプトでは、別のノードの追加の署名も要求する場合がある。例えば、ロック・スクリプトでは、トランザクションの受信者(つまり、トランザクションに関連付けられたデジタル資産を受け取る当事者)が有効な署名を送信して、ロック・スクリプトをロック解除するように要求する場合がある。例えば、ロック・スクリプトには以下が含まれ得る:
<公開キーB>OP_CHECKSIG
ここで、公開キーBは、ロック・スクリプトによって制限されるデジタル資産の受信者であるノードの公開キーである。
【0060】
また、ロック・スクリプトは、ロック・スクリプトがTRUEと検証される前に、ロックノード自体に関連付けられた署名の追加を要求するように設定され、デジタル資産がもはやロック・スクリプトによって制限されないようにすることができる。例えば、ロック・スクリプトには以下が含まれ得る。
<公開キーA>OP_CHECKSIGVERIFY
ここで、公開キーAは、ロック・スクリプトによって制限されるデジタル資産の受信者であるノードの公開キーである。OP_CHECKSIGVERIFYはOP_CHECKSIGと同様に動作するが、OP_CHECKSIGVERIFYは、OP_CHECKSIGがTRUEと評価されない場合に、OP_VERIFYを使用して停止する。
【0061】
さらに、動作302において準備されるロック・スクリプトは、規定された期間後に、ロック・スクリプトによってデジタル資産になされた制限を解除するための命令を含むように設定してもよい。つまり、ロック・スクリプトは、ロック当事者が特定の条件下でデジタル資産を回収(reclaim)できるようにする1つ又は複数の条件を含むように設定してもよい。例えば、データが、一度決定され、ロック・スクリプトに必要なデータ制約を満たせなかった場合に、ロック・スクリプトによって、ロックノードがデジタル資産を回収することができる。例えば、ロック・スクリプトは、ロック・スクリプトで指定された期間の経過後に、そのようなデジタル資産がこの期間中に他に請求されない場合に、ロックノード(又は、公開キーで指定された他の当事者)がデジタル資産を請求できるように設定することができる。
【0062】
例として、ロック・スクリプトには、以下を含む条件付き分岐が含まれる場合がある:
<制限時間>OP_CHECKSEQUENCEVERIFY
<公開キーA>OP_CHECKSIG
ここで、<制限時間>はロック・スクリプトに埋め込まれた期間であり、OP_CHECKSEQUENCEVERIFYは、使用されている出力が少なくとも指定された期間と同じ位期間が経過した(old)場合にのみ特定のパスウェイの実行を許可する命令コードである。例えば、<制限時間>が10日に設定された場合に、(公開キー<公開キーA(PubKey A)>に対応する秘密キーを有する)ロックノードは、ロックノードの秘密キーで署名された署名を提供することで10日経過後に出力を回収することができる。
【0063】
こうして、ロック・スクリプトには、ロック解除のために満たす必要がある多数の条件が含まれる場合がある。ロック・スクリプトは多くの形式を取り得るが、使用可能なスクリプトの例を以下に示す:
OP_IF
<PubKeyA>OP_CHECKSIGVERIFY
OP_DUP<90>OP_GREATERTHAN OP_VERIFY
<PubKeyC>OP_ECPMULT OP_CHECKSIGVERIFY
<PubKeyB>OP_CHECKSIG
OP_ELSE
<10days>OP_CHECKSEQUENCEVERIFY
<PubKeyA>OP_CHECKSIG
OP_ENDIF
【0064】
この例示的なロック・スクリプトは、ロックノードAが、特定のデータソースCから90より大きいデータを要求するのを可能にする。さらに、ロック・スクリプトは、特定のデータソースが修正された秘密キーから(つまり、データに基づいて修正された秘密キーから)生成された署名を提供することによりデータのソースを証明することを要求する。また、例示的なロック・スクリプトは、ロックノードAと転送中のデジタル資産の受信者となり得る別のノードBとの両方が、ロック解除スクリプトに有効な署名を提供することを要求する。
【0065】
例示的なロック・スクリプトには複数の分岐が含まれており、そのうちの1つでは、ロックノードAが、それらデジタル資産が10日以内に請求されない場合に、ロック・スクリプトによって制限されたデジタル資産を回収することができる。
【0066】
例示的なロック・スクリプトは、例えば、ある当事者に関連付けられたロックノードAによって別の当事者に関連付けられたノードBに報酬を与えるために使用され、特定のデータソースCが90を超えるデータを提供する場合に、そのノードBに報酬を与える。データは、例えば、マーク又は等級の形式のテスト結果であり、特定のデータソースは教師(teacher:採点者)であり得る。そのような場合に、ノードBは、問題のマーク又は等級を受け取った当事者に関連付けられ、ノードAは、マーク又は等級が満たされている場合にマーク又は等級を受け取った当事者に報酬を与えることを希望する当事者に関連付けられる。
【0067】
動作302で準備されるロック・スクリプトは、ロックノードによるブロックチェーン・トランザクションに含められる。つまり、ロックノードは、(方法300の動作304で)ブロックチェーン・トランザクションの出力にロック・スクリプトを埋め込み、トランザクションに関連付けられたデジタル資産を制限(つまり、ロック)することができる。トランザクションは、ロックノードによってブロックチェーン・ネットワーク100(図1)に送信される。つまり、ロック・スクリプトを含むトランザクションは、ブロックチェーン・ネットワーク100(図1)にブロードキャストされ得る。十分なマイニング料金を含める等、特定の基準が満たされている場合に、トランザクション(第1のトランザクション又は第1のブロックチェーン・トランザクションと呼ばれることもある)が、ブロックチェーン・ネットワーク100(図1)上でマイナー104(図1)によって生成されたブロックに追加される。ロックノードは、ブロックがブロックチェーンにマイニングされ、確認されるまで待機する場合がある。
【0068】
動作306において、ロックノードは、第1のトランザクションに出力として含まれるデジタル資産を使う更なるブロックチェーン・トランザクション(第2のトランザクション又は第2のブロックチェーン・トランザクションと呼ばれることもある)のトランザクション入力を準備することができる。つまり、トランザクションには、第2のトランザクションへの入力として、第1のトランザクションに関連付けられたUTXOが含まれる場合がある。ロックノードは、ロックノードの秘密キーに基づいて署名を生成し、且つその署名を第2のトランザクションのロック解除スクリプトに含めることができる。また、ロックノードには、トランザクションへの入力として、ロック・スクリプト内の条件分岐の特定の1つの動作をトリガーするために使用される分岐トリガーを含めることができる。例えば、上述した例示的なロック・スクリプトには2つの条件分岐が含まれ、第1の条件分岐では、別の当事者Bが第1のトランザクションに含まれるデジタル資産を要求でき、第2の条件分岐では、それらデジタル資産が指定された期間内にBによって他に請求されない場合にロックノードがそのようなデジタル資産を回収することができる。第2のトランザクションのロック解除スクリプトに第2の分岐ではなく第1の分岐をトリガーさせるようにするには、OP_IFがTRUEと評価されて第1の分岐を実行させるように、ロックノードにトランザクションへの入力として「1」を含めることができる。
【0069】
ロックノードの署名は、ロックノードの承認を必要とせずに、他のノードがトランザクションに追加できるように方法で追加される。例えば、署名はSIGHASH_NONE|SIGHASH_ANYONECANPAYとして追加できる。SIGHASH_ANYONECANPAYは現在の入力のみに署名する署名ハッシュタイプであり、SIGHASH_NONEは入力のみに署名する署名ハッシュタイプであり、ロックノードの許可を必要とせずに誰でも出力を変更できる。
【0070】
こうして、動作306において、ロックノードは署名を生成してこの署名をトランザクションに追加し、別の当事者が入力及び出力を追加できるようにトランザクションを設定し、トランザクションに分岐トリガーを追加してロック・スクリプトの特定の条件付き分岐の動作をトリガーすることができる。
【0071】
ロックノードは、(動作308において)動作306で準備された第2のトランザクションを、当事者B等の別の当事者の別のノードに、又は特定のデータソースCに提供することができる。
【0072】
ここで図4を参照すると、ブロックチェーン・ネットワーク上のデジタル資産のロック解除を容易にする方法400が示されている。方法400は、ブロックチェーン・ネットワーク100(図1)のノード102によって、又はブロックチェーン・ネットワーク100に加わらなくてもよい別の電子装置によって実行され得る。方法400を実行するノード102は、特定の(determined)データソースと呼ばれ得る。特定のデータソースは、特定のデータソースのプロセッサによって実行されると、方法400を実行するプロセッサ実行可能命令で構成され得る。
【0073】
動作402において、特定のデータソースは、方法300の動作306においてロックノードによって準備されたトランザクションであり得る提案される(proposed)トランザクションを受信することができる。つまり、トランザクションは、ロック・スクリプトによって制限された(つまり、ロックされた)1つ又は複数のデジタル資産を参照するトランザクションである。
【0074】
動作404において、特定のデータソースは、特定のデータソースの秘密キーと、特定のデータソースによってブロックチェーン・トランザクションで提供されるデータとに基づいて修正された秘密キーを生成する。修正された秘密キーは、上記の手法を使用して生成される。例えば、修正された秘密キーは、修正された秘密キーを生成するためにロック・スクリプトで規定された動作(演算)に対応する動作(演算)を使用して、データを用いて秘密キーを修正することによって生成することができる。こうして、動作404は、図3を参照して上記で説明したタイプのものであり得る。例えば、修正された秘密キーは、秘密キー及びデータに対して有限フィールド算術演算を行うことにより決定され得る。例えば、有限フィールド算術演算は乗算を行い得る。
【0075】
動作406において、修正された秘密キーを使用して、提案されるトランザクションの署名が生成される。この署名は、動作408においてデータ自体とともにトランザクションに追加される。署名は、特定のデータソースからの承認を必要とせずに、他のノードがトランザクションに追加できるようする方法で追加してもよい。例えば、署名はSIGHASH_NONE|SIGHASH_ANYONECANPAYとして追加してもよい。
【0076】
動作410において、特定のデータソースは、トランザクションを別のノードに通信する。例えば、特定のデータソースは、(トランザクションのロック解除スクリプトをロック解除するように意図される)ロック・スクリプトで指定された公開キーに関連付けられた別のノードBに、提案されるトランザクションを渡すことができる。この他のノードは、この他のノードの秘密キーに基づいて生成された更なる署名を追加し、トランザクションに関連付けられたデジタル資産をどの様に使うかを指定する出力も追加する。この他のノードは、トランザクション(第2のトランザクションと呼ばれることもある)をブロックチェーン・ネットワーク100(図1)にブロードキャストすることができる。
【0077】
ブロックチェーン・トランザクション(第2のトランザクションとも呼ばれることもある)を、ブロックチェーンに受け入れられるブロックに追加する場合に、トランザクションのロック解除スクリプトを含むトランザクションの入力は、第1のトランザクション(つまり、方法300の動作304において準備されたトランザクション)のロック・スクリプトを首尾よくロック解除する必要がある。
【0078】
ここで図5を参照すると、この図は、ブロックチェーン・ネットワーク100のノード102によって実行され得る例示的な方法500をフローチャート形式で示す。この方法を実行するノードは、そのノードがブロックチェーン・トランザクション(つまり、第1のトランザクションのロック・スクリプトをロック解除することを意図したロック解除スクリプトを含むトランザクションである第2のトランザクション)を検証して、トランザクションをブロックチェーン分散型台帳に追加すべきかを判定するため、検証ノードと呼ばれ得る。検証ノードは、マイナー104であってもよく、その検証ノードは、マイニングしないが、マイナー104によって提案されるブロック又はブロックに未だマイニングされていないトランザクションを単に検証する検証ノードであってもよい。
【0079】
検証ノードは、(第2のトランザクションで規定される)ロック解除スクリプトを対応する(第1のトランザクションで規定される)ロック・スクリプトと一緒に実行して、ブロックチェーン・トランザクション(つまり、第2のトランザクション)が有効かどうかを判定する。より具体的には、トランザクションの各入力内のロック解除スクリプトをロック・スクリプトと一緒に実行して、そのロック解除スクリプトがロック・スクリプトによって規定された使用(支出)条件を満たすかどうかを判定できる。
【0080】
例えば、ロック解除スクリプトは、スタック実行エンジンを使用して最初に実行され得る。ロック解除スクリプトがエラーなしで首尾よく実行されると、検証ノードによってメインスタックがコピーされ、次にロック・スクリプトが実行され得る。ロック解除スクリプトがTRUEと評価された場合に、ロック解除スクリプトは、ロック・スクリプトによって規定された使用(支出)条件を満たしている。その後、ブロックチェーン・トランザクションは有効であると判定され、特定の他の条件(例えば、マイナーが新しいブロックにトランザクションを含めるのに十分なマイニング料金等)が満たされた場合にトランザクションをブロックチェーンに書き込むことができる。
【0081】
従って、方法500の動作は、ロック・スクリプト内のコンピュータ実行可能命令によって規定される。従って、方法500は、上述したロック・スクリプトの任意の機能を含み得る。
【0082】
動作502において、検証ノードは、ロック解除スクリプトで提供されたデータを評価して、そのデータがロック・スクリプトで規定された1つ又は複数の制約を満たすかどうかを判定する。データ制約の例は、図3を参照して上述している。
【0083】
検証ノードが、データが必要なデータ制約を満たしていないと判定した場合に、動作504において、検証ノードは、ロック解除スクリプトがロック・スクリプトに対する有効な解決策ではないと判定する。次に、検証ノードは、ロック解除スクリプトを含むブロックチェーン・トランザクション(つまり、第2のトランザクション)をブロックチェーンに追加しないように動作する。例えば、ノードがマイナー104(図1)である場合に、ノードは、そのマイナー104によって準備された次のブロックからトランザクションを除外する。
【0084】
動作506において、検証ノードはデータのソースを評価する。より具体的には、検証ノードによって実行されるロック・スクリプトにより、ノードに、特定のデータソースの修正された公開キーを決定させる。修正された公開キーは、ロック・スクリプトに埋め込まれた特定のデータソースの公開キーに対して楕円曲線有限フィールド算術演算を行うことによって、またロック解除スクリプトで提供されるデータに基づいて決定される。次に、署名チェック機能が呼び出され、修正された公開キーが、修正された秘密キーに基づいて生成された署名に対応するかどうかが判定される。この動作(演算)の詳細については、ロック・スクリプトの説明において上記で詳細に説明している。署名はロック解除スクリプトで提供される。署名が無効であると判定された場合に、検証ノードは、動作504において、ロック解除スクリプトがロック・スクリプトに対する有効な解決策ではないと判定する。
【0085】
データがデータ制約を満たしていると判定され、且つデータが有効であると判定された場合(つまり、そのデータが、その後の改ざんなしに、特定のデータソースによって生成又は提供されたと判定された場合)に、トランザクションは、動作508において(ロック・スクリプトの他の可能な要件も満たされている場合に)有効であると判定することができる。その後、トランザクションをブロックチェーンにマイニングすることができる。
【0086】
図5の方法500は、データが1つ又は複数の規定された制約を満たし、データが改ざんされていないことを一般的に確認する検証方法を示しているが、検証方法には、ロック・スクリプトがTRUEと評価される前(つまり、トランザクションが有効であると判定される前)に評価される他の基準を含み得る。
【0087】
上記で議論したロック・スクリプトの例で説明した動作等、他の動作を行ってもよい。例えば、検証ノードは、ロック・スクリプトで指定された公開キーに関連付けられた他のノードが、ロック解除スクリプトを含むロック・トランザクションに有効に署名したかどうかを判定することができる。図4の議論で上述したように、これらの他のノードは、例えば、ロックノード(つまり、ロック・スクリプトを生成したノード)、受信者ノード(つまり、ロック・スクリプトを含むトランザクションで参照されるデジタル資産の受信者となることを意図したノード)、又は別のノードであり得る。これらの検証動作のいずれかの不成功は、検証の不成功を生じさせる可能性がある。
【0088】
方法500は、動作502及び506を実行する前に、動作502及び506を規定するロック・スクリプトの分岐をトリガーする分岐トリガーがロック解除スクリプトに含まれていることを判定するステップも含むことができる。動作502及び506は、分岐トリガーによってトリガーされた場合にのみ実行され得る。
【0089】
動作502及び506の順序を逆にしてもよいことにも留意されたい。つまり、データのソースは、データが規定された制約を満たしていることを確認する前に、検証ノードによって確認され得る。
【0090】
上述の実施形態は、本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む(comprising, comprises)」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む(comprises, comprising)」は「含む、有する(includes, including)」又は「から構成される(consists of, consisting of)」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化され得る。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【0091】
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
コンピュータで実施される方法であって、当該方法は、
ブロックチェーン・ネットワーク内のノードが、ブロックチェーン・トランザクションに関連付けられたデジタル資産をロックするために、前記ブロックチェーン・トランザクション内にロック・スクリプトを含めるステップであって、該ロック・スクリプトは、特定のデータソースの公開キーを含み、且つ前記ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、a)前記特定のデータソースの前記公開キー及び前記ロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びb)該修正された公開キーに基づいて前記ロック解除スクリプト内の暗号署名を評価することにより、検証させる命令を含む、含めるステップと、
前記ノードが、前記ブロックチェーン・トランザクションを前記ブロックチェーン・ネットワークに送信するステップと、を含む、
コンピュータで実施される方法。
[実施例2]
前記ロック・スクリプトは、1つ又は複数のデータ制約をさらに規定し、前記ロック・スクリプトは、前記1つ又は複数のデータ制約が前記データによって満たされていない場合に、前記検証ノードに、前記ロック解除スクリプトを含むブロックチェーン・トランザクションを無効化させる命令をさらに含む、実施例1に記載のコンピュータで実施される方法。
[実施例3]
前記1つ又は複数のデータ制約は、1つ又は複数の値と、前記データ及び前記1つ又は複数の値に基づいて比較を行う比較関数とを規定する、実施例2に記載のコンピュータで実施される方法。
[実施例4]
前記検証ノードに、前記修正された公開キーに基づいて前記ロック解除スクリプト内の前記暗号署名を評価させる前記命令は、前記特定のデータソースに関連付けられた修正された秘密キーを使用して前記暗号署名が生成されていない場合に、前記検証ノードに、前記ロック解除スクリプトを含む前記ブロックチェーン・トランザクションを無効化させるように設定され、前記修正された秘密キーは、前記特定のデータソースの秘密キー及び前記データに基づいて前記特定のデータソースによって生成される、実施例1乃至3のいずれか一項に記載のコンピュータで実施される方法。
[実施例5]
前記命令は、前記修正された秘密キーを生成するために使用される演算に対応する演算を行うことにより、前記検証ノードに、前記修正された公開キーを生成させるように設定される、実施例4に記載のコンピュータで実施される方法。
[実施例6]
前記修正された秘密キーは、前記データ及び前記特定のデータソースの前記秘密キーに基づいて有限フィールド算術演算を行うことによって生成された鍵である、実施例4又は5に記載のコンピュータで実施される方法。
[実施例7]
前記命令は、前記データ及び前記特定のデータソースの前記公開キーに基づいて楕円曲線有限フィールド算術演算を行うことにより、前記ロック・スクリプトを実行する前記検証ノードに、前記修正された公開キーを生成させるように設定される、実施例6に記載のコンピュータで実施される方法。
[実施例8]
前記楕円曲線有限フィールド算術演算は、スカラーによる楕円曲線乗算を行う、実施例7に記載のコンピュータで実施される方法。
[実施例9]
前記ロック・スクリプトは、規定された期間後に、前記ノードによる前記デジタル資産のロックの解除のための命令を含むようにさらに設定される、実施例1乃至8のいずれか一項に記載のコンピュータで実施される方法。
[実施例10]
実行されると、プロセッサに実施例1乃至9のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
[実施例11]
電子装置であって、当該電子装置は、
インターフェイス装置と、
該インターフェイス装置に結合されるプロセッサと、
該プロセッサに結合されるメモリであって、実行されると、前記プロセッサに、実施例1乃至9のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を格納したメモリと、を有する、
電子装置。
[実施例12]
コンピュータで実施される方法であって、当該方法は、
ノードが、データ及び秘密キーに基づいて修正された秘密キーを生成するステップと、
該修正された秘密キーを使用して、ロック・スクリプトによってロックされたデジタル資産を参照するブロックチェーン・トランザクションの暗号署名を生成するステップと、
該暗号署名及び前記データを前記ブロックチェーン・トランザクションに追加するステップと、
前記ブロックチェーン・トランザクションを別のノードに通信するステップと、を含む、
コンピュータで実施される方法。
[実施例13]
修正された秘密キーを生成するステップは、前記データ及び前記秘密キーに対して有限フィールド算術演算を行うステップを含む、実施例12に記載のコンピュータで実施される方法。
[実施例14]
有限フィールド算術演算によって乗算が行われる、実施例12又は13に記載のコンピュータで実施される方法。
[実施例15]
前記ロック・スクリプトは、特定のデータソースの公開キーを指定し、且つ前記ロック・スクリプトを実行する検証ノードに、ロック解除スクリプトで提供されるデータのソースを、a)前記特定のデータソースの前記公開キー及び前記ロック解除スクリプト内に規定されたデータに基づいて修正された公開キーを生成すること及びb)該修正された公開キーに基づいて前記ロック解除スクリプト内の暗号署名を評価することにより、評価させる命令を含む、実施例12乃至14のいずれか一項に記載のコンピュータで実施される方法。
図1
図2
図3
図4
図5
【外国語明細書】