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

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

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

<>
  • 特許-ブロックチェーンにおける擬似乱数生成 図1
  • 特許-ブロックチェーンにおける擬似乱数生成 図2
  • 特許-ブロックチェーンにおける擬似乱数生成 図3
  • 特許-ブロックチェーンにおける擬似乱数生成 図4
  • 特許-ブロックチェーンにおける擬似乱数生成 図5
  • 特許-ブロックチェーンにおける擬似乱数生成 図6
  • 特許-ブロックチェーンにおける擬似乱数生成 図7
  • 特許-ブロックチェーンにおける擬似乱数生成 図8
  • 特許-ブロックチェーンにおける擬似乱数生成 図9
  • 特許-ブロックチェーンにおける擬似乱数生成 図10
  • 特許-ブロックチェーンにおける擬似乱数生成 図11
  • 特許-ブロックチェーンにおける擬似乱数生成 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-12
(45)【発行日】2024-04-22
(54)【発明の名称】ブロックチェーンにおける擬似乱数生成
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240415BHJP
【FI】
H04L9/32 200Z
【請求項の数】 17
【外国語出願】
(21)【出願番号】P 2023017802
(22)【出願日】2023-02-08
(62)【分割の表示】P 2020507066の分割
【原出願日】2018-08-13
(65)【公開番号】P2023053051
(43)【公開日】2023-04-12
【審査請求日】2023-02-08
(31)【優先権主張番号】1713086.5
(32)【優先日】2017-08-15
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1713084.0
(32)【優先日】2017-08-15
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チャン,イン
(72)【発明者】
【氏名】クラマー,ディーン
【審査官】上島 拓也
(56)【参考文献】
【文献】米国特許出願公開第2017/0063535(US,A1)
【文献】国際公開第2016/126374(WO,A1)
【文献】国際公開第2016/164310(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって:
第1パズル及び第2パズルを第3ロッキング・スクリプトに含む第3トランザクションを検証するステップであって:
前記第1パズルは、前記第1パズルに対するソリューションにより充足することが可能な第1条件により、第1ディジタル資産のコントロールの移転を制限する第1ロッキング・スクリプトにおいて第1トランザクションに含まれ;
前記第2パズルは、前記第2パズルに対するソリューションにより充足することが可能な第2条件により、第2ディジタル資産のコントロールの移転を制限する第2ロッキング・スクリプトにおいて第2トランザクションに含まれ;
前記第1トランザクション及び前記第2トランザクションはブロックチェーンに対してコミットされ;及び
前記第3トランザクションは第3ディジタル資産に関連している、ステップ;
前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションに少なくとも部分的に基づいて擬似乱数を生成するステップ;
前記擬似乱数に少なくとも部分的に基づいて前記第3ディジタル資産のコントロールを移転するステップ;
を有する方法。
【請求項2】
前記第1トランザクションは第1関係者により作成され;及び
前記第2トランザクションは前記第1関係者とは異なる第2関係者によって作成される、請求項1に記載の方法。
【請求項3】
前記第1関係者は前記第1トランザクションの作成前に前記第1パズルに対するソリューションにアクセスすることができる、請求項2に記載の方法。
【請求項4】
前記第1ロッキング・スクリプトは時間的制約を含み;
前記時間的制約が充足されることを条件として、前記第1パズルに対するソリューションを含むトランザクションの検証は、前記第1ディジタル資産のコントロールを第1エンティティへ移転することを引き起こし;及び
前記時間的制約が充足されないことを条件として、ペナルティ・トランザクションの検証は、前記第1ディジタル資産のコントロールを、前記第1エンティティとは異なる第2エンティティへ移転することを引き起こす、請求項1-3のうちの何れか1項に記載の方法。
【請求項5】
前記時間的制約は、前記第1パズルに対するソリューションが、時間制限を超える前に明らかにされることである、請求項4に記載の方法。
【請求項6】
前記擬似乱数生成トランザクションを検証することは、前記第1条件及び前記第2条件の充足前に実行される、請求項1-5のうちの何れか1項に記載の方法。
【請求項7】
前記第1パズルは暗号ハッシュ・パズルである、請求項1-6のうちの何れか1項に記載の方法。
【請求項8】
前記第1パズルは前記第1トランザクションのロッキング・スクリプトにおける一群のオペレーション・コードであり;及び
前記一群のオペレーション・コードの実行は、前記第1パズルに対するソリューションを入力として受けた結果として真であると評価する、請求項1-7のうちの何れか1項に記載の方法。
【請求項9】
前記第1パズル及び前記第2パズルを解くことは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを検証することよりも計算が困難である、請求項1-8のうちの何れか1項に記載の方法。
【請求項10】
前記擬似乱数を生成するステップは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションに少なくとも部分的に基づいてシード値を導出することを含む、請求項1-9のうちの何れか1項に記載の方法。
【請求項11】
前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含むシード・トランザクションを検証するステップを更に含む請求項1-10のうちの何れか1項に記載の方法。
【請求項12】
前記第3ディジタル資産のコントロールを移転するステップは:
前記擬似乱数が第1値であるという条件の下で、前記シード・トランザクションの検証は成功であること;及び
前記擬似乱数が前記第1値とは異なる第2値であるという条件の下で、前記シード・トランザクションの検証は不成功であることを含む、請求項11に記載の方法。
【請求項13】
前記シード・トランザクションのアンロッキング・スクリプトは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含む、請求項12に記載の方法。
【請求項14】
前記第3トランザクションを作成したエンティティに前記第3ディジタル資産のコントロールを返すためのリファンド・トランザクションを検証するステップを更に含む請求項1-10のうちの何れか1項に記載の方法。
【請求項15】
前記リファンド・トランザクションを検証するステップは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含むシード・トランザクションの検証の成功が、所定の期間内に生じていないという条件の下で生じる、請求項14に記載の方法。
【請求項16】
プロセッサ;及び
実行可能命令を含むメモリ;
を有するシステムであって、前記実行可能命令は、前記プロセッサによる実行の結果として、請求項1-15のうち何れか1項に記載の方法を前記システムに実行させる、システム。
【請求項17】
実行可能命令を保存した非一時的なコンピュータ読み取り可能な記憶媒体であって、前記実行可能命令は、コンピュータ・システムのプロセッサにより実行された結果として、請求項1-15のうち何れか1項に記載の方法を前記コンピュータ・システムに少なくとも実行させる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にブロックチェーン・トランザクションを含む分散台帳技術に関連し、特にブロックチェーン・スクリプト内での乱数生成を安全にすることに関連する。本発明は更にブロックチェーン・ネットワークで行われる電子転送に関するセキュリティを強化するために暗号化及び数学的な技術を活用する。本発明はスマート・コントラクトに使用することに特に適しているがこれに限定されない。
【背景技術】
【0002】
この文献において、用語「ブロックチェーン」は何種類もの電子的なコンピュータ・ベースの分散された台帳のうちの何れを指してもよい。これらはコンセンサス・ベースのブロックチェーン及びトランザクション・チェーン技術、許可型及び非許可型の台帳、共有台帳、及びそれらの変形を含む。ブロックチェーン技術の最も広く知られたアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装も提案され開発されている。便宜上及び説明の目的のために、本開示に記載される技術の有用なアプリケーションとして「ビットコイン」の例が参照されるかもしれないが、ビットコインは、本開示で説明される技術が適用され得る多数のアプリケーションのうちのほんの1つに過ぎない。しかしながら、本発明はビットコイン・ブロックチェーンで使用することに限定されず;非商用アプリケーションを含む代替的なブロックチェーン実装及びプロトコルもまた、本発明の範囲に属することに留意すべきである。例えば、本開示の中で説明される技術は、暗号通貨のやり取りが生じるか否かによらず、トランザクションの中で制約がエンコードされ得るものに関してビットコインと同様な制限を有するブロックチェーン実装を利用する利点を提供するであろう。
【0003】
ブロックチェーンは、ピア・ツー・ピアの電子台帳であり、ブロックで構成されるコンピュータ・ベースの非セントラル化された分散システムとして実装され、ブロックはトランザクション及び他の情報で構成される。幾つかの例において、「ブロックチェーン・トランザクション」はデータ及び条件一式を含むフィールド値の構造化された集まりをエンコードする入力メッセージを参照し、条件一式の充足は、フィールドのセットに関し、ブロックチェーン・データ構造に書き込まれるために事前に必要なことである。例えば、ビットコインの場合、各々のトランザクションは、ブロックチェーン・システムの参加者間でのディジタル資産のコントロールの移転をエンコードするデータ構造であり、少なくとも1つの入力と少なくとも1つの出力とを含む。
【0004】
幾つかの実施形態において、「ディジタル資産」は、使用する権利に関連付けられるバイナリ・データを指す。ディジタル資産の具体例はビットコイン及び他の暗号通貨を含む。ビットコイン等の幾つかの実施形態では、ディジタル資産は非トークン化され(untokenized)、その結果、例えばブロックチェーンにおいて識別されるディジタル資産の識別子は存在せず、むしろディジタル資産のコントロールは、ブロックチェーンに記録されるようになる有効なトランザクションを生成する能力によって証明される。しかしながら、幾つかのブロックチェーン実装はトークン化されたディジタル資産(tokenized digital assets)を使用することが可能であり、その結果、ディジタル資産はブロックチェーンに記録される情報を利用して具体的に識別可能であることに留意を要する。ディジタル資産は幾つかの実施形態において暗号通貨として使用され得るが、ある実施形態では追加的又は代替的にディジタル資産は他のコンテンツで利用可能であることが想定されている。本発明は、ディジタル資産のコントロールに適用可能であるが、本質的に技術的なものであり、そしてディジタル資産の移転に必ずしも係わらずにブロックチェーン・データ構造を利用する他の状況で使用され得ることに留意を要する。本開示で使用されるような「ディジタル資産」は1つ以上のディジタル資産を指してもよい。例えば、トランザクションは複数の入力を有してもよく、それらの入力の各々が異なるディジタル資産を表現してもよい。ディジタル資産のコントロールが移転される場合のディジタル資産は、この例では、複数のディジタル資産の集まりであってもよく、その集まり自体がディジタル資産である。同様に、トランザクションはこれらの複数の入力を細分及び/又は結合して1つ以上の出力を生成し、その結果、例えば入力の数と出力の数とは異なっていてもよい。
【0005】
幾つかの実装において、ディジタル資産のコントロールを移転することは、ディジタル資産の少なくとも一部を第1エンティティから第2エンティティへ関連付け直すことにより実行されることが可能である。各々のブロックは先行するブロックのハッシュを含み、その結果、ブロックは共にチェーン状になり、その発端以来ブロックチェーンに書き込まれてきた全てのトランザクションの永続的な変更できない記録を作る。トランザクションは、トランザクションの出力が誰によってどのようにアクセスされ得るかを指定する各自の入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含む。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベース・スクリプト言語を使用して書かれる。
【0006】
幾つかの例において、「スタック・ベース・スクリプト言語」は、様々なスタック・ベース又はスタック指向の実行モデル又はオペレーションをサポートするプログラミング言語を指す。即ち、スタック・ベース・スクリプト言語は、スタックと呼ばれるデータ構造を利用することができる。スタックでは、値がスタックのトップにプッシュされるか又はスタックのトップからポップされることが可能である。スタックに対して実行される様々なオペレーションは、スタックのチップから1つ以上の値をプッシュ又はポップする結果となり得る。例えば、OP_EQUALオペレーションは、上位2つのアイテムをスタックから取り出し、それらを比較し、結果(例えば、等しければ1、あるいは等しくなければ0)をスタックのトップにプッシュする。幾つかの本願実施形態で使用される幾つかのスクリプト言語では、メイン・スタック及びオルタネート・スタックという少なくとも2つのスタックが存在してもよい。スクリプト言語の幾つかのオペレーションは、あるスタックのトップから別のスタックのトップへアイテムを移動させることができる。例えば、OP_TOALTSTACKは、メイン・スタックのトップからオルタネート・スタックのトップへ値を移動させる。スタック・ベースのスクリプト言語で書かれるスクリプトは、ベクトル、リスト、又はスタック等の適切な任意のデータ構造を利用して実装されることが可能な論理スタックにプッシュされることが可能である。
【0007】
ブロックチェーンに書き込まれるトランザクションのために、それは「検証」されなければならない。ネットワーク・ノード(マイニング・ノード)は、各々のトランザクションが有効であることを保証するための作業を実行し、有効でないトランザクションはネットワークから拒否される。ノードは、他のノードと異なる有効性に関する基準を有することができる。ブロックチェーンにおける有効性はコンセンサス・ベースであるので、トランザクションは、トランザクションが有効であることに過半数のノードが合意する場合に有効とみなされる。ノードにインストールされているソフトウェア・クライアントは、部分的に未使用トランザクション・アウトプット(UTXO)を参照するトランザクションに関するこの検証作業を、UTXOロッキング及びアンロッキング・スクリプトを実行することによって実行する。ロッキング及びアンロッキング・スクリプトの実行がTRUEと評価する場合、及び適用可能であるならば他の検証条件が充足される場合に、トランザクションはノードによって検証される。検証されたトランザクションは他のネットワーク・ノードへ伝搬され、マイニング・ノードはブロックチェーンにトランザクションを含めることを選択することができる。従って、トランザクションがブロックチェーンに書き込まれるために、i)トランザクションを受信する第1ノードにより検証され---トランザクションが検証されると、ノードはそれをネットワーク内の他のノードへ中継し;ii)マイニング・ノードにより構築される新たなブロックに追加され;iii)マイニングされる、即ち過去のトランザクションの公の台帳に追加されなければならない。トランザクションを事実上撤回できなくする程度に十分な数のブロックがブロックチェーンに追加された場合に、トランザクションは承認されたものとみなされる。
【0008】
現在の研究の1つのエリアは「スマート・コントラクト」の実装にブロックチェーンを利用することである。これらは、機械読み取り可能な契約又は合意の条項についての実行を自動化するように設計されたコンピュータ・プログラムである。自然言語で書かれる従来の契約とは異なり、スマート・コントラクトは、結果を生成するために入力を処理することが可能なルールを含む機械実行可能なプログラムであり、それらの結果に依存して実行されるアクションを引き起こすことが可能である。
【0009】
幾つかの実施形態において、特定のエンティティとの相互作用がスマート・コントラクトの特定のステップでエンコードされ得るが、スマート・コントラクトは別の方法で自動的に実行され且つ自己執行されることが可能である。幾つかの例において、自動実行は、UTXOの移転を可能にするように実行されるスマート・コントラクトの成功した実行を指す。そのような例において、UTXOの移転を生じさせることが可能な「エンティティ」は、何らかのシークレットの知識を証明することが必要とされずにアンロッキング・スクリプトを作成することが可能なエンティティを指すことに留意を要する。換言すれば、アンロッキング・トランザクションは、データのソースが暗号シークレット(例えば、プライベートな非対称鍵、対称鍵など)に対するアクセスを有することを確認することなく、検証されることが可能である。また、このような例では、自己執行(self-enforcement)は、ブロックチェーン・ネットワークの検証ノードが制約に従ってアンロッキング・トランザクションを実行させられることを指す。幾つかの例において、UTXOを「アンロッキング」することは、UTXOを参照して有効として実行するアンロッキング・トランザクションを作成することを指す。UTXOをアンロッキングすることはまた、当該技術分野ではUTXOを消費することとして知られている。
【0010】
ブロックチェーン・トランザクション・アウトプットは、ビットコイン等のディジタル資産のオーナーシップに関する情報とロッキング・スクリプトとを含む。エンカンブランス(an encumbrance)としても言及され得るロッキング・スクリプトは、UTXOをアンロックするために満足されるように求められる条件を指定することにより、ディジタル資産を「ロック」する。例えば、ロッキング・スクリプトは、関連するディジタル資産をアンロックするために所定のデータがアンロッキング・スクリプトで提供されることを要求し得る。ロッキング・スクリプトはビットコインでは「scriptPubKey」としても知られている。ディジタル資産をアンロックするためにデータを提供することを当事者に要求する技術は、ロッキング・スクリプト内にデータのハッシュを埋め込むことを含む。しかしながら、これはロッキング・スクリプトが作成される時点でデータが決定されていない場合(例えば、未知であり確定していない場合)には問題である
【発明の概要】
【0011】
従って、これらの側面のうちの1つ以上においてブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。そこで本発明によれば添付の特許請求の範囲に記載されているような方法及び対応するシステムが提供される。
かくてブロックチェーン・ネットワークのノードのためのコンピュータで実行される方法を提供することが望ましく、コンピュータで実行される方法は:
第1パズル及び第2パズルを第3ロッキング・スクリプトにおいて含む第3トランザクションを検証するステップであって:
第1パズルに対するソリューションにより充足することが可能な第1条件により、第1ディジタル資産のコントロールの移転を制限する第1ロッキング・スクリプトにおいて第1パズルは第1トランザクションに含まれ;
第2パズルに対するソリューションにより充足することが可能な第2条件により、第2ディジタル資産のコントロールの移転を制限する第2ロッキング・スクリプトにおいて第2パズルは第2トランザクションに含まれ;
第1トランザクションと第2トランザクションとはブロックチェーンにコミットされ;及び
第3トランザクションは第3ディジタル資産に関連している、ステップ;
第1パズルに対するソリューションと第2パズルに対するソリューションとに基づいて、擬似乱数を生成するステップ;及び
擬似乱数に少なくとも部分的に基づいて第3ディジタル資産のコントロールを移転するステップを含む。
【0012】
第1トランザクションは第1関係者によって作成されてもよく、第2トランザクションは第1関係者とは異なる第2関係者によって作成されてもよい。こうして、第1関係者又は第2関係者のうちの少なくとも1人が正直なままでいる(例えば、擬似乱数生成器を妨害しようとしない)という条件の下で、第1パズルに対するソリューション及び第2パズルに対するソリューションから導出されるシードは確定できないもの(indeterminable)であり得る。
【0013】
第1関係者は第1トランザクションの作成前に第1パズルに対するソリューションにアクセスすることができる。追加的又は代替的に、第2関係者は第2トランザクションの作成前に第2パズルに対するソリューションにアクセスすることができる。こうして、関係者達は各自のパズルに対するソリューションを既に知っているので、彼らはそれほど多くの演算リソースを消費することを要しない。
【0014】
第1ロッキング・スクリプトは時間的制約を含んでもよい。追加的又は代替的に、時間的制約が充足されることを条件として、第1パズルに対するソリューションを含むトランザクションの検証は、第1ディジタル資産のコントロールを第1エンティティへ移転することを引き起こしてもよい。追加的又は代替的に、時間的制約が充足されないことを条件として、ペナルティ・トランザクションの検証は、第1ディジタル資産のコントロールを第1エンティティとは異なる第2エンティティへ移転することを引き起こしてもよい。
【0015】
時間的制約は、第1パズルに対するソリューションが、時間制限を超える前に明らかにされることであってもよい。かくて、第1エンティティは、時間的制約の中で第1パズルに対するソリューションを提供する理由を有する、あるいは第2エンティティに対してディジタル資産を失うリスクを有する。
【0016】
擬似乱数生成トランザクションを検証することは、第1条件及び第2条件の充足前に実行されてもよい。従って、擬似乱数生成トランザクションは、ソリューションが公表される前にブロックチェーンにコミットされることが可能であり、それにより、第1パズル及び第2パズル双方に対するソリューションを知っているエンティティによって擬似乱数生成トランザクションが操作され得ないことを保証する。
【0017】
第1パズルは暗号ハッシュ・パズルであってもよい。
【0018】
第1パズルは第1トランザクションのロッキング・スクリプトにおけるオペレーション・コード群であってもよい。追加的又は代替的に、オペレーション・コード群の実行は、第1パズルに対するソリューションを入力として受けた結果として真(true)であると評価されてもよい。
【0019】
第1パズル及び第2パズルを解くことは、第1パズルに対するソリューション及び第2パズルに対するソリューションを検証することよりも、計算が困難である可能性がある。
擬似乱数を生成することは、第1パズルに対するソリューション及び第2パズルに対するソリューションに少なくとも部分的に基づいてシード値を導出することを含んでもよい。
【0020】
第1パズルに対するソリューション及び第2パズルに対するソリューションを含むシード・トランザクションは検証されることが可能である。こうして、シードは、第1関係者又は第2関係者のうちの少なくとも1人が正直なままでいる(例えば、擬似乱数生成器を妨害しようとしない)という条件の下で、確定できないものであり得る。
【0021】
第3ディジタル資産のコントロールを移転することは:擬似乱数が第1値であるという条件の下で、シード・トランザクションの検証は成功であってもよいことを含み得る。追加的又は代替的に、擬似乱数が第1値とは異なる第2値であるという条件の下で、シード・トランザクションの検証は不成功であってもよい。こうして、擬似乱数生成器のロッキング・スクリプトに課される制約は、擬似乱数によって影響を受け得る。
【0022】
第3トランザクションを作成したエンティティに第3ディジタル資産のコントロールを返すリファンド・トランザクションが検証されてもよい。
【0023】
リファンド・トランザクションを検証することは、第1パズルに対するソリューション及び第2パズルに対するソリューションを含むシード・トランザクションの検証の成功が、所定の期間内に生じていないという条件の下で生じてもよい。このようにして、第3トランザクションを作成したエンティティは、第3トランザクションのUTXOが移転されずに残る場合に(例えば、所定の期間の後に)ディジタル資産の損失を被らずに済む。
【0024】
プロセッサ及び実行可能な命令を含むメモリを有するシステムを提供することもまた望ましく、命令は、プロセッサによる実行の結果として、保護が請求される方法のうちの何れかをシステムに実行させる。
【0025】
実行可能な命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体を提供することもまた望ましく、命令は、コンピュータ・システムの1つ以上のプロセッサによる実行の結果として、保護が請求される方法のうちの何れかをコンピュータ・システムに少なくとも実行させる。
【0026】
従って、コンピュータで実行される方法を提供することが更に望ましく、方法は:
ブロックチェーン・ネットワークのノードにおいて、パズルを含む第1トランザクションを検証するステップであって、第1トランザクションはディジタル資産に関連し、パズルに対するソリューションは第1トランザクションの検証時には確定できないものである、ステップ;
第1トランザクションに関連するディジタル資産のコントロールを移転するために作成された第2トランザクションを少なくとも部分的に検証することにより、第2トランザクションに含まれるパズルに対するソリューションに少なくとも部分的に基づく擬似乱数を生成するステップ;及び
擬似乱数に少なくとも部分的に基づいてディジタル資産のコントロールを移転するステップを含む。
【0027】
パズルは暗号ハッシュ・パズルであってもよい。
【0028】
パズルはプルーフ・オブ・ワーク関数であってもよい。
【0029】
パズルは第1トランザクションのロッキング・スクリプトにおけるオペレーション・コード群であってもよい。追加的又は代替的に、オペレーション・コード群の実行は、パズルに対するソリューションを入力として受けた結果として真であると評価されてもよい。
【0030】
パズルを解くことは、ソリューションを検証することよりも演算に手間取るかもしれない。
【0031】
ディジタル資産のコントロールを移転することは:擬似乱数が第1値であるという条件の下で、第2トランザクションの検証が成功であってもよいことを含み得る。追加的又は代替的に、擬似乱数が第1値とは異なる第2値であるという条件の下で、第2トランザクションの検証は不成功であってもよい。こうして、擬似乱数生成器のロッキング・スクリプトに課される制約は、擬似乱数によって影響を受け得る。
【0032】
ソリューションは、第1トランザクションのロッキング・スクリプトにおける擬似乱数生成アルゴリズムに対するシードを導出するために少なくとも部分的に使用されてもよい。
【0033】
ロッキング・スクリプトは第2トランザクションの検証を特定の時間フレームに制限してもよい。こうして、特定の時間フレームの中でパズルを解く理由が関係者に与えられてもよい。
【0034】
特定の時間フレームの満了は、指定された関係者がディジタル資産のコントロールを受け取ることを可能にしてもよい。
【0035】
指定された関係者は、第1トランザクションを作成した関係者であってもよい。このようにして、指定された関係者は、パズルが解かれない場合に(例えば、特定の期間の後に)ディジタル資産の返還を要求できてもよい。
【0036】
パズルを解くことに対する配当(例えば、報酬)はディジタル資産より大きくてもよい(例えば、より大きな価値であってもよい)。このように、より大きな配当は、パズルを解く関係者に動機を与えることができ;ディジタル資産に比例して配当が大きいほど、より大きな動機となる。場合によっては、配当の大きさは、(例えば、擬似乱数生成トランザクション及び/又はソリューションを妨げるような)不正を試みる関係者のリスクを最小化するために、制限されてもよい。
【0037】
ソリューションは、ブロックチェーン・ネットワークのブロックのヘッダから少なくとも部分的に導出されてもよい。
【0038】
ヘッダは、第1トランザクションが好結果に検証された時点では確定できないものであってもよい。例えば、ヘッダは、ブロックチェーン・ネットワークにおける特定の時間又はその後の将来のブロックのヘッダであってもよい。このように、第1トランザクションが作成された時点では、将来のヘッダは不確定である傾向があるので、特定の時間の後になるまでソリューションが未知であることの保証を提供することができる。
【0039】
プロセッサ;及び実行可能な命令を含むメモリを有するシステムを提供することもまた望ましく、命令は、プロセッサによる実行の結果として、保護が請求される方法のうちの何れかをシステムに実行させる。
【0040】
実行可能な命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体を提供することもまた望ましく、命令は、コンピュータ・システムの1つ以上のプロセッサによる実行の結果として、保護が請求される方法のうちの何れかをコンピュータ・システムに少なくとも実行させる。
【0041】
本発明は検証方法/システムとして、及び/又はブロックチェーン・トランザクションの検証を制御する制御方法/システムとして説明されることが可能である。幾つかの実施形態において、検証されたブロックチェーン・トランザクションは、ブロックチェーンにおけるトランザクションの登録の結果をもたらし;これは幾つかのアプリケーションではブロックチェーンを介したディジタル資産の取引又は移転をもたらし得る。ディジタル資産はブロックチェーンにより管理されるリソースの単位である。ディジタル資産は、幾つかの実施形態では、暗号通貨として使用され得るが、追加的又は代替的に実施形態においてディジタル資産は他の状況で利用可能であることが想定されている。本発明は、ディジタル資産のコントロールに適用可能であるが、本質的に技術的なものであり、ディジタル資産の移転に必ずしも係わらずにブロックチェーン・データ構造を利用する他の状況で使用され得ることに留意を要する。以下に説明されるように、本発明はまた、ブロックチェーン・ネットワーク又はプラットフォームによりオペレーションを実行する新たな改善された有利な方法に関するセキュリティ方法/システムとしても説明され得る。
【図面の簡単な説明】
【0042】
本発明のこれら及び他の態様は本願で説明される実施形態から明らかになり、またそれらに関連して解明される。本発明の実施形態は添付図面に関連して単なる例示的として説明される。
【0043】
図1】様々な実施形態が実装され得るブロックチェーン環境を示す。
図2】実施形態によるブロックチェーン・ランダム化の具体例を示す。
【0044】
図3】実施形態により解かれるインセキュア・ランダム化問題を示す例を示す。
【0045】
図4】実施形態によるシードの一部を生成するコミットメント・ソリューションの具体例を示す。
【0046】
図5】実施形態によるコミットメント・ソリューション・ペナルティの具体例を示す。
【0047】
図6】実施形態による擬似乱数生成トランザクションをアンロックするシード・トランザクションを実装する具体例を示す。
【0048】
図7】実施形態による時間制限満了の結果としてディジタル資産の返還を要求する具体例を示す。
【0049】
図8】実施形態によるコミットメント・ソリューションの具体例を示すフローチャートである。
【0050】
図9】実施形態によるシードを生成するパズル解明技術の具体例を示す。
【0051】
図10】実施形態によるシードを生成するパズル解明技術の具体例を示すフローチャートである。
【0052】
図11】実施形態によるランダム化スマート・コントラクト制約の具体例を示す。
【0053】
図12】様々な実施形態が実装され得るコンピュータ環境を示す。
【発明を実施するための形態】
【0054】
図1を先ず参照すると、本開示の実施形態によるブロックチェーンに関連する例示的なブロックチェーン・ネットワーク100が示されている。実施形態において、例示的なブロックチェーン・ネットワーク100は、分散されたピア・ツー・ピア・デバイスとして実装されるブロックチェーン・ノードを有し、各ノードは、ブロックチェーン・プロトコルに従うオペレーション、即ちノード102のオペレータ間で少なくとも部分的に合意したオペレーションを実行するソフトウェア及び/又はハードウェアのインスタンスを実行する。幾つかの具体例において、「ノード」はブロックチェーン・ネットワークの中で分散されているピア・ツー・ピア電子デバイスを指す。ブロックチェーン・プロトコルの具体例はビットコイン・プロトコルである。
【0055】
幾つかの実施形態において、ノード102は適切な任意のコンピューティング・デバイスにより構成され得る(例えば、データ・センターのサーバーにより、クライアント・コンピューティング・デバイス(例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン等)により、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、又は図12のコンピューティング・デバイス1200等の適切な任意の電子クライアント・デバイスにより構成され得る)。幾つかの実施形態において、ノード102は、トランザクション104等の提案されるトランザクションを表すデータ・メッセージ又はオブジェクトを受け取るための入力を有する。幾つかの実施形態において、ノードは、それらが保持する情報について、例えばトランザクション104の状態の情報についてクエリ可能(queryable)である。
【0056】
図1に示されるように、幾つかのノード102は1つ以上の他のノード102に通信可能に結合される。この通信可能な結合は有線又は無線通信のうちの1つ上を含むことが可能である。実施形態において、ノード102の各々はブロックチェーンにおける全てのトランザクションの「台帳」の少なくとも一部を維持する。このように、台帳は分散された台帳となるであろう。台帳に影響を及ぼすノードにより処理されるトランザクションは、台帳の完全性が維持されるように、1つ以上の他のノードにより検証可能である。
【0057】
ノード102が他の何れのノードと通信できるかについては、例示的なブロックチェーン・ネットワーク100における各ノードは1つ以上の他のノード102と通信することができ、その結果、ノード間を通過するメッセージは例示的なブロックチェーン・ネットワーク100全体(又はそのうちのかなりの部分)を伝搬できることで十分であるとすることが可能であり、ただし、メッセージは転送されるべきことをブロックチェーン・プロトコルが示しているものであるとする。そのようなメッセージの1つは、ノード102A等の1つのノード102による提案されるトランザクションのパブリケーション(the publication)であってもよく、以後これは経路106等の経路にそって伝搬するであろう。このような他のメッセージはブロックチェーンに含めるように提案される新しいブロックのパブリケーションであってもよい。
【0058】
実施形態において、少なくとも幾つかのノード102は、暗号問題を解くこと等の複雑な計算を実行するマイニング・ノードである。暗号問題を解くマイニング・ノードは、ブロックチェーンに対する新たなブロックを作成し、その新たなブロックを他のノード102へブロードキャストする。他のノード102は、マイニング・ノードの作業を確認し、確認すると、(例えば、それをブロックチェーンの分散台帳に追加することにより)そのブロックをブロックチェーン内に受け入れる。幾つかの例において、ブロックはトランザクションのグループであり、先行するブロックのタイムスタンプ及び「フィンガープリント」(例えば、ハッシュ)とともにしばしばマークされる。このようにして、各ブロックは先行するブロックにリンクされることが可能であり、それによりブロックチェーンの中でブロックをリンクする「チェーン」を作成する。実施形態では、有効なブロックは、ノード102のコンセンサスにより、ブロックチェーンに追加される。また、幾つかの例において、ブロックチェーンは、検証されたブロックのリストを有する。
【0059】
実施形態において、少なくとも幾つかのノード102は、本開示で説明されるようなトランザクションを検証する検証ノードとして動作する。幾つかの例において、トランザクションは、(例えば、ビットコインの数のような)ディジタル資産のプルーフ・オブ・オーナーシップ(proof of ownership)と、ディジタル資産のオーナーシップ/コントロールを受け入れる又は移転するための条件を提供するデータを含む。幾つかの例において、「アンロッキング・トランザクション」は、先行するトランザクションのUTXOにより示される少なくとも一部のディジタル資産を、ブロックチェーン・アドレスに関連するエンティティに関連付け直す(例えば、オーナーシップ又はコンロールを移転する)ブロックチェーン・トランザクションを指す。幾つかの例において、「先行するトランザクション」は、アンロッキング・トランザクションにより参照されるUTXOを含むブロックチェーン・トランザクションを指す。幾つかの実施形態において、トランザクションは、オーナーシップ/コントロールが移転可能になる(「ロック解除可能になる」)前に充足されなければならない条件により、トランザクションを制限する「ロッキング・スクリプト」を含む。
【0060】
幾つかの実施形態において、ブロックチェーン・アドレスは、少なくとも一部のディジタル資産のコントロールが移転/再関連付けされる先のエンティティに関連付けられる英数字文字列である。幾つかの実施形態で実装される何らかのブロックチェーン・プロトコルでは、エンティティに関連するパブリック・キーとブロックチェーン・アドレスとの間に1対1の対応関係が存在する。幾つかの実施形態において、トランザクションの検証は、ロッキング・スクリプト及び/又はアンロッキング・スクリプトで指定される1つ以上の条件を検証することを含む。トランザクション104の検証に成功すると、検証ノードはトランザクション104をブロックチェーンに追加し、それをノード102に分散する。
【0061】
本開示の所定の実施形態は、記述されている命令群を実行するスクリプト・システム又は他のシステムは単独のスクリプトの中で200を超える命令(例えば、オペレーション・コード)を可能にするという仮定の下で動作する。同様に、本開示の所定の実施形態は更に以下を仮定する:
・ 本開示で言及されるオペレーション・コードにより提供される機能は、オペレーション・コード・スクリプト/命令群を実行するシステムに存在してイネーブルにされる;及び/又は
・ 要求され得る機能は、所望の行動を提供するように書かれるカスタム化された機能の作成によって実現されることが可能である。これらのカスタム化された機能は、その言語に存在するがディセーブルにされているオペレーション・コードの機能を実現するように書かれてもよいし、あるいはスクリプト言語で元々には提供されていない特定の機能を提供する「新たな」オペレーション・コードであってもよい。
【0062】
本開示で言及されるオペレーション・コードの具体例は以下を含む:
・ OP_ECPX,楕円曲線座標点のx座標を返す。
・ OP_ADD,スタックに上位2つのアイテムを追加する。
・ OP_BIGMOD,スタックにおける上位2つのアイテムを割った後の余りを返す。
・ OP_BIGMODADD,スタックの上位2つのアイテムのモジュラス加算を実行し、スタックの第3アイテムのモジュラス演算を行う。
・ OP_BIGMODINVERSE,モジュラス・ネガティブ指数演算を実行する。
・ OP_BIGMODMUL,スタックのスタック・モジュラス第3アイテムの上位2つのアイテムのモジュラス乗算を実行する。
・ OP_CAT,スタックの上位2つのアイテムを連結する。
・ OP_CHECKSIG,公開鍵及びシグネチャがスタックからポップされ、SIGHASHタイプに従ってトランザクション・フィールドのシグネチャに対して検証される。シグネチャが検証されると1が返され、そうでなければ0が返される。
・ OP_CHECKSIGVERIFY,OP_CHECKSIGと同様に機能するが、その後にOP_VERIFYが実行される。
・ OP_DERENCODE,DERフォーマットでスタックの上位2つのアイテムをエンコードする。
・ OP_DUP,上位のスタック・アイテムを複製する。
・ OP_ECPMULT,スタックの上位2つのアイテムについての楕円曲線座標点乗算(楕円曲線スカラー乗算とも言及される)を実行する。
・ OP_ELSE,上記のOP_IF又はOP_NOTIF又はOP_ELSEが実行されなかった場合、これらのステートメントが実行され;そうではなく上記のOP_IF又はOP_NOTIF又はOP_ELSEが実行された場合、これらのステートメントは実行されない。
・ OP_ENDIF,if/elseブロックを終了する。
・ OP_EQUAL,入力が正確に等しければ1を返し、そうでなければ0を返す。
・ OP_EQUALVERIFY,OP_EQUALと同様であるが、その後にOP_VERIFYを実行する。
・ OP_FROMALTSTACK,メイン・スタックのトップに入力を置き、それを代替スタックから除去する。
・ OP_HASH256,入力が2回ハッシュされ;最初のものはSHA-256により、後のものはRIPEMD-160により行われる。
・ OP_IF,トップ・スタック値が偽(False)である場合、ステートメントが実行され、トップ・スタック値は除去される。
・ OP_MUL,スタックにおける上位2つのアイテムを乗算する。
・ OP_NOTIF,トップ・スタック値が偽である場合、ステートメントが実行され、トップ・スタック値は除去される。
・ OP_ROLL,スタックの中でnアイテム深いアイテムがトップに移される。
・ OP_SUBSTR,文字列の一部を返す。
・ OP_SWAP,スタックにおける上位2つのアイテムが交換される。
・ OP_TOALTSTACK,代替スタックのトップに入力を置き、それをメイン・スタックから除去する。
・ OP_VERIFY,トップ・スタック値が真(TRUE)でない場合、トランザクションを無効としてマークする。
【0063】
図2は本開示の実施形態を示す具体例200である。図2に示されるように、具体例はロッキング・スクリプト210を有する擬似乱数ジェネレータ(PRNG)トランザクション202を含み、PRNGトランザクション202のUTXOをアンロックすることを試みるシード・トランザクション204のアンロッキング・スクリプト212の実行結果として受信されるシード値に基づいて乱数を生成するPRNGを含む。
【0064】
幾つかの実施形態において、PRNGトランザクション202は、ロッキング・スクリプト210の中にPRNGを含むブロックチェーン・トランザクションである。幾つかの実施形態において、決定ランダム・ビット・ジェネレータ(DRBG)としても知られるPRNGは、一連の乱数の性質を近似する一連の数字を生成するアルゴリズムを指す。PRNGは、シーケンスが初期シード値に依存するので真の乱数ジェネレータとは区別される。幾つかの実施形態において、同じシード値を有するPRNGは同じシーケンスを再生するであろう。幾つかの実施形態において、PRNGは、実行結果として統計的にランダムな値(例えば、認識可能なパターン又は規則を含まないもの)を生成する一連のオペレーション・コードとして、ロッキング・スクリプト210の中でコード化される。PRNGは、PRNGを初期化するシードとしての値を入力としてとる。
【0065】
幾つかの実施形態において、ロッキング・スクリプト210は、PRNGトランザクション202の検証に成功するために充足されるべき条件により(例えば、アンロッキング・スクリプト212により提供されるデータにより)、PRNGトランザクション210を制限するスクリプトであり、PRNGトランザクション202に関連するディジタル資産のコントロール/オーナーシップは転送されることが可能になる。例えば、ロッキング・スクリプト210は、PRNGトランザクション202の関連するディジタル資産をアンロックするために、所定のデータがアンロッキング・スクリプト212で提供されることを要求することができる。より詳細には、図1に関連して説明されたブロックチェーン・ネットワーク等のブロックチェーンの検証ノードによるロッキング・スクリプト210の実行は、実行されたアンロッキング・スクリプト(例えば、アンロッキング・スクリプト212)からのデータを受け入れること、データに基づいて所定のオペレーションを実行すること、ロッキング・スクリプト210が首尾よく「アンロック」されているか否か(即ち、ロッキング・スクリプト210内の一群の条件セットを充足しているか否か)を示す結果を返すことをロッキング・スクリプト210に行わせる。本開示では、ロッキング・スクリプト210は、PRNGに対する入力として(シード・トランザクション204のアンロッキング・スクリプト212の実行の結果として)シードが受信される条件として含む上述したようなPRNGを更に含む。幾つかの実施形態において、ロッキング・スクリプトは、ロッキング・スクリプト210の制約の中で使用するPRNGにより生成される乱数を使用するためにコード化される。
【0066】
幾つかの実施形態において、シード・トランザクション204は、PRNGトランザクション202のロッキング・スクリプト210においてPRNGにより使用可能なシード値を、アンロッキング・スクリプト212内に少なくとも含むブロックチェーン・トランザクションである。幾つかの実施形態において、アンロッキング・スクリプト212は、PRNGトランザクション202のロッキング・スクリプト210に設定される一群の条件を充足することを試みるシード・トランザクション204の実行可能スクリプトである。本開示の動作原理は、ロッキング・スクリプト210が作成された時点でシード値は確定的ではないことであり、その結果、シード値に基づいてPRNGにより生成される値も同様に、ロッキング・スクリプトが作成された時点では確定的ではない。本開示はこれらの条件を充足する実施形態を説明する。
【0067】
図3は本開示の実施形態により解決されるインセキュア・ランダム問題を示す例300である。即ち、図2に示される例200では、PRNG306は第1トランザクション302のロッキング・スクリプト310に含まれ、PRNG306のためのシード308は、第1トランザクション302に関連する、ビットコイン等のディジタル資産をアンロックする/取り返すために作成される第2トランザクション304のアンロッキング・スクリプト312により提供される。
【0068】
幾つかの実施形態において、第1トランザクション302と第2トランザクション304とは、ブロックチェーン・ネットワークにおいてディジタル資産の移転を表現するフィールド値のセットである。幾つかの実施形態において、フィールド値のセットは入力及び出力を含むことができる。幾つかの実施形態において、入力は、先行するブロックチェーン・トランザクションの出力をアンロックするための試みを表現する。トランザクションの検証に成功すると、幾つかの実施形態において、検証ノードはトランザクションをブロックチェーンに追加し、それがブロックチェーンの他のノードへ分散されることを引き起こす。
【0069】
幾つかの実施形態において、第2トランザクション304は、第1トランザクション302の少なくとも一部のディジタル資産(例えば、UTXOにより示されるようなもの)を特定のエンティティに関連付け直す(例えば、オーナーシップ又はコントロールを移転する)ために作成されるブロックチェーン・トランザクションである。幾つかの実施形態において、第1トランザクション302は、オーナーシップ/コントロールが転送可能になる前に(「アンロックされる」前に)充足されなければならない条件により、第1トランザクション302を制限するロッキング・スクリプト310を含む。幾つかの実施形態において、ブロックチェーン・アドレスは、少なくとも一部のディジタル資産のコントロールが転送される/再関連付けされる先のエンティティに関連付けされる英数字文字列である。幾つかの実施形態で実装される何らかのブロックチェーン・プロトコルでは、エンティティに関連する公開鍵とブロックチェーン・アドレスとの間に1対1の対応関係が存在する。幾つかの実施形態において、トランザクションの検証は、アンロッキング・スクリプト312とロッキング・スクリプト310とを成功裏に実行することにより、ロッキング・スクリプト310で指定される1つ以上の条件を検証することを含む。
【0070】
上述したように、幾つかの実施形態において、PRNG306は一連の数字を生成する擬似乱数ジェネレータであり、その一連の数字の性質は一連の乱数の性質に近い。幾つかの例において、PRNG306は暗号により安全な擬似乱数ジェネレータ(a cryptographically secure pseudorandom number generator:CSPRNG)であり、暗号擬似乱数ジェネレータ(a cryptographic pseudorandom number generator:CPRNG)とも言及される。幾つかの実施形態において、PRNG306は、上記の仮定の下でロッキング・スクリプトにエンコードされ得る任意の擬似乱数ジェネレータであるとすることが可能であり、Yarrow、Fortuna、及びarc4randomアルゴリズムを含むがこれらに限定されない。
【0071】
幾つかの実施形態において、ロッキング・スクリプト310は、トランザクションに関連する少なくとも一部のディジタル資産のコントロールを移転するために充足されることを要する条件(即ち、「アンロックされる」条件)を指定することによりブロックチェーンを制限するスクリプトである。より詳細には、ブロックチェーン・システムの検証ノードによる実行の結果として、ロッキング・スクリプト310を実行することは、アンロッキング・スクリプト312等の実行されたアンロッキング・スクリプトからのデータを受け入れ、データに基づいて所定のオペレーションを実行し、アンロッキング・スクリプトの実行がロッキング・スクリプト310を成功裏に「アンロックした」(即ち、一群の条件セットを充足した)か否かを示す結果を返すように構成される。幾つかの実施形態において、ロッキング・スクリプト310は、トランザクションの検証を成功させるために(例えば、アンロッキング・スクリプトにより提供されるデータにより)充足されなければならない1つ以上のデータ制約を規定する。例えば、ロッキング・スクリプト310は、第1トランザクション302に関連付けられるディジタル資産をアンロックするために、所定のデータがアンロッキング・スクリプト312で提供されることを要求することができる。
【0072】
幾つかの実施形態において、シード308はPNNG306等の擬似乱数ジェネレータを初期化するために使用される数字又はベクトルである。しかしながら、シード308は図3から分かるようにPRNG306により生成される擬似乱数を決定するので、シード308をPRNG306に供給するエンティティ314は、PRNG306の出力を操作することができる。しかしながら、本開示は、シード操作に対する防衛策として2つのソリューションを提案する。第1ソリューションはコミットメント・ソリューションであり、これによりシードは2つ以上のパズルのソリューションの組み合わせとなり、各パズル・ソリューションは別々の者に知られる。しかしながら、PRNGトランザクションが作成される前に、各々の関係者は、パズル・トランザクションに対して所定量のディジタル資産をコミットし、それはパズルに対するソリューションをソリューション・トランザクションで明らかにすることによって取り戻すことが可能である。コミットメント・ソリューションの幾つかの実施形態において、パズル・ソリューションを明示することに失敗すると、不履行者によりコミットされたディジタル資産は、彼らのパズル・ソリューションを明示する者又は者達へ没収されてしまうことを生じさせるであろう。これらのうちの幾つかの実施形態において、各々のパズル・ソリューションは所定の期間内に明らかにされる必要があり、そうでなければ、その約束についての違反とみなされる。この方法で各々の関係者はPRNGのシードに貢献する理由を有し得る。コミットメント・ソリューションに関し、パズル・トランザクションを生成する各々の関係者は、事前にパズルに対する対応するソリューションを知ることを許可されている。パズル解明技術では、シードはパズル・トランザクションに対するソリューションである。ソリューションは、パズルの作成時点では未知であるが、パズルを解く者は、パズル・トランザクションに関連するディジタル資産の配当を集めることができる。
【0073】
幾つかの例において、「パズル」は、スクリプト言語における1つ以上のオペレーション・コードを使用する一群の論理表現であって、特定の数値「ソリューション」(又は解)を入力として提示されると、実行結果としてTRUEとして評価するものを指す。パズルは、パズルを解くために必要な時間に影響し得る様々なレベルの難しさを有することが可能である。パズルはまた、ソリューションへ到達すること(即ち、パズルを解くこと)は、ソリューションが正しいことを確認するよりも計算が困難であるという特徴を有する。パズルの具体例は暗号ハッシュ・パズルであり、ここで、パズルは、特定の数と組み合わせられて所与の暗号ハッシュ・アルゴリズム(例えば、SHA256、MD5、BLAKE、BLAKE2等)で処理された場合に、特定の数字(例えば、5つのゼロが先行するもの、「1234」等)を含む値をもたらす数を発見することである。幾つかの例において、暗号ハッシュ・パズルは、例えば少なくとも1つの暗号ハッシュ・アルゴリズム及び一群の状態を含む関数により規定される問題等の暗号ハッシュ・アルゴリズムを利用して作られる又は解かれる問題であり、パズルに対するソリューションは、一群の状態を満足する出力をもたらす関数への一群の入力である。
【0074】
実施形態において、ハッシュは暗号ハッシュ関数又は一方向関数h(x)=yにより生成され、ここでyは所与のxに対して容易く計算されるが、xを所与のyに対して計算することは計算に手間取ることに留意を要する。場合によっては、ソリューションは、関係者のディジタル署名その他のデータであってもよく、そのデータは、パズルを保持するロッキング・スクリプトに対するアンロッキング・スクリプトの入力として提供されると、アンロッキング・スクリプト及びロッキング・スクリプトの実行結果として、ロッキング・スクリプトがTRUEに評価することを引き起こすものである。
【0075】
幾つかの例において、計算が困難であることは、計算の複雑さの理論の分野による複雑さのクラスを指す。例えば、マークル・シグネチャ・スキームを利用してメッセージをディジタル署名することは、正しいソリューションを生成することの一部として、2r回の暗号ハッシュ演算を実行することを含み、ここでrは生成されるマークル・ツリーの深度である。逆に、ディジタル署名を生成するために使用された署名キーが、マークル・ツリーのリーフ・ノードであることを検証することは、(署名キーに対応する)リーフ・ノードからルート・ノードへの認証を検証するためにr回の暗号ハッシュ計算を実行することを含む。理解され得るように、2r回の暗号ハッシュ計算を実行することは、r回の暗号ハッシュ計算を実行することよりも多く計算に手間取るであろう(例えば、より多くの中央処理ユニット・サイクルを延長する、より多くのメモリ/ストレージ空間を利用する等)。第2の例として、システムは2つの素数を生成し、素数の積をパズルとして提供し、そのソリューションは提供された積を因子分解するものである。
【0076】
「一方向関数」という言い回しは、厳密に数学的な意味では必ずしも一方向 ではないが、本開示の様々な技術が適用される状況で有用な関数となる性質(例えば、衝突耐性、原像攻撃耐性、第2原像攻撃耐性)を示す関数を含むことに留意すべきである。このように、関数の出力を有するが対応する入力に対するアクセスを有しないエンティティは、例えば暗号攻撃(例えば、力ずくの攻撃)に必要な異常に高くつく経費なしに、入力を決定することはできない。一方向関数(「実効一方向関数」とも言及される)は、メッセージ認証コード等の暗号ハッシュ関数(例えば、ハッシュ・ベースのメッセージ認証コード(hash-based message authentication code:HMAC))、PBKDF2及びbcrypt(平文及び暗号鍵に少なくとも部分的に基づくパスワードを伴う)等の鍵導出関数、レンジ(可能な出力)より大きなドメイン(可能な入力のセット)を必ずしも有する必要はない他のセキュア・ランダム関数を含むがこれらに限定されない。値は一方向関数を利用して暗号学的に導出されることが可能である。暗号関数は、暗号関数に入力として使用される情報(例えば、暗号鍵及び/又はソルト(a salt))を欠いたエンティティの観点からは一方向関数(又はそのうちのコンポーネント)となり得る。幾つかの例において、「暗号学的に導出される」とは、値である入力又は値から導出される(おそらくは、値から暗号学的に導出される)入力を利用して、少なくとも1回一方向関数を利用することを指す。例えば、暗号計算は、解読鍵を有しないエンティティにとって「一方向」である。
【0077】
図4は本開示の例示的な実施形態400を示す。具体的には、図4はシード生成のコミットメント・ソリューションにおける第1ステージを示す。例示の実施形態400に示されるコミットメント・ソリューションは、PRNGのシードを導出するために結合されることが可能なソリューション408A-08Bに寄与する少なくとも2人の関係者406A-06Bを含む。コミットメント・ソリューションにより提供される利点は、ソリューション408A-08Bは結合されるので、シードを操作するには全ての関係者から合意をとることとなり;即ち、ある関係者が他者に事前には知られていないソリューションを提供する限り、結果のシードは生成されるまで未知であろうということである。
【0078】
コミットメント・ソリューションにおいて、関係者406A-06B(p∈{0,1,...,n})それぞれは、トランザクションの各自のロッキング・スクリプトに制約として含まれるパズル410A-10Bを有する個々のコミットメント・トランザクション402A-02Bを作成する。幾つかの実施形態において、各々のコミットメント・トランザクションは、(σ←Verify(puzzlep,π)のような)制約を含むロッキング・スクリプトにより制限される幾らかの量のディジタル資産(例えば、x)に関連付けられ、πはパリティpのパズルに対して提案されるソリューションである。幾つかの実施形態において、制約はまた時間制限であり、それは、関係者は特定の期間内にソリューションを明示しなければならないこと、あるいはコミットしたディジタル資産の没収を覚悟しなければならないことを意味する。幾つかの実施形態において、ディジタル資産は関係者自身の備え(the party’s own reserves)からコミットされる。他の実施形態では、ディジタル資産は、関係者406A-06Bにより決定されるシードから乱数を生成することを求める者のような第三者による潜在的な配当として提供される。幾つかの実施形態において、関係者406A-06Bは、図6のPRNGトランザクション610等のPRNGトランザクションの作成者からの、又は擬似乱数生成のためのシードを作成することに関心を有する何らかの他のエンティティからの、分配の約束によりシードの生成に参加する根拠を提供される。
【0079】
コミットメント・トランザクション402A-02Bがブロックチェーンにマイニングされた後に、関係者406A-06Bの各々(p)は、対応するコミットメント・トランザクションのロッキング・スクリプトをアンロックするアンロッキング・スクリプトを有するソリューション・トランザクションの作成により、コミットメント・トランザクション・パズルに対するソリューション(π←puzzle solutionp)を明示することで、彼ら各自のコミットメント・トランザクションのUTXOをアンロックすることができる。例示の実施形態400に見受けられるように、ソリューション・トランザクション404A-04Bは、それらの対応するパズル410A-10Bに対するソリューション408A-08Bを含む。ソリューション・トランザクション404A-04Bの検証は、従って、各自のコミットメント・トランザクション402A-02BのUTXOを関係者406A-06Bが取り出すことを許容する。
【0080】
幾つかの実施形態において、コミットメント・トランザクション402A-02Bは、個々の関係者406A-06Bによりコミットされるディジタル資産を有する図3の第1トランザクション302に類似するブロックチェーン・トランザクションである。幾つかの実施形態において、ソリューション・トランザクション404A-04Bは、コミットされたディジタル資産を取り返すために個々のコミットメント・トランザクションのUTXOを「アンロック」するために関係者406A-06Bにより作成された、図3の第2トランザクション304に類似するブロックチェーン・トランザクションである。
【0081】
幾つかの実施形態において、関係者406A-06Bは、図6の時間制限の制約610におけるPRNG等のPRNGに対するシード生成に使用されるパズル410A-10B及びソリューション408A-08Bを提供することに合意したエンティティである。パズル410A-10Bは複雑であることを要しない。例えば、関係者406は文字「A」の暗号ハッシュの結果を知ることができ、入力を暗号ハッシュし、暗号ハッシュされた入力を、文字「A」の既知の暗号ハッシュと比較するパズル410Aを作成することができる。ハッシュ入力が既知のハッシュ結果に合致する場合、入力はパズル410Aに対する正しいソリューションである。このケースでは、ソリューションは文字「A」であり、第1関係者406Aは気付いており、ソリューション・トランザクション404Aのアンロッキング・スクリプトに第1ソリューション408Aとして入力することができる。しかしながら、ロッキング・スクリプトで暗号ハッシュを検査する他の関係者は、ソリューションが文字「A」であることを直接的には認識しにくい。僅か2人の関係者のみが具体例400に示されているが、少なくとも2人の関係者が存在する限り、任意数の関係者がパズル及びソリューションを提供することに参加できることが想定されている。
【0082】
幾つかの実施形態において、(図6のソリューション608に類似する)ソリューション408A-08Bは、時間制限の制約610におけるPRNG等のPRNGにシードを提供するために結合され得る複数の値である。個別的に、ソリューション408A-08Bの各々はある値であって、パズル410A-10Bを含むコミットメント・トランザクション402A-02Bのロッキング・スクリプトに対してソリューション・トランザクション404A-04Bのアンロッキング・スクリプトにより入力として提供される場合に、個々のアンロッキング及びアンロッキング・スクリプトの実行がTRUEに評価することを生じさせる値である。PRNGにシードを提供することは、PRNGの実行が乱数を生成することを生じさせ、その乱数はスマート・コントラクトで様々な方法で使用されることが可能であり、そのうちの幾つかの例が以下の表2及び3に示される。幾つかの実施形態において、少なくとも1人の関係者406A-06Bは、関連するコミットメント・トランザクションが作成された時点で各自のパズルに対するソリューションを知っている又はアクセスできる。他の実施形態では、全ての関係者407A-06Bは、各自の関連するコミットメント・トランザクション402A-02Bが作成された時点で各自のパズル410A-10Bに対するソリューションを知っている又はアクセスできる。
【0083】
関係者406A-06Bは、コミットメント値(例えば、x)とPRNGトランザクション値(例えば、図6及び7におけるy)との間の相違により各自のパズルのソリューション408A-08Bを明らかにするように促されてもよい。例えば、x>>yである場合、関係者406A-06B各自のソリューション408A-08Bを明らかにする強い根拠を有し、なぜなら図7のリファンド・トランザクション704等のリファンド・トランザクションを強制することにより生じる潜在的な利益よりも非常に大きな失うリスクがあるからである。
【0084】
幾つかの実施形態において、パズル410A-10Bは、1つ以上の入力で実行されるスクリプト言語の一連のオペレーション・コード等の一連のオペレーションを含み、TRUE又はFALSEの指示を返すアルゴリズムである。例えば、ソリューション404Aがパズル410Aに対する有効なソリューションである場合、コミットメント・トランザクション402Aのロッキング・スクリプトにおけるパズル410の実行は、TRUEに評価することが可能である(ただし、コミットメント・トランザクション402Aに存在する他の如何なる制約も充足されているものと仮定する)。しかしながら、パズル410Aに対して提案されるソリューションが有効でないソリューションである場合、コミットメント・トランザクション402Aのロッキング・スクリプトにおけるパズル410Aの実行は、FALSEに評価することになる。
【0085】
図5は特定の時間フレームの中でコミットメント・トランザクションに有効なソリューションを提供することに失敗した結果の具体例500を示す。具体的に、図5は、第1関係者506Aが時間制限516(t)の経過前にパズル510A(σ)に対するソリューションを提供することに失敗した状況を示す。一方、第2関係者506Bは時間制限516内に第2関係者506Bが作成したコミットメント・トランザクション502Bの対応するパズル510B(σ)に対するソリューション508(π)を提供している。その結果、第2関係者506Bは、ペナルティ・トランザクション514の検証結果として、第1関係者がコミットしたディジタル資産(x)のオーナーシップを請求することができる。
【0086】
幾つかの実施形態において、コミットメント・トランザクション502A-02Bは図4のコミットメント・トランザクション402A-02Bに類似している。同様に、幾つかの実施形態において、パズル510A-10Bはパズル410A-10Bに類似している。幾つかの実施形態において、ソリューション・トランザクション504は、図4のソリューション・トランザクション404Bに類似している。同様に、幾つかの実施形態において、ソリューション508は図4のソリューション408Bに類似している。幾つかの実施形態において、関係者506A-06Bは図4の関係者406A-06Bに類似するエンティティである。
【0087】
幾つかの実施形態において、ペナルティ・トランザクション514は、時間制限516の後に、コミットメント・トランザクション502AのUTXOが移転されずに残っていることを条件に、コミットメント・トランザクション502AのUTXOをアンロックするために検証されることが可能なブロックチェーン・トランザクションである。第1関係者506Aはディジタル資産のうちの幾らかの部分をコミットメント・トランザクション506Aに対してコミットしているので、ペナルティ・トランザクション514は、第1関係者506Aがパズル514Aにソリューションを明らかにし損なうことを思いとどまらせるために存在し、なぜなら、第1関係者506Aが自身のソリューションを明らかにすることに失敗すると、第2関係者506B等のコミットメント・トランザクションを作成した1人以上の関係者は、第1関係者506Aが第1コミットメント・トランザクション502Aに対してコミットしたディジタル資産が何であればそれを請求できるからである。こうして、関係者506A-06Bは何れも各自のパズル510A-10Bにソリューションを明らかにするか、そうでなければ関係者506A-06Bは彼らがコミットしたディジタル資産を失うリスクを負う可能性がある。更に、関係者506A-06Bは、他の関係者が自身のソリューションを明らかにすることに失敗してしまう機会に起因して、彼ら各自のパズル510A-10Bに対するソリューションを明らかにする更なる根拠を与えられ、それにより無違反の関係者は、彼ら自身がコミットしたディジタル資産を取り戻すだけでなく、違反した関係者がコミットしたディジタル資産の少なくとも一部分を受賞することも許容される。これは具体例500に示されるケースであり、第2関係者506Bは、ソリューション508を明らかにすることから利益を得て、ペナルティ・トランザクション514から配当を受けている。
【0088】
幾つかの実施形態において、時間制限516はコミットメント・トランザクション502Aのロッキング・スクリプトで執行されるデッドラインである。即ち、幾つかの実施形態において、コミットメント・トランザクション502A-02Bのロッキング・スクリプトは、ロッキング・スクリプト内にコード化された時間制限516の満了まで、コミットメント・トランザクション502A-02BのUTXOをアンロックすることを許可されるエンティティを、各自のコミットメント・トランザクションの作者のみに制限するように構成される。しかしながら、幾つかの実施形態では、ロッキング・スクリプトは、時間制限516の満了の後に、第2関係者506B等の1人以上の他の関係者が、コミットメント・トランザクションのUTXOを請求することを許容し、コミットメント・トランザクション502Aの作者がコミットメント・トランザクション502AのUTXOを請求することを許可しないように構成されることが可能である。幾つかの実施形態において、コミットメント・トランザクション502A-02Bは、検証されるために彼らのロッキング・スクリプトに時間制限516を含めなければならない。このようにして、ペナルティ・トランザクション514は、関係者506A-06Bに、彼らのパズル510A-10Bに対する時宜を得たソリューションを与える根拠を提供するためのペナルティとして作用し得る。
【0089】
図6は本開示の他の例示的な実施形態600を示す。具体的には、図6は、図4の例示的な実施形態300で平行して起こり得るシード生成のためのコミットメント・ソリューションにおける第2ステージを示す。即ち、コミットメント・トランザクション402A-02Bがブロックチェーンにマイニングされた後に、ディジタル資産yのコントロールの移転にランダム制約を課すことを求めるエンティティにより、PRNGトランザクション602が作成される。そして、PRNGトランザクション602のロッキング・スクリプトは、PRNGと時間制限の制約610とを含むロッキング・スクリプトにより制限され(σAll←∧σ)、シード・トランザクション604のアンロッキング・スクリプトにおけるパズル・ソリューション{π,...,π}をソリューションπに結合するようにコード化し(例えば、π←Combine({π,...,π}))、そのソリューションπから、ロッキング・スクリプトにおけるPRNGのシードが導出され得る。即ち、あるケースではソリューションπ自体がシードとして使用されることが可能であり、別のケースではソリューションπがハッシュされ、あるいはシードとしてPRNGにより使用可能な値に操作され得る。時間制限の制約610は様々な方法で制約されることが可能である。例えば、PRNGトランザクション602のロッキング・スクリプトに1つ以上のオペレーション・コードが存在し、実行時に、指定された満了時間に対する現在時間を確認することが可能である。
【0090】
例示的な実施形態600において、シード・トランザクション604は、PRNGトランザクション602のUTXOをアンロックするために作成されたブロックチェーン・トランザクションである。幾つかの実施形態において、PRNGの操作を思いとどまらせるために、コミットメント・トランザクション(例えば、図4のコミットメント・トランザクション402A-02B)がブロックチェーンに対してコミットされた後であるがソリューション・トランザクション(例えば、ソリューション・トランザクション404A-04B)の作成前に、PRNGトランザクション602が作成される。幾つかの実施形態において、ソリューション408A-08B等の全てのパズルに対するソリューションがブロックチェーンに対してコミットされた後、あるいはシード・トランザクション604の作者に対して利用可能にされた後に、シード・トランザクション604が作成される。幾つかの実施形態において、シード・トランザクション604は、図4のパズル410A-10Bに対するソリューション408A-08B等の様々なパズルに対するソリューション608(π)をアンロッキング・スクリプトの中に含む。
【0091】
幾つかの実施形態において、ソリューション608の各ソリューションは、別々にリスト化され、PRNGトランザクション602のロッキング・スクリプトの実行によって結合される。別の実施形態において、各々ソリューションは、PRNGトランザクション602のロッキング・スクリプトによってサポートされる方法でシード・トランザクション604のアンロッキング・スクリプトで一緒に結合される。全てのソリューション408A-08Bがシード・トランザクション604のアンロッキング・スクリプトで提供される場合に、PRNGトランザクション602のロッキング・スクリプトはTRUEに評価することが可能である。代替的に、幾つかの実施形態において、時間制限の満了前にソリューション408A-08Bが提供されない場合、図7に示されるようにディジタル資産yが戻される。
【0092】
一例において、エンティティは、図4のコミットメント・トランザクション402A-02Bに類似するコミットメント・トランザクションを作成する関係者のグループに従事している。そして、エンティティは、時間制限の制約610に結び付けられたパズル410A-10Bを利用してPRNGトランザクション602を作成する。即ち、図4の例示の実施形態400に対する簡略化された2者の例において、第1関係者406Aが、PRNGトランザクション602の作成前に第1ソリューション608Aを明らかにした場合、第2関係者408Bは第2ソリューション408Bの情報を既に有しており、今や第1ソリューション408Bの情報を有し、その第2関係者408BはPRNGトランザクション602のロッキング・スクリプトPRNGの成果を潜在的に決定することができるであろう。従って、PRNG結果の予測不可能性を守るために、ソリューション408A-08BはPRNGトランザクション602の作成前に明らかにされるべきではない。
【0093】
幾つかの実施形態において、エンティティは、図5のペナルティ・トランザクション514に類似する、コミットメント・トランザクション401A-02Bの各々に対するペナルティ・トランザクションを更に作成することが可能である。更に、幾つかの実施形態において、エンティティは、図7のリファンド・トランザクション704に類似するリファンド・トランザクションを追加的又は代替的に作成し、1つ以上のソリューション408A-08Bが提供されない場合にエンティティがディジタル資産yを没収されないことを保証することが可能である。
【0094】
図7は特定の時間フレームの中でコミットメント・トランザクションに有効なソリューションを提供することに失敗した関係者の別の結末の例700を示す。具体的に、図7は関係者が図5に示される状況等においてパズルσAllの1つに対するソリューションを提供することに失敗した状況を示す。その結果、時間716t+Δtの後に、PRNGトランザクションに関連するディジタル資産yは、リファンド・トランザクション704により取り返すことが可能である。
【0095】
幾つかの実施形態において、PRNGトランザクション702は図6のPRNGトランザクション602に類似している。具体例700に示されるように、幾つかの実施形態において、PRNGトランザクション702は、コミットメント・トランザクションの期限(tc)の後の何らかの時間(Δt)に満了するようにコード化され、PRNGトランザクション702が満了しそうになるまで関係者が自身のソリューションを明らかにすることを待機するのを思いとどまらせ、なぜなら、そのようにすることはPRNGトランザクション702のUTXOをアンロックするために時間内にシード・トランザクション604等のシード・トランザクションを作成する能力を損ない得るからである。
【0096】
幾つかの実施形態において、リファンド・トランザクション704は、時間716t+Δtの後に、パズル710に対するソリューションを含むシード・トランザクションの検証等により、ディジタル資産yが請求されないまま残っている場合に、PRNGトランザクション702に関連するディジタル資産yを払い戻す/返還するために作成されるブロックチェーン・トランザクションである。具体例において、リファンド・トランザクション704は、パズル710に対するソリューションが発見されない場合に、作者がディジタル資産yを取り返せることを保証するために、PRNGトランザクション702の作者によって作成される。しかしながら、幾つかの例において、PRNGトランザクション702の作者とリファンド・トランザクション704の作者とは同じ者であることを要しない。幾つかの実施形態において、時間716は、PRNGトランザクション702のシードに対するソリューションを提供するために供される期間に関して設定される時間制限である。
【0097】
図8は本開示のコミットメント・ソリューションの様々な実施形態による乱数を生成するプロセス800の例を示すフローチャートである。プロセス800のうちの全部又は一部(あるいは、説明される何らかの他のプロセス、あるいはこれらのプロセスの変形及び/又は組み合わせ)は、実行可能な命令及び/又はその他のデータにより構成される1つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、また1つ以上のプロセッサ上で集まって動作する実行可能命令として実装されることが可能である。実行可能命令及び/又はその他のデータは非一時的なコンピュータ読み取り可能な記憶媒体(例えば、磁気、光学、又はフラッシュ媒体に永続的に格納されるコンピュータ・プログラム)に保存されることが可能である。
【0098】
例えば、プロセス800のうちの全部又は一部は1つ以上のコンピューティング・デバイスにより(例えば、データ・センターにおけるサーバーにより、クライアント・コンピューティング・デバイスにより、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、あるいは図12のコンピューティング・デバイス1200等の適切な任意の電子クライアント・デバイスにより)実行されることが可能である。プロセス800は一連のオペレーションを含み、2つのパズルがPRNGトランザクションのロッキング・スクリプトに統合され、パズルに対するソリューションは、PRNGトランザクションがブロックチェーンにコミットされた後に、シード・トランザクションのアンロッキング・スクリプトに統合され、PRNGトランザクションのロッキング・スクリプトにおけるPRNGは、ソリューションから導出されるシードを利用することに基づいて実行され、それにより擬似乱数を生成し、生成された擬似乱数に基づいて制約が課される。
【0099】
802において、図4のパズル410A-10B等の1つ以上のパズルが取得される。実施形態において、パズルはコミットメント・トランザクション402A-02B等のコミットメント・トランザクションのスクリプトから取得されることが可能である。上述したように、パズルは、スクリプト言語における1つ以上のオペレーション・コードを利用する論理表現のセットであるとすることが可能である。パズルは、パズルに対するソリューションが入力として受け取られた場合に、パズル・アルゴリズム/論理表現は実行結果としてTRUEに評価することになる。パズルは、暗号ハッシュ・パズル、プルーフ・オブ・ワーク・パズル、又は数値的な解を有する他の何らかのパズルであるとすることが可能である。
【0100】
804において、コミットメント・トランザクションがブロックチェーンにコミットされた後に、802で取得されたパズルは、ある方法で図6のPRNGトランザクション602等のPRNGトランザクションのロッキング・スクリプトに結び付けられ、その方法によりソリューション408A-08B等のパズルに対するソリューションは入力として受信され、擬似乱数を生成するためにPRNGに対するシードとして使用されることが可能な値を導出することに結び付けられることが可能になる。
【0101】
806において、PRNGトランザクションがブロックチェーンにコミットされていると判断した後に、プロセス800の実行は808に進む。808において、いったんPRNGトランザクションがブロックチェーンにコミットされると、PRNGトランザクションに組み込まれるパズルに対するソリューションは、例えば図4のソリューション408A-08B等から取得される。幾つかの実施形態において、関係者が各自のソリューションを与えるために十分な時間を許容するために、時間t(例えば、図7に示されるようなもの)の後にソリューションの取得が実行される。
【0102】
810において、PRNGトランザクションのロッキング・スクリプトに組み込まれている全てのパズルに対するソリューションが時間制限(例えば、図7におけるt+Δt)の中で取得されているか否かの判断が行われる。ソリューションの全てが取得できたわけではない場合、プロセス800の実行は812に進み、図7の状況で説明されたように、PRNGトランザクションに関連するディジタル資産を取り戻すために、ペナルティ・トランザクション検証されることが可能である。あるいは、全てのソリューションが時間制限内に得られている場合、プロセス800の実行は814に進む。
【0103】
814において、ソリューションはシード・トランザクションのアンロッキング・スクリプトに組み込まれ、その結果、816において、ロッキング・スクリプトとの組み合わせでアンロッキング・スクリプトを実行することは、ソリューションがシード値に変換されることを引き起こし(例えば、ソリューション値を結合し、結合されたソリューション値に関してSHA256ハッシュ演算を実行する)、これは、ロッキング・スクリプトのPRNGに対する入力として、PRNGに擬似乱数を生成させる。818において、擬似乱数はPRNGトランザクションのロッキング・スクリプトの制約に影響を及ぼすために使用されることが可能である。即ち、PRNGトランザクションに関連するディジタル資産のコントロールの移転は、図11に関連して説明される方法等の、PRNGロッキング・スクリプトのPRNGにより生成される擬似乱数に基づく何らかの方法で制約される(例えば、擬似乱数が所定の値の範囲内にあるか否か、ディジタル資産の擬似ランダム量が移転されるか否か等に部分的に基づいて有効として、シグネチャの擬似乱数が受け入れられる、シグネチャが受け入れられる)。802-18で実行されるオペレーションのうちの1つ以上が、平行する場合を含む様々な順序及び組み合わせで実行され得ることに留意を要する。
【0104】
図9は本開示の例示的な実施形態900を示す。具体的に、図9はシード生成のためのパズル解明技術の具体例を示す。図408に関連して説明されたコミットメント・ソリューションは2人以上のコミットメント関係者を包含していたが、例示の実施形態900で説明されるパズル解明技術は、PRNGトランザクション902に対するシードを導出するために使用され得る1つのパズル・ソリューション908を有することのみを要する。
【0105】
幾つかの実施形態において、PRNGトランザクション902は、パズル910に対して有効なソリューション(σ←Verify(puzzle,π))がシード・トランザクション904のアンロッキング・スクリプトに提供される場合にアンロックされる(例えば、TRUEに評価する)ことが可能な制約によりロッキング・スクリプトで制限されるディジタル資産yに関連付けられる。幾つかの実施形態において、PRNGトランザクション902のロッキング・スクリプトは時間制限を更に含みその時間制限の下でPRNGトランザクション902は移転されることが可能である。即ち、この実施形態では、有効なシード・トランザクション904が特定の時間フレームの中で(例えば、時間制限が満了する前に)検証されなかった場合、ディジタル資産yは、PRNGトランザクション902の作者により、あるいは幾つかの実施形態では図7で説明されるリファンド・トランザクション704に類似するリファンド・トランザクションにより他者により、回収されることが可能である。
【0106】
例示の実施形態900のパズル解明技術では、パズル910に対するパズル・ソリューション908は、PRNGトランザクション902が作成された時点でトランザクションに対する関係者によって知られていない。幾つかの実施形態において、PRNGトランザクション902は、 パズル・ソリューション908を提供する第1関係者に移転される配当(例えば、ディジタル資産の一部)に関連付けられ、パズル910に対するパズル・ソリューション908を発見しようとする理由を関係者に提供する。あるケースでは、配当はブロックチェーンに対して外部の配当(例えば、実際の通貨)である。他のケースでは、配当はディジタル資産yの一部分である。更に他のケースでは、配当は更に別のトランザクションのディジタル資産の一部分である。幾つかの実施形態において、パズル・ソリューション908を明らかにする理由を与えるために、配当はディジタル資産yよりも大きい。
【0107】
幾つかの実施形態において、パズル910は、スクリプト言語の一連のオペレーション・コード等の一連のオペレーションを有するアルゴリズムであり、1つ以上の入力で実行されると、TRUE又はFALSEの指標を返す。例えば、実施形態において、パズル・ソリューション908がパズル910に対する有効なソリューションである場合、パズル910を含むPRNGトランザクション902のロッキング・スクリプトの実行はTRUEに評価することになるであろう。しかしながら、幾つかの実施形態において、パズル・ソリューション908が有効でない場合、ロッキング・スクリプトの実行はFALSEに評価することになるであろう。パズル解明技術の制約は、パズル910が作成された時点で、この実施形態におけるパズル910に対するパズル・ソリューション908は未知である又は決定可能でないことである。幾つかの例において、パズル910は演算上複雑であり(例えば、かなりの時間及び/又は閾値を超える処理能力を含み)、その結果、パズルのソリューションがPRNGトランザクション902の作成後の所定時間前に決定可能であることは起こりそうにない。
【0108】
パズル910の具体例は、特定の時間におけるブロックチェーンの将来的なブロック・ヘッダの暗号ハッシュ等のプルーフ・オブ・ワーク関数である。特定の時間が将来になればなるほど、ブロックチェーンの将来のブロック・ヘッダを予測することは益々困難になるので、パズル910に対するパズル・ソリューション908は、PRNGトランザクション902が作成された時点で、トランザクションに対する関係者によって知られることは非常に起こりそうになく、配当はプルーフ・オブ・ワークを提供することに関連する。将来のブロック・ヘッダは様々な方法で指定されることが可能であることに留意を要する。例えば、ソリューションは、将来的な指定された日/時間の後に作成された第1ブロック・ヘッダのハッシュであるとすることが可能である。別の例として、将来的なブロック・ヘッダは、ブロック内に所定数のトランザクションを含む最初の将来的なブロック・ヘッダとして指定されることが可能である。従って、将来的なブロック・ヘッダのプルーフ・オブ・ワーク・パズルは、パズル解明技術の制約を充足する一例である。
【0109】
アンロッキング・スクリプトがブロック・ヘッダ、ブロックチェーン、又はブロック・ヘッダのチェーンを含むことを要求するように、アンロッキング・スクリプトのデータに関して制約を実装することによって、将来的なブロック・ヘッダへのアクセスは実行されることが可能である。アンロッキング・スクリプトのデータにこのような制約を実装することにより、及びそのようなデータをランタイムにアンロッキング・スクリプトに注入することにより、トランザクションはブロックチェーンの態様に基づくことが可能である。例えば、ブロック・ヘッダは、ポテンシャル・シード・トランザクションのアンロッキング・スクリプトのデータとして含まれることが可能であり、オペレーション・コードのシーケンスは、データが有効なブロック・ヘッダであることを検証するようにロッキング・スクリプトで実行されることが可能であり(例えば、スクリプトのサイズは90バイトであり、データのnビット・フィールドはブロックチェーンの困難性に等しい又はそれより大きく、SHA256がターゲット値未満又はそれに等しい)、そのようなスクリプトは以下の表1に示されている。
【0110】
表1:
【表1】
【0111】
幾つかの実施形態において、シード・トランザクション904は、シードを導出するのに使用可能な値を、パズル・ソリューション908の形式で、PRNGトランザクション902ロッキング・スクリプトのPRNGに提供するように作成されるトランザクションである。幾つかの実施形態において、パズル・ソリューション908はある値であり、シード・トランザクション904のアンロッキング・スクリプトによりパズル910に入力として供給されると、PRNGトランザクション902のロッキング・スクリプトが、実行の結果としてTRUEに評価することを生じさせる値である。PRNGにシードを提供することは、PRNGの実行が乱数を生成することを更に生じさせる。実施形態において、パズル910を解くことは、ソリューションを明らかにする理由として、PRNGトランザクション902に関連するディジタル資産の少なくとも一部のような配当に関連付けられる。このように、パズル910を解く者には、ソリューション908を保留することを回避する理由が与えられ、なぜならそのようにすることは他者がパズル910を解いて配当を最初に要求する可能性を増やすからである。
【0112】
図10は本開示のパズル解明技術の様々な実施形態により乱数を生成するプロセス1000の具体例を示すフローチャートである。プロセス1000のうちの全部又は一部は(あるいは、説明される何らかの他のプロセス、あるいはこれらのプロセスの変形及び/又は組み合わせ)は、実行可能な命令及び/又はその他のデータにより構成される1つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、また1つ以上のプロセッサ上で集まって動作する実行可能命令として実装されることが可能である。実行可能命令及び/又はその他のデータは非一時的なコンピュータ読み取り可能な記憶媒体(例えば、磁気、光学、又はフラッシュ媒体に永続的に格納されるコンピュータ・プログラム)に保存されることが可能である。
【0113】
例えば、プロセス1000のうちの全部又は一部は1つ以上のコンピューティング・デバイスにより(例えば、データ・センターにおけるサーバーにより、クライアント・コンピューティング・デバイスにより、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、あるいは図12のコンピューティング・デバイス1200等の適切な任意の電子クライアント・デバイスにより)実行されることが可能である。プロセス1000は一連のオペレーションを含み、パズルを含むPRNGトランザクションが検証され、シード・トランザクションは、PRNGトランザクションのロッキング・スクリプト内のPRNGにシードが提供されることを引き起こす。PRNGの実行は擬似乱数を生成する。生成された擬似乱数に基づいてトランザクションに制約が課される。
【0114】
1002において、図9のPRNGトランザクション902等のPRNGトランザクションは、ブロックチェーン・ネットワークの検証ノードにより検証される。実施形態において、PRNGトランザクションは、パズル910に類似するパズルであり、PRNGトランザクションの作成時点では未知のソリューションを有する。例えば、幾つかの実施形態において、パズルに対するソリューションは、PRNGトランザクションの作成から所定の時間が経過するまでは利用可能でも決定可能でもないデータを含む。1004において、PRNGトランザクションがブロックチェーン・ネットワークにコミットされた後に、アンロッキング・スクリプトにおけるパズルに対するソリューション(例えば、パズル・ソリューション908)を包含するシード・トランザクションは、ブロックチェーン・ネットワークにおける同一の又は相違する検証ノードにより取得される。
【0115】
1006において、同一又は相違する検証ノードはシード・トランザクションのアンロッキング・スクリプトを実行し、そのソリューションが、PRNGトランザクションのロッキング・スクリプトに対する入力として利用可能にされることを引き起こす。次いで、検証ノードはPRNGトランザクションのロッキング・スクリプトを実行し、それは、ソリューションを入力として取り、擬似乱数を生成するためにPRNGにより使用可能なソリューションに基づいて値を導出する。1008において、PRNGトランザクションのロッキング・スクリプトの制約に影響を及ぼすために擬似乱数が使用される。即ち、PRNGトランザクションに関連するディジタル資産のコントロールの移転は、図11に関連して説明される方法等の、PRNGロッキング・スクリプトのPRNGにより生成される擬似乱数に基づく何らかの方法で制約される(例えば、擬似乱数が所定の値の範囲内にあるか否か、ディジタル資産の擬似ランダム量が移転されるか否か等に部分的に基づいて有効として、シグネチャの擬似乱数が受け入れられる、シグネチャが受け入れられる)。1002-08で実行されるオペレーションのうちの1つ以上が、平行する場合を含む様々な順序及び組み合わせで実行され得ることに留意を要する。
【0116】
図11は本開示で説明される実施形態のPRNGがどのようにして実装され得るかについての例1100を示す。具体的には、図11はPRNGトランザクション1102のロッキング・スクリプトの例を示し、このトランザクションは常勤実施形態で説明される方法でシードを得た結果として、2つの成果の内の1つをランダムに生成する。図11は2つの可能な成果を示すのみであるが、可能な成果の実際の数及び各々の成果の確率は、PRNGトランザクション1102の作者によって決定され、PRNGトランザクション1102のロッキング・スクリプトにエンコードされ得ることに留意を要する。従って多くの可能な成果及び確率が存在し得る。具体例1100に示される第1の可能な成果において、ランダムな結果1106Aは、PRNGトランザクション1102のUTXOをアンロックしようとする第1トランザクション1104Aの検証は成功であるが、PRNGトランザクション1102のUTXOをアンロックしようとする第2トランザクション1104Bの検証は不成功である。第2の可能な成果において、ランダムな結果1106Bは、PRNGトランザクション1102のUTXOをアンロックしようとする第1トランザクション1104Aの検証は不成功であるが、PRNGトランザクション1102のUTXOをアンロックしようとする第2トランザクション1104Bの検証は不成功である。
【0117】
幾つかの実施形態において、PRNGトランザクション1102は図6及び8にそれぞれ関連して説明されたPRNGトランザクション602又はPRNGトランザクション902に類似している。幾つかの実施形態において、第1及び第2トランザクション1104A-04Bは図6及び9のシード・トランザクション604又はシード・トランザクション904に類似している。即ち、第1及び第2トランザクション1104A-04Bの各々はPRNGトランザクション1102のロッキング・スクリプト内に含まれる1つ以上のパズルに対する1つ以上のソリューションを含むことができる。しかしながら、擬似乱数ジェネレータに対するシードはロッキング・スクリプトに提供されるソリューションから導出されるので、たとえ第1トランザクション1104Aと第2トランザクション1104Bとが同じソリューションを含み得るとしても、その成果(具体例1100ではトランザクションが首尾よく検証された旨の判定)は擬似ランダムである。例えば、ロッキング・スクリプトは、5より大きな擬似乱数ジェネレータからの値に関してアリス(Alice)のシグネチャを受け入れ、5以下の擬似乱数ジェネレータからの値に関してボブ(Bob)のシグネチャを受け入れるようにコードされることが可能である。
【0118】
幾つかの実施形態において、ランダムな結果1106A-06Bは、1つ以上のパズル・ソリューションによりシードが与えられたPRNGトランザクション1102のロッキング・スクリプトのRPNGの結果を反映する。以下の表は、一群の制約を決定するためにロッキング・スクリプトのRPNGにより生成される乱数を使用する幾つかの具体例を示す。表2は一群の制約を決定するために本開示で説明されるタイプの乱数ジェネレータを使用する一例を示す。
【0119】
表2:
【表2】
【0120】
上記の表において、乱数はシードに基づいて生成され(例えば、値はアンロッキング・スクリプトの実行後にスタック・メモリ内の値から導出される)、モジュラス3演算及び1の加算を実行することにより、1及び3の間の値に制限される。スタックにおける乱数により、OP_CHECKMULTISIGオペレーションは、スタックにおける乱数に等しいシグネチャ数を検査する。表3は一群の制約を決定するために本開示で説明されるタイプの乱数ジェネレータを利用する別の例を示す。
【0121】
表3:
【表3】
【0122】
上記の表では、前のスクリプトと同様に、乱数はシードに基づいて生成される。このケースでは、値は0又は1の範囲に制限される。乱数が1である場合、(例えば、PubK Aに関連する)アリスの有効なシグネチャを検査するための確認が行われ、乱数が0である場合、(例えば、PubK Bに関連する)ボブの有効なシグネチャを検査するための確認が行われる。
【0123】
開示される実施形態を説明する文脈において、別意が示されていない限り、 留意を要する。(例えば、データの送信、計算などの)「命令」が通常的には自力で実行しない作業を実行する実行可能命令(コード、アプリケーション、エージェント等とも言及される)に関する表現の使用は、命令が機械により実行され、これにより機械に特定の作業を実行させることを示す。
【0124】
図12は、本開示の少なくとも1つの実施形態を実施するために使用されることが可能なコンピューティング・デバイス1200の例示的な簡略化されたブロック図である。様々な実施形態において、コンピューティング・デバイス1200は、図示及び上述した任意のシステムを実施するために使用されることが可能である。例えば、コンピューティング・デバイス1200は、データ・サーバー、ウェブ・サーバー、ポータブル・コンピューティング・デバイス、パーソナル・コンピュータ、又は任意の電子コンピューティング・デバイスとして使用するように構成されることが可能である。図12に示されるように、コンピューティング・デバイス1200は1つ以上のプロセッサ1202を含むことが可能であり、プロセッサは、実施形態において、バス・サブシステム1204を介して多数のペリフェラル・サブシステムと通信し且つ動作可能に結合されるように構成される。幾つかの実施形態において、これらのペリフェラル・サブシステムは、メモリ・サブシステム1208及びファイル/ディスク・ストレージ・サブシステム1210を含むストレージ・サブシステム1206と、1つ以上のユーザー・インターフェース入力デバイス1212と、1つ以上のユーザー・インターフェース出力デバイス1214と、ネットワーク・インターフェース・サブシステム1216とを含む。このようなストレージ・サブシステム1206は一時的又は長期的な情報のストレージのために使用することが可能である。
【0125】
幾つかの実施形態において、バス・サブシステム1204は、コンピューティング・デバイス1200の様々なコンポーネント及びサブシステムが、意図されるように互いに通信することを可能にする仕組みを提供する。バス・サブシステム1204は単独のバスとして概略的に示されているが、バス・サブシステムの代替的な実施形態は複数のバスを使用する。幾つかの実施形態において、ネットワーク・インターフェース・サブシステム1216は他のコンピューティング・デバイス及びネットワークに対するインターフェースを提供する。ネットワーク・インターフェース・サブシステム1216は、幾つかの実施形態において、他のシステムからデータを受信する、及びコンピューティング・デバイス1200から他のシステムへデータを送信するインターフェースとして機能する。幾つかの実施形態において、バス・サブシステム1204は、詳細、検索語、等々のデータを通信するために使用される。
【0126】
幾つかの実施形態において、ユーザー・インターフェース入力デバイス1212は、キーボード;統合マウス、トラックボール、タッチパッド、又はグラフィックス・タブレット等のポインティング・デバイス;スキャナ;バーコード・スキャナ;ディスプレイに組み込まれたタッチ・スクリーン;音声認識システム、マイクロフォン等のオーディオ入力デバイス;及び他のタイプの入力デバイス等の1つ以上のユーザー入力デバイスを含む。一般に、「入力デバイス」という用語の使用は、コンピューティング・デバイス1200に情報を入力するための全ての可能なタイプのデバイス及びメカニズムを含むように意図される。幾つかの実施形態において、1つ以上のユーザー・インターフェース出力デバイス1214は、ディスプレイ・サブシステム、プリンタ、又は、オーディオ出力デバイス等の非視覚的ディスプレイを含む。幾つかの実施形態において、ディスプレイ・サブシステムは陰極線管(CRT)、液晶ディスプレイ(LCD)や発光ダイオード(LED)ディスプレイ等のフラット・パネル・デバイス、又はプロジェクションその他のディスプレイ・デバイスを含む。一般に、「出力デバイス」という用語の使用は、コンピューティング・デバイス1200から情報を出力するための全ての可能なタイプのデバイス及びメカニズムを含むように意図されている。1つ以上のユーザー・インターフェース出力デバイス1214は、例えば、説明された及びその変形のプロセスを実行するアプリケーションとのユーザー相互作用を、そのような相互作用が適切である場合には促進するユーザー・インターフェースを提供するために使用されることが可能である。
【0127】
幾つかの実施形態において、ストレージ・サブシステム1206は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構造を格納するコンピュータ読み取り可能な記憶媒体を提供する。アプリケーション(プログラム、コード・モジュール、命令)は、幾つかの実施形態で1つ以上のプロセッサにより実行されると、本開示の1つ以上の実施形態の機能を提供し、実施形態では、ストレージ・サブシステム1206に格納される。これらのアプリケーション・モジュール又は命令は1つ以上のプロセッサ1202により実行されることが可能である。様々な実施形態において、ストレージ・サブシステム1206は本開示に従って使用されるデータを格納するリポジトリを追加的に提供する。幾つかの実施形態において、ストレージ・サブシステム1206はメモリ・サブシステム1208とファイル/ディスク・ストレージ・サブシステム1210とを有する。
【0128】
実施形態では、メモリ・サブシステム1208は、プログラム実行中の命令及びデータの格納のためのメイン・ランダム・アクセス・メモリ(RAM)1218、及び/又は固定メモリが格納され得るリード・オンリ・メモリ(ROM)1220等の多数のメモリを含む。幾つかの実施形態において、ファイル/ディスク・ストレージ・サブシステム1210は、プログラム及びデータ・ファイルに対する非一時的なパーシステント(不揮発性)ストレージを提供し、ハード・ディスク・ドライブ、関連するリムーバブル媒体を伴うフロッピ・ディスク・ドライブ、コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)ドライブ、光ドライブ、リムーバブル・メディア・カートリッジ、又はその他の同様なストレージ媒体を含むことができる。
【0129】
幾つかの実施形態において、コンピューティング・デバイス1200は少なくとも1つのローカル・クロック1224を含む。ローカル・クロック1224は、幾つかの実施形態では、特定の開始日から起こったチック数を表現するカウンタであり、幾つかの実施形態ではコンピューティング・デバイス1200内に一体的に配置される。様々な実施形態において、ローカル・クロック1224は、コンピューティング・デバイス1200のプロセッサ及びそこに含まれるサブシステムにおけるデータ転送を特定のクロックパルスで同期させるために使用され、コンピューティング・デバイス1200とデータ・センターの他のシステムとの間の同期処理を調整するために使用されることが可能である。別の実施形態では、ローカル・クロックはプログラマブル・インターバル・タイマーである。
【0130】
コンピューティング・デバイス1200は、ポータブル・コンピュータ・デバイス、タブレット・コンピュータ、ワークステーション、又は以下に説明される何らかの他のデバイスを含む任意の様々なタイプのものであるとすることが可能である。更に、コンピューティング・デバイス1200は、幾つかの実施形態では、1つ以上のポート(例えば、USB、ヘッドフォン・ジャック、照明コネクタ等)を通じてコンピューティング・デバイス1200に接続されることが可能な他のデバイスを含むことが可能である。実施形態では、そのようなデバイスは光ファイバ・コネクタを受け入れるように構成されるポートを含む。従って、幾つかの実施形態では、このデバイスは、光信号を電気信号に変換するように構成され、電気信号は処理のためにデバイスをコンピューティング・デバイス1200に接続するポートを介して伝送される。コンピュータ及びネットワークの絶えず変化する性質に起因して、図12に示されるコンピューティング・デバイスの説明は、デバイスの好ましい実施形態を説明する目的で特定の具体例としてのみ意図されている。図12に示されるシステムよりも多数の又は少数のコンポーネントを有する多くの他の構成が可能である。
【0131】
従って明細書及び図面は限定的な意味ではなく例示的に解釈されるべきである。しかしながら、特許請求の範囲に説明される本発明の範囲から逸脱することなく、様々な修正及び変更がそれらに行われ得ることは明白であろう。同様に、他の変形も本開示の範囲内にある。従って、開示される技術は様々な修正及び代替的な構成の影響を受け得るが、それらの所定の説明された実施形態は図面に示されており、上記において詳細に説明されている。しかしながら、本発明を開示された特定の形態又は複数の形態に限定するような意図はなく、逆に、全ての修正、代替的な構成、及び均等物を、添付の特許請求の範囲で規定されるような本発明の範囲内にカバーするように意図していることが理解されるべきである。
【0132】
ある及びそのという用語(“a”及び“an”及び“the”)及び開示される実施形態を説明する文脈における類似の参照の使用は(特に以下の特許請求の範囲の文脈において)、別意に指定されていない限り又は文脈上矛盾しない限り、単数及び複数の双方をカバーするように解釈される。「備える」、「有する」、「含む」、及び「包含する」等の用語は、別意を示していない限り、オープン・エンド用語(即ち、「~を含むが、それに限定されない」を意味するもの)として解釈されるべきである。「接続された」という用語は、修飾されておらず物理的な接続を指す場合、たとえ何らかの介在が存在してとしても、部分的に又は全体的に中に包含される、そこに取り付けられる、又は一緒に結合されるように解釈されるべきである。本開示において値の範囲の記載は、別意が示されていない限り、その範囲内に該当する個々の値それぞれに個別的に参照する簡略方法として機能するように単に意図されているに過ぎず、各々の別々の値はあたかもそれが個々に記載されているかのように明細書に組み込まれる。「セット」(例えば、「アイテムのセット」)又は「サブセット」という用語の使用は、別意を示していない限り又は文脈上矛盾しない限り、1つ以上のメンバーを含む空でない集まりとして解釈されるべきである。更に、別意を示していない限り又は文脈上矛盾しない限り、対応する集合の「サブセット」又は「部分集合」という用語は必ずしも対応する集合の真の部分集合を指す必要はなく、部分集合及び対応する集合は等しくてもよい。
【0133】
「A、B及びCのうちの少なくとも1つ」という形式の言い回し又は「A、B及びCのうちの少なくとも1つ」等の接続語は、具体的に言及されていない限り又は文脈上明らかに矛盾しない限り、アイテム、ターム等がA又はB又はCの何れか、A及びB及びCの集合のうちの任意の空でない部分集合であるとすることが可能であることを提示するように一般的に使用される文脈で理解される。例えば、3つのメンバーを有する集合の模範的な例において、「A、B及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という接続語句は、以下の集合:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}のうちの任意のものを指す。従って、そのような接続語は、所定の実施形態が、少なくとも1つのA、少なくとも1つのB、少なくとも1つのCのそれぞれが存在することを要求していることを意味するように一般的に意図されてはいない。
【0134】
説明されるプロセスのオペレーションは、別意に指示されていない限り又は文脈上明らかに矛盾しない限り、適切な任意の順序で実行することが可能である。説明されるプロセス(又はその変形及び/又は組み合わせ)は、実行可能命令で構成される1つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、1つ以上のプロセッサでまとまって動作するコード(例えば、実行可能命令、1つ以上のコンピュータ・プログラム、又は1つ以上のアプリケーション)として、ハードウェア又はそれらの組み合わせにより実装されることが可能である。幾つかの実施形態において、コードは、例えば1つ以上のプロセッサにより実行可能な複数の命令を含むコンピュータ・プログラムの形式で、コンピュータ読み取り可能な記憶媒体に格納されることが可能である。幾つかの実施形態において、コンピュータ読み取り可能な記憶媒体は非一時的である。
【0135】
与えられている任意の及び全ての具体例、又は例示的な言葉(例えば、「~等」)の使用は、本発明の実施形態を単により良く照らすように意図されているに過ぎず、別意に要求されていない限り、本発明の範囲に制限を課してはいない。明細書中の言葉は、請求項に記載されていない何らかの要素を、本発明の実施に必須であることを示しているように解釈されるべきでない。
【0136】
本発明を実行するために発明者に知られているベスト・モードを含む本開示の実施形態が説明されている。これらの実施形態の変形例は上記の説明を理解する当業者にとって明らかになるであろう。発明者等は当業者がそのような変形例を適切に使用することを予想しており、発明者等は、本開示の実施形態が具体的に説明されたものとは違って実施されることを意図している。従って、本開示の範囲は適用可能な法律で許容されるように添付の特許請求の範囲に記載される対象事項の全ての変形及び均等物を包含する。更に、それらの全ての可能な変形において上述される要素の任意の組み合わせは、別意が示されていない限り又は文脈上明らかに矛盾しない限り、本開示の範囲に包含される。
【0137】
引用される刊行物、特許出願、及び特許を含む全てのリファレンスは、あたかも各リファレンスが個々に及び具体的に援用されるように示されているのと同程度に及び全体的に記載されているのと同程度に本願でリファレンスにより組み込まれる。
【0138】
上述した実施形態は本発明を限定するのではなく例示していること、及び当業者は、添付の特許請求の範囲に記載されている本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計できることに留意すべきである。特許請求の範囲において、括弧内に配置される如何なる参照符号も特許請求の範囲を限定するように解釈されないこととする。「有している」及び「有する」等の言葉は、任意の請求項又は明細書全体の中で列挙されているもの以外の要素又はステップの存在を排除していない。本明細書において、「有する」は「含む又はから成る」を意味し、「有している」は「含んでいる又はから構成されている」を意味する。要素単独の参照はそのような要素複数個の参照を排除しておらず、逆もまたそうである。本発明は、幾つかの個別的な要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実装されることが可能である。幾つかの手段を列挙するデバイス・クレームにおいて、これら幾つかの手段はハードウェアの1つの同じアイテムにより具現化されることが可能である。所定の複数の事項が相互に異なる従属請求項に記載されているという単なるその事実は、これらの事項の組み合わせが有用に利用できないことを示してはいない。
【0139】
要 約
本開示で説明及び示唆される技術は、ブロックチェーン・データ構造に保存されるデータの完全性を保証するというブロックチェーンの特質を混乱させることなく、ブロックチェーンの機能を拡張する。例えば、本開示で説明される技術は、トランザクションに制約を実装するために豊富な柔軟性を提供することによって、コンピューティングの分野、具体的にはスマート・コントラクトの分野を進歩させる。更に、本開示で説明及び示唆される技術は、スクリプトで擬似乱数の生成を可能にすることにより、ブロックチェーン・ネットワークの機能を進歩させることができる。更に、本開示で説明及び示唆される技術は、ブロックチェーン・スクリプト・オペレーション・コードにおける乱数生成機能の欠如により具体的に生じる問題を克服するために、必然的にコンピュータ技術に根ざしている。
【0140】
[付記]
(付記1)
コンピュータが実行する方法であって:
第1パズル及び第2パズルを第3ロッキング・スクリプトに含む第3トランザクションを検証するステップであって:
前記第1パズルは、前記第1パズルに対するソリューションにより充足することが可能な第1条件により、第1ディジタル資産のコントロールの移転を制限する第1ロッキング・スクリプトにおいて第1トランザクションに含まれ;
前記第2パズルは、前記第2パズルに対するソリューションにより充足することが可能な第2条件により、第2ディジタル資産のコントロールの移転を制限する第2ロッキング・スクリプトにおいて第2トランザクションに含まれ;
前記第1トランザクション及び前記第2トランザクションはブロックチェーンに対してコミットされ;及び
前記第3トランザクションは第3ディジタル資産に関連している、ステップ;
前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションに少なくとも部分的に基づいて擬似乱数を生成するステップ;
前記擬似乱数に少なくとも部分的に基づいて前記第3ディジタル資産のコントロールを移転するステップ;
を有する方法。
(付記2)
前記第1トランザクションは第1関係者により作成され;及び
前記第2トランザクションは前記第1関係者とは異なる第2関係者によって作成される、付記1に記載の方法。
(付記3)
前記第1関係者は前記第1トランザクションの作成前に前記第1パズルに対するソリューションにアクセスすることができる、付記1-2のうちの何れか1項に記載の方法。
(付記4)
前記第1ロッキング・スクリプトは時間的制約を含み;
前記時間的制約が充足されることを条件として、前記第1パズルに対するソリューションを含むトランザクションの検証は、前記第1ディジタル資産のコントロールを第1エンティティへ移転することを引き起こし;及び
前記時間的制約が充足されないことを条件として、ペナルティ・トランザクションの検証は、前記第1ディジタル資産のコントロールを、前記第1エンティティとは異なる第2エンティティへ移転することを引き起こす、付記1-3のうちの何れか1項に記載の方法。
(付記5)
前記時間的制約は、前記第1パズルに対するソリューションが、時間制限を超える前に明らかにされることである、付記4に記載の方法。
(付記6)
前記擬似乱数生成トランザクションを検証することは、前記第1条件及び前記第2条件の充足前に実行される、付記1-5のうちの何れか1項に記載の方法。
(付記7)
前記第1パズルは暗号ハッシュ・パズルである、付記1-6のうちの何れか1項に記載の方法。
(付記8)
前記第1パズルは前記第1トランザクションのロッキング・スクリプトにおける一群のオペレーション・コードであり;及び
前記一群のオペレーション・コードの実行は、前記第1パズルに対するソリューションを入力として受けた結果として真であると評価する、付記1-7のうちの何れか1項に記載の方法。
(付記9)
前記第1パズル及び前記第2パズルを解くことは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを検証することよりも計算が困難である、付記1-8のうちの何れか1項に記載の方法。
(付記10)
前記擬似乱数を生成するステップは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションに少なくとも部分的に基づいてシード値を導出することを含む、付記1-9のうちの何れか1項に記載の方法。
(付記11)
前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含むシード・トランザクションを検証するステップを更に含む付記1-10のうちの何れか1項に記載の方法。
(付記12)
前記第3ディジタル資産のコントロールを移転するステップは:
前記擬似乱数が第1値であるという条件の下で、前記シード・トランザクションの検証は成功であること;及び
前記擬似乱数が前記第1値とは異なる第2値であるという条件の下で、前記シード・トランザクションの検証は不成功であることを含む、付記1-11のうちの何れか1項に記載の方法。
(付記13)
前記シード・トランザクションのアンロッキング・スクリプトは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含む、付記12に記載の方法。
(付記14)
前記第3トランザクションを作成したエンティティに前記第3ディジタル資産のコントロールを返すためのリファンド・トランザクションを検証するステップを更に含む付記1-13のうちの何れか1項に記載の方法。
(付記15)
前記リファンド・トランザクションを検証するステップは、前記第1パズルに対するソリューション及び前記第2パズルに対するソリューションを含むシード・トランザクションの検証の成功が、所定の期間内に生じていないという条件の下で生じる、付記14に記載の方法。
(付記16)
プロセッサ;及び
実行可能命令を含むメモリ;
を有するシステムであって、前記実行可能命令は、前記プロセッサによる実行の結果として、付記1-15のうち何れか1項に記載の方法を前記システムに実行させる、システム。
(付記17)
実行可能命令を保存した非一時的なコンピュータ読み取り可能な記憶媒体であって、前記実行可能命令は、コンピュータ・システムのプロセッサにより実行された結果として、付記1-15のうち何れか1項に記載の方法を前記コンピュータ・システムに少なくとも実行させる、記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12