(57)【要約】コンピュータ実装される方法が提供される。本方法は：（ｉ）データ項目の一方向性関数チェーンの検証データ項目を提供する段階と；（ｉｉ）前記チェーンのあるデータ項目を含むアクセス・ブロックチェーン・トランザクションを（ビットコイン・ブロックチェーンのような）ブロックチェーンに提出する段階と；（ｉｉｉ）前記データ項目に前記一方向性関数を適用して、出力を与える段階と；（ｉｖ）段階（ｉｉｉ）の出力を前記検証項目と比較して、帰結を与える段階と；（ｖ）段階（ｉｖ）の帰結に基づいて：(a)前記チェーンのさらなるデータ項目を検証するためのさらなる検証データ項目として前記出力を割り当て；(b)前記データ項目に関連付けられた資源へのアクセスを承認する段階とを含む。
2021523610.tif 000002
【特許請求の範囲】
【請求項１】
（ｉ）データ項目の第1の一方向性関数チェーンの検証データ項目を提供する；
（ｉｉ）前記第1のチェーンのあるデータ項目を含むアクセス・ブロックチェーン・トランザクションをブロックチェーンに提出する段階と；
（ｉｉｉ）前記データ項目に前記一方向性関数を適用して、出力を与える段階と；
（ｉｖ）段階（ｉｉｉ）の出力を前記検証項目と比較して、帰結を与える段階と；
（ｖ）段階（ｉｖ）の帰結に基づいて：(a)前記第1のチェーンのさらなるデータ項目を検証するためのさらなる検証データ項目として前記出力を割り当て；(b)前記データ項目に関連付けられた資源へのアクセスを承認する段階とを含む、
コンピュータ実装される方法。
【請求項２】
段階（ｉｖ）は、少なくとも1つの試験または基準の適用を含む、請求項１に記載の方法。
【請求項３】
前記試験または基準は、前記出力が前記検証項目と一致する、または同一であるかどうかについての評価を含む、請求項２に記載の方法。
【請求項４】
前記試験は、閾値に基づく評価を含む、請求項２または３に記載の方法。
【請求項５】
前記さらなる検証データ項目およびさらなるデータ項目を用いて段階（ｉｉ）〜（ｖ）を繰り返すことをさらに含む、請求項１ないし４のうちいずれか一項に記載の方法。
【請求項６】
（ｖｉ）データ項目の第2の一方向性関数チェーンの検証データ項目を提供する段階と；
（ｖ）前記第1のチェーンの少なくとも1つの検証項目および前記第2のチェーンの前記検証データ項目の提供に際してロック解除可能な交換ブロックチェーン・トランザクションをブロックチェーンに提出する段階であって、そのようなロック解除は、前記第2のチェーンの少なくとも1つのデータ項目を資源に関連付けさせる、段階とをさらに含む、
請求項１ないし５のうちいずれか一項に記載の方法。
【請求項７】
前記交換ブロックチェーン・トランザクションをロックを解除する段階と、前記第2のチェーンのデータ項目および前記第2のチェーンの前記検証データ項目を用いて段階（ｉｉ）〜（ｖ）を繰り返すこととをさらに含む、請求項６に記載の方法。
【請求項８】
ロック時間経過後に前記交換ブロックチェーン・トランザクションの入力の制御を返すように構成された、返還ブロックチェーン・トランザクションをブロックチェーンに提出する段階をさらに含む、請求項６または７に記載の方法。
【請求項９】
一方向性関数チェーンの初期データ項目を格納する段階をさらに含み、該初期データ項目から、前記一方向性関数チェーンの少なくとも1つのデータ項目が計算可能である、請求項１ないし８のうちいずれか一項に記載の方法。
【請求項１０】
段階（ｖ）は、前記検証データ項目を削除することをさらに含む、請求項１ないし９のうちいずれか一項に記載の方法。
【請求項１１】
アクセス・ブロックチェーン・トランザクションが、前記資源を識別する情報を含む、請求項１ないし１０のうちいずれか一項に記載の方法。
【請求項１２】
少なくとも1つのデータ項目が、公開鍵の形でアクセス・ブロックチェーン・トランザクションに格納される、請求項１ないし１１のうちいずれか一項に記載の方法。
【請求項１３】
少なくとも1つの前記公開鍵は、所定の公開鍵と一方向性関数チェーンのデータ項目とを使用して生成される、請求項１２に記載の方法。
【請求項１４】
公開鍵チェーンを提供する段階を含み、前記公開鍵チェーン内の各公開鍵は、一方向性関数チェーンのそれぞれのデータ項目に対応する、請求項１３に記載の方法。
【請求項１５】
（ｖｉｉｉ）データ項目の一方向性関数チェーンの検証データ項目を提供する段階と；
（ｉｘ）前記チェーンのあるデータ項目を提供する段階と；
（ｘ）前記データ項目に前記一方向性関数を適用して、出力を与える段階と；
（ｘｉ）段階（ｘ）の出力を前記検証項目と比較して、帰結を与える段階と；
（ｘｉｉ）段階（ｘｉ）の帰結に基づいて：(a)前記出力を、前記チェーンのさらなるデータ項目を検証するためのさらなる検証データ項目として割り当て；(b)前記データ項目に関連付けられた資源へのアクセスを承認する段階とを含む、
コンピュータ実装される方法。
【請求項１６】
システムであって：
プロセッサと；
前記プロセッサによる実行の結果として、当該システムに請求項１ないし１５のうちいずれか一項に記載されるコンピュータ実装される方法を実行させる実行可能命令を含むメモリと
を有するシステム。
【請求項１７】
コンピュータ・システムのプロセッサによって実行される結果として、該コンピュータ・システムに請求項１ないし１５のうちいずれか一項に記載のコンピュータ実装される方法の実施形態を少なくとも実行させる実行可能命令が記憶されている非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概括的には、デジタル資源の移転およびアクセスの制御のための安全で効率的な解決策に、より詳細にはアクセス鍵のはたらきをする電子／デジタル・トークンの移転、格納、通信、生成および検証に関する。本発明は、限定されるものではないが、たとえばビットチェーン・ブロックチェーンのようなブロックチェーンと一緒の使用に特に好適である。
【背景技術】
【０００２】
本稿では、「ブロックチェーン」という用語を、電子的、コンピュータベース、分散型のあらゆる形態の台帳を含むものとして使う。これらは、コンセンサスに基づくブロックチェーンおよびトランザクションチェーン技術、公開および私的な台帳、許可式および非許可式の台帳、共有される台帳、およびそれらの変形を含む。ブロックチェーン技術の最も広く知られている応用はビットコイン台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、便宜上、説明のためにビットコインに言及することがあるが、本発明は、ビットコイン・ブロックチェーンと一緒に使用することに限定されず、代替的なブロックチェーン実装およびプロトコルが、本発明の範囲内にはいることに注意しておくべきである。用語「ユーザー」は、本明細書中では、人間またはプロセッサ・ベースの資源を指しうる。また、用語「ビットコイン」は、本明細書中では、ビットコイン・プロトコル／プラットフォームから派生するまたはそれに基づくプロトコル／プラットフォームのすべてのバージョンおよび変形を含むものとして使用される。
【０００３】
ブロックチェーンは、ピアツーピアの電子台帳であり、これは、ブロックから構成される、コンピュータベースの脱中心化された分散型のシステムとして実装され、ブロックはトランザクションから構成される。各トランザクションは、ブロックチェーン・システムにおける参加者間のデジタル資産の制御〔コントロール〕の移転をエンコードするデータ構造であり、少なくとも1つの入力および少なくとも1つの出力を含む。各ブロックは、前のブロックのハッシュを含み、それにより諸ブロックがチェーン化されて、ブロックチェーンの端緒以来、そのブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能なレコードを作成する。トランザクションは、その入力および出力に埋め込まれた、スクリプトとして知られる小さなプログラムを含んでおり、それが、トランザクションの出力に誰がどのようにアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベースのスクリプト言語を使用して書かれる。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、トランザクションは「有効確認」される必要がある。ネットワーク・ノード（採鉱者）が、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされているソフトウェア・クライアントが、そのロック・スクリプトおよびアンロック・スクリプトを実行することによって、未使用トランザクション（unspent  transaction、UTXO）に対してこの有効確認（validation）作業を実行する。ロックおよびアンロック・スクリプトの実行が真と評価される場合、そのトランザクションは有効であり、そのトランザクションはブロックチェーンに書き込まれる。このように、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)そのトランザクションを受け取る最初のノードによって有効確認されなければならない。もし、トランザクションが有効確認されれば、ノードはそれをネットワーク内の他のノードに中継する。トランザクションは、ii)採鉱者によって構築された新しいブロックに追加され、iii)採掘されなければならない。すなわち、過去のトランザクションの公開台帳に追加される。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用について最も広く知られているが、デジタル起業家は、ビットコインのベースとなる暗号セキュリティ・システムと、ブロックチェーンに格納できるデータの両方を使用して、新しいシステムを実装することを検討し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動化されたタスクおよびプロセスに使用できれば、非常に有利であろう。そのような解決策は、応用がより多様でありながら、ブロックチェーンの恩恵（たとえば、イベントの恒久的な、改竄不能な記録、分散処理など）を利用することができるであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現在の研究の1つの分野は、ブロックチェーンを介して、資源またはその制御を表現および移転し、またはそれらの資源へのアクセスを許容するためのトークンの使用である。トークンに関連付けられた資源は、電子的な資源または物理的な資源、仮想的な資源または現実世界の資源でありうる。潜在的に機微なまたは秘密の資源は、見分けられる意味や値をもたないトークンによって表現できる。このように、トークンは、現実世界の資源がブロックチェーンから参照されることを許容する識別子として機能する。
【０００７】
コンピューティング資源の使用を最小限にしながら、トークンを通信、格納、生成、および／またはあるユーザーから別のユーザーに移転する安全で効率的な仕方を提供することが望ましい。そのような改善された解決策がこのたび考案された。
【課題を解決するための手段】
【０００８】
そこで、本発明によれば、添付の特許請求の範囲に定義される方法が提供される。
【０００９】
本発明によれば、以下の段階を含むコンピュータ実装されるアクセスまたは制御方法が提供されてもよい。
（ｉ）データ項目の第1の一方向性関数チェーン（について）の検証データ項目を提供する；
（ｉｉ）データ項目の第1のチェーンのあるデータ項目を含むアクセス・ブロックチェーン・トランザクションをブロックチェーンに提出する；
（ｉｉｉ）そのデータ項目に前記一方向性関数を適用して、出力を与える；
（ｉｖ）段階（ｉｉｉ）の出力を前記検証項目と比較して、帰結を与える；
（ｖ）段階（ｉｖ）の帰結に基づいて：
(a)第1のチェーンのさらなるデータ項目を検証するためのさらなる検証データ項目として前記データ項目を割り当て；
(b)前記データ項目に関連付けられた資源へのアクセスを承認する。
【００１０】
段階（ｉ）および／または（ｉｉ）は、第1の当事者によって実行されてもよい。段階（ｉｉｉ）〜（ｖ）は、第2の当事者によって実行されてもよい。用語「ユーザー」は、本明細書において「当事者」と交換可能に使用されることがある。用語「当事者」および「ユーザー」は、人間のユーザー、コンピューティング資源、クライアント、サーバーおよび／またはネットワーク・ノードを含むことが意図されている。
【００１１】
データ項目に暗号学的ハッシュ関数などの一方向性関数を適用する結果として、さらなるデータ項目が生じる。該さらなるデータ項目に前記一方向性関数をその後適用する結果として、さらにさらなるデータ項目が生じる。このようにして、データ項目のチェーンが生成されてもよく、ここで、データ項目のチェーンのメンバーは、一方向性関数の適用を介して互いに決定論的にリンクされる。そのようなチェーンは、データ項目の一方向性関数チェーンと呼ばれることがある。検証データ項目は、一方向性関数チェーンのメンバーであり、検証目的のために使用されるデータ項目であってもよく、のちに詳細に記載される。
【００１２】
段階（ｉｖ）の比較は、少なくとも1つの試験または基準の適用を含んでいてもよい。試験または基準は、出力が検証項目と一致する、または同一であるかどうかについての評価を含んでいてもよい。この試験は、閾値に基づく評価を含んでいてもよい。一方向性関数はハッシュ関数であってもよい。
【００１３】
そのような方法は、各データ項目の出所のチェックを提供することによって安全性および信頼性を向上させ、検証目的のために必要とされる記憶スペースおよびメモリの量を減らすことによって効率を向上させ、通信されるデータの量を減らすことによって安全性を向上させるとともに、誤りが発生する可能性を低下させる。
【００１４】
本方法は、前記さらなる検証データ項目およびさらなるデータ項目を用いて段階（ｉｉ）〜（ｖ）を繰り返すことをさらに含んでいてもよい。
【００１５】
これは、イベントをブロックチェーン上に記録し、それにより記録が公開され、変更不能になるという利点を提供する。よって、ブロックチェーンは、あるユーザーから別のユーザーにデータ項目を伝送または移転するための通信媒体または機構として機能しうる。第2のユーザーは、ブロックチェーンからデータ項目にアクセスできる。よって、第1のユーザーと第2のユーザーとの間の直接的な通信は回避または最小化される。そのような通信は、認可されていない当事者による傍受を引き起こす可能性があるため、これは有利である。本発明は、ユーザーどうしが互いに知られていない、または信頼関係を有していないことがありうる場合の解決策を提供する。これは、トークンの移転のための改善された安全性および改善された通信解決策を提供する。さらに、ブロックチェーンの公開性および変更不能性は、発生したイベント（単数または複数）および第1のユーザーが提出したデータ項目（単数または複数）を検証するために使用できる。
【００１６】
本方法は、以下の段階をさらに含んでいてもよい：
（ｖｉ）データ項目の第2の一方向性関数チェーンの検証データ項目を提供する；
（ｖ）第1のチェーンの少なくとも1つの検証項目および第2のチェーンの前記検証データ項目の提供に際してロック解除可能な交換ブロックチェーン・トランザクションをブロックチェーンに提出する。ここで、そのようなロック解除は、第2のチェーンの少なくとも1つのデータ項目を資源に関連付けさせる。
これは、ユーザー間で、それぞれの少なくとも1つのデータ項目に関連する少なくとも1つの資源にアクセスする能力を移転する、安全で記録される方法を提供する。
【００１７】
本方法は、さらに、交換ブロックチェーン・トランザクションをロックを解除する段階と、第2のチェーンのデータ項目および第2のチェーンの前記検証データ項目を用いて段階（ｉｉ）〜（ｖ）を繰り返すことを含んでいてもよい。
これは、新規ユーザーが少なくとも1つの資源に安全にアクセスできるようにするという利点を提供する。
【００１８】
本方法は、ロック時間経過後に交換ブロックチェーン・トランザクションの入力の制御を返すように構成された、返還ブロックチェーン・トランザクションをブロックチェーンに提出することをさらに含んでいてもよい。
これは、不正直なユーザーが交換ブロックチェーン・トランザクションの入力を無期限にロックすることを防止し、それにより、本方法の多用途性を増し、より安全な方法を提供するという利点を提供する。
【００１９】
本方法は、一方向性関数チェーンの初期データ項目を格納する段階をさらに含んでいてもよく、該データ項目から、一方向性関数チェーンの少なくとも1つのデータ項目が計算可能である。
これは、記憶要件をさらに低減し、対応して方法の効率を向上させるという利点を提供する。
【００２０】
段階（ｖ）は、検証データ項目を削除することをさらに含んでいてもよい。
これは、記憶要件をさらに低減し、対応して方法の効率を向上させるという利点を提供する。
【００２１】
アクセス・ブロックチェーン・トランザクションは、資源を識別する情報を含んでいてもよい。たとえば、ブロックチェーン・トランザクションは、資源に関する情報を含むオフチェーン・データ・リポジトリをポイントするURLまたはそのハッシュを含み得る。URLはトランザクションのメタデータに格納されてもよい。
これは、資源に関する情報が安全に通信されうるという利点を提供する。
【００２２】
少なくとも1つのデータ項目が、暗号（公開）鍵の形でアクセス・ブロックチェーン・トランザクションに格納されうる。
これは、トランザクションのサイズを小さくし、カスタム・トランザクションではなく標準トランザクションの使用を可能にし、プライバシーを増加させ、本方法のユーザーが異なるプロトコルを実装する複数の異なるブロックチェーン上で本方法を実行できるようにするという利点を提供する。
【００２３】
少なくとも1つの前記公開鍵は、所定の公開鍵および一方向性関数チェーンのデータ項目を使用して生成されてもよい。
これは、公開鍵が導出されることを可能にする単純で安全な仕方を提供し、記憶要件を低減するという利点を提供する。
【００２４】
本方法は、公開鍵チェーンを提供する段階を含んでいてもよい。公開鍵チェーン内の各公開鍵は、一方向性関数チェーンのそれぞれのデータ項目に対応する。
これは、検査可能なチェーンにおいて諸公開鍵をリンクし、そのことは、安全性を高めるという利点を提供する。
【００２５】
本発明は、以下の段階を含むコンピュータ実装される方法をも提供する：
（ｖｉｉｉ）データ項目の一方向性関数チェーンの検証データ項目を提供する；
（ｉｘ）前記チェーンのあるデータ項目を提供する；
（ｘ）前記データ項目に前記一方向性関数を適用して、出力を与える；
（ｘｉ）段階（ｘ）の出力を前記検証項目と比較して、帰結を与える；
（ｘｉｉ）段階（ｘｉ）の帰結に基づいて：(a)前記データ項目を、前記チェーンのさらなるデータ項目を検証するためのさらなる検証データ項目として割り当て；(b)前記データ項目に関連付けられた資源へのアクセスを承認する。
【００２６】
段階（ｘ）の比較は、少なくとも1つの試験または基準の適用を含んでいてもよい。試験は、出力が検証項目と一致する、または同一であるかどうかについての評価を含んでいてもよい。この試験は、閾値に基づく評価を含んでいてもよい。一方向性関数はハッシュ関数であってもよい。
【００２７】
この方法は、公に検証可能で、安全で、計算効率のよい仕方で、資源へのアクセスが提供されることを可能にする方法を提供することができる。本発明の実施形態は、セキュリティおよび／またはアクセス制御方法と称されうる。
【００２８】
本発明は、システムであって：
プロセッサと；
プロセッサによる実行の結果として、当該システムに本明細書に記載されるコンピュータ実装される方法の任意の実施形態を実行させる実行可能命令を含むメモリと
を有するシステムをも提供する。
【００２９】
本発明は、コンピュータ・システムのプロセッサによって実行される結果として、該コンピュータ・システムに本明細書に記載されるコンピュータ実装される方法の実施形態を少なくとも実行させる実行可能命令が記憶されている非一時的コンピュータ読取可能記憶媒体をも提供する。
【００３０】
本発明のこれらおよび他の側面は、本明細書に記載される実施形態から明白となり、それを参照して解明されるであろう。本発明の実施形態を、ここで、単なる例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００３１】
【図１】トークンを生成し、アクティブ化するための段階を示すフローチャートである。
【図２】トークンの制御を交換するための段階を示すフローチャートである。
【図３】公開鍵を使用してトークンをアクティブ化するための段階を示すフローチャートである。
【発明を実施するための形態】
【００３２】
本発明は、ハッシュ・チェーンのような暗号的に安全な一方向性関数チェーンを用いてトークンを効率的に生成し、記憶することを可能にする。本方法は、パフォーマンス、記憶、スケーラビリティ、および信頼性の利点を有する。トークンは他のユーザーに安全に販売されることができる。トークンは、証明可能に公開鍵にリンクされることができ、それにより、プライベートで安全な、トークンをアクティブ化し検証する普遍的な方法を提供する。
【００３３】
トークンとは、ネットワークを通じた、一または複数の異なる当事者間での信頼される通信を保証するデータ構造またはデータ項目である。たとえば、トークンは、一の当事者から別の当事者への資源の制御の移転を表わすため、および／または商品またはサービスのような制御される資源にアクセスするために使用できる。たとえば、トークンをアクティブ化することによって、顧客は、コンピューティングまたは電子資源、ホテルの部屋、ハイヤーまたは有料道路；処方箋薬、消費者製品、またはサプライチェーン内のアイテムのような商品；およびウェブサイトまたはコンピュータ・アプリケーション上のセッションのようなサービスのような資源へのアクセスを承認されうる。トークン自体は、これらの資源をロック解除するための鍵として使用されてもよく、あるいは分散ハッシュテーブル（Distributed  Hash  Table、DHT）のような前記資源に関するさらなる情報を含む外部状態をポイントしてもよい。
【００３４】
トークンは、典型的には256ビットの数として表現され、いったんアクティブ化されると、時間的な制限をもつことがあり（たとえば、トークンが安全なデータ・リポジトリへのアクセスを24時間許可される場合）、有限の使用回数をもつことがある（たとえば、ひとたびトークンがアクティブ化されて24時間が経過したら、安全なデータ・リポジトリへのアクセスは、新しい、異なるトークンが発行され、アクティブ化されるまで撤回される）。
【００３５】
トークンをアクティブ化したい当事者を「クライアント」と称し、トークンがアクティブ化されたことを検証したい当事者を「サーバー」と称する。
【表１】
2021523610.tif 000003
【００３６】
クライアントは、トークンをサーバーに提供することによって、トークンをアクティブ化する。これは、ブロックチェーン上でトークンを公に開示することによって実行されうる。これは、トークンの値を記録するトランザクションを、サーバーが検証しうるトランザクション・データまたはメタデータ内で完成させることによって達成される。このトランザクションの出力は、使用される必要がないことを注意しておく。
【００３７】
必要とされるトークンの量は、その利用を必要とするイベントの量とともに線形にスケーリングすることができる。たとえば、ユーザーがある回数、安全なデータ・リポジトリへのアクセスを要求する場合、同じ数のトークンが生成されてもよい。将来の使用のために複数のトークンを作成するための既知の方法は、各トークンが別々に生成されるというものである。たとえば各トークンがランダムに生成される。その際、すべてのトークンが、クライアントとサーバーの両方によってデータベースに記憶される。
【００３８】
しかしながら、本発明では、クライアントとサーバーのそれぞれによって一度に記憶される必要があるのは、1つのトークンのみである。これは、各トークンが、ハッシュ関数のような、暗号学的に安全な一方向性関数の逐次の適用を通じて／介して、直前のトークンに関連するという規則を実装することによって達成される。たとえば、トークンtiは規則：
ti＝H(ti-1)        (1)
に従ってトークンti-1に関係付けられる。ここで、HはSHA-256などのハッシュ関数である。
【００３９】
トークンti-1をアクティブ化するために、ti-1を含むトランザクションがブロックチェーンに提出される。ここでti-1は、その前のトークンtiのハッシュ・パズルに対する解であり、それにより、ti-1を公に明かすことが、チェーン内の各トークンを証明可能にリンクする。
【００４０】
本発明の利点は、下記を含む：
・クライアントとサーバーは、任意の所与の時刻においてトークンを1つ記憶している必要があるだけであり、これはメモリを節約する。1つのトークンが256ビットの数であり、アリスがn個のトークンを使用したい場合、各トークンをデータベースに個別に格納するのと比較して、この方法を使用すれば、アリスは(n−1)*256ビットのスペースを節約する。
・クライアントとサーバーの間で通信される必要のあるデータは少量のみであり、これはパフォーマンス、安全性および信頼性を改善する。
・トークンは記憶されるのではなく計算されるため、破壊やデータの破損を通じたトークンの偶発的な損失を防ぐ。
・各トークンがハッシュ・パズルへの解を通じて前のトークンに証明可能にリンクされているため、トークンについて、検査可能なレコードが利用可能である。
【００４１】
図1を参照して、ここで、クライアント（アリス）がサーバー（ボブ）が検証できるトークンのシーケンスをアクティブ化する方法（100）について説明する。トークンは、ハッシュ・チェーンを使用してアリスによって生成される。以下の段階が実行される。
【００４２】
１．アリスとボブが、アクセスするためにトークンのアクティブ化を要求する資源の数nについて合意する（105）。
【００４３】
２．アリスが256ビットの数t0を生成する（110）。これは、何らかの入力データをハッシュすることによって達成することができ、あるいはランダムな数であってもよい。値t0は、アリスが使用する最後のトークンになる。アリスはこの数をn回ハッシュして、
tn＝Hn(t0)
を計算する。ここで、tnはトークンではなく検証データ項目である。アリスはtnをボブに送る（115）。
【００４４】
アリスは、t0を記憶し、他の値は記憶しない。アリスは、規則(1)を使ってn個のトークンtn-1,…,t1,t0を計算するためにこの値を使用する。これは、次を満たすトークンのアクセス・チェーンまたはハッシュ・チェーンを生成する：
tn-1＝H(tn-2)
tn-2＝H(tn-3)
…
t1＝H(t0)
また、tn＝H(tn-1)であることにも注意。
【００４５】
アリスが最初に使うトークンはtn-1であり、最後に使うトークンはt0である。検証データ項目tnは検証目的のためにのみ使用され、それ自体はトークンではない。
【００４６】
３．ボブはtnを記憶し（120）、他の値は記憶しない。ボブはt0,t1,…,tn-1を計算できないことに注意。
【００４７】
４．アリスが、最初のトークンtn-1＝Hn-1(t0)の値を計算し（125）、そのトークンを含むトランザクションを生成する（130）ことによって、それをアクティブ化する。トークンは、たとえば、トランザクション・メタデータ内に、またはロックまたはロック解除スクリプト内に格納されてもよい。それは、受信者のアドレス自体の公開鍵に格納されてもよい；この詳細は、以下の本発明のさらなる実施形態に関連して議論される。アリスはトランザクションをブロックチェーンに提出し、そのことがトークンを明かす（135）。
【００４８】
５．ボブは今や、明かされたトークンを見て、読むことができ、tn＝H(tn-1)となることをチェックすることによって、アリスが正しいトークンをアクティブ化したことを検証する（140）。ブロックチェーン上で明かされたトークンのハッシュが、ボブが格納した検証項目と同一でない場合（145）、ボブは資源へのアクセスを拒否する（150）。それ以外の場合は、ボブはアクセスを許容し（155）、tn-1を記憶し、tnを削除する。tn-1がシーケンスにおける次の検証データ項目となる。
【００４９】
６．アリスは、tn-2を用いて段階４を繰り返すことによって別のトークンをアクティブ化する。ボブは、段階５を繰り返すことによってこのトークンを検証する。ただし、チェックするのはtn-1＝H(tn-2)である。このプロセスは、n個のトークンがアクティブ化され、検証される（165）まで、逐次反復的に繰り返される（160）。
【００５０】
資源にアクセスする能力を移転するための方法（200）が、図2を参照して説明される。
【００５１】
アリスが自分のトークンのうちのm個tn-1,…,tn-mをすでにアクティブ化しており、チャーリーが一つまたは複数の条件を満たすために残りのn−m個のトークンtn-m-1,…,t0の制御を得ることを望むとする。チャーリーは次のようにして、（アリスを信頼することなく）これを行なうことができる。
【００５２】
アリスとチャーリーは、アリスの残りのトークンをチャーリーに譲渡することに合意する（205）。アリスは、チャーリーに次の未使用トークンのハッシュH(tm-n-1)を送る。
【００５３】
チャーリーは新しいトークンs0を作成する。次いで、チャーリーは、規則
sm-n-1＝H(sm-n-2)
sm-n-2＝H(sm-n-3)
…
s1＝H(s0)
を使用してn−m個のトークンの系列sm-n-1,…,s0を生成する（210）。
【００５４】
チャーリーはまた、検証目的のために使用される検証データ項目sm-n＝H(sm-n-1)も計算する。チャーリーはsm-nをアリスに送る（215）。
【００５５】
チャーリーは、前記一つまたは複数の条件を満たすトランザクションをブロックチェーンに提出する（220）。ここで、このトランザクションのロック解除スクリプトは
LockingScript＝CheckSigH(PA)  AND  SolveH(tn-m-1)  AND  SolveH(sn-m)
の形である。ここで、PAはアリスの公開鍵である。このアドレスは、アリスによって制御される、公開鍵ハッシュへの支払い（Pay  To  Public  Key  Hash、P2PKH）アドレスまたはスクリプト・ハッシュへの支払い（Pay  To  Script  Hash、P2SH）アドレスであることができる。
【００５６】
ここで、アリスはサーバー、ボブに、トークンをチャーリーに移転したことを通知する。アリスは、次のトークンtm-n-1および検証データ項目sm-nをボブに知らせる（225）ことによってこれを行なう。ボブは、アリスのみがこれを行なうことができると確信することができる。なぜなら、ハッシュされて現在の検証項目tm-n＝H(tm-n-1)になるトークンであることをボブが検証できるtm-n-1の値を知っているのはアリスだけであるからである。
【００５７】
アリスが不正直であり、サーバー、ボブにこの情報を与えない場合、ひとたびアリスがチャーリーからのトランザクションを使用すれば（230）、この情報はいずれにせよブロックチェーン上で公に開示される。なぜなら、トランザクション・ロック解除スクリプトは
UnlockingScript＝[sm-n][tn-m-1][SigPA][PA]
の形をもつからである。
【００５８】
ハッシュが現在の検証項目と同一の場合（240）、ボブはトークンの制御をチャーリーに移転し（245）、次の検証データ項目としてtn-m-1をsn-mで置き換える（250）。それ以外の場合、ボブはトークンの制御をチャーリーに移転しない（260）。
【００５９】
これで、ボブはsm-n＝H(sm-n-1)をチェックすることによってチャーリーの最初のトークンsm-n-1を有効確認することができる（255）。
したがって、チャーリーはアリスからトークンを受け取ったことをボブに証明することができる。
【００６０】
また、チャーリーからアリスへのトランザクションの時間ロック〔タイムロック〕返金を含めることも可能である。それにより、アリスはチャーリーが提出したトランザクションの入力を無期限にロックすることはできない。
【００６１】
上述のアクセス・チェーン内のトークンは、証明可能に公開鍵／秘密鍵にリンクされることができる。公開鍵／秘密鍵をトークンとリンクするこの方法は、前述のようにトークンが一方向性関数またはハッシュ・チェーンを通じてリンクされることを要求せず、各トークンが前のトークンとの関連なしに個別に作成される場合に機能することを注意しておく。しかしながら、トークン・アクセス・チェーンを使用する利点は、リンクされた鍵に移行される。その際、リンクされた鍵がアクセス・チェーンを形成し、アクセス・チェーンの前記一方向性関数を通じて互いに証明可能にリンクされた、公開鍵／秘密鍵の検査可能なシーケンスを形成する。
【００６２】
これのための一つの適用は、アリスが、これらの公開鍵アドレスへのトランザクションを行なうことによって、自分のトークンをアクティブ化することである。ボブは、公開鍵アドレス自体を観察することによって、トークンがアクティブ化されていることを検証できる。
【００６３】
これは、トークン・スキームに関係するカスタム・トランザクションではなく標準的なトランザクションが必要とされるだけなので、トランザクションのサイズを可能な限り小さく保つことを助け、プライバシーを改善する。それは、任意のブロックチェーン・プロトコルまたはプラットフォーム上で有効な任意の公開鍵／秘密鍵システムのための普遍的な方法でもある。
【００６４】
図3を参照して、ここで、クライアント、アリスが、サーバー、ボブが検証できるトークンのシーケンスをアクティブ化する方法（300）が説明される。
【００６５】
P0がアリスの公開鍵を表わし、S0がアリスの秘密鍵を表わすとする。楕円曲線デジタル署名アルゴリズム（elliptic  curve  digital  signature  algorithm、ECDSA）システムでは、公開鍵／秘密鍵ペアはP0＝S0・Gによって関係付けられる。ここで、Gは楕円曲線の生成点である。しかしながら、本方法の段階を実行するためには、任意の同等の公開鍵／秘密鍵システムが使用されうる。
【００６６】
トークンの数について合意し（305）、初期値t0から諸トークンを生成し（310）、チェーンの検証データ項目tnをボブに送信（315）した後、アリスは自分の公開鍵P0をボブと共有する（320）。ボブはこれを検証データ項目として記憶する（325）。
【００６７】
最初のトークンtn-1を生成した（330）アリスは、それを派生公開鍵
P1＝(S0＋tn-1)・G＝P0＋tn-1・G
を作成するために使用する（335）。
【００６８】
アリスだけがtn-1を知っているので、この公開鍵を作成できるのはアリスだけである。公開鍵P1は、アリスのアクセス・チェーンにおいて最初のトークンと証明可能にリンクされることができる。
【００６９】
アリスは、この公開鍵を、自分の最初のトークンをアクティブ化するためにトランザクションを送信できる送信先のアドレスとして使用することができる。アリスは、この公開鍵に宛てたブロックチェーン・トランザクションを生成し（340）、それをブロックチェーンに提出し（345）、それにより、公開鍵を公に開示する。
【００７０】
その後、アリスはtn-1をボブに送信する（350）。次いで、ボブは、アリスがP1＝P0＋tn-1・Gに対してトランザクションを行なったことを確認する（355）ことにより、トークンtn-1がアクティブ化されたことを検証できる。提出されたトランザクションによって明かされた公開鍵が、公開鍵P0およびトークンtn-1を使用してボブによって計算されたものと同一である場合（360）、ボブは、資源へのアクセスをアリスに許可する（370）。それ以外の場合、ボブはアクセスを拒否する（365）。
【００７１】
このプロセスは、逐次反復的に繰り返されることができる（375）：最終トークンがまだアクティブ化されていない場合、ボブは、次の検証データ項目（380）として、開示された公開鍵を記憶し、プロセスは継続される；それ以外の場合は、プロセスは終了する（385）。
【００７２】
この方法は、アクセス・チェーン内のトークンにそれぞれ一意的に証明可能にリンクされているn個の公開鍵を、次のように作成する：
P1＝P0＋tn-1・G
P2＝P1＋tn-2・G
…
Pn＝Pn-1＋t0・G
【００７３】
このプロセスは、トークンが秘密鍵と同じグループ内の値をとることに頼っている。該グループは、ビットコインscep256k1プロトコルの場合、Zn*である。ここで、nは楕円曲線生成子Gの位数である。この数は2256よりわずかに小さい。トークンがこのグループ内でない場合、SHA-256のようなハッシュ関数に通して、nに関するモジュラスをとることができる。このプロセスにかけた後、トークンのいずれかが0の場合、アリスはやりなおし、異なるシード・トークンt0を選ぶ必要がある。
【００７４】
上述の実施形態は、本発明を限定するのではなく、例解するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計することができることに注意しておくべきである。特許請求の範囲においては、括弧内に付した参照符号があったとしても、請求項を限定するものと解釈してはならない。「含む」および「有する」等の語は、いずれかの請求項または明細書全体に列挙されたもの以外の要素または段階の存在を除外するものではない。本明細書において、「含む」は「…を含むまたは…からなる」ことを意味し、「有する」は「…を含むまたは…からなる」を意味する。要素の単数形での言及は、そのような要素の複数形での言及を除外するものではなく、その逆もまた同様である。本発明は、いくつかの別個の要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項においては、これらの手段のいくつかは、同一のハードウェア項目によって具現されてもよい。ある種の措置が相互に異なる従属請求項に記載されているというだけの事実が、これらの措置の組み合わせが有利に利用できないことを示すものではない。
【図１】
2021523610.tif 000004
【図２】
2021523610.tif 000005
【図３】
2021523610.tif 000006
【国際調査報告】
2021523610.tif 000007
2021523610.tif 000008
2021523610.tif 000009