(57)【要約】  本発明はコンセンサス・ベースのブロックチェーン等の分散台帳技術に関連する。ブロックチェーン・スクリプトにおけるセキュア乱数生成のためのコンピュータ実装方法が説明される。本発明は例えばビットコイン・ブロックチェーンであってもよいブロックチェーン・ネットワークを利用して実装される。第３トランザクションが検証される。第３トランザクションは第３ディジタル資産に関連し、ロッキング・スクリプトにおける第１及び第２パズルを含む。第１パズルは、第１ディジタル資産のコントロールの移転を制限する第１ロッキング・スクリプトにおいて第１トランザクションに含まれる。第２パズルは、第２ディジタル資産のコントロールの移転を制限する第２ロッキング・スクリプトにおいて第２トランザクションに含まれる。第１及び第２パズルに対するソリューションに少なくとも部分的に基づいて擬似乱数が生成される。擬似乱数に少なくとも部分的に基づいて第３ディジタル資産のコントロールが移転される。
2020532170.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する方法であって：
第１パズル及び第２パズルを第３ロッキング・スクリプトに含む第３トランザクションを検証するステップであって：
前記第１パズルは、前記第１パズルに対するソリューションにより充足することが可能な第１条件により、第１ディジタル資産のコントロールの移転を制限する第１ロッキング・スクリプトにおいて第１トランザクションに含まれ；
前記第２パズルは、前記第２パズルに対するソリューションにより充足することが可能な第２条件により、第２ディジタル資産のコントロールの移転を制限する第２ロッキング・スクリプトにおいて第２トランザクションに含まれ；
前記第１トランザクション及び前記第２トランザクションはブロックチェーンに対してコミットされ；及び
前記第３トランザクションは第３ディジタル資産に関連している、ステップ；
前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションに少なくとも部分的に基づいて擬似乱数を生成するステップ；
前記擬似乱数に少なくとも部分的に基づいて前記第３ディジタル資産のコントロールを移転するステップ；
を有する方法。
【請求項２】
前記第１トランザクションは第１関係者により作成され；及び
前記第２トランザクションは前記第１関係者とは異なる第２関係者によって作成される、請求項１に記載の方法。
【請求項３】
前記第１関係者は前記第１トランザクションの作成前に前記第１パズルに対するソリューションにアクセスすることができる、請求項１−２のうちの何れか１項に記載の方法。
【請求項４】
前記第１ロッキング・スクリプトは時間的制約を含み；
前記時間的制約が充足されることを条件として、前記第１パズルに対するソリューションを含むトランザクションの検証は、前記第１ディジタル資産のコントロールを第１エンティティへ移転することを引き起こし；及び
前記時間的制約が充足されないことを条件として、ペナルティ・トランザクションの検証は、前記第１ディジタル資産のコントロールを、前記第１エンティティとは異なる第２エンティティへ移転することを引き起こす、請求項１−３のうちの何れか１項に記載の方法。
【請求項５】
前記時間的制約は、前記第１パズルに対するソリューションが、時間制限を超える前に明らかにされることである、請求項４に記載の方法。
【請求項６】
前記擬似乱数生成トランザクションを検証することは、前記第１条件及び前記第２条件の充足前に実行される、請求項１−５のうちの何れか１項に記載の方法。
【請求項７】
前記第１パズルは暗号ハッシュ・パズルである、請求項１−６のうちの何れか１項に記載の方法。
【請求項８】
前記第１パズルは前記第１トランザクションのロッキング・スクリプトにおける一群のオペレーション・コードであり；及び
前記一群のオペレーション・コードの実行は、前記第１パズルに対するソリューションを入力として受けた結果として真であると評価する、請求項１−７のうちの何れか１項に記載の方法。
【請求項９】
前記第１パズル及び前記第２パズルを解くことは、前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションを検証することよりも計算が困難である、請求項１−８のうちの何れか１項に記載の方法。
【請求項１０】
前記擬似乱数を生成するステップは、前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションに少なくとも部分的に基づいてシード値を導出することを含む、請求項１−９のうちの何れか１項に記載の方法。
【請求項１１】
前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションを含むシード・トランザクションを検証するステップを更に含む請求項１−１０のうちの何れか１項に記載の方法。
【請求項１２】
前記第３ディジタル資産のコントロールを移転するステップは：
前記擬似乱数が第１値であるという条件の下で、前記シード・トランザクションの検証は成功であること；及び
前記擬似乱数が前記第１値とは異なる第２値であるという条件の下で、前記シード・トランザクションの検証は不成功であることを含む、請求項１−１１のうちの何れか１項に記載の方法。
【請求項１３】
前記シード・トランザクションのアンロッキング・スクリプトは、前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションを含む、請求項１２に記載の方法。
【請求項１４】
前記第３トランザクションを作成したエンティティに前記第３ディジタル資産のコントロールを返すためのリファンド・トランザクションを検証するステップを更に含む請求項１−１３のうちの何れか１項に記載の方法。
【請求項１５】
前記リファンド・トランザクションを検証するステップは、前記第１パズルに対するソリューション及び前記第２パズルに対するソリューションを含むシード・トランザクションの検証の成功が、所定の期間内に生じていないという条件の下で生じる、請求項１４に記載の方法。
【請求項１６】
プロセッサ；及び
実行可能命令を含むメモリ；
を有するシステムであって、前記実行可能命令は、前記プロセッサによる実行の結果として、請求項１−１５のうち何れか１項に記載の方法を前記システムに実行させる、システム。
【請求項１７】
実行可能命令を保存した非一時的なコンピュータ読み取り可能な記憶媒体であって、前記実行可能命令は、コンピュータ・システムのプロセッサにより実行された結果として、請求項１−１５のうち何れか１項に記載の方法を前記コンピュータ・システムに少なくとも実行させる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にブロックチェーン・トランザクションを含む分散台帳技術に関連し、特にブロックチェーン・スクリプト内での乱数生成を安全にすることに関連する。本発明は更にブロックチェーン・ネットワークで行われる電子転送に関するセキュリティを強化するために暗号化及び数学的な技術を活用する。本発明はスマート・コントラクトに使用することに特に適しているがこれに限定されない。
【背景技術】
【０００２】
この文献において、用語「ブロックチェーン」は何種類もの電子的なコンピュータ・ベースの分散された台帳のうちの何れを指してもよい。これらはコンセンサス・ベースのブロックチェーン及びトランザクション・チェーン技術、許可型及び非許可型の台帳、共有台帳、及びそれらの変形を含む。ブロックチェーン技術の最も広く知られたアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装も提案され開発されている。便宜上及び説明の目的のために、本開示に記載される技術の有用なアプリケーションとして「ビットコイン」の例が参照されるかもしれないが、ビットコインは、本開示で説明される技術が適用され得る多数のアプリケーションのうちのほんの１つに過ぎない。しかしながら、本発明はビットコイン・ブロックチェーンで使用することに限定されず；非商用アプリケーションを含む代替的なブロックチェーン実装及びプロトコルもまた、本発明の範囲に属することに留意すべきである。例えば、本開示の中で説明される技術は、暗号通貨のやり取りが生じるか否かによらず、トランザクションの中で制約がエンコードされ得るものに関してビットコインと同様な制限を有するブロックチェーン実装を利用する利点を提供するであろう。
【０００３】
ブロックチェーンは、ピア・ツー・ピアの電子台帳であり、ブロックで構成されるコンピュータ・ベースの非セントラル化された分散システムとして実装され、ブロックはトランザクション及び他の情報で構成される。幾つかの例において、「ブロックチェーン・トランザクション」はデータ及び条件一式を含むフィールド値の構造化された集まりをエンコードする入力メッセージを参照し、条件一式の充足は、フィールドのセットに関し、ブロックチェーン・データ構造に書き込まれるために事前に必要なことである。例えば、ビットコインの場合、各々のトランザクションは、ブロックチェーン・システムの参加者間でのディジタル資産のコントロールの移転をエンコードするデータ構造であり、少なくとも１つの入力と少なくとも１つの出力とを含む。
【０００４】
幾つかの実施形態において、「ディジタル資産」は、使用する権利に関連付けられるバイナリ・データを指す。ディジタル資産の具体例はビットコイン及び他の暗号通貨を含む。ビットコイン等の幾つかの実施形態では、ディジタル資産は非トークン化され（ｕｎｔｏｋｅｎｉｚｅｄ）、その結果、例えばブロックチェーンにおいて識別されるディジタル資産の識別子は存在せず、むしろディジタル資産のコントロールは、ブロックチェーンに記録されるようになる有効なトランザクションを生成する能力によって証明される。しかしながら、幾つかのブロックチェーン実装はトークン化されたディジタル資産（ｔｏｋｅｎｉｚｅｄ  ｄｉｇｉｔａｌ  ａｓｓｅｔｓ）を使用することが可能であり、その結果、ディジタル資産はブロックチェーンに記録される情報を利用して具体的に識別可能であることに留意を要する。ディジタル資産は幾つかの実施形態において暗号通貨として使用され得るが、ある実施形態では追加的又は代替的にディジタル資産は他のコンテンツで利用可能であることが想定されている。本発明は、ディジタル資産のコントロールに適用可能であるが、本質的に技術的なものであり、そしてディジタル資産の移転に必ずしも係わらずにブロックチェーン・データ構造を利用する他の状況で使用され得ることに留意を要する。本開示で使用されるような「ディジタル資産」は１つ以上のディジタル資産を指してもよい。例えば、トランザクションは複数の入力を有してもよく、それらの入力の各々が異なるディジタル資産を表現してもよい。ディジタル資産のコントロールが移転される場合のディジタル資産は、この例では、複数のディジタル資産の集まりであってもよく、その集まり自体がディジタル資産である。同様に、トランザクションはこれらの複数の入力を細分及び／又は結合して１つ以上の出力を生成し、その結果、例えば入力の数と出力の数とは異なっていてもよい。
【０００５】
幾つかの実装において、ディジタル資産のコントロールを移転することは、ディジタル資産の少なくとも一部を第１エンティティから第２エンティティへ関連付け直すことにより実行されることが可能である。各々のブロックは先行するブロックのハッシュを含み、その結果、ブロックは共にチェーン状になり、その発端以来ブロックチェーンに書き込まれてきた全てのトランザクションの永続的な変更できない記録を作る。トランザクションは、トランザクションの出力が誰によってどのようにアクセスされ得るかを指定する各自の入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含む。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベース・スクリプト言語を使用して書かれる。
【０００６】
幾つかの例において、「スタック・ベース・スクリプト言語」は、様々なスタック・ベース又はスタック指向の実行モデル又はオペレーションをサポートするプログラミング言語を指す。即ち、スタック・ベース・スクリプト言語は、スタックと呼ばれるデータ構造を利用することができる。スタックでは、値がスタックのトップにプッシュされるか又はスタックのトップからポップされることが可能である。スタックに対して実行される様々なオペレーションは、スタックのチップから１つ以上の値をプッシュ又はポップする結果となり得る。例えば、OP_EQUALオペレーションは、上位２つのアイテムをスタックから取り出し、それらを比較し、結果（例えば、等しければ１、あるいは等しくなければ０）をスタックのトップにプッシュする。幾つかの本願実施形態で使用される幾つかのスクリプト言語では、メイン・スタック及びオルタネート・スタックという少なくとも２つのスタックが存在してもよい。スクリプト言語の幾つかのオペレーションは、あるスタックのトップから別のスタックのトップへアイテムを移動させることができる。例えば、OP_TOALTSTACKは、メイン・スタックのトップからオルタネート・スタックのトップへ値を移動させる。スタック・ベースのスクリプト言語で書かれるスクリプトは、ベクトル、リスト、又はスタック等の適切な任意のデータ構造を利用して実装されることが可能な論理スタックにプッシュされることが可能である。
【０００７】
ブロックチェーンに書き込まれるトランザクションのために、それは「検証」されなければならない。ネットワーク・ノード（マイニング・ノード）は、各々のトランザクションが有効であることを保証するための作業を実行し、有効でないトランザクションはネットワークから拒否される。ノードは、他のノードと異なる有効性に関する基準を有することができる。ブロックチェーンにおける有効性はコンセンサス・ベースであるので、トランザクションは、トランザクションが有効であることに過半数のノードが合意する場合に有効とみなされる。ノードにインストールされているソフトウェア・クライアントは、部分的に未使用トランザクション・アウトプット（ＵＴＸＯ）を参照するトランザクションに関するこの検証作業を、ＵＴＸＯロッキング及びアンロッキング・スクリプトを実行することによって実行する。ロッキング及びアンロッキング・スクリプトの実行がＴＲＵＥと評価する場合、及び適用可能であるならば他の検証条件が充足される場合に、トランザクションはノードによって検証される。検証されたトランザクションは他のネットワーク・ノードへ伝搬され、マイニング・ノードはブロックチェーンにトランザクションを含めることを選択することができる。従って、トランザクションがブロックチェーンに書き込まれるために、ｉ）トランザクションを受信する第１ノードにより検証され−−−トランザクションが検証されると、ノードはそれをネットワーク内の他のノードへ中継し；ｉｉ）マイニング・ノードにより構築される新たなブロックに追加され；ｉｉｉ）マイニングされる、即ち過去のトランザクションの公の台帳に追加されなければならない。トランザクションを事実上撤回できなくする程度に十分な数のブロックがブロックチェーンに追加された場合に、トランザクションは承認されたものとみなされる。
【０００８】
現在の研究の１つのエリアは「スマート・コントラクト」の実装にブロックチェーンを利用することである。これらは、機械読み取り可能な契約又は合意の条項についての実行を自動化するように設計されたコンピュータ・プログラムである。自然言語で書かれる従来の契約とは異なり、スマート・コントラクトは、結果を生成するために入力を処理することが可能なルールを含む機械実行可能なプログラムであり、それらの結果に依存して実行されるアクションを引き起こすことが可能である。
【０００９】
幾つかの実施形態において、特定のエンティティとの相互作用がスマート・コントラクトの特定のステップでエンコードされ得るが、スマート・コントラクトは別の方法で自動的に実行され且つ自己執行されることが可能である。幾つかの例において、自動実行は、ＵＴＸＯの移転を可能にするように実行されるスマート・コントラクトの成功した実行を指す。そのような例において、ＵＴＸＯの移転を生じさせることが可能な「エンティティ」は、何らかのシークレットの知識を証明することが必要とされずにアンロッキング・スクリプトを作成することが可能なエンティティを指すことに留意を要する。換言すれば、アンロッキング・トランザクションは、データのソースが暗号シークレット（例えば、プライベートな非対称鍵、対称鍵など）に対するアクセスを有することを確認することなく、検証されることが可能である。また、このような例では、自己執行（ｓｅｌｆ−ｅｎｆｏｒｃｅｍｅｎｔ）は、ブロックチェーン・ネットワークの検証ノードが制約に従ってアンロッキング・トランザクションを実行させられることを指す。幾つかの例において、ＵＴＸＯを「アンロッキング」することは、ＵＴＸＯを参照して有効として実行するアンロッキング・トランザクションを作成することを指す。ＵＴＸＯをアンロッキングすることはまた、当該技術分野ではＵＴＸＯを消費することとして知られている。
【００１０】
ブロックチェーン・トランザクション・アウトプットは、ビットコイン等のディジタル資産のオーナーシップに関する情報とロッキング・スクリプトとを含む。エンカンブランス（ａｎ  ｅｎｃｕｍｂｒａｎｃｅ）としても言及され得るロッキング・スクリプトは、ＵＴＸＯをアンロックするために満足されるように求められる条件を指定することにより、ディジタル資産を「ロック」する。例えば、ロッキング・スクリプトは、関連するディジタル資産をアンロックするために所定のデータがアンロッキング・スクリプトで提供されることを要求し得る。ロッキング・スクリプトはビットコインでは「ｓｃｒｉｐｔＰｕｂＫｅｙ」としても知られている。ディジタル資産をアンロックするためにデータを提供することを当事者に要求する技術は、ロッキング・スクリプト内にデータのハッシュを埋め込むことを含む。しかしながら、これはロッキング・スクリプトが作成される時点でデータが決定されていない場合（例えば、未知であり確定していない場合）には問題である
【発明の概要】
【００１１】
従って、これらの側面のうちの１つ以上においてブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。そこで本発明によれば添付の特許請求の範囲に記載されているような方法及び対応するシステムが提供される。
かくてブロックチェーン・ネットワークのノードのためのコンピュータで実行される方法を提供することが望ましく、コンピュータで実行される方法は：
第１パズル及び第２パズルを第３ロッキング・スクリプトにおいて含む第３トランザクションを検証するステップであって：
第１パズルに対するソリューションにより充足することが可能な第１条件により、第１ディジタル資産のコントロールの移転を制限する第１ロッキング・スクリプトにおいて第１パズルは第１トランザクションに含まれ；
第２パズルに対するソリューションにより充足することが可能な第２条件により、第２ディジタル資産のコントロールの移転を制限する第２ロッキング・スクリプトにおいて第２パズルは第２トランザクションに含まれ；
第１トランザクションと第２トランザクションとはブロックチェーンにコミットされ；及び
第３トランザクションは第３ディジタル資産に関連している、ステップ；
第１パズルに対するソリューションと第２パズルに対するソリューションとに基づいて、擬似乱数を生成するステップ；及び
擬似乱数に少なくとも部分的に基づいて第３ディジタル資産のコントロールを移転するステップを含む。
【００１２】
第１トランザクションは第１関係者によって作成されてもよく、第２トランザクションは第１関係者とは異なる第２関係者によって作成されてもよい。こうして、第１関係者又は第２関係者のうちの少なくとも１人が正直なままでいる（例えば、擬似乱数生成器を妨害しようとしない）という条件の下で、第１パズルに対するソリューション及び第２パズルに対するソリューションから導出されるシードは確定できないもの（ｉｎｄｅｔｅｒｍｉｎａｂｌｅ）であり得る。
【００１３】
第１関係者は第１トランザクションの作成前に第１パズルに対するソリューションにアクセスすることができる。追加的又は代替的に、第２関係者は第２トランザクションの作成前に第２パズルに対するソリューションにアクセスすることができる。こうして、関係者達は各自のパズルに対するソリューションを既に知っているので、彼らはそれほど多くの演算リソースを消費することを要しない。
【００１４】
第１ロッキング・スクリプトは時間的制約を含んでもよい。追加的又は代替的に、時間的制約が充足されることを条件として、第１パズルに対するソリューションを含むトランザクションの検証は、第１ディジタル資産のコントロールを第１エンティティへ移転することを引き起こしてもよい。追加的又は代替的に、時間的制約が充足されないことを条件として、ペナルティ・トランザクションの検証は、第１ディジタル資産のコントロールを第１エンティティとは異なる第２エンティティへ移転することを引き起こしてもよい。
【００１５】
時間的制約は、第１パズルに対するソリューションが、時間制限を超える前に明らかにされることであってもよい。かくて、第１エンティティは、時間的制約の中で第１パズルに対するソリューションを提供する理由を有する、あるいは第２エンティティに対してディジタル資産を失うリスクを有する。
【００１６】
擬似乱数生成トランザクションを検証することは、第１条件及び第２条件の充足前に実行されてもよい。従って、擬似乱数生成トランザクションは、ソリューションが公表される前にブロックチェーンにコミットされることが可能であり、それにより、第１パズル及び第２パズル双方に対するソリューションを知っているエンティティによって擬似乱数生成トランザクションが操作され得ないことを保証する。
【００１７】
第１パズルは暗号ハッシュ・パズルであってもよい。
【００１８】
第１パズルは第１トランザクションのロッキング・スクリプトにおけるオペレーション・コード群であってもよい。追加的又は代替的に、オペレーション・コード群の実行は、第１パズルに対するソリューションを入力として受けた結果として真（ｔｒｕｅ）であると評価されてもよい。
【００１９】
第１パズル及び第２パズルを解くことは、第１パズルに対するソリューション及び第２パズルに対するソリューションを検証することよりも、計算が困難である可能性がある。
擬似乱数を生成することは、第１パズルに対するソリューション及び第２パズルに対するソリューションに少なくとも部分的に基づいてシード値を導出することを含んでもよい。
【００２０】
第１パズルに対するソリューション及び第２パズルに対するソリューションを含むシード・トランザクションは検証されることが可能である。こうして、シードは、第１関係者又は第２関係者のうちの少なくとも１人が正直なままでいる（例えば、擬似乱数生成器を妨害しようとしない）という条件の下で、確定できないものであり得る。
【００２１】
第３ディジタル資産のコントロールを移転することは：擬似乱数が第１値であるという条件の下で、シード・トランザクションの検証は成功であってもよいことを含み得る。追加的又は代替的に、擬似乱数が第１値とは異なる第２値であるという条件の下で、シード・トランザクションの検証は不成功であってもよい。こうして、擬似乱数生成器のロッキング・スクリプトに課される制約は、擬似乱数によって影響を受け得る。
【００２２】
第３トランザクションを作成したエンティティに第３ディジタル資産のコントロールを返すリファンド・トランザクションが検証されてもよい。
【００２３】
リファンド・トランザクションを検証することは、第１パズルに対するソリューション及び第２パズルに対するソリューションを含むシード・トランザクションの検証の成功が、所定の期間内に生じていないという条件の下で生じてもよい。このようにして、第３トランザクションを作成したエンティティは、第３トランザクションのＵＴＸＯが移転されずに残る場合に（例えば、所定の期間の後に）ディジタル資産の損失を被らずに済む。
【００２４】
プロセッサ及び実行可能な命令を含むメモリを有するシステムを提供することもまた望ましく、命令は、プロセッサによる実行の結果として、保護が請求される方法のうちの何れかをシステムに実行させる。
【００２５】
実行可能な命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体を提供することもまた望ましく、命令は、コンピュータ・システムの１つ以上のプロセッサによる実行の結果として、保護が請求される方法のうちの何れかをコンピュータ・システムに少なくとも実行させる。
【００２６】
従って、コンピュータで実行される方法を提供することが更に望ましく、方法は：
ブロックチェーン・ネットワークのノードにおいて、パズルを含む第１トランザクションを検証するステップであって、第１トランザクションはディジタル資産に関連し、パズルに対するソリューションは第１トランザクションの検証時には確定できないものである、ステップ；
第１トランザクションに関連するディジタル資産のコントロールを移転するために作成された第２トランザクションを少なくとも部分的に検証することにより、第２トランザクションに含まれるパズルに対するソリューションに少なくとも部分的に基づく擬似乱数を生成するステップ；及び
擬似乱数に少なくとも部分的に基づいてディジタル資産のコントロールを移転するステップを含む。
【００２７】
パズルは暗号ハッシュ・パズルであってもよい。
【００２８】
パズルはプルーフ・オブ・ワーク関数であってもよい。
【００２９】
パズルは第１トランザクションのロッキング・スクリプトにおけるオペレーション・コード群であってもよい。追加的又は代替的に、オペレーション・コード群の実行は、パズルに対するソリューションを入力として受けた結果として真であると評価されてもよい。
【００３０】
パズルを解くことは、ソリューションを検証することよりも演算に手間取るかもしれない。
【００３１】
ディジタル資産のコントロールを移転することは：擬似乱数が第１値であるという条件の下で、第２トランザクションの検証が成功であってもよいことを含み得る。追加的又は代替的に、擬似乱数が第１値とは異なる第２値であるという条件の下で、第２トランザクションの検証は不成功であってもよい。こうして、擬似乱数生成器のロッキング・スクリプトに課される制約は、擬似乱数によって影響を受け得る。
【００３２】
ソリューションは、第１トランザクションのロッキング・スクリプトにおける擬似乱数生成アルゴリズムに対するシードを導出するために少なくとも部分的に使用されてもよい。
【００３３】
ロッキング・スクリプトは第２トランザクションの検証を特定の時間フレームに制限してもよい。こうして、特定の時間フレームの中でパズルを解く理由が関係者に与えられてもよい。
【００３４】
特定の時間フレームの満了は、指定された関係者がディジタル資産のコントロールを受け取ることを可能にしてもよい。
【００３５】
指定された関係者は、第１トランザクションを作成した関係者であってもよい。このようにして、指定された関係者は、パズルが解かれない場合に（例えば、特定の期間の後に）ディジタル資産の返還を要求できてもよい。
【００３６】
パズルを解くことに対する配当（例えば、報酬）はディジタル資産より大きくてもよい（例えば、より大きな価値であってもよい）。このように、より大きな配当は、パズルを解く関係者に動機を与えることができ；ディジタル資産に比例して配当が大きいほど、より大きな動機となる。場合によっては、配当の大きさは、（例えば、擬似乱数生成トランザクション及び／又はソリューションを妨げるような）不正を試みる関係者のリスクを最小化するために、制限されてもよい。
【００３７】
ソリューションは、ブロックチェーン・ネットワークのブロックのヘッダから少なくとも部分的に導出されてもよい。
【００３８】
ヘッダは、第１トランザクションが好結果に検証された時点では確定できないものであってもよい。例えば、ヘッダは、ブロックチェーン・ネットワークにおける特定の時間又はその後の将来のブロックのヘッダであってもよい。このように、第１トランザクションが作成された時点では、将来のヘッダは不確定である傾向があるので、特定の時間の後になるまでソリューションが未知であることの保証を提供することができる。
【００３９】
プロセッサ；及び実行可能な命令を含むメモリを有するシステムを提供することもまた望ましく、命令は、プロセッサによる実行の結果として、保護が請求される方法のうちの何れかをシステムに実行させる。
【００４０】
実行可能な命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体を提供することもまた望ましく、命令は、コンピュータ・システムの１つ以上のプロセッサによる実行の結果として、保護が請求される方法のうちの何れかをコンピュータ・システムに少なくとも実行させる。
【００４１】
本発明は検証方法／システムとして、及び／又はブロックチェーン・トランザクションの検証を制御する制御方法／システムとして説明されることが可能である。幾つかの実施形態において、検証されたブロックチェーン・トランザクションは、ブロックチェーンにおけるトランザクションの登録の結果をもたらし；これは幾つかのアプリケーションではブロックチェーンを介したディジタル資産の取引又は移転をもたらし得る。ディジタル資産はブロックチェーンにより管理されるリソースの単位である。ディジタル資産は、幾つかの実施形態では、暗号通貨として使用され得るが、追加的又は代替的に実施形態においてディジタル資産は他の状況で利用可能であることが想定されている。本発明は、ディジタル資産のコントロールに適用可能であるが、本質的に技術的なものであり、ディジタル資産の移転に必ずしも係わらずにブロックチェーン・データ構造を利用する他の状況で使用され得ることに留意を要する。以下に説明されるように、本発明はまた、ブロックチェーン・ネットワーク又はプラットフォームによりオペレーションを実行する新たな改善された有利な方法に関するセキュリティ方法／システムとしても説明され得る。
【図面の簡単な説明】
【００４２】
本発明のこれら及び他の態様は本願で説明される実施形態から明らかになり、またそれらに関連して解明される。本発明の実施形態は添付図面に関連して単なる例示的として説明される。
【００４３】
【図１】様々な実施形態が実装され得るブロックチェーン環境を示す。
【図２】実施形態によるブロックチェーン・ランダム化の具体例を示す。
【００４４】
【図３】実施形態により解かれるインセキュア・ランダム化問題を示す例を示す。
【００４５】
【図４】実施形態によるシードの一部を生成するコミットメント・ソリューションの具体例を示す。
【００４６】
【図５】実施形態によるコミットメント・ソリューション・ペナルティの具体例を示す。
【００４７】
【図６】実施形態による擬似乱数生成トランザクションをアンロックするシード・トランザクションを実装する具体例を示す。
【００４８】
【図７】実施形態による時間制限満了の結果としてディジタル資産の返還を要求する具体例を示す。
【００４９】
【図８】実施形態によるコミットメント・ソリューションの具体例を示すフローチャートである。
【００５０】
【図９】実施形態によるシードを生成するパズル解明技術の具体例を示す。
【００５１】
【図１０】実施形態によるシードを生成するパズル解明技術の具体例を示すフローチャートである。
【００５２】
【図１１】実施形態によるランダム化スマート・コントラクト制約の具体例を示す。
【００５３】
【図１２】様々な実施形態が実装され得るコンピュータ環境を示す。
【発明を実施するための形態】
【００５４】
図１を先ず参照すると、本開示の実施形態によるブロックチェーンに関連する例示的なブロックチェーン・ネットワーク１００が示されている。実施形態において、例示的なブロックチェーン・ネットワーク１００は、分散されたピア・ツー・ピア・デバイスとして実装されるブロックチェーン・ノードを有し、各ノードは、ブロックチェーン・プロトコルに従うオペレーション、即ちノード１０２のオペレータ間で少なくとも部分的に合意したオペレーションを実行するソフトウェア及び／又はハードウェアのインスタンスを実行する。幾つかの具体例において、「ノード」はブロックチェーン・ネットワークの中で分散されているピア・ツー・ピア電子デバイスを指す。ブロックチェーン・プロトコルの具体例はビットコイン・プロトコルである。
【００５５】
幾つかの実施形態において、ノード１０２は適切な任意のコンピューティング・デバイスにより構成され得る（例えば、データ・センターのサーバーにより、クライアント・コンピューティング・デバイス（例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン等）により、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、又は図１２のコンピューティング・デバイス１２００等の適切な任意の電子クライアント・デバイスにより構成され得る）。幾つかの実施形態において、ノード１０２は、トランザクション１０４等の提案されるトランザクションを表すデータ・メッセージ又はオブジェクトを受け取るための入力を有する。幾つかの実施形態において、ノードは、それらが保持する情報について、例えばトランザクション１０４の状態の情報についてクエリ可能（ｑｕｅｒｙａｂｌｅ）である。
【００５６】
図１に示されるように、幾つかのノード１０２は１つ以上の他のノード１０２に通信可能に結合される。この通信可能な結合は有線又は無線通信のうちの１つ上を含むことが可能である。実施形態において、ノード１０２の各々はブロックチェーンにおける全てのトランザクションの「台帳」の少なくとも一部を維持する。このように、台帳は分散された台帳となるであろう。台帳に影響を及ぼすノードにより処理されるトランザクションは、台帳の完全性が維持されるように、１つ以上の他のノードにより検証可能である。
【００５７】
ノード１０２が他の何れのノードと通信できるかについては、例示的なブロックチェーン・ネットワーク１００における各ノードは１つ以上の他のノード１０２と通信することができ、その結果、ノード間を通過するメッセージは例示的なブロックチェーン・ネットワーク１００全体（又はそのうちのかなりの部分）を伝搬できることで十分であるとすることが可能であり、ただし、メッセージは転送されるべきことをブロックチェーン・プロトコルが示しているものであるとする。そのようなメッセージの１つは、ノード１０２Ａ等の１つのノード１０２による提案されるトランザクションのパブリケーション（ｔｈｅ  ｐｕｂｌｉｃａｔｉｏｎ）であってもよく、以後これは経路１０６等の経路にそって伝搬するであろう。このような他のメッセージはブロックチェーンに含めるように提案される新しいブロックのパブリケーションであってもよい。
【００５８】
実施形態において、少なくとも幾つかのノード１０２は、暗号問題を解くこと等の複雑な計算を実行するマイニング・ノードである。暗号問題を解くマイニング・ノードは、ブロックチェーンに対する新たなブロックを作成し、その新たなブロックを他のノード１０２へブロードキャストする。他のノード１０２は、マイニング・ノードの作業を確認し、確認すると、（例えば、それをブロックチェーンの分散台帳に追加することにより）そのブロックをブロックチェーン内に受け入れる。幾つかの例において、ブロックはトランザクションのグループであり、先行するブロックのタイムスタンプ及び「フィンガープリント」（例えば、ハッシュ）とともにしばしばマークされる。このようにして、各ブロックは先行するブロックにリンクされることが可能であり、それによりブロックチェーンの中でブロックをリンクする「チェーン」を作成する。実施形態では、有効なブロックは、ノード１０２のコンセンサスにより、ブロックチェーンに追加される。また、幾つかの例において、ブロックチェーンは、検証されたブロックのリストを有する。
【００５９】
実施形態において、少なくとも幾つかのノード１０２は、本開示で説明されるようなトランザクションを検証する検証ノードとして動作する。幾つかの例において、トランザクションは、（例えば、ビットコインの数のような）ディジタル資産のプルーフ・オブ・オーナーシップ（ｐｒｏｏｆ  ｏｆ  ｏｗｎｅｒｓｈｉｐ）と、ディジタル資産のオーナーシップ／コントロールを受け入れる又は移転するための条件を提供するデータを含む。幾つかの例において、「アンロッキング・トランザクション」は、先行するトランザクションのＵＴＸＯにより示される少なくとも一部のディジタル資産を、ブロックチェーン・アドレスに関連するエンティティに関連付け直す（例えば、オーナーシップ又はコンロールを移転する）ブロックチェーン・トランザクションを指す。幾つかの例において、「先行するトランザクション」は、アンロッキング・トランザクションにより参照されるＵＴＸＯを含むブロックチェーン・トランザクションを指す。幾つかの実施形態において、トランザクションは、オーナーシップ／コントロールが移転可能になる（「ロック解除可能になる」）前に充足されなければならない条件により、トランザクションを制限する「ロッキング・スクリプト」を含む。
【００６０】
幾つかの実施形態において、ブロックチェーン・アドレスは、少なくとも一部のディジタル資産のコントロールが移転／再関連付けされる先のエンティティに関連付けられる英数字文字列である。幾つかの実施形態で実装される何らかのブロックチェーン・プロトコルでは、エンティティに関連するパブリック・キーとブロックチェーン・アドレスとの間に１対１の対応関係が存在する。幾つかの実施形態において、トランザクションの検証は、ロッキング・スクリプト及び／又はアンロッキング・スクリプトで指定される１つ以上の条件を検証することを含む。トランザクション１０４の検証に成功すると、検証ノードはトランザクション１０４をブロックチェーンに追加し、それをノード１０２に分散する。
【００６１】
本開示の所定の実施形態は、記述されている命令群を実行するスクリプト・システム又は他のシステムは単独のスクリプトの中で２００を超える命令（例えば、オペレーション・コード）を可能にするという仮定の下で動作する。同様に、本開示の所定の実施形態は更に以下を仮定する：
・  本開示で言及されるオペレーション・コードにより提供される機能は、オペレーション・コード・スクリプト／命令群を実行するシステムに存在してイネーブルにされる；及び／又は
・  要求され得る機能は、所望の行動を提供するように書かれるカスタム化された機能の作成によって実現されることが可能である。これらのカスタム化された機能は、その言語に存在するがディセーブルにされているオペレーション・コードの機能を実現するように書かれてもよいし、あるいはスクリプト言語で元々には提供されていない特定の機能を提供する「新たな」オペレーション・コードであってもよい。
【００６２】
本開示で言及されるオペレーション・コードの具体例は以下を含む：
・  OP_ECPX，楕円曲線座標点のｘ座標を返す。
・  OP_ADD，スタックに上位２つのアイテムを追加する。
・  OP_BIGMOD，スタックにおける上位２つのアイテムを割った後の余りを返す。
・  OP_BIGMODADD，スタックの上位２つのアイテムのモジュラス加算を実行し、スタックの第３アイテムのモジュラス演算を行う。
・  OP_BIGMODINVERSE，モジュラス・ネガティブ指数演算を実行する。
・  OP_BIGMODMUL，スタックのスタック・モジュラス第３アイテムの上位２つのアイテムのモジュラス乗算を実行する。
・  OP_CAT，スタックの上位２つのアイテムを連結する。
・  OP_CHECKSIG，公開鍵及びシグネチャがスタックからポップされ、SIGHASHタイプに従ってトランザクション・フィールドのシグネチャに対して検証される。シグネチャが検証されると１が返され、そうでなければ０が返される。
・  OP_CHECKSIGVERIFY，OP_CHECKSIGと同様に機能するが、その後にOP_VERIFYが実行される。
・  OP_DERENCODE，DERフォーマットでスタックの上位２つのアイテムをエンコードする。
・  OP_DUP，上位のスタック・アイテムを複製する。
・  OP_ECPMULT，スタックの上位２つのアイテムについての楕円曲線座標点乗算（楕円曲線スカラー乗算とも言及される）を実行する。
・  OP_ELSE，上記のOP_IF又はOP_NOTIF又はOP_ELSEが実行されなかった場合、これらのステートメントが実行され；そうではなく上記のOP_IF又はOP_NOTIF又はOP_ELSEが実行された場合、これらのステートメントは実行されない。
・  OP_ENDIF，if/elseブロックを終了する。
・  OP_EQUAL，入力が正確に等しければ１を返し、そうでなければ０を返す。
・  OP_EQUALVERIFY，OP_EQUALと同様であるが、その後にOP_VERIFYを実行する。
・  OP_FROMALTSTACK，メイン・スタックのトップに入力を置き、それを代替スタックから除去する。
・  OP_HASH256，入力が２回ハッシュされ；最初のものはSHA-256により、後のものはRIPEMD-160により行われる。
・  OP_IF，トップ・スタック値が偽（False）である場合、ステートメントが実行され、トップ・スタック値は除去される。
・  OP_MUL，スタックにおける上位２つのアイテムを乗算する。
・  OP_NOTIF，トップ・スタック値が偽である場合、ステートメントが実行され、トップ・スタック値は除去される。
・  OP_ROLL，スタックの中でｎアイテム深いアイテムがトップに移される。
・  OP_SUBSTR，文字列の一部を返す。
・  OP_SWAP，スタックにおける上位２つのアイテムが交換される。
・  OP_TOALTSTACK，代替スタックのトップに入力を置き、それをメイン・スタックから除去する。
・  OP_VERIFY，トップ・スタック値が真（TRUE）でない場合、トランザクションを無効としてマークする。
【００６３】
図２は本開示の実施形態を示す具体例２００である。図２に示されるように、具体例はロッキング・スクリプト２１０を有する擬似乱数ジェネレータ（ＰＲＮＧ）トランザクション２０２を含み、ＰＲＮＧトランザクション２０２のＵＴＸＯをアンロックすることを試みるシード・トランザクション２０４のアンロッキング・スクリプト２１２の実行結果として受信されるシード値に基づいて乱数を生成するＰＲＮＧを含む。
【００６４】
幾つかの実施形態において、ＰＲＮＧトランザクション２０２は、ロッキング・スクリプト２１０の中にＰＲＮＧを含むブロックチェーン・トランザクションである。幾つかの実施形態において、決定ランダム・ビット・ジェネレータ（ＤＲＢＧ）としても知られるＰＲＮＧは、一連の乱数の性質を近似する一連の数字を生成するアルゴリズムを指す。ＰＲＮＧは、シーケンスが初期シード値に依存するので真の乱数ジェネレータとは区別される。幾つかの実施形態において、同じシード値を有するＰＲＮＧは同じシーケンスを再生するであろう。幾つかの実施形態において、ＰＲＮＧは、実行結果として統計的にランダムな値（例えば、認識可能なパターン又は規則を含まないもの）を生成する一連のオペレーション・コードとして、ロッキング・スクリプト２１０の中でコード化される。ＰＲＮＧは、ＰＲＮＧを初期化するシードとしての値を入力としてとる。
【００６５】
幾つかの実施形態において、ロッキング・スクリプト２１０は、ＰＲＮＧトランザクション２０２の検証に成功するために充足されるべき条件により（例えば、アンロッキング・スクリプト２１２により提供されるデータにより）、ＰＲＮＧトランザクション２１０を制限するスクリプトであり、ＰＲＮＧトランザクション２０２に関連するディジタル資産のコントロール／オーナーシップは転送されることが可能になる。例えば、ロッキング・スクリプト２１０は、ＰＲＮＧトランザクション２０２の関連するディジタル資産をアンロックするために、所定のデータがアンロッキング・スクリプト２１２で提供されることを要求することができる。より詳細には、図１に関連して説明されたブロックチェーン・ネットワーク等のブロックチェーンの検証ノードによるロッキング・スクリプト２１０の実行は、実行されたアンロッキング・スクリプト（例えば、アンロッキング・スクリプト２１２）からのデータを受け入れること、データに基づいて所定のオペレーションを実行すること、ロッキング・スクリプト２１０が首尾よく「アンロック」されているか否か（即ち、ロッキング・スクリプト２１０内の一群の条件セットを充足しているか否か）を示す結果を返すことをロッキング・スクリプト２１０に行わせる。本開示では、ロッキング・スクリプト２１０は、ＰＲＮＧに対する入力として（シード・トランザクション２０４のアンロッキング・スクリプト２１２の実行の結果として）シードが受信される条件として含む上述したようなＰＲＮＧを更に含む。幾つかの実施形態において、ロッキング・スクリプトは、ロッキング・スクリプト２１０の制約の中で使用するＰＲＮＧにより生成される乱数を使用するためにコード化される。
【００６６】
幾つかの実施形態において、シード・トランザクション２０４は、ＰＲＮＧトランザクション２０２のロッキング・スクリプト２１０においてＰＲＮＧにより使用可能なシード値を、アンロッキング・スクリプト２１２内に少なくとも含むブロックチェーン・トランザクションである。幾つかの実施形態において、アンロッキング・スクリプト２１２は、ＰＲＮＧトランザクション２０２のロッキング・スクリプト２１０に設定される一群の条件を充足することを試みるシード・トランザクション２０４の実行可能スクリプトである。本開示の動作原理は、ロッキング・スクリプト２１０が作成された時点でシード値は確定的ではないことであり、その結果、シード値に基づいてＰＲＮＧにより生成される値も同様に、ロッキング・スクリプトが作成された時点では確定的ではない。本開示はこれらの条件を充足する実施形態を説明する。
【００６７】
図３は本開示の実施形態により解決されるインセキュア・ランダム問題を示す例３００である。即ち、図２に示される例２００では、ＰＲＮＧ３０６は第１トランザクション３０２のロッキング・スクリプト３１０に含まれ、ＰＲＮＧ３０６のためのシード３０８は、第１トランザクション３０２に関連する、ビットコイン等のディジタル資産をアンロックする／取り返すために作成される第２トランザクション３０４のアンロッキング・スクリプト３１２により提供される。
【００６８】
幾つかの実施形態において、第１トランザクション３０２と第２トランザクション３０４とは、ブロックチェーン・ネットワークにおいてディジタル資産の移転を表現するフィールド値のセットである。幾つかの実施形態において、フィールド値のセットは入力及び出力を含むことができる。幾つかの実施形態において、入力は、先行するブロックチェーン・トランザクションの出力をアンロックするための試みを表現する。トランザクションの検証に成功すると、幾つかの実施形態において、検証ノードはトランザクションをブロックチェーンに追加し、それがブロックチェーンの他のノードへ分散されることを引き起こす。
【００６９】
幾つかの実施形態において、第２トランザクション３０４は、第１トランザクション３０２の少なくとも一部のディジタル資産（例えば、ＵＴＸＯにより示されるようなもの）を特定のエンティティに関連付け直す（例えば、オーナーシップ又はコントロールを移転する）ために作成されるブロックチェーン・トランザクションである。幾つかの実施形態において、第１トランザクション３０２は、オーナーシップ／コントロールが転送可能になる前に（「アンロックされる」前に）充足されなければならない条件により、第１トランザクション３０２を制限するロッキング・スクリプト３１０を含む。幾つかの実施形態において、ブロックチェーン・アドレスは、少なくとも一部のディジタル資産のコントロールが転送される／再関連付けされる先のエンティティに関連付けされる英数字文字列である。幾つかの実施形態で実装される何らかのブロックチェーン・プロトコルでは、エンティティに関連する公開鍵とブロックチェーン・アドレスとの間に１対１の対応関係が存在する。幾つかの実施形態において、トランザクションの検証は、アンロッキング・スクリプト３１２とロッキング・スクリプト３１０とを成功裏に実行することにより、ロッキング・スクリプト３１０で指定される１つ以上の条件を検証することを含む。
【００７０】
上述したように、幾つかの実施形態において、ＰＲＮＧ３０６は一連の数字を生成する擬似乱数ジェネレータであり、その一連の数字の性質は一連の乱数の性質に近い。幾つかの例において、ＰＲＮＧ３０６は暗号により安全な擬似乱数ジェネレータ（a  cryptographically  secure  pseudorandom  number  generator：CSPRNG）であり、暗号擬似乱数ジェネレータ（a  cryptographic  pseudorandom  number  generator：CPRNG）とも言及される。幾つかの実施形態において、ＰＲＮＧ３０６は、上記の仮定の下でロッキング・スクリプトにエンコードされ得る任意の擬似乱数ジェネレータであるとすることが可能であり、Ｙａｒｒｏｗ、Ｆｏｒｔｕｎａ、及びａｒｃ４ｒａｎｄｏｍアルゴリズムを含むがこれらに限定されない。
【００７１】
幾つかの実施形態において、ロッキング・スクリプト３１０は、トランザクションに関連する少なくとも一部のディジタル資産のコントロールを移転するために充足されることを要する条件（即ち、「アンロックされる」条件）を指定することによりブロックチェーンを制限するスクリプトである。より詳細には、ブロックチェーン・システムの検証ノードによる実行の結果として、ロッキング・スクリプト３１０を実行することは、アンロッキング・スクリプト３１２等の実行されたアンロッキング・スクリプトからのデータを受け入れ、データに基づいて所定のオペレーションを実行し、アンロッキング・スクリプトの実行がロッキング・スクリプト３１０を成功裏に「アンロックした」（即ち、一群の条件セットを充足した）か否かを示す結果を返すように構成される。幾つかの実施形態において、ロッキング・スクリプト３１０は、トランザクションの検証を成功させるために（例えば、アンロッキング・スクリプトにより提供されるデータにより）充足されなければならない１つ以上のデータ制約を規定する。例えば、ロッキング・スクリプト３１０は、第１トランザクション３０２に関連付けられるディジタル資産をアンロックするために、所定のデータがアンロッキング・スクリプト３１２で提供されることを要求することができる。
【００７２】
幾つかの実施形態において、シード３０８はＰＮＮＧ３０６等の擬似乱数ジェネレータを初期化するために使用される数字又はベクトルである。しかしながら、シード３０８は図３から分かるようにＰＲＮＧ３０６により生成される擬似乱数を決定するので、シード３０８をＰＲＮＧ３０６に供給するエンティティ３１４は、ＰＲＮＧ３０６の出力を操作することができる。しかしながら、本開示は、シード操作に対する防衛策として２つのソリューションを提案する。第１ソリューションはコミットメント・ソリューションであり、これによりシードは２つ以上のパズルのソリューションの組み合わせとなり、各パズル・ソリューションは別々の者に知られる。しかしながら、ＰＲＮＧトランザクションが作成される前に、各々の関係者は、パズル・トランザクションに対して所定量のディジタル資産をコミットし、それはパズルに対するソリューションをソリューション・トランザクションで明らかにすることによって取り戻すことが可能である。コミットメント・ソリューションの幾つかの実施形態において、パズル・ソリューションを明示することに失敗すると、不履行者によりコミットされたディジタル資産は、彼らのパズル・ソリューションを明示する者又は者達へ没収されてしまうことを生じさせるであろう。これらのうちの幾つかの実施形態において、各々のパズル・ソリューションは所定の期間内に明らかにされる必要があり、そうでなければ、その約束についての違反とみなされる。この方法で各々の関係者はＰＲＮＧのシードに貢献する理由を有し得る。コミットメント・ソリューションに関し、パズル・トランザクションを生成する各々の関係者は、事前にパズルに対する対応するソリューションを知ることを許可されている。パズル解明技術では、シードはパズル・トランザクションに対するソリューションである。ソリューションは、パズルの作成時点では未知であるが、パズルを解く者は、パズル・トランザクションに関連するディジタル資産の配当を集めることができる。
【００７３】
幾つかの例において、「パズル」は、スクリプト言語における１つ以上のオペレーション・コードを使用する一群の論理表現であって、特定の数値「ソリューション」（又は解）を入力として提示されると、実行結果としてＴＲＵＥとして評価するものを指す。パズルは、パズルを解くために必要な時間に影響し得る様々なレベルの難しさを有することが可能である。パズルはまた、ソリューションへ到達すること（即ち、パズルを解くこと）は、ソリューションが正しいことを確認するよりも計算が困難であるという特徴を有する。パズルの具体例は暗号ハッシュ・パズルであり、ここで、パズルは、特定の数と組み合わせられて所与の暗号ハッシュ・アルゴリズム（例えば、ＳＨＡ２５６、ＭＤ５、ＢＬＡＫＥ、ＢＬＡＫＥ２等）で処理された場合に、特定の数字（例えば、５つのゼロが先行するもの、「１２３４」等）を含む値をもたらす数を発見することである。幾つかの例において、暗号ハッシュ・パズルは、例えば少なくとも１つの暗号ハッシュ・アルゴリズム及び一群の状態を含む関数により規定される問題等の暗号ハッシュ・アルゴリズムを利用して作られる又は解かれる問題であり、パズルに対するソリューションは、一群の状態を満足する出力をもたらす関数への一群の入力である。
【００７４】
実施形態において、ハッシュは暗号ハッシュ関数又は一方向関数ｈ（ｘ）＝ｙにより生成され、ここでｙは所与のｘに対して容易く計算されるが、ｘを所与のｙに対して計算することは計算に手間取ることに留意を要する。場合によっては、ソリューションは、関係者のディジタル署名その他のデータであってもよく、そのデータは、パズルを保持するロッキング・スクリプトに対するアンロッキング・スクリプトの入力として提供されると、アンロッキング・スクリプト及びロッキング・スクリプトの実行結果として、ロッキング・スクリプトがＴＲＵＥに評価することを引き起こすものである。
【００７５】
幾つかの例において、計算が困難であることは、計算の複雑さの理論の分野による複雑さのクラスを指す。例えば、マークル・シグネチャ・スキームを利用してメッセージをディジタル署名することは、正しいソリューションを生成することの一部として、２ｒ回の暗号ハッシュ演算を実行することを含み、ここでｒは生成されるマークル・ツリーの深度である。逆に、ディジタル署名を生成するために使用された署名キーが、マークル・ツリーのリーフ・ノードであることを検証することは、（署名キーに対応する）リーフ・ノードからルート・ノードへの認証を検証するためにｒ回の暗号ハッシュ計算を実行することを含む。理解され得るように、２ｒ回の暗号ハッシュ計算を実行することは、ｒ回の暗号ハッシュ計算を実行することよりも多く計算に手間取るであろう（例えば、より多くの中央処理ユニット・サイクルを延長する、より多くのメモリ／ストレージ空間を利用する等）。第２の例として、システムは２つの素数を生成し、素数の積をパズルとして提供し、そのソリューションは提供された積を因子分解するものである。
【００７６】
「一方向関数」という言い回しは、厳密に数学的な意味では必ずしも一方向  ではないが、本開示の様々な技術が適用される状況で有用な関数となる性質（例えば、衝突耐性、原像攻撃耐性、第２原像攻撃耐性）を示す関数を含むことに留意すべきである。このように、関数の出力を有するが対応する入力に対するアクセスを有しないエンティティは、例えば暗号攻撃（例えば、力ずくの攻撃）に必要な異常に高くつく経費なしに、入力を決定することはできない。一方向関数（「実効一方向関数」とも言及される）は、メッセージ認証コード等の暗号ハッシュ関数（例えば、ハッシュ・ベースのメッセージ認証コード（hash-based  message  authentication  code：HMAC））、ＰＢＫＤＦ２及びｂｃｒｙｐｔ（平文及び暗号鍵に少なくとも部分的に基づくパスワードを伴う）等の鍵導出関数、レンジ（可能な出力）より大きなドメイン（可能な入力のセット）を必ずしも有する必要はない他のセキュア・ランダム関数を含むがこれらに限定されない。値は一方向関数を利用して暗号学的に導出されることが可能である。暗号関数は、暗号関数に入力として使用される情報（例えば、暗号鍵及び／又はソルト（ａ  ｓａｌｔ））を欠いたエンティティの観点からは一方向関数（又はそのうちのコンポーネント）となり得る。幾つかの例において、「暗号学的に導出される」とは、値である入力又は値から導出される（おそらくは、値から暗号学的に導出される）入力を利用して、少なくとも１回一方向関数を利用することを指す。例えば、暗号計算は、解読鍵を有しないエンティティにとって「一方向」である。
【００７７】
図４は本開示の例示的な実施形態４００を示す。具体的には、図４はシード生成のコミットメント・ソリューションにおける第１ステージを示す。例示の実施形態４００に示されるコミットメント・ソリューションは、ＰＲＮＧのシードを導出するために結合されることが可能なソリューション４０８Ａ−０８Ｂに寄与する少なくとも２人の関係者４０６Ａ−０６Ｂを含む。コミットメント・ソリューションにより提供される利点は、ソリューション４０８Ａ−０８Ｂは結合されるので、シードを操作するには全ての関係者から合意をとることとなり；即ち、ある関係者が他者に事前には知られていないソリューションを提供する限り、結果のシードは生成されるまで未知であろうということである。
【００７８】
コミットメント・ソリューションにおいて、関係者４０６Ａ−０６Ｂ（ｐ∈｛０，１，...，ｎ｝）それぞれは、トランザクションの各自のロッキング・スクリプトに制約として含まれるパズル４１０Ａ−１０Ｂを有する個々のコミットメント・トランザクション４０２Ａ−０２Ｂを作成する。幾つかの実施形態において、各々のコミットメント・トランザクションは、（σｐ←Verify(puzzlep，πｐ）のような）制約を含むロッキング・スクリプトにより制限される幾らかの量のディジタル資産（例えば、ｘｐ）に関連付けられ、πｐはパリティｐのパズルに対して提案されるソリューションである。幾つかの実施形態において、制約はまた時間制限であり、それは、関係者は特定の期間内にソリューションを明示しなければならないこと、あるいはコミットしたディジタル資産の没収を覚悟しなければならないことを意味する。幾つかの実施形態において、ディジタル資産は関係者自身の備え（the  party’s  own  reserves）からコミットされる。他の実施形態では、ディジタル資産は、関係者４０６Ａ−０６Ｂにより決定されるシードから乱数を生成することを求める者のような第三者による潜在的な配当として提供される。幾つかの実施形態において、関係者４０６Ａ−０６Ｂは、図６のＰＲＮＧトランザクション６１０等のＰＲＮＧトランザクションの作成者からの、又は擬似乱数生成のためのシードを作成することに関心を有する何らかの他のエンティティからの、分配の約束によりシードの生成に参加する根拠を提供される。
【００７９】
コミットメント・トランザクション４０２Ａ−０２Ｂがブロックチェーンにマイニングされた後に、関係者４０６Ａ−０６Ｂの各々（ｐ）は、対応するコミットメント・トランザクションのロッキング・スクリプトをアンロックするアンロッキング・スクリプトを有するソリューション・トランザクションの作成により、コミットメント・トランザクション・パズルに対するソリューション（πｐ←puzzle  solutionp）を明示することで、彼ら各自のコミットメント・トランザクションのＵＴＸＯをアンロックすることができる。例示の実施形態４００に見受けられるように、ソリューション・トランザクション４０４Ａ−０４Ｂは、それらの対応するパズル４１０Ａ−１０Ｂに対するソリューション４０８Ａ−０８Ｂを含む。ソリューション・トランザクション４０４Ａ−０４Ｂの検証は、従って、各自のコミットメント・トランザクション４０２Ａ−０２ＢのＵＴＸＯを関係者４０６Ａ−０６Ｂが取り出すことを許容する。
【００８０】
幾つかの実施形態において、コミットメント・トランザクション４０２Ａ−０２Ｂは、個々の関係者４０６Ａ−０６Ｂによりコミットされるディジタル資産を有する図３の第１トランザクション３０２に類似するブロックチェーン・トランザクションである。幾つかの実施形態において、ソリューション・トランザクション４０４Ａ−０４Ｂは、コミットされたディジタル資産を取り返すために個々のコミットメント・トランザクションのＵＴＸＯを「アンロック」するために関係者４０６Ａ−０６Ｂにより作成された、図３の第２トランザクション３０４に類似するブロックチェーン・トランザクションである。
【００８１】
幾つかの実施形態において、関係者４０６Ａ−０６Ｂは、図６の時間制限の制約６１０におけるＰＲＮＧ等のＰＲＮＧに対するシード生成に使用されるパズル４１０Ａ−１０Ｂ及びソリューション４０８Ａ−０８Ｂを提供することに合意したエンティティである。パズル４１０Ａ−１０Ｂは複雑であることを要しない。例えば、関係者４０６は文字「Ａ」の暗号ハッシュの結果を知ることができ、入力を暗号ハッシュし、暗号ハッシュされた入力を、文字「Ａ」の既知の暗号ハッシュと比較するパズル４１０Ａを作成することができる。ハッシュ入力が既知のハッシュ結果に合致する場合、入力はパズル４１０Ａに対する正しいソリューションである。このケースでは、ソリューションは文字「Ａ」であり、第１関係者４０６Ａは気付いており、ソリューション・トランザクション４０４Ａのアンロッキング・スクリプトに第１ソリューション４０８Ａとして入力することができる。しかしながら、ロッキング・スクリプトで暗号ハッシュを検査する他の関係者は、ソリューションが文字「Ａ」であることを直接的には認識しにくい。僅か２人の関係者のみが具体例４００に示されているが、少なくとも２人の関係者が存在する限り、任意数の関係者がパズル及びソリューションを提供することに参加できることが想定されている。
【００８２】
幾つかの実施形態において、（図６のソリューション６０８に類似する）ソリューション４０８Ａ−０８Ｂは、時間制限の制約６１０におけるＰＲＮＧ等のＰＲＮＧにシードを提供するために結合され得る複数の値である。個別的に、ソリューション４０８Ａ−０８Ｂの各々はある値であって、パズル４１０Ａ−１０Ｂを含むコミットメント・トランザクション４０２Ａ−０２Ｂのロッキング・スクリプトに対してソリューション・トランザクション４０４Ａ−０４Ｂのアンロッキング・スクリプトにより入力として提供される場合に、個々のアンロッキング及びアンロッキング・スクリプトの実行がＴＲＵＥに評価することを生じさせる値である。ＰＲＮＧにシードを提供することは、ＰＲＮＧの実行が乱数を生成することを生じさせ、その乱数はスマート・コントラクトで様々な方法で使用されることが可能であり、そのうちの幾つかの例が以下の表２及び３に示される。幾つかの実施形態において、少なくとも１人の関係者４０６Ａ−０６Ｂは、関連するコミットメント・トランザクションが作成された時点で各自のパズルに対するソリューションを知っている又はアクセスできる。他の実施形態では、全ての関係者４０７Ａ−０６Ｂは、各自の関連するコミットメント・トランザクション４０２Ａ−０２Ｂが作成された時点で各自のパズル４１０Ａ−１０Ｂに対するソリューションを知っている又はアクセスできる。
【００８３】
関係者４０６Ａ−０６Ｂは、コミットメント値（例えば、ｘｐ）とＰＲＮＧトランザクション値（例えば、図６及び７におけるｙ）との間の相違により各自のパズルのソリューション４０８Ａ−０８Ｂを明らかにするように促されてもよい。例えば、ｘｐ＞＞ｙである場合、関係者４０６Ａ−０６Ｂ各自のソリューション４０８Ａ−０８Ｂを明らかにする強い根拠を有し、なぜなら図７のリファンド・トランザクション７０４等のリファンド・トランザクションを強制することにより生じる潜在的な利益よりも非常に大きな失うリスクがあるからである。
【００８４】
幾つかの実施形態において、パズル４１０Ａ−１０Ｂは、１つ以上の入力で実行されるスクリプト言語の一連のオペレーション・コード等の一連のオペレーションを含み、ＴＲＵＥ又はＦＡＬＳＥの指示を返すアルゴリズムである。例えば、ソリューション４０４Ａがパズル４１０Ａに対する有効なソリューションである場合、コミットメント・トランザクション４０２Ａのロッキング・スクリプトにおけるパズル４１０の実行は、ＴＲＵＥに評価することが可能である（ただし、コミットメント・トランザクション４０２Ａに存在する他の如何なる制約も充足されているものと仮定する）。しかしながら、パズル４１０Ａに対して提案されるソリューションが有効でないソリューションである場合、コミットメント・トランザクション４０２Ａのロッキング・スクリプトにおけるパズル４１０Ａの実行は、ＦＡＬＳＥに評価することになる。
【００８５】
図５は特定の時間フレームの中でコミットメント・トランザクションに有効なソリューションを提供することに失敗した結果の具体例５００を示す。具体的に、図５は、第１関係者５０６Ａが時間制限５１６（ｔｃ）の経過前にパズル５１０Ａ（σａ）に対するソリューションを提供することに失敗した状況を示す。一方、第２関係者５０６Ｂは時間制限５１６内に第２関係者５０６Ｂが作成したコミットメント・トランザクション５０２Ｂの対応するパズル５１０Ｂ（σｂ）に対するソリューション５０８（πｂ）を提供している。その結果、第２関係者５０６Ｂは、ペナルティ・トランザクション５１４の検証結果として、第１関係者がコミットしたディジタル資産（ｘａ）のオーナーシップを請求することができる。
【００８６】
幾つかの実施形態において、コミットメント・トランザクション５０２Ａ−０２Ｂは図４のコミットメント・トランザクション４０２Ａ−０２Ｂに類似している。同様に、幾つかの実施形態において、パズル５１０Ａ−１０Ｂはパズル４１０Ａ−１０Ｂに類似している。幾つかの実施形態において、ソリューション・トランザクション５０４は、図４のソリューション・トランザクション４０４Ｂに類似している。同様に、幾つかの実施形態において、ソリューション５０８は図４のソリューション４０８Ｂに類似している。幾つかの実施形態において、関係者５０６Ａ−０６Ｂは図４の関係者４０６Ａ−０６Ｂに類似するエンティティである。
【００８７】
幾つかの実施形態において、ペナルティ・トランザクション５１４は、時間制限５１６の後に、コミットメント・トランザクション５０２ＡのＵＴＸＯが移転されずに残っていることを条件に、コミットメント・トランザクション５０２ＡのＵＴＸＯをアンロックするために検証されることが可能なブロックチェーン・トランザクションである。第１関係者５０６Ａはディジタル資産のうちの幾らかの部分をコミットメント・トランザクション５０６Ａに対してコミットしているので、ペナルティ・トランザクション５１４は、第１関係者５０６Ａがパズル５１４Ａにソリューションを明らかにし損なうことを思いとどまらせるために存在し、なぜなら、第１関係者５０６Ａが自身のソリューションを明らかにすることに失敗すると、第２関係者５０６Ｂ等のコミットメント・トランザクションを作成した１人以上の関係者は、第１関係者５０６Ａが第１コミットメント・トランザクション５０２Ａに対してコミットしたディジタル資産が何であればそれを請求できるからである。こうして、関係者５０６Ａ−０６Ｂは何れも各自のパズル５１０Ａ−１０Ｂにソリューションを明らかにするか、そうでなければ関係者５０６Ａ−０６Ｂは彼らがコミットしたディジタル資産を失うリスクを負う可能性がある。更に、関係者５０６Ａ−０６Ｂは、他の関係者が自身のソリューションを明らかにすることに失敗してしまう機会に起因して、彼ら各自のパズル５１０Ａ−１０Ｂに対するソリューションを明らかにする更なる根拠を与えられ、それにより無違反の関係者は、彼ら自身がコミットしたディジタル資産を取り戻すだけでなく、違反した関係者がコミットしたディジタル資産の少なくとも一部分を受賞することも許容される。これは具体例５００に示されるケースであり、第２関係者５０６Ｂは、ソリューション５０８を明らかにすることから利益を得て、ペナルティ・トランザクション５１４から配当を受けている。
【００８８】
幾つかの実施形態において、時間制限５１６はコミットメント・トランザクション５０２Ａのロッキング・スクリプトで執行されるデッドラインである。即ち、幾つかの実施形態において、コミットメント・トランザクション５０２Ａ−０２Ｂのロッキング・スクリプトは、ロッキング・スクリプト内にコード化された時間制限５１６の満了まで、コミットメント・トランザクション５０２Ａ−０２ＢのＵＴＸＯをアンロックすることを許可されるエンティティを、各自のコミットメント・トランザクションの作者のみに制限するように構成される。しかしながら、幾つかの実施形態では、ロッキング・スクリプトは、時間制限５１６の満了の後に、第２関係者５０６Ｂ等の１人以上の他の関係者が、コミットメント・トランザクションのＵＴＸＯを請求することを許容し、コミットメント・トランザクション５０２Ａの作者がコミットメント・トランザクション５０２ＡのＵＴＸＯを請求することを許可しないように構成されることが可能である。幾つかの実施形態において、コミットメント・トランザクション５０２Ａ−０２Ｂは、検証されるために彼らのロッキング・スクリプトに時間制限５１６を含めなければならない。このようにして、ペナルティ・トランザクション５１４は、関係者５０６Ａ−０６Ｂに、彼らのパズル５１０Ａ−１０Ｂに対する時宜を得たソリューションを与える根拠を提供するためのペナルティとして作用し得る。
【００８９】
図６は本開示の他の例示的な実施形態６００を示す。具体的には、図６は、図４の例示的な実施形態３００で平行して起こり得るシード生成のためのコミットメント・ソリューションにおける第２ステージを示す。即ち、コミットメント・トランザクション４０２Ａ−０２Ｂがブロックチェーンにマイニングされた後に、ディジタル資産ｙのコントロールの移転にランダム制約を課すことを求めるエンティティにより、ＰＲＮＧトランザクション６０２が作成される。そして、ＰＲＮＧトランザクション６０２のロッキング・スクリプトは、ＰＲＮＧと時間制限の制約６１０とを含むロッキング・スクリプトにより制限され（σＡｌｌ←∧σｐ）、シード・トランザクション６０４のアンロッキング・スクリプトにおけるパズル・ソリューション｛πａ，...，πｎ｝をソリューションπに結合するようにコード化し（例えば、π←Ｃｏｍｂｉｎｅ（｛πａ，...，πｎ｝））、そのソリューションπから、ロッキング・スクリプトにおけるＰＲＮＧのシードが導出され得る。即ち、あるケースではソリューションπ自体がシードとして使用されることが可能であり、別のケースではソリューションπがハッシュされ、あるいはシードとしてＰＲＮＧにより使用可能な値に操作され得る。時間制限の制約６１０は様々な方法で制約されることが可能である。例えば、ＰＲＮＧトランザクション６０２のロッキング・スクリプトに１つ以上のオペレーション・コードが存在し、実行時に、指定された満了時間に対する現在時間を確認することが可能である。
【００９０】
例示的な実施形態６００において、シード・トランザクション６０４は、ＰＲＮＧトランザクション６０２のＵＴＸＯをアンロックするために作成されたブロックチェーン・トランザクションである。幾つかの実施形態において、ＰＲＮＧの操作を思いとどまらせるために、コミットメント・トランザクション（例えば、図４のコミットメント・トランザクション４０２Ａ−０２Ｂ）がブロックチェーンに対してコミットされた後であるがソリューション・トランザクション（例えば、ソリューション・トランザクション４０４Ａ−０４Ｂ）の作成前に、ＰＲＮＧトランザクション６０２が作成される。幾つかの実施形態において、ソリューション４０８Ａ−０８Ｂ等の全てのパズルに対するソリューションがブロックチェーンに対してコミットされた後、あるいはシード・トランザクション６０４の作者に対して利用可能にされた後に、シード・トランザクション６０４が作成される。幾つかの実施形態において、シード・トランザクション６０４は、図４のパズル４１０Ａ−１０Ｂに対するソリューション４０８Ａ−０８Ｂ等の様々なパズルに対するソリューション６０８（π）をアンロッキング・スクリプトの中に含む。
【００９１】
幾つかの実施形態において、ソリューション６０８の各ソリューションは、別々にリスト化され、ＰＲＮＧトランザクション６０２のロッキング・スクリプトの実行によって結合される。別の実施形態において、各々ソリューションは、ＰＲＮＧトランザクション６０２のロッキング・スクリプトによってサポートされる方法でシード・トランザクション６０４のアンロッキング・スクリプトで一緒に結合される。全てのソリューション４０８Ａ−０８Ｂがシード・トランザクション６０４のアンロッキング・スクリプトで提供される場合に、ＰＲＮＧトランザクション６０２のロッキング・スクリプトはＴＲＵＥに評価することが可能である。代替的に、幾つかの実施形態において、時間制限の満了前にソリューション４０８Ａ−０８Ｂが提供されない場合、図７に示されるようにディジタル資産ｙが戻される。
【００９２】
一例において、エンティティは、図４のコミットメント・トランザクション４０２Ａ−０２Ｂに類似するコミットメント・トランザクションを作成する関係者のグループに従事している。そして、エンティティは、時間制限の制約６１０に結び付けられたパズル４１０Ａ−１０Ｂを利用してＰＲＮＧトランザクション６０２を作成する。即ち、図４の例示の実施形態４００に対する簡略化された２者の例において、第１関係者４０６Ａが、ＰＲＮＧトランザクション６０２の作成前に第１ソリューション６０８Ａを明らかにした場合、第２関係者４０８Ｂは第２ソリューション４０８Ｂの情報を既に有しており、今や第１ソリューション４０８Ｂの情報を有し、その第２関係者４０８ＢはＰＲＮＧトランザクション６０２のロッキング・スクリプトＰＲＮＧの成果を潜在的に決定することができるであろう。従って、ＰＲＮＧ結果の予測不可能性を守るために、ソリューション４０８Ａ−０８ＢはＰＲＮＧトランザクション６０２の作成前に明らかにされるべきではない。
【００９３】
幾つかの実施形態において、エンティティは、図５のペナルティ・トランザクション５１４に類似する、コミットメント・トランザクション４０１Ａ−０２Ｂの各々に対するペナルティ・トランザクションを更に作成することが可能である。更に、幾つかの実施形態において、エンティティは、図７のリファンド・トランザクション７０４に類似するリファンド・トランザクションを追加的又は代替的に作成し、１つ以上のソリューション４０８Ａ−０８Ｂが提供されない場合にエンティティがディジタル資産ｙを没収されないことを保証することが可能である。
【００９４】
図７は特定の時間フレームの中でコミットメント・トランザクションに有効なソリューションを提供することに失敗した関係者の別の結末の例７００を示す。具体的に、図７は関係者が図５に示される状況等においてパズルσＡｌｌの１つに対するソリューションを提供することに失敗した状況を示す。その結果、時間７１６ｔｃ＋Δｔの後に、ＰＲＮＧトランザクションに関連するディジタル資産ｙは、リファンド・トランザクション７０４により取り返すことが可能である。
【００９５】
幾つかの実施形態において、ＰＲＮＧトランザクション７０２は図６のＰＲＮＧトランザクション６０２に類似している。具体例７００に示されるように、幾つかの実施形態において、ＰＲＮＧトランザクション７０２は、コミットメント・トランザクションの期限（ｔｃ）の後の何らかの時間（Δｔ）に満了するようにコード化され、ＰＲＮＧトランザクション７０２が満了しそうになるまで関係者が自身のソリューションを明らかにすることを待機するのを思いとどまらせ、なぜなら、そのようにすることはＰＲＮＧトランザクション７０２のＵＴＸＯをアンロックするために時間内にシード・トランザクション６０４等のシード・トランザクションを作成する能力を損ない得るからである。
【００９６】
幾つかの実施形態において、リファンド・トランザクション７０４は、時間７１６ｔ＋Δｔの後に、パズル７１０に対するソリューションを含むシード・トランザクションの検証等により、ディジタル資産ｙが請求されないまま残っている場合に、ＰＲＮＧトランザクション７０２に関連するディジタル資産ｙを払い戻す／返還するために作成されるブロックチェーン・トランザクションである。具体例において、リファンド・トランザクション７０４は、パズル７１０に対するソリューションが発見されない場合に、作者がディジタル資産ｙを取り返せることを保証するために、ＰＲＮＧトランザクション７０２の作者によって作成される。しかしながら、幾つかの例において、ＰＲＮＧトランザクション７０２の作者とリファンド・トランザクション７０４の作者とは同じ者であることを要しない。幾つかの実施形態において、時間７１６は、ＰＲＮＧトランザクション７０２のシードに対するソリューションを提供するために供される期間に関して設定される時間制限である。
【００９７】
図８は本開示のコミットメント・ソリューションの様々な実施形態による乱数を生成するプロセス８００の例を示すフローチャートである。プロセス８００のうちの全部又は一部（あるいは、説明される何らかの他のプロセス、あるいはこれらのプロセスの変形及び／又は組み合わせ）は、実行可能な命令及び／又はその他のデータにより構成される１つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、また１つ以上のプロセッサ上で集まって動作する実行可能命令として実装されることが可能である。実行可能命令及び／又はその他のデータは非一時的なコンピュータ読み取り可能な記憶媒体（例えば、磁気、光学、又はフラッシュ媒体に永続的に格納されるコンピュータ・プログラム）に保存されることが可能である。
【００９８】
例えば、プロセス８００のうちの全部又は一部は１つ以上のコンピューティング・デバイスにより（例えば、データ・センターにおけるサーバーにより、クライアント・コンピューティング・デバイスにより、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、あるいは図１２のコンピューティング・デバイス１２００等の適切な任意の電子クライアント・デバイスにより）実行されることが可能である。プロセス８００は一連のオペレーションを含み、２つのパズルがＰＲＮＧトランザクションのロッキング・スクリプトに統合され、パズルに対するソリューションは、ＰＲＮＧトランザクションがブロックチェーンにコミットされた後に、シード・トランザクションのアンロッキング・スクリプトに統合され、ＰＲＮＧトランザクションのロッキング・スクリプトにおけるＰＲＮＧは、ソリューションから導出されるシードを利用することに基づいて実行され、それにより擬似乱数を生成し、生成された擬似乱数に基づいて制約が課される。
【００９９】
８０２において、図４のパズル４１０Ａ−１０Ｂ等の１つ以上のパズルが取得される。実施形態において、パズルはコミットメント・トランザクション４０２Ａ−０２Ｂ等のコミットメント・トランザクションのスクリプトから取得されることが可能である。上述したように、パズルは、スクリプト言語における１つ以上のオペレーション・コードを利用する論理表現のセットであるとすることが可能である。パズルは、パズルに対するソリューションが入力として受け取られた場合に、パズル・アルゴリズム／論理表現は実行結果としてＴＲＵＥに評価することになる。パズルは、暗号ハッシュ・パズル、プルーフ・オブ・ワーク・パズル、又は数値的な解を有する他の何らかのパズルであるとすることが可能である。
【０１００】
８０４において、コミットメント・トランザクションがブロックチェーンにコミットされた後に、８０２で取得されたパズルは、ある方法で図６のＰＲＮＧトランザクション６０２等のＰＲＮＧトランザクションのロッキング・スクリプトに結び付けられ、その方法によりソリューション４０８Ａ−０８Ｂ等のパズルに対するソリューションは入力として受信され、擬似乱数を生成するためにＰＲＮＧに対するシードとして使用されることが可能な値を導出することに結び付けられることが可能になる。
【０１０１】
８０６において、ＰＲＮＧトランザクションがブロックチェーンにコミットされていると判断した後に、プロセス８００の実行は８０８に進む。８０８において、いったんＰＲＮＧトランザクションがブロックチェーンにコミットされると、ＰＲＮＧトランザクションに組み込まれるパズルに対するソリューションは、例えば図４のソリューション４０８Ａ−０８Ｂ等から取得される。幾つかの実施形態において、関係者が各自のソリューションを与えるために十分な時間を許容するために、時間ｔｃ（例えば、図７に示されるようなもの）の後にソリューションの取得が実行される。
【０１０２】
８１０において、ＰＲＮＧトランザクションのロッキング・スクリプトに組み込まれている全てのパズルに対するソリューションが時間制限（例えば、図７におけるｔ＋Δｔ）の中で取得されているか否かの判断が行われる。ソリューションの全てが取得できたわけではない場合、プロセス８００の実行は８１２に進み、図７の状況で説明されたように、ＰＲＮＧトランザクションに関連するディジタル資産を取り戻すために、ペナルティ・トランザクション検証されることが可能である。あるいは、全てのソリューションが時間制限内に得られている場合、プロセス８００の実行は８１４に進む。
【０１０３】
８１４において、ソリューションはシード・トランザクションのアンロッキング・スクリプトに組み込まれ、その結果、８１６において、ロッキング・スクリプトとの組み合わせでアンロッキング・スクリプトを実行することは、ソリューションがシード値に変換されることを引き起こし（例えば、ソリューション値を結合し、結合されたソリューション値に関してＳＨＡ２５６ハッシュ演算を実行する）、これは、ロッキング・スクリプトのＰＲＮＧに対する入力として、ＰＲＮＧに擬似乱数を生成させる。８１８において、擬似乱数はＰＲＮＧトランザクションのロッキング・スクリプトの制約に影響を及ぼすために使用されることが可能である。即ち、ＰＲＮＧトランザクションに関連するディジタル資産のコントロールの移転は、図１１に関連して説明される方法等の、ＰＲＮＧロッキング・スクリプトのＰＲＮＧにより生成される擬似乱数に基づく何らかの方法で制約される（例えば、擬似乱数が所定の値の範囲内にあるか否か、ディジタル資産の擬似ランダム量が移転されるか否か等に部分的に基づいて有効として、シグネチャの擬似乱数が受け入れられる、シグネチャが受け入れられる）。８０２−１８で実行されるオペレーションのうちの１つ以上が、平行する場合を含む様々な順序及び組み合わせで実行され得ることに留意を要する。
【０１０４】
図９は本開示の例示的な実施形態９００を示す。具体的に、図９はシード生成のためのパズル解明技術の具体例を示す。図４０８に関連して説明されたコミットメント・ソリューションは２人以上のコミットメント関係者を包含していたが、例示の実施形態９００で説明されるパズル解明技術は、ＰＲＮＧトランザクション９０２に対するシードを導出するために使用され得る１つのパズル・ソリューション９０８を有することのみを要する。
【０１０５】
幾つかの実施形態において、ＰＲＮＧトランザクション９０２は、パズル９１０に対して有効なソリューション（σ←Verify(puzzle,π)）がシード・トランザクション９０４のアンロッキング・スクリプトに提供される場合にアンロックされる（例えば、ＴＲＵＥに評価する）ことが可能な制約によりロッキング・スクリプトで制限されるディジタル資産ｙに関連付けられる。幾つかの実施形態において、ＰＲＮＧトランザクション９０２のロッキング・スクリプトは時間制限を更に含みその時間制限の下でＰＲＮＧトランザクション９０２は移転されることが可能である。即ち、この実施形態では、有効なシード・トランザクション９０４が特定の時間フレームの中で（例えば、時間制限が満了する前に）検証されなかった場合、ディジタル資産ｙは、ＰＲＮＧトランザクション９０２の作者により、あるいは幾つかの実施形態では図７で説明されるリファンド・トランザクション７０４に類似するリファンド・トランザクションにより他者により、回収されることが可能である。
【０１０６】
例示の実施形態９００のパズル解明技術では、パズル９１０に対するパズル・ソリューション９０８は、ＰＲＮＧトランザクション９０２が作成された時点でトランザクションに対する関係者によって知られていない。幾つかの実施形態において、ＰＲＮＧトランザクション９０２は、  パズル・ソリューション９０８を提供する第１関係者に移転される配当（例えば、ディジタル資産の一部）に関連付けられ、パズル９１０に対するパズル・ソリューション９０８を発見しようとする理由を関係者に提供する。あるケースでは、配当はブロックチェーンに対して外部の配当（例えば、実際の通貨）である。他のケースでは、配当はディジタル資産ｙの一部分である。更に他のケースでは、配当は更に別のトランザクションのディジタル資産の一部分である。幾つかの実施形態において、パズル・ソリューション９０８を明らかにする理由を与えるために、配当はディジタル資産ｙよりも大きい。
【０１０７】
幾つかの実施形態において、パズル９１０は、スクリプト言語の一連のオペレーション・コード等の一連のオペレーションを有するアルゴリズムであり、１つ以上の入力で実行されると、ＴＲＵＥ又はＦＡＬＳＥの指標を返す。例えば、実施形態において、パズル・ソリューション９０８がパズル９１０に対する有効なソリューションである場合、パズル９１０を含むＰＲＮＧトランザクション９０２のロッキング・スクリプトの実行はＴＲＵＥに評価することになるであろう。しかしながら、幾つかの実施形態において、パズル・ソリューション９０８が有効でない場合、ロッキング・スクリプトの実行はＦＡＬＳＥに評価することになるであろう。パズル解明技術の制約は、パズル９１０が作成された時点で、この実施形態におけるパズル９１０に対するパズル・ソリューション９０８は未知である又は決定可能でないことである。幾つかの例において、パズル９１０は演算上複雑であり（例えば、かなりの時間及び／又は閾値を超える処理能力を含み）、その結果、パズルのソリューションがＰＲＮＧトランザクション９０２の作成後の所定時間前に決定可能であることは起こりそうにない。
【０１０８】
パズル９１０の具体例は、特定の時間におけるブロックチェーンの将来的なブロック・ヘッダの暗号ハッシュ等のプルーフ・オブ・ワーク関数である。特定の時間が将来になればなるほど、ブロックチェーンの将来のブロック・ヘッダを予測することは益々困難になるので、パズル９１０に対するパズル・ソリューション９０８は、ＰＲＮＧトランザクション９０２が作成された時点で、トランザクションに対する関係者によって知られることは非常に起こりそうになく、配当はプルーフ・オブ・ワークを提供することに関連する。将来のブロック・ヘッダは様々な方法で指定されることが可能であることに留意を要する。例えば、ソリューションは、将来的な指定された日／時間の後に作成された第１ブロック・ヘッダのハッシュであるとすることが可能である。別の例として、将来的なブロック・ヘッダは、ブロック内に所定数のトランザクションを含む最初の将来的なブロック・ヘッダとして指定されることが可能である。従って、将来的なブロック・ヘッダのプルーフ・オブ・ワーク・パズルは、パズル解明技術の制約を充足する一例である。
【０１０９】
アンロッキング・スクリプトがブロック・ヘッダ、ブロックチェーン、又はブロック・ヘッダのチェーンを含むことを要求するように、アンロッキング・スクリプトのデータに関して制約を実装することによって、将来的なブロック・ヘッダへのアクセスは実行されることが可能である。アンロッキング・スクリプトのデータにこのような制約を実装することにより、及びそのようなデータをランタイムにアンロッキング・スクリプトに注入することにより、トランザクションはブロックチェーンの態様に基づくことが可能である。例えば、ブロック・ヘッダは、ポテンシャル・シード・トランザクションのアンロッキング・スクリプトのデータとして含まれることが可能であり、オペレーション・コードのシーケンスは、データが有効なブロック・ヘッダであることを検証するようにロッキング・スクリプトで実行されることが可能であり（例えば、スクリプトのサイズは９０バイトであり、データのｎビット・フィールドはブロックチェーンの困難性に等しい又はそれより大きく、ＳＨＡ２５６がターゲット値未満又はそれに等しい）、そのようなスクリプトは以下の表１に示されている。
【０１１０】
表１：
【表１】
2020532170.tif 000003
【０１１１】
幾つかの実施形態において、シード・トランザクション９０４は、シードを導出するのに使用可能な値を、パズル・ソリューション９０８の形式で、ＰＲＮＧトランザクション９０２ロッキング・スクリプトのＰＲＮＧに提供するように作成されるトランザクションである。幾つかの実施形態において、パズル・ソリューション９０８はある値であり、シード・トランザクション９０４のアンロッキング・スクリプトによりパズル９１０に入力として供給されると、ＰＲＮＧトランザクション９０２のロッキング・スクリプトが、実行の結果としてＴＲＵＥに評価することを生じさせる値である。ＰＲＮＧにシードを提供することは、ＰＲＮＧの実行が乱数を生成することを更に生じさせる。実施形態において、パズル９１０を解くことは、ソリューションを明らかにする理由として、ＰＲＮＧトランザクション９０２に関連するディジタル資産の少なくとも一部のような配当に関連付けられる。このように、パズル９１０を解く者には、ソリューション９０８を保留することを回避する理由が与えられ、なぜならそのようにすることは他者がパズル９１０を解いて配当を最初に要求する可能性を増やすからである。
【０１１２】
図１０は本開示のパズル解明技術の様々な実施形態により乱数を生成するプロセス１０００の具体例を示すフローチャートである。プロセス１０００のうちの全部又は一部は（あるいは、説明される何らかの他のプロセス、あるいはこれらのプロセスの変形及び／又は組み合わせ）は、実行可能な命令及び／又はその他のデータにより構成される１つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、また１つ以上のプロセッサ上で集まって動作する実行可能命令として実装されることが可能である。実行可能命令及び／又はその他のデータは非一時的なコンピュータ読み取り可能な記憶媒体（例えば、磁気、光学、又はフラッシュ媒体に永続的に格納されるコンピュータ・プログラム）に保存されることが可能である。
【０１１３】
例えば、プロセス１０００のうちの全部又は一部は１つ以上のコンピューティング・デバイスにより（例えば、データ・センターにおけるサーバーにより、クライアント・コンピューティング・デバイスにより、コンピューティング・リソース・サービス・プロバイダの分散システムにおける複数のコンピューティング・デバイスにより、あるいは図１２のコンピューティング・デバイス１２００等の適切な任意の電子クライアント・デバイスにより）実行されることが可能である。プロセス１０００は一連のオペレーションを含み、パズルを含むＰＲＮＧトランザクションが検証され、シード・トランザクションは、ＰＲＮＧトランザクションのロッキング・スクリプト内のＰＲＮＧにシードが提供されることを引き起こす。ＰＲＮＧの実行は擬似乱数を生成する。生成された擬似乱数に基づいてトランザクションに制約が課される。
【０１１４】
１００２において、図９のＰＲＮＧトランザクション９０２等のＰＲＮＧトランザクションは、ブロックチェーン・ネットワークの検証ノードにより検証される。実施形態において、ＰＲＮＧトランザクションは、パズル９１０に類似するパズルであり、ＰＲＮＧトランザクションの作成時点では未知のソリューションを有する。例えば、幾つかの実施形態において、パズルに対するソリューションは、ＰＲＮＧトランザクションの作成から所定の時間が経過するまでは利用可能でも決定可能でもないデータを含む。１００４において、ＰＲＮＧトランザクションがブロックチェーン・ネットワークにコミットされた後に、アンロッキング・スクリプトにおけるパズルに対するソリューション（例えば、パズル・ソリューション９０８）を包含するシード・トランザクションは、ブロックチェーン・ネットワークにおける同一の又は相違する検証ノードにより取得される。
【０１１５】
１００６において、同一又は相違する検証ノードはシード・トランザクションのアンロッキング・スクリプトを実行し、そのソリューションが、ＰＲＮＧトランザクションのロッキング・スクリプトに対する入力として利用可能にされることを引き起こす。次いで、検証ノードはＰＲＮＧトランザクションのロッキング・スクリプトを実行し、それは、ソリューションを入力として取り、擬似乱数を生成するためにＰＲＮＧにより使用可能なソリューションに基づいて値を導出する。１００８において、ＰＲＮＧトランザクションのロッキング・スクリプトの制約に影響を及ぼすために擬似乱数が使用される。即ち、ＰＲＮＧトランザクションに関連するディジタル資産のコントロールの移転は、図１１に関連して説明される方法等の、ＰＲＮＧロッキング・スクリプトのＰＲＮＧにより生成される擬似乱数に基づく何らかの方法で制約される（例えば、擬似乱数が所定の値の範囲内にあるか否か、ディジタル資産の擬似ランダム量が移転されるか否か等に部分的に基づいて有効として、シグネチャの擬似乱数が受け入れられる、シグネチャが受け入れられる）。１００２−０８で実行されるオペレーションのうちの１つ以上が、平行する場合を含む様々な順序及び組み合わせで実行され得ることに留意を要する。
【０１１６】
図１１は本開示で説明される実施形態のＰＲＮＧがどのようにして実装され得るかについての例１１００を示す。具体的には、図１１はＰＲＮＧトランザクション１１０２のロッキング・スクリプトの例を示し、このトランザクションは常勤実施形態で説明される方法でシードを得た結果として、２つの成果の内の１つをランダムに生成する。図１１は２つの可能な成果を示すのみであるが、可能な成果の実際の数及び各々の成果の確率は、ＰＲＮＧトランザクション１１０２の作者によって決定され、ＰＲＮＧトランザクション１１０２のロッキング・スクリプトにエンコードされ得ることに留意を要する。従って多くの可能な成果及び確率が存在し得る。具体例１１００に示される第１の可能な成果において、ランダムな結果１１０６Ａは、ＰＲＮＧトランザクション１１０２のＵＴＸＯをアンロックしようとする第１トランザクション１１０４Ａの検証は成功であるが、ＰＲＮＧトランザクション１１０２のＵＴＸＯをアンロックしようとする第２トランザクション１１０４Ｂの検証は不成功である。第２の可能な成果において、ランダムな結果１１０６Ｂは、ＰＲＮＧトランザクション１１０２のＵＴＸＯをアンロックしようとする第１トランザクション１１０４Ａの検証は不成功であるが、ＰＲＮＧトランザクション１１０２のＵＴＸＯをアンロックしようとする第２トランザクション１１０４Ｂの検証は不成功である。
【０１１７】
幾つかの実施形態において、ＰＲＮＧトランザクション１１０２は図６及び８にそれぞれ関連して説明されたＰＲＮＧトランザクション６０２又はＰＲＮＧトランザクション９０２に類似している。幾つかの実施形態において、第１及び第２トランザクション１１０４Ａ−０４Ｂは図６及び９のシード・トランザクション６０４又はシード・トランザクション９０４に類似している。即ち、第１及び第２トランザクション１１０４Ａ−０４Ｂの各々はＰＲＮＧトランザクション１１０２のロッキング・スクリプト内に含まれる１つ以上のパズルに対する１つ以上のソリューションを含むことができる。しかしながら、擬似乱数ジェネレータに対するシードはロッキング・スクリプトに提供されるソリューションから導出されるので、たとえ第１トランザクション１１０４Ａと第２トランザクション１１０４Ｂとが同じソリューションを含み得るとしても、その成果（具体例１１００ではトランザクションが首尾よく検証された旨の判定）は擬似ランダムである。例えば、ロッキング・スクリプトは、５より大きな擬似乱数ジェネレータからの値に関してアリス（Ａｌｉｃｅ）のシグネチャを受け入れ、５以下の擬似乱数ジェネレータからの値に関してボブ（Ｂｏｂ）のシグネチャを受け入れるようにコードされることが可能である。
【０１１８】
幾つかの実施形態において、ランダムな結果１１０６Ａ−０６Ｂは、１つ以上のパズル・ソリューションによりシードが与えられたＰＲＮＧトランザクション１１０２のロッキング・スクリプトのＲＰＮＧの結果を反映する。以下の表は、一群の制約を決定するためにロッキング・スクリプトのＲＰＮＧにより生成される乱数を使用する幾つかの具体例を示す。表２は一群の制約を決定するために本開示で説明されるタイプの乱数ジェネレータを使用する一例を示す。
【０１１９】
表２：
【表２】
2020532170.tif 000004
【０１２０】
上記の表において、乱数はシードに基づいて生成され（例えば、値はアンロッキング・スクリプトの実行後にスタック・メモリ内の値から導出される）、モジュラス３演算及び１の加算を実行することにより、１及び３の間の値に制限される。スタックにおける乱数により、OP_CHECKMULTISIGオペレーションは、スタックにおける乱数に等しいシグネチャ数を検査する。表３は一群の制約を決定するために本開示で説明されるタイプの乱数ジェネレータを利用する別の例を示す。
【０１２１】
表３：
【表３】
2020532170.tif 000005
【０１２２】
上記の表では、前のスクリプトと同様に、乱数はシードに基づいて生成される。このケースでは、値は０又は１の範囲に制限される。乱数が１である場合、（例えば、PubK  Aに関連する）アリスの有効なシグネチャを検査するための確認が行われ、乱数が０である場合、（例えば、PubK  Bに関連する）ボブの有効なシグネチャを検査するための確認が行われる。
【０１２３】
開示される実施形態を説明する文脈において、別意が示されていない限り、  留意を要する。（例えば、データの送信、計算などの）「命令」が通常的には自力で実行しない作業を実行する実行可能命令（コード、アプリケーション、エージェント等とも言及される）に関する表現の使用は、命令が機械により実行され、これにより機械に特定の作業を実行させることを示す。
【０１２４】
図１２は、本開示の少なくとも１つの実施形態を実施するために使用されることが可能なコンピューティング・デバイス１２００の例示的な簡略化されたブロック図である。様々な実施形態において、コンピューティング・デバイス１２００は、図示及び上述した任意のシステムを実施するために使用されることが可能である。例えば、コンピューティング・デバイス１２００は、データ・サーバー、ウェブ・サーバー、ポータブル・コンピューティング・デバイス、パーソナル・コンピュータ、又は任意の電子コンピューティング・デバイスとして使用するように構成されることが可能である。図１２に示されるように、コンピューティング・デバイス１２００は１つ以上のプロセッサ１２０２を含むことが可能であり、プロセッサは、実施形態において、バス・サブシステム１２０４を介して多数のペリフェラル・サブシステムと通信し且つ動作可能に結合されるように構成される。幾つかの実施形態において、これらのペリフェラル・サブシステムは、メモリ・サブシステム１２０８及びファイル／ディスク・ストレージ・サブシステム１２１０を含むストレージ・サブシステム１２０６と、１つ以上のユーザー・インターフェース入力デバイス１２１２と、１つ以上のユーザー・インターフェース出力デバイス１２１４と、ネットワーク・インターフェース・サブシステム１２１６とを含む。このようなストレージ・サブシステム１２０６は一時的又は長期的な情報のストレージのために使用することが可能である。
【０１２５】
幾つかの実施形態において、バス・サブシステム１２０４は、コンピューティング・デバイス１２００の様々なコンポーネント及びサブシステムが、意図されるように互いに通信することを可能にする仕組みを提供する。バス・サブシステム１２０４は単独のバスとして概略的に示されているが、バス・サブシステムの代替的な実施形態は複数のバスを使用する。幾つかの実施形態において、ネットワーク・インターフェース・サブシステム１２１６は他のコンピューティング・デバイス及びネットワークに対するインターフェースを提供する。ネットワーク・インターフェース・サブシステム１２１６は、幾つかの実施形態において、他のシステムからデータを受信する、及びコンピューティング・デバイス１２００から他のシステムへデータを送信するインターフェースとして機能する。幾つかの実施形態において、バス・サブシステム１２０４は、詳細、検索語、等々のデータを通信するために使用される。
【０１２６】
幾つかの実施形態において、ユーザー・インターフェース入力デバイス１２１２は、キーボード；統合マウス、トラックボール、タッチパッド、又はグラフィックス・タブレット等のポインティング・デバイス；スキャナ；バーコード・スキャナ；ディスプレイに組み込まれたタッチ・スクリーン；音声認識システム、マイクロフォン等のオーディオ入力デバイス；及び他のタイプの入力デバイス等の１つ以上のユーザー入力デバイスを含む。一般に、「入力デバイス」という用語の使用は、コンピューティング・デバイス１２００に情報を入力するための全ての可能なタイプのデバイス及びメカニズムを含むように意図される。幾つかの実施形態において、１つ以上のユーザー・インターフェース出力デバイス１２１４は、ディスプレイ・サブシステム、プリンタ、又は、オーディオ出力デバイス等の非視覚的ディスプレイを含む。幾つかの実施形態において、ディスプレイ・サブシステムは陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）や発光ダイオード（ＬＥＤ）ディスプレイ等のフラット・パネル・デバイス、又はプロジェクションその他のディスプレイ・デバイスを含む。一般に、「出力デバイス」という用語の使用は、コンピューティング・デバイス１２００から情報を出力するための全ての可能なタイプのデバイス及びメカニズムを含むように意図されている。１つ以上のユーザー・インターフェース出力デバイス１２１４は、例えば、説明された及びその変形のプロセスを実行するアプリケーションとのユーザー相互作用を、そのような相互作用が適切である場合には促進するユーザー・インターフェースを提供するために使用されることが可能である。
【０１２７】
幾つかの実施形態において、ストレージ・サブシステム１２０６は、本開示の少なくとも１つの実施形態の機能を提供する基本プログラミング及びデータ構造を格納するコンピュータ読み取り可能な記憶媒体を提供する。アプリケーション（プログラム、コード・モジュール、命令）は、幾つかの実施形態で１つ以上のプロセッサにより実行されると、本開示の１つ以上の実施形態の機能を提供し、実施形態では、ストレージ・サブシステム１２０６に格納される。これらのアプリケーション・モジュール又は命令は１つ以上のプロセッサ１２０２により実行されることが可能である。様々な実施形態において、ストレージ・サブシステム１２０６は本開示に従って使用されるデータを格納するリポジトリを追加的に提供する。幾つかの実施形態において、ストレージ・サブシステム１２０６はメモリ・サブシステム１２０８とファイル／ディスク・ストレージ・サブシステム１２１０とを有する。
【０１２８】
実施形態では、メモリ・サブシステム１２０８は、プログラム実行中の命令及びデータの格納のためのメイン・ランダム・アクセス・メモリ（ＲＡＭ）１２１８、及び／又は固定メモリが格納され得るリード・オンリ・メモリ（ＲＯＭ）１２２０等の多数のメモリを含む。幾つかの実施形態において、ファイル／ディスク・ストレージ・サブシステム１２１０は、プログラム及びデータ・ファイルに対する非一時的なパーシステント（不揮発性）ストレージを提供し、ハード・ディスク・ドライブ、関連するリムーバブル媒体を伴うフロッピ・ディスク・ドライブ、コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）ドライブ、光ドライブ、リムーバブル・メディア・カートリッジ、又はその他の同様なストレージ媒体を含むことができる。
【０１２９】
幾つかの実施形態において、コンピューティング・デバイス１２００は少なくとも１つのローカル・クロック１２２４を含む。ローカル・クロック１２２４は、幾つかの実施形態では、特定の開始日から起こったチック数を表現するカウンタであり、幾つかの実施形態ではコンピューティング・デバイス１２００内に一体的に配置される。様々な実施形態において、ローカル・クロック１２２４は、コンピューティング・デバイス１２００のプロセッサ及びそこに含まれるサブシステムにおけるデータ転送を特定のクロックパルスで同期させるために使用され、コンピューティング・デバイス１２００とデータ・センターの他のシステムとの間の同期処理を調整するために使用されることが可能である。別の実施形態では、ローカル・クロックはプログラマブル・インターバル・タイマーである。
【０１３０】
コンピューティング・デバイス１２００は、ポータブル・コンピュータ・デバイス、タブレット・コンピュータ、ワークステーション、又は以下に説明される何らかの他のデバイスを含む任意の様々なタイプのものであるとすることが可能である。更に、コンピューティング・デバイス１２００は、幾つかの実施形態では、１つ以上のポート（例えば、ＵＳＢ、ヘッドフォン・ジャック、照明コネクタ等）を通じてコンピューティング・デバイス１２００に接続されることが可能な他のデバイスを含むことが可能である。実施形態では、そのようなデバイスは光ファイバ・コネクタを受け入れるように構成されるポートを含む。従って、幾つかの実施形態では、このデバイスは、光信号を電気信号に変換するように構成され、電気信号は処理のためにデバイスをコンピューティング・デバイス１２００に接続するポートを介して伝送される。コンピュータ及びネットワークの絶えず変化する性質に起因して、図１２に示されるコンピューティング・デバイスの説明は、デバイスの好ましい実施形態を説明する目的で特定の具体例としてのみ意図されている。図１２に示されるシステムよりも多数の又は少数のコンポーネントを有する多くの他の構成が可能である。
【０１３１】
従って明細書及び図面は限定的な意味ではなく例示的に解釈されるべきである。しかしながら、特許請求の範囲に説明される本発明の範囲から逸脱することなく、様々な修正及び変更がそれらに行われ得ることは明白であろう。同様に、他の変形も本開示の範囲内にある。従って、開示される技術は様々な修正及び代替的な構成の影響を受け得るが、それらの所定の説明された実施形態は図面に示されており、上記において詳細に説明されている。しかしながら、本発明を開示された特定の形態又は複数の形態に限定するような意図はなく、逆に、全ての修正、代替的な構成、及び均等物を、添付の特許請求の範囲で規定されるような本発明の範囲内にカバーするように意図していることが理解されるべきである。
【０１３２】
ある及びそのという用語（“ａ”及び“ａｎ”及び“ｔｈｅ”）及び開示される実施形態を説明する文脈における類似の参照の使用は（特に以下の特許請求の範囲の文脈において）、別意に指定されていない限り又は文脈上矛盾しない限り、単数及び複数の双方をカバーするように解釈される。「備える」、「有する」、「含む」、及び「包含する」等の用語は、別意を示していない限り、オープン・エンド用語（即ち、「〜を含むが、それに限定されない」を意味するもの）として解釈されるべきである。「接続された」という用語は、修飾されておらず物理的な接続を指す場合、たとえ何らかの介在が存在してとしても、部分的に又は全体的に中に包含される、そこに取り付けられる、又は一緒に結合されるように解釈されるべきである。本開示において値の範囲の記載は、別意が示されていない限り、その範囲内に該当する個々の値それぞれに個別的に参照する簡略方法として機能するように単に意図されているに過ぎず、各々の別々の値はあたかもそれが個々に記載されているかのように明細書に組み込まれる。「セット」（例えば、「アイテムのセット」）又は「サブセット」という用語の使用は、別意を示していない限り又は文脈上矛盾しない限り、１つ以上のメンバーを含む空でない集まりとして解釈されるべきである。更に、別意を示していない限り又は文脈上矛盾しない限り、対応する集合の「サブセット」又は「部分集合」という用語は必ずしも対応する集合の真の部分集合を指す必要はなく、部分集合及び対応する集合は等しくてもよい。
【０１３３】
「Ａ、Ｂ及びＣのうちの少なくとも１つ」という形式の言い回し又は「Ａ、Ｂ及びＣのうちの少なくとも１つ」等の接続語は、具体的に言及されていない限り又は文脈上明らかに矛盾しない限り、アイテム、ターム等がＡ又はＢ又はＣの何れか、Ａ及びＢ及びＣの集合のうちの任意の空でない部分集合であるとすることが可能であることを提示するように一般的に使用される文脈で理解される。例えば、３つのメンバーを有する集合の模範的な例において、「Ａ、Ｂ及びＣのうちの少なくとも１つ」及び「Ａ、Ｂ及びＣのうちの少なくとも１つ」という接続語句は、以下の集合：｛Ａ｝，｛Ｂ｝，｛Ｃ｝，｛Ａ，Ｂ｝，｛Ａ，Ｃ｝，｛Ｂ，Ｃ｝，｛Ａ，Ｂ，Ｃ｝のうちの任意のものを指す。従って、そのような接続語は、所定の実施形態が、少なくとも１つのＡ、少なくとも１つのＢ、少なくとも１つのＣのそれぞれが存在することを要求していることを意味するように一般的に意図されてはいない。
【０１３４】
説明されるプロセスのオペレーションは、別意に指示されていない限り又は文脈上明らかに矛盾しない限り、適切な任意の順序で実行することが可能である。説明されるプロセス（又はその変形及び／又は組み合わせ）は、実行可能命令で構成される１つ以上のコンピュータ・システムの制御の下で実行されることが可能であり、１つ以上のプロセッサでまとまって動作するコード（例えば、実行可能命令、１つ以上のコンピュータ・プログラム、又は１つ以上のアプリケーション）として、ハードウェア又はそれらの組み合わせにより実装されることが可能である。幾つかの実施形態において、コードは、例えば１つ以上のプロセッサにより実行可能な複数の命令を含むコンピュータ・プログラムの形式で、コンピュータ読み取り可能な記憶媒体に格納されることが可能である。幾つかの実施形態において、コンピュータ読み取り可能な記憶媒体は非一時的である。
【０１３５】
与えられている任意の及び全ての具体例、又は例示的な言葉（例えば、「〜等」）の使用は、本発明の実施形態を単により良く照らすように意図されているに過ぎず、別意に要求されていない限り、本発明の範囲に制限を課してはいない。明細書中の言葉は、請求項に記載されていない何らかの要素を、本発明の実施に必須であることを示しているように解釈されるべきでない。
【０１３６】
本発明を実行するために発明者に知られているベスト・モードを含む本開示の実施形態が説明されている。これらの実施形態の変形例は上記の説明を理解する当業者にとって明らかになるであろう。発明者等は当業者がそのような変形例を適切に使用することを予想しており、発明者等は、本開示の実施形態が具体的に説明されたものとは違って実施されることを意図している。従って、本開示の範囲は適用可能な法律で許容されるように添付の特許請求の範囲に記載される対象事項の全ての変形及び均等物を包含する。更に、それらの全ての可能な変形において上述される要素の任意の組み合わせは、別意が示されていない限り又は文脈上明らかに矛盾しない限り、本開示の範囲に包含される。
【０１３７】
引用される刊行物、特許出願、及び特許を含む全てのリファレンスは、あたかも各リファレンスが個々に及び具体的に援用されるように示されているのと同程度に及び全体的に記載されているのと同程度に本願でリファレンスにより組み込まれる。
【０１３８】
上述した実施形態は本発明を限定するのではなく例示していること、及び当業者は、添付の特許請求の範囲に記載されている本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計できることに留意すべきである。特許請求の範囲において、括弧内に配置される如何なる参照符号も特許請求の範囲を限定するように解釈されないこととする。「有している」及び「有する」等の言葉は、任意の請求項又は明細書全体の中で列挙されているもの以外の要素又はステップの存在を排除していない。本明細書において、「有する」は「含む又はから成る」を意味し、「有している」は「含んでいる又はから構成されている」を意味する。要素単独の参照はそのような要素複数個の参照を排除しておらず、逆もまたそうである。本発明は、幾つかの個別的な要素を有するハードウェアにより、及び適切にプログラムされたコンピュータにより実装されることが可能である。幾つかの手段を列挙するデバイス・クレームにおいて、これら幾つかの手段はハードウェアの１つの同じアイテムにより具現化されることが可能である。所定の複数の事項が相互に異なる従属請求項に記載されているという単なるその事実は、これらの事項の組み合わせが有用に利用できないことを示してはいない。
【０１３９】
要  約
本開示で説明及び示唆される技術は、ブロックチェーン・データ構造に保存されるデータの完全性を保証するというブロックチェーンの特質を混乱させることなく、ブロックチェーンの機能を拡張する。例えば、本開示で説明される技術は、トランザクションに制約を実装するために豊富な柔軟性を提供することによって、コンピューティングの分野、具体的にはスマート・コントラクトの分野を進歩させる。更に、本開示で説明及び示唆される技術は、スクリプトで擬似乱数の生成を可能にすることにより、ブロックチェーン・ネットワークの機能を進歩させることができる。更に、本開示で説明及び示唆される技術は、ブロックチェーン・スクリプト・オペレーション・コードにおける乱数生成機能の欠如により具体的に生じる問題を克服するために、必然的にコンピュータ技術に根ざしている。
【図１】
2020532170.tif 000006
【図２】
2020532170.tif 000007
【図３】
2020532170.tif 000008
【図４】
2020532170.tif 000009
【図５】
2020532170.tif 000010
【図６】
2020532170.tif 000011
【図７】
2020532170.tif 000012
【図８】
2020532170.tif 000013
【図９】
2020532170.tif 000014
【図１０】
2020532170.tif 000015
【図１１】
2020532170.tif 000016
【図１２】
2020532170.tif 000017
【国際調査報告】
2020532170.tif 000018
2020532170.tif 000019