(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】分散ハッシュテーブル及びピア・ツー・ピア分散型台帳を利用した契約の実行を制御する方法及びシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20231108BHJP
G06F 21/10 20130101ALI20231108BHJP
G06F 21/64 20130101ALI20231108BHJP
G06Q 20/06 20120101ALI20231108BHJP
G06Q 20/22 20120101ALI20231108BHJP
G06Q 20/38 20120101ALI20231108BHJP
G06F 16/27 20190101ALI20231108BHJP
【FI】
H04L9/32 200Z
G06F21/10
G06F21/64
G06Q20/06 300
G06Q20/22 300
G06Q20/38 310
G06F16/27
【外国語出願】
(21)【出願番号】P 2022023354
(22)【出願日】2022-02-18
(62)【分割の表示】P 2018552765の分割
【原出願日】2017-04-28
【審査請求日】2022-02-18
(32)【優先日】2016-04-29
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
(72)【発明者】
【氏名】サヴァナ,ステファヌ
【審査官】青木 重徳
(56)【参考文献】
【文献】中国特許出願公開第103092845(CN,A)
【文献】特開2013-054501(JP,A)
【文献】仏国特許出願公開第03018370(FR,A1)
【文献】米国特許出願公開第2015/0206106(US,A1)
【文献】Jeff Herbert et al.,A Novel Method for Decentralised Peer-to-Peer Software License Validation Using Cryptocurrency Block,Proceedings of the 38th Australasian Computer Science Conference (ACSC 2015),Australian Computer Society, Inc.,2015年01月27日,pp.27-35,http://openrepository.aut.ac.nz/bitstream/handle/10292/10328/CRPITV159Herbert.pdf?sequence=6&isAllowed=y
【文献】Andreas M. Antonopoulos,Mastering Bitcoin,米国,O’Reilly Media, Inc.,2014年12月31日,pp.112, 123-124, 135-136,https://unglueit-files.s3.amazonaws.com/ebf/05db7df4f31840f0a873d6ea14dcc28d.pdf
【文献】淵田 康之,特集:イノベーションと金融 ブロックチェーンと金融取引の革新,野村資本市場クォータリー,日本,株式会社野村資本市場研究所,2015年11月01日,第19巻第2号(通巻74号),p.11-35
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/10
G06F 21/64
G06Q 20/06
G06Q 20/22
G06Q 20/38
G06F 16/27
(57)【特許請求の範囲】
【請求項1】
契約の実行を制御するコンピュータにより実現される方法であって、
コンピュータベースレポジトリに契約を格納するステップであって、前記契約は第1ユーザと第2ユーザとの間のライセンスに関連し、前記コンピュータベースレポジトリは分散ハッシュテーブルである、格納するステップと、
通信ネットワークを介しエージェントから前記第1ユーザ又は前記第2ユーザへのトークンの移動を含むトランザクションを受信するステップであって、前記トランザクションは、前記契約が格納されている場所を示す識別子を含むメタデータを含む、受信するステップと、
前記トランザクションが少なくとも1つの未使用出力(UTXO)を含むか判断するため、ピア・ツー・ピア分散型台帳を照会するステップであって、前記UTXOは
、前記契約の
形式的な詳細を含むオフチェーン・リポジトリに対するポインタ又はリファレンスを含む、照会するステップと、
前記ピア・ツー・ピア分散型台帳を照会したことに応答して、前記契約の実行を修正するか判断するステップと、
を有する方法。
【請求項2】
前記トランザクションは更に、決定的なリディームスクリプトアドレスを含む、請求項1
に記載の方法。
【請求項3】
リディームスクリプトアドレスは、ペイ・ツー・スクリプト・ハッシュ(P2SH)アドレスである、請求項1又は2
に記載の方法。
【請求項4】
前記コンピュータベースレポジトリに契約を格納す
るステップは、
前記契約に基づいてハッシュ値を決定するステップと、
前記ハッシュ値を前記分散ハッシュテーブルに格納するステップと、
を含む請求項1乃至3の何れか一項に記載の方法。
【請求項5】
前記契約に基づいてハッシュ値を決定す
るステップは、
前記契約に関連するデータを決定するステップと、
前記契約に関連するコンピュータソフトウェアに基づいて第1ハッシュ値を決定するステップと、
前記契約に関連する前記データと前記契約に関連する前記コンピュータソフトウェアとに基づいて第2ハッシュ値を決定するステップと、
を含む請求項4に記載の方法。
【請求項6】
前記第2ハッシュ値は前記分散ハッシュテーブルにおける鍵-値のペアのうちの鍵であり、前記第1ハッシュ値は前記分散ハッシュテーブルにおける鍵-値のペアのうちの値である、請求項5に記載の方法。
【請求項7】
前記方法は、前記第2ハッシュ値を含むメタデータを決定するステップを更に含む、請求項5又は6に記載の方法。
【請求項8】
前記メタデータは、ブロックチェーントランザクションのリディームスクリプトに含まれる、請求項7に記載の方法。
【請求項9】
前記リディームスクリプトは、P2SHマルチシグネチャリディームスクリプトである、請求項8に記載の方法。
【請求項10】
前記契約は、
前記第1ユーザと前記第2ユーザとの間の前記ライセンスの処理に関する少なくとも1つの条件と、
実行が前記条件の評価に依存する少なくとも1つのアクションと、
を定義する、請求項1乃至9
の何れか一項
に記載の方法。
【請求項11】
前記条件は、真又は偽と評価することが可能なテストを含む、請求項10に記載の方法。
【請求項12】
前記条件は、前記契約の一部である、請求項10又は11に記載の方法。
【請求項13】
前記メタデータは、
前記契約が前記コンピュータベースレポジトリに格納されているアドレス又はアドレスの表現、及び/又は
前記契約のハッシュを含む、請求項1乃至12
の何れか一項
に記載の方法。
【請求項14】
前記ピア・ツー・ピア分散型台帳を照会するステップは更に、
前記少なくとも1つの未使用出力が前記ピア・ツー・ピア分散型台帳の未使用トランザクション出力のリストに存在するか判断することによって、前記契約が終了したかチェックするステップを含む、請求項1乃至13
の何れか一項
に記載の方法。
【請求項15】
前記契約は、前記契約を実現する決定的有限オートマトンを含む、請求項1乃至14
の何れか一項
に記載の方法。
【請求項16】
前記決定的有限オートマトンは、コード化方式を利用して定義される、請求項15
に記載の方法。
【請求項17】
前記契約に関連する前の鍵に関するサブ鍵を生成するステップと、
前記サブ鍵、前記契約の場所及び前記契約のハッシュを含む更なるリディームスクリプトを生成するステップと、
前記更なるリディームスクリプトにある量の仮想通貨を支払うステップと、
を実行することによって、前記契約を更新するステップを更に有する、請求項1乃至16
の何れか一項
に記載の方法。
【請求項18】
前記契約から導出されるサブ契約を生成するステップを更に有し、
前記サブ契約は、決定的アドレスに関連し、
シードを用いて導出される新たな公開鍵を利用するステップと、
前記契約に対するリファレンスと共に前記コンピュータベースレポジトリに前記サブ契約を格納するステップと、
前記契約に対するリファレンスを含むサブ契約トランザクションを前記ピア・ツー・ピア分散型台帳にブロードキャストするステップと、
前記契約に関連する前記メタデータに前記サブ契約に対するリファレンスを追加するステップと、
を実行することによって生成される、請求項1乃至17
の何れか一項
に記載の方法。
【請求項19】
前記第1ユーザと前記第2ユーザとの間の前記ライセンスは、
コンピュータソフトウェアと、
音楽、ビデオ及び電子書籍を含むデジタルメディアと、
の1つ以上に関する、請求項1乃至18
の何れか一項
に記載の方法。
【請求項20】
前記ピア・ツー・ピア分散型台帳は、ブロックチェーンである、請求項1乃至19
の何れか一項
に記載の方法。
【請求項21】
仮想通貨は、ビットコインである、請求項1乃至20
の何れか一項
に記載の方法。
【請求項22】
請求項1乃至21
の何れか一項
に記載の方法を処理デバイスに実現させるマシーン可読命令を有するコンピュータソフトウェアプログラム。
【請求項23】
契約の実行を制御するコンピュータシステムであって、
処理デバイスを有し、
前記処理デバイスは、コンピュータベースレポジトリに契約を格納
するように構成され、前記契約は第1ユーザと第2ユーザとの間のライセンスに関連し、
前記コンピュータベースレポジトリは分散ハッシュテーブルであり、
前記処理デバイスは、通信ネットワークを介しエージェントから前記第1ユーザ又は前記第2ユーザへのトークンの移動を含むトランザクションを受信
するように構成され、前記トランザクションは、前記契約が格納されている場所を示す識別子を含むメタデータを含み、
前記処理デバイスは、前記トランザクションが少なくとも1つの未使用出力
(UTXO)を含むか判断するため、ピア・ツー・ピア分散型台帳を照会
するように構成され、前記UTXOは、前記契約の形式的な詳細を含むオフチェーン・リポジトリに対するポインタ又はリファレンスを含み、
前記処理デバイスは、前記ピア・ツー・ピア分散型台帳を照会したことに応答して、前記契約の実行を修正するか判断す
るよう
に構成され
ている、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータソフトウェアをセキュアにし、分散ハッシュテーブル及びピア・ツー・ピア分散型台帳を利用してコンピュータソフトウェアへのアクセスを許可する方法に関する。
【背景技術】
【0002】
本文献では、全ての形式の電子的なコンピュータベースの分散型台帳を含むよう“ブロックチェーン”という用語を使用する。これらは、コンセンサスベースブロックチェーン及びトランザクションチェーン技術、許可型及び非許可型台帳、共有台帳及びこれらの変形を含む。他のブロックチェーン実現形態が提案及び開発されてきたが、ブロックチェーン技術の最も広く知られている用途は、ビットコイン台帳である。便宜上及び説明のため、ビットコインがここでは参照されるかもしれないが、本発明はビットコインブロックチェーンによる利用に限定されず、他のブロックチェーン実現形態及びプロトコルが本発明の範囲内に属することが留意されるべきである。“ユーザ”という用語は、ここでは人間又はプロセッサベースリソースを表しうる。
【0003】
ブロックチェーンは、トランザクションから構成されるブロックから構成されたコンピュータベースの非中央化された分散システムとして実現されるピア・ツー・ピア電子台帳である。各トランザクションは、ブロックチェーンシステムにおける参加者間のデジタルアセットの制御の移動を符号化し、少なくとも1つの入力と少なくとも1つの出力とを含むデータ構造である。各ブロックは、開始以来ブロックチェーンに書き込まれてきた全てのトランザクションの永続的で変更不可なレコードを作成するために一緒にチェーン化されたブロックに対する前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含み、それらは、トランザクションの出力が誰によってどのようにしてアクセス可能であるかを指定する。ビットコインプラットフォーム上では、これらのスクリプトは、スタックベーススクリプト言語を利用して記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるため、それは“検証(validated)”される必要がある。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒絶されることによって、各トランザクションが有効であることを保証するための作業を実行する。ノード上にインストールされたソフトウェアクライアントは、それのロック及びアンロックスクリプトを実行することによって、未使用トランザクション(UTXO)に対して当該検証作業を実行する。ロック及びアンロックスクリプトの実行がTRUEと評価された場合、トランザクションは有効であり、当該トランザクションはブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるため、それは、i)トランザクションを受信した第1のノードによって検証される必要があり、トランザクションが検証された場合、ノードはそれをネットワークにおけるその他のノードに中継し、ii)マイナーによって構築された新たなブロックに追加され、iii)マイニングされる、すなわち、過去のトランザクションのパブリック台帳に加えられる必要がある。
【0005】
ブロックチェーン技術は仮想通貨の実現形態の利用について最も広く知られているが、デジタル起業家は、新たなシステムを実現するため、ビットコインが基づく暗号化セキュリティシステムとブロックチェーン上に格納可能なデータとの双方の利用を探求し始めた。ブロックチェーンが仮想通貨の領域に限定されない自動化タスク及びプロセスに利用可能である場合、それは大変効果的であろう。そのような解決策は、それらの用途においてより多用途にしながら、ブロックチェーンの利点(例えば、永続的で改ざん耐性なイベントの記録、分散処理など)を利用することが可能であろう。
【0006】
現在の研究の1つのエリアは、“スマートコントラクト(smart contract)”の実現のためのブロックチェーンの利用である。これらは、契約又は合意などの機械可読な文書の取り決めの実行を自動化するよう設計されたコンピュータプログラムである。自然言語で記述される従来の契約とは異なり、スマートコントラクトは、結果を生じさせるために入力を処理可能なルールを含み、これらの結果に応じてアクションを実行させる機械実行可能なプログラムである。
【0007】
ブロックチェーン関連の興味の他のエリアは、ブロックチェーンを介し現実世界のエンティティを表現及び異動するための“トークン”(又は“カラーコイン”)の利用である。潜在的に機密又は秘密のアイテムは、識別可能な意味又は値を有さないトークンによって表すことができる。従って、トークンは、現実世界のアイテムがブロックチェーンから参照可能にする識別子として機能する。
【0008】
技術研究のこれらのエリアは、例えば、ソフトウェアなどのデジタルアセットの制御に関する効果に適用されうる。コンピュータソフトウェアの完全性及び共有をセキュアにする従来のアプローチは、コンピュータソフトウェアの実行可能ファイルのデジタル署名を伴う。例えば、公開鍵及び秘密鍵などの暗号鍵ペアによって実行可能ファイル又は他の関連するコードを署名する。公開鍵はしばしば、認証機関などの信頼される中央機関から取得される。
【0009】
コンピュータソフトウェアはしばしば、契約上の義務を含むライセンスを伴う。ライセンスは、ソフトウェアの使用又は再配布を規定する取り決めを含みうる。コンピュータソフトウェア又は関連するライセンスが他のユーザに不当に転送される問題が生じうる。
【0010】
本明細書に含まれる文献、行為、物質、デバイス、物などの何れの議論も、これらの題材の何れか又は全てが先行技術の基礎の一部を構成するか、あるいは、本出願の各請求項の優先日前に存在するかのような本開示に関連する分野における共通の一般的知識であったという自認としてとられるべきでない。
【0011】
本明細書を通じて、“有する”という単語又は派生語は、他の何れかの要素、整数若しくはステップ又は要素、整数若しくはステップの群の排除でなく、記載された要素、整数若しくはステップ又は要素、整数若しくはステップの群の包含を意味すると理解される。
【発明の概要】
【0012】
本発明は、コンピュータにより実現される制御方法を含みうる。それは、コンピュータにより実行される処理の実行を制御するよう構成されうる。当該処理は、契約によって指定されうる。契約は、マシーン実行可能ドキュメントであるスマートコントラクトであってもよい。“ユーザ”という用語は、ここでは人間のユーザ又はマシーン(コンピュータ)を参照するのに利用されうる。さらに又はあるいは、本発明は、セキュリティ手段(方法/システム)を提供するとして説明されうる。それは、制御されたリソース又はデジタルアセットのインテグリティを保存するよう構成されうる。それは、制御されたリソース又はデジタルアセットの移動を制御するよう構成されうる。リソース又はアセットはソフトウェアであってもよい。
【0013】
当該方法は、
コンピュータベースレポジトリに(スマート)契約を格納するステップであって、契約は第1ユーザ(U1)と第2ユーザ(U2)とに関連する、格納するステップと、
少なくとも1つの出力を含み、通信ネットワークを介しエージェント又は第1コンピュータ(A)から第1ユーザ(U1)又は第2ユーザ(U2)(第2ユーザは第2コンピュータである)に移動されるトークンを含むブロックチェーントランザクションを受信するステップであって、トランザクションは、契約が格納されている場所を示す識別子を含むメタデータを含む、受信するステップと、
トランザクションが少なくとも1つの未使用出力(UTXO)を含むか判断するため、ピア・ツー・ピア分散型台帳を照会するステップと、
ピア・ツー・ピア分散型台帳を照会したことに応答して、契約の実行を修正するか判断するステップと、
を有してもよい。
【0014】
未使用出力(UTXO)は、契約の表現を有してもよい。ピア・ツー・ピア分散型台帳を照会するステップは、トランザクションが契約を表す少なくとも1つの未使用出力(UTXO)を含むか判断するため、ピア・ツー・ピア分散型台帳(ブロックチェーン)をスキャンするステップを含んでもよい。契約は、第1ユーザと第2ユーザとの間のライセンスに関連してもよい。
【0015】
トランザクションは更に、決定的なリディームスクリプトアドレスを含んでもよい。リディームスクリプトアドレスは、ペイ・ツー・スクリプト・ハッシュ(P2SH)アドレスであってもよい。従って、契約の存在は、契約の発行者及び/又は契約のメタデータによって決定又は提供されうるペイ・ツー・スクリプト・ハッシュアドレスを利用して、ピア・ツー・ピア分散型台帳(例えば、ブロックチェーン)に公開されたトランザクションを利用して公的に利用可能とされてもよい。
【0016】
判断するステップは、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定不可である場合、契約を終了するステップ、又は、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定される場合、契約を維持するステップを有してもよい。
【0017】
契約を終了するステップは、少なくとも1つの未使用出力(UTXO)を使用するため、更なるトランザクションをブロードキャストするステップを含んでもよい。さらに、更なるトランザクションをブロードキャストするステップにおいて、更なるトランザクションは、指定されたデータ及び/又は時間において少なくとも1つの未使用出力(UTXO)を使用する命令を含んでもよい。例えば、命令はCheckLockTimeVerify命令であってもよい。
【0018】
更なるトランザクションは、少なくとも1つの未使用出力(UTXO)である入力と、シグネチャ、メタデータ、エージェントに関連するエージェント公開鍵(PA)及び第1ユーザ(U1)に関連する第1ユーザ公開鍵(PU1)を含むリディームスクリプトとを含んでもよい。これは、ピア・ツー・ピア分散型台帳上の未使用出力(UTXO)を使用するためのトランザクションを実現することによって、契約及び従ってライセンスの自動終了の利点を提供する。
【0019】
契約は、第1ユーザ(U1)と第2ユーザ(U2)との間のライセンスの処理に関する少なくとも1つの条件と、実行が条件の評価に依存する少なくとも1つのアクションとを定義してもよい。条件は、真又は偽と評価可能なテストであってもよい。条件は契約の一部(例えば、条項)であってもよい。条件の完了又は実行は、契約の実行のため必要されうる。条件は、それが信徒評価された場合、完了されうる。
【0020】
メタデータは、契約がコンピュータベースレポジトリに格納されているアドレスのアドレス又は表現、及び/又は契約のハッシュを含んでもよい。
【0021】
ピア・ツー・ピア分散型台帳を照会するステップは更に、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳の未使用トランザクション出力のリストに存在するか判断することによって、契約が終了したかチェックするステップを含んでもよい。
【0022】
コンピュータベースレポジトリは、サーバであってもよいし、あるいは含んでもよい。レポジトリは、コンピュータベースリソース上に設けられるデータベース又はストレージ施設であってもよい。レポジトリは、インデックス付けされ、検索が可能とされてもよい。レポジトリは、分散ハッシュテーブル(DHT)を有してもよい。契約は、DHT内又は関連付けして格納されてもよい。
【0023】
契約は、契約を実現する決定的有限オートマトン(DFA)を含んでもよい。さらに、決定的有限オートマトン(DFA)は、コード化方式を利用して定義されてもよい。
【0024】
当該方法は更に、契約に関連する前の鍵に関するサブ鍵を生成するステップと、サブ鍵、契約の場所及び契約のハッシュを含む更なるリディームスクリプトを生成するステップと、更なるリディームスクリプトにある量の仮想通貨を支払うステップと、を実行することによって、契約を更新するステップを有してもよい。
【0025】
当該方法は更に、契約から導出されるサブ契約を生成するステップを更に有してもよく、サブ契約は、決定的アドレスに関連し、シードを用いて導出される新たな公開鍵を利用するステップと、契約に対するリファレンスと共にコンピュータベースレポジトリにサブ契約を格納するステップと、契約に対するリファレンスを含むサブ契約トランザクションをピア・ツー・ピア分散型台帳にブロードキャストするステップと、契約に関連するメタデータにサブ契約に対するリファレンスを追加するステップと、を実行することによって生成される。
【0026】
第1ユーザ(U1)と第2ユーザ(U2)との間のライセンスは、コンピュータソフトウェアと、音楽、ビデオ及び電子書籍を含むデジタルメディアとの1つ以上に関するものであってもよい。
【0027】
ピア・ツー・ピア分散型台帳は、ブロックチェーンであってもよい。さらに、仮想通貨は、ビットコインであってもよい。
【0028】
本発明はまた、上述した発明の何れかの実施例を実行するよう構成されるコンピュータにより実現されるシステムを含んでもよい。
【0029】
上述した方法を処理デバイスに実現させるマシーン可読命令を有するコンピュータソフトウェアプログラム。
【0030】
本発明は、上述した方法の何れかの実施例に対応するコンピュータシステムを含みうる。当該方法は、(スマート)契約において定義されるようなコンピュータにより実現される処理の実行を制御するよう構成されうる。当該システムは、コンピュータベースレポジトリに契約を格納し、契約は第1ユーザ(U1)と第2ユーザ(U2)との間のライセンスに関連してもよく、
少なくとも1つの出力を含み、通信ネットワークを介しエージェント(A)(例えば、第1コンピュータ)から第2コンピュータ(第1ユーザ(U1)又は第2ユーザ(U2)であってもよい)に移動されるトークンの移動を含むブロックチェーントランザクションを受信し、トランザクションは、契約が格納されている場所を示す識別子を含むメタデータを含み、
トランザクションが少なくとも1つの未使用出力(UTXO)を含むか判断するため、ピア・ツー・ピア分散型台帳を照会し、
ピア・ツー・ピア分散型台帳を照会したことに応答して、契約の実行を修正するか判断するよう構成される処理デバイスを有してもよい。
【0031】
未使用出力(UTXO)は、契約の表現を含んでもよい。ピア・ツー・ピア分散型台帳(ブロックチェーン)を照会することは、トランザクションが契約を表現する少なくとも1つの未使用出力(UTXO)を有するか判断するため、ピア・ツー・ピア分散型台帳をスキャンすることを含んでもよい。
【0032】
一態様又は実施例に関して上述した何れかの特徴はまた、他の何れかの態様又は実施例と共に利用されてもよい。本発明のシステムに関して説明される何れかの特徴は、対応する方法に適用可能であってもよい。
【図面の簡単な説明】
【0033】
【
図2】分散ハッシュテーブルを利用してコンピュータソフトウェアをセキュアにするメタデータ(M)を決定する一例となるシステムの概略図を示す。
【
図3】分散ハッシュテーブルを利用してコンピュータソフトウェアをセキュアにするメタデータ(M)を決定するコンピュータにより実現される方法のフローチャートを示す。
【
図5】コンピュータソフトウェア及びコンピュータソフトウェアに関連するライセンスを参照してMerkleツリーの具体例を示す。
【
図6】分散ハッシュテーブルを利用してコンピュータソフトウェアの位置を示す識別子を決定するコンピュータにより実現される方法のフローチャートを示す。
【
図8】分散ハッシュテーブル及びピア・ツー・ピア分散型台帳を利用して契約の実行を制御するコンピュータにより実現される方法のフローチャートを示す。
【発明を実施するための形態】
【0034】
本開示は、一般にビットコインブロックチェーンなどのピア・ツー・ピア(P2P)分散型台帳(ブロックチェーン)及び分散ハッシュテーブルを利用して、コンピュータソフトウェアへのアクセスをセキュア及び許可することを可能にする方法及びシステムに関する。
【0035】
以下に説明される実施例は、具体的にはビットコインブロックチェーン(ここでは、ブロックチェーンとして参照される)上で行われるトランザクションを参照しうるが、本発明は、他のP2P分散型台帳を利用して実現されうる。ブロックチェーンは、それのハイレベルな標準化及び大量の関連する公開文献のため、簡単化のみのため本発明の態様を説明するのに以下で用いられる。
[分散ハッシュテーブル]
典型的なクライアント/サーバモデルでは、中央サーバは、リソースの大多数を担当しうる。これは、中央サーバに対する攻撃又は故障があると、中央サーバに格納されているリソースの大多数は危険にさらされうることを意味する。逆に、分散型モデルが、リソースは参加ノード間に共有(“分散”)される。このようにして、全ての参加ノードの容量が利用され、1つのサーバの故障はリソースの大多数を危険にさらさない。
【0036】
図1は、ハッシュテーブルの具体例を示す。ハッシュテーブルは、鍵-値のペアから構成される。各鍵-値のペアの鍵は、ハッシュ関数によってインデックスにマッピングされる。インデックスは、鍵-値のペアの格納されている値の位置を規定する。
【0037】
DHTは、分散型モデルをハッシュテーブルに適用した具体例である。ハッシュテーブルと同様に、DHTは鍵-値のペアを有し、鍵が与えられると、鍵-値のペアの値を特定(“ルックアップ”)する効率的な方法を提供する。しかしながら、ハッシュテーブルと対称的に、鍵-値のペアは分散され、いくつかの参加ノードによって格納される。このようにして、鍵-値のペアを格納及び維持する責任は参加ノードによって共有される。
【0038】
ハッシュテーブルと同様に、DHTにおける各鍵-値のペアはインデックスにマッピングされる。インデックスは、鍵に対してハッシュ関数を実行することによって、各鍵-値のペアに対して決定される。例えば、暗号化セキュアハッシュアルゴリズムSHA-1が、インデックスを決定するのに利用されてもよい。
【0039】
各参加ノードには、鍵空間のパーティションによって少なくとも1つのインデックスが割り当てられる。参加ノードに割り当てられる各インデックスに対して、参加ノードは当該鍵-値のペアの値を格納する。
【0040】
鍵-値のペアの値が効率的に抽出されうることが効果である。鍵に関連する値を抽出するため、ノードは、“ルックアップ”を実行して、責任ノード(インデックスを介し)を決定してもよい。責任ノードは、それから値を決定するためアクセスされうる。
[ビットコイン及びブロックチェーン]
当該分野において周知なように、ブロックチェーンは、記憶容量がビットコインプロトコルに基づきシステムに参加するネットワーク接続されたノード間に分散されるデータベースのトランザクションタイプ台帳である。各ビットコイントランザクションはネットワークにブロードキャストされ、トランザクションが承認され、その後にブロックにアグリゲートされる。その後、ブロックは、複数の参加ノードにブロックを格納することによってブロックチェーン上に含まれる。
【0041】
仮想通貨のP2P分散型台帳の完全なコピーは、仮想通貨においてこれまでに実行された全てのトランザクションを含む。従って、トランザクションのデータレコードの継続的に拡大するリストが提供される。ブロックチェーンに入れられる各トランザクションは暗号化が実施されるため、ブロックチェーンは、参加ノードのオペレータによってさえ、改ざん及び変更が困難である。
【0042】
ブロックチェーンの透過性のため、各トランザクションに対して履歴が公開利用可能である。
【0043】
トランザクション及びトランザクションのレコードが同じであることがブロックチェーンの更なる効果である。
【0044】
このようにして、トランザクションに関する情報が実際のトランザクションにおいてキャプチャされる。このレコードは、永続的であって不変であり、従って、第三者がトランザクションレコードを別のデータベースに保持するための要求を取り除く。
[ペイ・ツー・スクリプト・ハッシュ及びマルチシグネチャ]
以下の実施例は、具体的にはビットコインプロトコルのペイ・ツー・スクリプト・ハッシュ(P2SH)法を利用するトランザクションを参照しうるが、本発明は、ペイ・ツー・パブリック・キー・ハッシュ法などのビットコインプロトコルの他の方法を利用して実現されてもよい。
【0045】
ブロックチェーン上の各トランザクションレコードは、トランザクションを示す情報を含むスクリプト及びいくつかの公開鍵を有する。これらの公開鍵は、仮想通貨の送り手及び受け手に関連付けされてもよい。スクリプトは、ユーザがトランザクションレコードに指定される仮想通貨へのアクセスをどのように取得可能かを記述するブロックチェーン上の各トランザクションレコードと共に記録される命令のリストとしてみなすことができる。スクリプトはまた、例えば、要求されるシグネチャなど、仮想通貨にアクセスするための要求を記述しうる。
【0046】
背景として、ビットコインプロトコルの標準的なP2SH法において、出力スクリプト、すなわち、リディーム(redeem)スクリプトは、
<NumSigs PubK1 PubK2...PubK15 NumKeys OP_CHECKMULTISIG>
の形態をとりうる。
【0047】
ただし、NumSigsはトランザクションをアンロックするためにリディームスクリプトを充足するのに必要とされる有効なシグネチャの数“m”であり、PubK1 PubK2...PubK15はトランザクションをアンロックするシグネチャに対応する公開鍵であり(最大で15個までの公開鍵)、NumKeysは公開鍵の数“n”である。
【0048】
ビットコインプロトコルでは、ユーザの秘密鍵に基づくシグネチャが、楕円曲線デジタルシグネチャアルゴリズムを利用して生成されてもよい。それから、シグネチャは、出力スクリプト又はリディームスクリプトに関連する仮想通貨の償還(redemption)に利用される。ユーザが出力スクリプト又はリディームスクリプトを償還するとき、ユーザは、シグネチャ及び公開鍵を提供する。出力スクリプト又はリディームスクリプトは、それから公開鍵に対してシグネチャを検証する。
【0049】
上記のリディームスクリプトを償還するため、公開鍵に対応するシグネチャの数“m”が少なくとも必要とされる。いくつかの具体例では、公開鍵の順序が重要であり、署名のための“n”個のシグネチャからの数“m”が順番に実行される必要がある。例えば、“m”は2であり、“n”は15である場合を考える。利用可能な2つのシグネチャSig1(PubK1に対応する)及びSig15(PubK15に対応する)がある場合、リディームスクリプトはまずSig1によって署名され、その後にSig15によって署名される必要がある。
[システムの概略]
図2は、通信ネットワーク5を介し第2ノード7と通信する第1ノード3を含むシステム1を示す。第1ノード3は関連する第1処理デバイス21を有し、第2ノード5は関連する第2処理デバイス27を有する。第1ノード3及び第2ノード7の具体例は、コンピュータ、タブレットコンピュータ、モバイル通信デバイス、コンピュータサーバなどの電子デバイスを含む。
【0050】
図2において、鍵-値のペアを記録及び格納するためのDHT13がまた示される。DHT13は、鍵-値のペアの値を受信、記録及び格納するため、1つ以上の処理デバイス19に関連付けされてもよい。処理デバイス19は、DHT13の“参加ノード”によって利用されてもよい。上述されたように、DHT13は、鍵-値のペアの値を特定するための効率的な方法を提供する。
【0051】
図2はまた、トランザクションを記録するためのP2P分散型台帳14を示す。P2P分散型台帳14は、トランザクションを受信及び記録するため、1つ以上の処理デバイス20に関連付けされてもよい。上述したように、P2P分散型台帳14の具体例はビットコインブロックチェーンである。従って、ブロックチェーンに関して、P2P分散型台帳14に関連する処理デバイス20は、“マイナー”として参照される処理デバイスであってもよい。
【0052】
第1ノード3は第1ユーザ23に関連付けされ、第2ノード7は第2ユーザ24に関連付けされる。一例では、第1ノード3はコンピュータソフトウェアのベンダを表してもよい。他の例では、第1ノード3はエージェント又はサービスプロバイダを表してもよい。更なる他の例では、第1ノード3はコンピュータソフトウェアのユーザを表してもよい。
【0053】
同様に、第2ノード7はエージェント、サービスプロバイダ、コンピュータソフトウェアのベンダ又はコンピュータソフトウェアのユーザを表してもよい。
【0054】
一例では、第1ノード3は、
図3及び6に指名されるような方法100,500を実行する。他の例では、第2ノード7は、方法100,500を実行する。以下の実施例がこれらの方法を実行するとして第1ノード3を参照しうるが、本開示はまた他のノードによって実行されるよう適応化又は修正されてもよいことが理解されるべきである。
【0055】
図3に示されるような方法100は、コンピュータソフトウェアに関連するデータ(D1)を決定すること(110)を含む。データ(D1)は更に、コンピュータソフトウェアに関連するライセンスを有してもよい。方法100はまた、コンピュータソフトウェアに基づき第1のハッシュ値(H1)を決定すること(120)を含む。一例では、第1のハッシュ値(H1)は、コンピュータソフトウェアの実行可能ファイルに関するものであってもよい。
【0056】
方法100はまた、データ(D1)及びコンピュータソフトウェアに基づき第2のハッシュ値(H2)を決定すること(130)を含む。一例では、第2のハッシュ値(H2)は、コンピュータソフトウェアの詳細及びコンピュータソフトウェアに関連するライセンスを表してもよい。更なる例では、第2のハッシュ値(H2)は、付加情報を有してもよい。
【0057】
方法100は更に、通信ネットワーク5を介しデータ(D1)、第1のハッシュ値(H1)及び第2のハッシュ値(H2)を分散ハッシュテーブル13上のエントリに送信すること(140)を含み、ここで、第2のハッシュ値(H2)は鍵-値のペアの鍵に割り当てられ、データ(D1)及び第1のハッシュ値(H1)は鍵-値のペアにおける値に割り当てられる。鍵-値のペアにおける値は更に、コンピュータソフトウェア又はライセンスの位置を示す識別子を含んでもよい。
【0058】
方法100はまた、ピア・ツー・ピア分散型台帳14に含めるための第2のハッシュ値(H2)に基づくメタデータ(M)を決定すること(150)を含む。一例では、メタデータ(M)は、ピア・ツー・ピア分散型台帳14に含めるための第1のリディームスクリプト(RS1)に含まれてもよい。
[コンピュータソフトウェアに関連するデータの決定(110)]
上述したように、方法100は、コンピュータソフトウェアに関連するデータ(D1)を決定すること(110)を含む。データ(D1)の決定(110)は、ユーザ、ノード又はデータストアからデータ(D1)を受信することを含んでもよい。データ(D1)の決定(110)は更に、第1ノード3においてデータ(D1)を生成することを含んでもよい。
【0059】
一例では、第1ノード3は、ユーザインタフェース15を介し第1ユーザ23からデータ(D1)を受信してもよい。他の例では、第1ノード3は、第2ユーザ24からデータ(D1)を受信してもよい。更なる他の例では、第1ノード3は、データストア17からデータ(D1)を受信してもよい。
【0060】
データ(D1)は、コンピュータソフトウェアに関連付けされ、データ(D1)は、コンピュータソフトウェア、付加情報、コンピュータソフトウェアのライセンス又はコンピュータソフトウェアの位置を特定しうる。例えば、データ(D1)は、コンピュータソフトウェアを特定する文字列又はデータ構造を有してもよい。文字列又はデータ構造は、コンピュータソフトウェアに関するキーワード及び/又は付加情報を特定する集まりを有してもよい。付加情報の具体例は、コンピュータソフトウェアのバージョンの識別子であってもよい。例えば、コンピュータソフトウェアがBobSoftwareという名前であって、バージョンが3.0である場合、文字列又はデータ構造(D1)は“BobSoftware/3.0”を含んでもよい。
【0061】
更なる例では、データ(D1)は、コンピュータソフトウェアに関連するライセンスの識別子を有してもよい。これは、ソフトウェアライセンス識別番号(ID)又はソフトウェアライセンスキーであってもよい。他の例では、ライセンスの識別子は、ライセンスのコンテンツの暗号化ハッシュを含んでもよい。
【0062】
データ(D1)は更に、コンピュータソフトウェアの格納位置を示す識別子を有してもよい。一例では、識別子はインターネット上のオブジェクトのURLを有してもよい。更なる例では、ハッシュテーブル又は分散ハッシュテーブルなどのレポジトリ上のコンピュータソフトウェアの格納位置に対するリンクが提供されてもよい。
【0063】
更なる他の例では、データ(D1)は、コンピュータソフトウェアのベンダを特定する情報を含んでもよい。これは、ベンダに関連する名前、アドレス、連絡先の詳細又は公開鍵などのパーソナル詳細を含んでもよい。
[コンピュータソフトウェアに基づく第1のハッシュ値(H1)の決定(120)]
上述したように、方法100は更に、コンピュータソフトウェアの第1のハッシュ値(H1)を決定すること(120)を含む。第1のハッシュ値(H1)の決定(120)は、ユーザから第1のハッシュ値(H1)を受信するか、あるいは、データストアから第1のハッシュ値(H1)にアクセスすることを含んでもよい。第1のハッシュ値(H1)の決定(120)は更に、第1ノード3においてハッシュ値を計算することを含んでもよい。
【0064】
一例では、第1ノード3は、ユーザインタフェース15を介し第1ユーザ23から第1のハッシュ値(H1)を受信してもよい。他の例では、第1ノード3は、第2ユーザ24から第1のハッシュ値(H1)を受信してもよい。更なる他の例では、第1ノード3は、ローカルデータストア17又はリモートデータストアから第1のハッシュ値(H1)にアクセスしてもよい。
【0065】
一例では、第1のハッシュ値(H1)は、コンピュータソフトウェアの実行可能ファイルのものである。コンピュータソフトウェアの実行可能ファイルは、インターネットなどの通信ネットワーク5から抽出されてもよい。他の例では、実行可能ファイルは、第1ユーザ23又は第2ユーザ24によって提供されてもよい。更なる他の例では、実行可能ファイルはデータストア17から抽出されてもよい。更なる他の例では、実行可能ファイルは、ハッシュテーブル又はDHTなどのレポジトリから抽出可能であってもよい。
【0066】
ソフトウェアの実行可能ファイルのハッシュは、情報の256ビット表現を生成するため、SHA-256アルゴリズムを利用して決定されてもよい。セキュアハッシュアルゴリズム(SHA)ファミリにおける他のアルゴリズムを含むハッシュアルゴリズムが利用されてもよいことが理解されるべきである。いくつかの特定の具体例は、SHA3-224,SHA3-256,SHA3-384,SHA3-512,SHAKE128,SHAKE256を含むSHA-3サブセットにおけるインスタンスを含む。他のハッシュアルゴリズムは、RACE Integrity Primitives Evaluation Message Digest(RIPEMD)ファミリにおけるものを含んでもよい。特定の具体例は、RIPEMD-160を含んでもよい。他のハッシュ関数は、Zemor-Tillichハッシュ関数及びナップザックベースハッシュ関数に基づくファミリを含んでもよい。
[データ(D1)及びコンピュータソフトウェアに基づく第2のハッシュ値(H2)の決定(130)]
方法100はまた、データ(D1)及びコンピュータソフトウェアに基づき第2のハッシュ値(H2)を決定すること(130)を含む。
【0067】
一例では、第2のハッシュ値(H2)は、データ(D1)及びコンピュータソフトウェアの実行可能ファイル(又は実行可能ファイルのハッシュ、すなわち、第1のハッシュ値(H1))の連接のハッシュに基づき決定されてもよい。更なる例では、第2のハッシュ値(H2)は、データ(D1)、コンピュータソフトウェアの実行可能ファイル(又は実行可能ファイルのハッシュ)及び付加情報の連接のハッシュに基づき決定されてもよい。
【0068】
付加情報は、第1ユーザ23(PU1)又は第2ユーザ24(PU2)の公開鍵を有してもよい。更なる例では、付加情報は、第1ユーザ23又は第2ユーザ24に関連するエンティティの識別子を含んでもよい。例えば、エンティティは、第1ユーザ23又は第2ユーザ24の雇用主であってもよい。他の例では、エンティティは、第1ユーザ23又は第2ユーザ24のサービスプロバイダであってもよい。
【0069】
付加情報は更に、第1ノード3、第2ノード7、第1ユーザ23又は第2ユーザ24に関連するデバイスのデバイス識別子を含んでもよい。デバイスの具体例は、
図2に示されるような第1処理デバイス21である。デバイス識別子は、MACアドレス、マザーボードシリアルナンバー又はデバイス識別番号の少なくとも1つを含んでもよい。デバイス識別子は更に、MACアドレス、マザーボードシリアルナンバー又はデバイス識別番号の少なくとも2つの連接であってもよい。更なる例では、デバイス識別子は、MACアドレス、マザーボードシリアルナンバー、デバイス識別番号又は上述した連接に関連するハッシュ値を含んでもよい。
【0070】
更なる例では、付加情報は、コンピュータソフトウェアに関連するライセンスの有効期限を含んでもよい。
[コンピュータソフトウェアに関連する契約(例えば、ライセンス)]
更なる例では、第2のハッシュ値(H2)は、データ(D1)、コンピュータソフトウェアの実行可能ファイル(又は実行可能ファイルのハッシュ値)、付加情報又はコンピュータソフトウェアに関連する契約(例えば、ライセンス)の連接に基づき決定されてもよい。
【0071】
契約(例えば、ライセンス)の表現は、ライセンスのコンテンツを指定するファイル又はドキュメントであってもよい。例えば、プレインASCIIテキスト、PDFドキュメント又はWordドキュメントである。第2のハッシュ値(H2)は、それの当初の形式におけるライセンスを含んでもよいし、あるいは、例えば、それは、インターネットなどの公衆にアクセス可能な通信ネットワークにおけるライセンスの位置に対するリンクを提供してもよい。更なる例では、ハッシュテーブル又はDHTなどのレポジトリ上のライセンスの位置に対するリンクが提供されてもよい。更なる例では、データストア17などのコンピュータベースリスース上のライセンスの位置に対するリンクが提供されてもよい。
【0072】
一例では、ライセンスは、コンピュータソフトウェアに関連する第1のハッシュ値(H1)を含んでもよい。
【0073】
コンピュータソフトウェアに関連するライセンスは更に、上述したような付加情報を含んでもよい。一例では、ライセンスは、第1ユーザ23又は第2ユーザ24に関連してもよい。ライセンスは、第1ユーザ23(PU1)又は第2ユーザ24(PU2)の公開鍵を含んでもよい。更なる例では、ライセンスは、第1ユーザ23又は第2ユーザ24に関連するエンティティの識別子を含んでもよい。
【0074】
コンピュータソフトウェアに関連するライセンスは更に、第1ノード3、第2ノード7、第1ユーザ23又は第2ユーザ24に関連するデバイスのデバイス識別子を含んでもよい。デバイスの具体例は、
図2に示されるような第1処理デバイス21である。デバイス識別子は、MACアドレス、マザーボードシリアルナンバー又はデバイス識別番号の少なくとも1つを含んでもよい。デバイス識別子は更に、MACアドレス、マザーボードシリアルナンバー又はデバイス識別番号の少なくとも2つの連接であってもよい。更なる例では、デバイス識別子は、MACアドレス、マザーボードシリアルナンバー、デバイス識別番号又は上述した連接に関連するハッシュ値を含んでもよい。
【0075】
第1ユーザ23はコンピュータソフトウェアのベンダであってもよいし、第2ユーザ24はコンピュータソフトウェアの受信者(“エンドユーザ”)であってもよい。他の例では、第2ユーザ23はコンピュータソフトウェアのベンダであってもよいし、第2ユーザ24はコンピュータソフトウェアのエンドユーザであってもよい。
【0076】
一例では、コンピュータソフトに関連するライセンスは、1つのみのエンドユーザ(“シングルユーザライセンス”)を許可してもよい。更なる例では、コンピュータソフトウェアに関連するライセンスは、エンドユーザの1つのデバイスを許可してもよい(“シングルデバイスライセンス”)。他の例では、コンピュータソフトウェアに関連するライセンスは、エンドユーザの複数のデバイスを許可してもよい(“マルチデバイスライセンス”)。
【0077】
他の例では、複数のエンドユーザ(“マルチユーザライセンス”)があってもよい。更なる例では、コンピュータソフトウェアに関連するライセンスは、エンドユーザ毎に1つのデバイスを許可してもよい。他の例では、コンピュータソフトウェアに関連するライセンスは、エンドユーザ毎に複数のデバイスを許可してもよい。
【0078】
ライセンスが第1ユーザ23又は第2ユーザ24に関連する場合、ライセンスは、第1ユーザ23に関連する第1ユーザ公開鍵(PU1)及び第2ユーザ24に関連する第2ユーザ公開鍵(PU2)を有してもよい。
[Merkleツリー]
他の例では、ライセンスは、Merkleツリーの先頭のハッシュ値であってもよい。
図4において、Merkleツリーの具体例が示される。Merkleツリーでは、各ノードにおけるハッシュ値は、それら各自の“チャイルド”ノードのハッシュである。例えば、ハッシュ値Hash-A305は、2つの“チャイルド”ノード309,311におけるハッシュ値のハッシュである。Merkleツリーの先頭のハッシュ値であるHash-AB303は、Merkleツリーにおける全てのハッシュ値を有する。すなわち、それは、ツリーのボトムにおける4つの“リーフ”であるA1 317,A2 319,B1 321及びB2 323のハッシュ値をキャプチャする。
【0079】
本開示の例では、Merkleツリーの各“リーフ”はライセンスの情報の側面を表しうる。
図5において、例示的なライセンスが示される。データ(D1)417はハッシュ値Hash-D409においてキャプチャされ、ユーザ23及び/又は24の公開鍵421はハッシュ値Hash-P413においてキャプチャされ、有効期限423はハッシュ値Hash-E415においてキャプチャされる。ノード405,407がデータ(D1)417、ソフトウェア419、公開鍵421及び有効期限423のリーフとそれぞれ関連付けされるハッシュ値をキャプチャすることが理解できる。
【0080】
上述されない他の情報はハッシュ値(H2)が基づく付加情報を含みうることが理解されるべきである。
[分散ハッシュテーブルへのデータ(D1)、第1ハッシュ値(H1)及び第2ハッシュ値(H2)の送信(140)]
方法100はまた、通信ネットワーク5を介し分散ハッシュテーブル13上のエントリにデータ(D1)、第1ハッシュ値(H1)及び第2ハッシュ値(H2)を送信すること(140)を含む。
【0081】
一例では、第2ハッシュ値(H2)は、鍵-値のペアの鍵であってもよく、データ(D1)及び第1ハッシュ値(H1)は、鍵-値のペアの値であってもよい。
【0082】
更なる例では、上述したような付加情報はまた、鍵-値のペアにおける値の一部であってもよい。これは、限定することなく、第1ユーザ23若しくは第2ユーザ24の公開鍵、第1ノード3、第2ノード7、第1ユーザ23若しくは第2ユーザ24に関連するデバイスのデバイス識別子、コンピュータソフトウェア若しくはライセンスの位置を示す識別子又はライセンスに関連する更なる付加情報を含む。
【0083】
上述したように、DHT13は鍵-値のペアから構成され、各鍵-値のペアはインデックスに割り当てられる。一例では、第2ハッシュ値(H2)は、インデックスを生成するのに利用されてもよい。ハッシュ関数又は暗号化ハッシュ関数は、第2ハッシュ値(H2)に対して実行されてもよい。例えば、暗号化関数SHA-1が利用されてもよい。
【0084】
Index=SHA-1(H2)
第2のハッシュ値(H2)がDHT13における鍵-値のペアの鍵になって、データ(D1)及び第1のハッシュ値(H1)が鍵-値のペアの値になるため、鍵及び値はDHT13の何れかの参加ノードに送信される。
【0085】
一例では、put(key,value)などのメッセージがDHT13の参加ノードに送信されてもよく、ここで、keyは第2のハッシュ値(H2)であり、valueはデータ(D1)及び第1のハッシュ値(H1)である。メッセージは、それが鍵空間のパーティショニングによって示されるようなインデックスに割り当てられる参加ノードによって受信されるまで、全ての参加ノードに送信されてもよい。メッセージにおいて示されたインデックスに割り当てられた参加ノードは、その後、DHT13上に鍵-値のペアを格納し、鍵-値のペアに関連付けされるエントリを維持する責任を想定してもよい。
【0086】
何れか所与の鍵の値がDHT13から抽出されうることは効果である。一例では、第1ユーザ23又は第2ユーザ24は当該値を抽出することを所望しうる。第1ユーザ23又は第2ユーザ24は、第1ノード3、第2ノード7又は図示されない他のノードを介しget(key)などのリクエストメッセージをDHT13の何れかの参加ノードに提供してもよい。その後、リクエストメッセージは、それが鍵空間のパーティショニングによって示されるようなインデックスに割り当てられる参加ノードによって受信されるまで、全ての参加ノードに送信されてもよい。
[メタデータ(M)の決定(150)]
方法100は更に、第2のハッシュ値(H2)を有するメタデータ(M)を決定すること(150)を含む。メタデータ(M)の決定(150)は、ユーザ、ノード又はデータストアからメタデータ(M)を受信することを含んでもよい。メタデータ(M)は、例えば、P2P分散型台帳14上のトランザクションのP2SHマルチシグネチャの第1リディームスクリプト(RS1)における公開鍵に利用可能な15の場所の1つ以上に含まれてもよい。
【0087】
P2P分散型台帳14上のトランザクションの第1リディームスクリプト(RS1)は、メタデータ(M)に含まれるコンテンツを表すトークン化されたトランザクション(“発行トークン”)の発行又は作成を表すものであってもよい。一例では、トークンはエージェント(A)によって発行されてもよい。
【0088】
ビットコインプロトコルのP2SH法では、メタデータは、その内容の全てが参照によって援用される“Universal tokenisation system for blockchain based cryptocurrencies”という名称の共通に所有される英国特許出願番号1603125.4に最初に紹介された方法によってリディームスクリプトに含まれてもよい。リディームスクリプトにメタデータを含める処理がそこに説明されている。しかしながら、当該処理の簡単な要約が以下に与えられる。
[メタデータ]
メタデータ(M)は、P2SHマルチシグネチャリディームスクリプト(RS1)における公開鍵に利用可能な15の場所の1つ以上に埋め込まれてもよい。例えば、リディームスクリプト(RS1)は、
<NumSigs,Metadata1 Metadata2...PubK1 PubK2...NumKeys OP_CHECKMULTISIG>
の形態をとってもよい。ここで、Metadata1及びMetadata2はそれぞれ、リディームスクリプトにおいて公開鍵の場所をとるメタデータを含み、PubK1及びPubK2は公開鍵である。
【0089】
メタデータ(M)は、第2のハッシュ値(H2)を有してもよい。メタデータ(M)は更に、コンピュータソフトウェア又はライセンスに関連する条件を記述する説明又はキーワードを有してもよい。例えば、ライセンスの日付、ライセンスに関連するユーザの名前、誕生日、住所、連絡先又は他の詳細などである。更なる例では、仮想通貨の数量に関連する情報は含まれてもよい。
【0090】
メタデータ(M)は、いくつかの方法で情報を含んでもよい。一例では、情報のコンテンツが含まれてもよい。更なる例では、情報の暗号化ハッシュが含まれてもよい。情報のハッシュは、SHA-256アルゴリズムを利用して情報の256ビット表現を作成して決定されてもよい。セキュアハッシュアルゴリズム(SHA)ファミリの他のアルゴリズムを含む他のハッシュアルゴリズムが利用されてもよいことが理解されるべきである。いくつかの具体例は、SHA3-224,SHA3-256,SHA3-384,SHA3-512,SHAKE128,SHAKE256を含むSHA-3サブセットのインスタンスを含んでもよい。他のハッシュアルゴリズムは、RACE Integrity Primitives Evalution Message Digest(RIPEMD)ファミリにおけるものを含んでもよい。特定の具体例は、RIPEMD-160を含んでもよい。他のハッシュ関数は、Zemor-Tillichハッシュ関数及びナップザックベースハッシュ関数に基づくファミリを含んでもよい。
【0091】
本開示の更なる実施例では、上記の1つ以上を含む組み合わせがメタデータ(M)に含まれてもよい。メタデータ(M)はブロックチェーンなどのP2P分散型台帳14を介し公開されてもよいし、あるいは、非セキュアネットワークを介し送信されてもよいため、メタデータ(M)の具体的詳細がプライバシの理由のため秘密にされるか、あるいは隠されることが望ましい。
【0092】
従って、本開示の実施例におけるマルチシグネチャP2SHビットコイントランザクションの利用は、それがコンピュータソフトウェア及びライセンスに関連する情報の移動及び永続的な記録を可能にするため、効果を提供する。この記録は、例えば、リディームスクリプトなどのトランザクションの出力スクリプトにメタデータを含めることによって実現される。
[第1のリディームスクリプト]
上述したように、リディームスクリプトは、ビットコインプロトコルの標準的なP2SH法における出力スクリプトの具体例であり、ユーザがトランザクションレコードにおいて指定される仮想通貨へのアクセスをどのように取得可能であるかを説明する。
【0093】
本開示では、発行トークンのための第1のリディームスクリプト(RS1)は、メタデータ(M)に基づくものであってもよい。第1のリディームスクリプト(RS1)は更に、エージェントの秘密鍵(VA)により暗号化ペアを構成するエージェントの公開鍵(PA)を有してもよい。このようにして、エージェントの秘密鍵(VA)は、トランザクションに関連する仮想通貨を“アンロック”又は使用することが要求される。
【0094】
一例では、発行トークンのための第1のリディームスクリプト(RS1)は、メタデータ(M)を有してもよい。第1のリディームスクリプト(RS1)は更に、エージェントの公開鍵(PA)を有してもよい。本例では、第1のリディームスクリプトは、
<OP_1 PA Metadata1 Metadata2 OP_3 OP_CHECKMULTISIG>
の形態をとってもよい。ここで、OP_1はトランザクションをアンロックするため第1のリディームスクリプト(RS1)を充足するのに必要とされるシグネチャの数(“NumSigs”)を示し、OP_3はリディームスクリプトにおける公開鍵の数(“NumKeys”)を示す。
【0095】
本例では、第1のリディームスクリプト(RS1)は、メタデータのための2つの指定されたフィールドMetadata1及びMetadata2を有してもよい。以下のテーブル1において、Metadata1及びMetadata2の具体例が示される。
【0096】
【表1】
本例は、有用でありうるMetadata1におけるライセンスに対するポインタを提供することを含み、ライセンスのサイズは、メタデータ(M)にそのような詳細を含めることを妨げる。さらに、メタデータ(M)は公開されてもよいし、あるいは、非セキュアネットワークを介し送信されてもよいため、トークンの具体的詳細がプライバシの理由のために秘密にされるか、あるいは隠されることが望ましいかもしれない。
【0097】
Metadata1の最初の4バイトは、ライセンスのタイプを示す。例えば、ライセンスタイプは、BobSoftwareなどのコンピュータソフトウェアの名前を示してもよい。更なる例では、ライセンスタイプは、上述したような“シングルユーザ”又は“マルチデバイス”などのライセンスの許可タイプを示してもよい。次の16バイトは、IPv6アドレスを考慮する実際の電子ライセンスファイルの位置のIPアドレスを保持する。いくつかの実施例では、この値は、ライセンスファイルが中央化されずクラウドを介し分散可能となるように、トレント(torrent)ファイルのシードを指し示してもよいことに留意されたい。以降の12バイトは、ライセンスのタイプに特有のデータを含む。
【0098】
Metadata2の最初の20バイトは、ライセンスファイルの実際のコンテンツに適用されるSHA256に対するRIPEMD160を利用した実際のライセンスファイルのハッシュである。実際のライセンスファイルは抽出可能であってもよいため、これは、契約に対するトランザクションの検証を可能にする。ライセンスファイル自体は、具体的な実施例の要求に依存して、完全に公開されてもよいし(非暗号化され、人間に可読である)、あるいは、プライバシのため暗号化されてもよいことに留意されたい。Metadata2の残りの12バイトのコンテンツが、ライセンスのタイプに依存して利用されてもよい。
【0099】
上記で提供された第1のリディームスクリプト(RS1)の具体例から、発行トークンが使用されるためにエージェント(A)によって署名される必要があることが理解できる。テーブル2において、発行トークンのトランザクションの具体例が与えられ、簡単化のため、マイナーの費用は示されていない。
【0100】
【表2】
テーブル2の4~8行は、発行トークンに含まれるべき(すなわち、“トークン化”)第1の仮想通貨量(C1)であるトランザクションに対する入力を表す。本例では、第1の仮想通貨量(C1)は、第1の仮想通貨量をエージェント(A)の利益に移動した前のトランザクション(ID-110)の結果であり、従って、前のトランザクション(ID-110)の出力スクリプト(リディームスクリプトID-110)はエージェントの公開鍵(PA)を含む。従って、この前の出力をアンロックするため、スクリプト(リディームスクリプトID-110)は、第1ユーザの秘密鍵(VA)によって署名される必要がある。最後に、テーブル2の8行は、第1の仮想通貨量(C1)がこのトランザクション(ID-600)における第1の出力であることを示す。
【0101】
テーブル2の9~13行は、トランザクション(ID-600)の第1の(及び唯一の)出力を表し、この場合、発行トークンが作成され、エージェントに戻されることを表す。10行は、第1の仮想通貨量(C1)である出力値を示す。11行は、ビットコインプロトコルのP2SH法で利用されるような“<リディームスクリプトのハッシュ>”を含む出力スクリプトを示す。本例では、リディームスクリプトは、上述したような形式の第1のリディームスクリプト(RS1)である。
【0102】
テーブル2に示されるトランザクション(ID-600)の出力は、その後、P2P分散型台帳14に第1のデータ出力(O1)と共に記録される。特に、第1のデータ出力(O1)は、トランザクションにおいて移動された第1の仮想通貨量(C1)の表示を含んでもよい。第1のデータ出力(O1)は更に、第1のリディームスクリプト(RS1)のハッシュを含んでもよい。
【0103】
例えば、第1ユーザ23又は第2ユーザ24へのトークンの移動などの第1の仮想通貨量(C1)の以降のトランザクションでは、第1の仮想通貨量(C1)をアンロックするためのスクリプト(例えば、以降のトランザクションの入力ScriptSig)は、
Sig-VA Sig-VU1<OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG>
の形態をとってもよく、ここで、Sig-VU1は第1ユーザ23のシグネチャを示す。上記スクリプトは、エージェント(A)又は第1ユーザ23からの1つのシグネチャのみが第1の仮想通貨量(C1)をアンロックするのに必要とされることに留意されたい。
【0104】
発行トークンは、第2のリディームスクリプト(RS2)によって他のユーザに移動されてもよい。
[第2のリディームスクリプト]
コンピュータソフトウェア及びライセンスに関連するトークンが、エージェント(A)から、例えば、第1ユーザ23又は第2ユーザ24などの他のユーザに移動されうる。一例では、トークンの移動は、コンピュータソフトウェア又はライセンスに対するユーザへのアクセスを許可するものとして表されうる。当該移動は、第2のリディームスクリプト(RS2)によって実現されてもよい。
【0105】
一例では、エージェント(A)は、第1ユーザ23に発行トークンを移動することを所望する。第1ユーザ23は、例えば、コンピュータソフトウェアのベンダを表してもよい。
【0106】
本例では、第2のリディームスクリプト(RS2)は、メタデータ(M)、エージェント(A)に関連するエージェント公開鍵(PA)及び第1ユーザ23に関連する第1ユーザ公開鍵(PU1)に基づくものであってもよい。
【0107】
第2のリディームスクリプト(RS2)は、
<OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG>
の形態をとってもよい。
【0108】
本例では、第2のリディームスクリプト(RS2)は、第1のリディームスクリプト(RS1)と同じ2つのメタデータフィールドを有する。第2のリディームスクリプト(RS2)は更に、エージェントに関連するエージェント公開鍵(PA)及び第1ユーザに関連する第1ユーザ公開鍵(PU1)を有する。
【0109】
移動されたトークンが使用されるためにエージェント(A)又は第1ユーザ23によって署名される必要があることが、上述した第2のリディームスクリプト(RS2)の例から理解できる。発行トークンの移動のためのトランザクションの具体例がテーブル3において提供され、簡単化のため、マイナーの費用は再び示されない。
【0110】
【表3】
テーブル2と同様に、テーブル3の4~8行はトランザクション(ID-610)に対する入力を表す。本例では、入力は発行トークンであり、すなわち、テーブル2に示されるトランザクション(ID-600)の出力である。7行目におけるリディームスクリプトは、発行トークンのリディームスクリプト、すなわち、第1のリディームスクリプト(RS1)に対応することが理解できる。従って、トランザクション(ID-600)の出力をアンロックするため、第1のリディームスクリプト(RS1)はエージェントの公開鍵(PA)によって署名される必要がある。
【0111】
テーブル3の9~13行は、トランザクション(ID-610)の出力を表し、この場合、発行トークンがエージェント(A)又は第1ユーザ23(U1)に移動されることを表す。10行目は、第1の仮想通貨量(C1)である出力値を示す。11行目は、ビットコインプロトコルのP2SH法において利用されるような“<リディームスクリプトのハッシュ>”を含む出力スクリプトを示す。本例では、リディームスクリプトは、上述したような形式の第2のリディームスクリプト(RS2)である。
【0112】
トランザクション(ID-610)の出力は、その後、P2P分散型台帳14に第2のデータ出力と共に記録される。第2のデータ出力(O2)は、第1のデータ出力(O1)からの第1の仮想通貨量(C1)がトランザクションにおいて移動されるべきであるという指示を含みうる。第2のデータ出力(O2)は更に、第2のリディームスクリプト(RS2)のハッシュを含みうる。
[契約の実行の制御]
ブロックチェーンに構築されたスマートコントラクトは、ビットコイントランザクション(すなわち、ロック/アンロックスクリプト内)に直接埋め込まれたロジックを介し、及び/又は外部のコンピュータベースアプリケーションを介し実施可能である。そのような外部のコンピュータベースアプリケーションは、“エージェント”、“オラクル”又は“ボット”として参照されうる。さらに、いくつかの契約条件は、nLockTimeフィールドなどの他のビットコイントランザクション要素を介し実施可能である。
【0113】
本開示は、契約を表すブロックチェーン上の有効な未使用のトランザクション出力(UTXO)がある限り、契約(例えば、ライセンス)が有効なままであることを提供することによって、契約の実行を制御することに関する。この未使用の状態は、契約自体における条件又は規定によって行動が制御される各種機構(例えば、プログラムされた計算エージェント)の結果として影響を受け、変更されうることが理解されるであろう。例えば、契約は、それが特定の日に満了するか、あるいは、特定の値が指定された閾値に到達したときに満了することを規定する。
【0114】
未使用のトランザクション出力を利用して契約を表す本原理は、暗号化技術などの他の特徴と組み合わせて利用可能である。これは、複雑なシナリオ及びアクティビティの実現を可能にする。効果的には、使用されることを可能にするスクリプト内の関連するメタデータ及び署名無しのトランザクション出力UTXOにおけるコンテクストは、契約の形式的な詳細を含むオフチェーンレポジトリに対するポインタ又はリファレンスとしてトランザクションが機能することを可能にする。ここで、オフチェーンは、それがブロックチェーン自体の一部でないことを意味する。これは、ブロックチェーンを調べることによって、契約が終了したか、あるいは、依然として有効/オープンであるか誰もが判断できる機構を提供する。契約が終了すると、これがトランザクションにおいて使用された出力としてブロックチェーン上に記録され、公衆の調査のために利用可能になる。ブロックチェーントランザクションは、契約の存在及び現在状態の永続的、変更不可及び公開の記録になる。
【0115】
図8により示されるような方法800は、コンピュータベースレポジトリに契約を格納すること(810)を含み、当該契約は、第1ユーザ(U1)と第2ユーザ(U2)との間のライセンスに関連する。コンピュータベースレポジトリ(“レジストリ”又は“レジスタ”とも呼ばれうる)は、例えば、分散ハッシュテーブル(DHT)を含む各種方法において実現されうる。契約(例えば、ライセンス)のハッシュは、ブロックチェーントランザクション内のメタデータとして生成及び格納可能であり、ブロックチェーンから契約を参照するためのルックアップキーとして機能しうる。契約の位置に対するリファレンスがまた、トランザクションメタデータ内に与えられる。例えば、レポジトリのためのURLが提供されうる。メタデータは公衆の閲覧のためオープンであるが、契約自体はプロテクトされなくてもよいし、あるいは、部分的にプロテクトされてもよい。
【0116】
CheckLockTimeVerify(CLTV)などの標準的なビットコイン機能は、契約が将来のある時点において形式的な自動的有効期限を有することを可能にしうる。ブロックチェーンの使用は、この有効期限がセキュア(変更不可)な公的な記録の題材になることを可能にする。このコンセプトは、後述される複数の暗号鍵の利用と組み合わせて、CLTVモデルが、明示的にキャンセルされない場合、契約を自動的にロールオン又は更新することを可能にする。
【0117】
方法800はまた、通信ネットワークを介しエージェント(A)から第1ユーザ(U1)又は第2ユーザ(U2)にトークンの移動を含むトランザクションを受信すること(820)を含み、トランザクションは契約が格納されている場所を示す識別子を含むメタデータを有する。
【0118】
決定的なサブ鍵の使用は、ここで説明されるトークン化機構と組み合わせて、契約に対するサブ契約又はスケジュールが作成されることを可能にする。
【0119】
さらに、オフブロック計算エージェント(“オラクル”としても知られる)の使用は、契約が信頼される第三者によって条件付きで構成及び修正されることを可能にする。これは、エージェントのアクションが契約の定義内で提供される条件(例えば、“IF”ステートメント)によって影響を受けうることを意味する。
[キーターム]
以下の用語がここで利用されうる。
・契約発行者
当該エンティティは、ブロックチェーン上への契約の更改の責任がある行為者を表す。
・利害関係者
当該エンティティは、特定の契約が依然として存在するか否かを判断する必要がある行為者を表す。
・レポジトリ
当該エンティティは、ブロックチェーンスマートコントラクトが参照する契約の構造化された表現をセキュア/格納する場所を表す。
・契約相手方
当該エンティティは、特定の契約に対する相手方を表す。多くのケースにおいて、当該エンティティは存在しないことに留意されたい。
・契約
これは、レポジトリ内に格納され、ブロックチェーンから参照される構造化された文書又はファイルである。契約は、何れかのタイプの契約又は合意でありうる。これは、例えば、金融契約、権利書、役務契約などを含んでもよい。契約は、それの内容に関して公的又は私的なものとすることができる。契約は、それがコード化方式を利用して構造化された方法で表現される点で形式化される。
[契約モデル]
契約モデルの基本要素は、以下である。
・何れかのタイプの契約の完全な記載を可能にするコード化方式。当該方式は、新たな構成であってもよいし、あるいは、XBRL,XML,JSONなどの既存のファシリティを利用してもよい。
・コード化方式内で完全に定義可能な契約を実現するためのDFA(決定的有限オートマトン)。これは、
○パラメータの集合であり、これらのパラメータのソースとなる場所
○状態の定義の集合
○遷移のトリガ及び遷移中に従うルールを含む状態間の遷移の集合
○ルール定義テーブル
から構成される。
・契約の当該インスタンスに特有のパラメータの定義
・契約をセキュア及びプロテクトするための機構
・契約が形式的な法律用語により人間に可読になることを可能にするための“ブラウザ”
・コード化方式をオラクルコード及び/又はビットコインスクリプトなどのスクリプトに変換するための“コンパイラ”
[契約の実現]
契約がコンピュータベースレポジトリに登録されると、URL及びハッシュなどの関連するアドレスが、制御する契約自体とチェーン上のトランザクションとを関連付けるため、ブロックチェーントランザクション内でメタデータとして利用可能である。これは、様々な形式で実現可能であるが、適したコード化方式は“コード化方式”というセクションにおいて完全に提供される。
【0120】
契約定義内に含まれるDFAがどのように実現可能であるかに関していくつかの異なる方法がある。
・ブロックチェーントランザクション又はトランザクションの系列として。ビットコインスクリプト言語内で各種形式のDFAを直接実現する方法をカバーするいくつかの別々のホワイトペーパーがある。
・エージェントベース(例えば、オラクル)処理又は処理の系列として。“本発明と共に利用される例示的な計算エージェント”の以下のセクションは、ブロックチェーン及び可能な他の外部ソースをモニタするために適したエージェントを定義及び実行するための基本処理を説明する。
・スマートウォレットのための命令セットとして。このコンテンツでは、スマートウォレットは、ブロックチェーントランザクションへのトランザクション入力の割当てなどの特定の契約条件を処理可能な効果的な単なるローカルなオラクル処理である。
【0121】
所与の契約定義が上記の3つの機構の組み合わせとして実現可能であることに留意されたい。各契約状態遷移は効果的に別の実現形態である。関連するトランザクション/コードの作成を含む契約定義から実現形態を作成するいくつかの方法がある。
[契約の存在の公開]
契約(又は契約内の定義された要素)の存在を公開するため、トランザクション(エージェント(A)から第1ユーザ(U1)又は第2ユーザ(U2)へのトークンの移動に関する)は、ペイ・ツー・スクリプト・ハッシュアドレス(P2SH)を利用してブロックチェーンに公開される。P2SHトランザクションでは、トランザクションが使用されるため、受信者がスクリプトハッシュに一致するスクリプトと、スクリプトが本物であると評価させるデータとを提供する必要がある。本開示の実施例に関して、ペイ・ツー・スクリプト・ハッシュ(P2SH)は、契約の発行者(例えば、第1ユーザ(U1)又は第2ユーザ(U2))及び契約のメタデータから容易に決定可能である。
【0122】
この出力はブロックチェーン上のUTXOリスト内に維持されるが(すなわち、トランザクションは依然として未使用である)、これは、メタデータ自体の内部に含まれる契約の有効性を示す。契約は、当該出力が使用されると、完全であるとみなされる。
[サブ契約/条件]
サブ契約は、既存の契約に直接関連する契約である。条件は、契約の取り決めを満たすために公的に実現される必要がある既存の契約内の条項である。本開示の実施例によると、サブ契約と条件との双方が、同じ方法で、すなわち、決定的なリディームスクリプトアドレスによりUTXOとして実現される契約として実現可能である。双方のケースにおいて、エンティティは、UTXOが使用されると、完全であるとみなされる(条件の場合には、これは当該条件が充足されたことを示す)。
【0123】
条件又はサブ契約のために決定的アドレスを作成するのに利用可能ないくつかの機構がある。
・シード情報を利用して新たな公開鍵を導出
・マスタ契約に対する参照によってレポジトリ内にサブ契約を作成及び公開し、これをメタデータリファレンスとして利用
・既存の契約のメタデータに対する条件/サブ契約リファレンスを追加
[契約のセキュア化]
契約の形式的表現(すなわち、契約内容を指定する文書又はファイル)は、全てのケースにおいて、契約の存在の公的な記録がメタデータレコード内に含まれるブロックチェーン上に公開されるが(具体的なメタデータの構造の詳細についてはセクション“コード化方式”を参照されたい)、具体的な契約の形式的な要求に応じて様々な方法でセキュア化可能である。
【0124】
このブロックチェーンレコードから、許可されたエンティティは、形式的な表現がトランザクションが公開されて依頼変更されていないことを決定するため、ハッシュと一緒に形式的な表現の場所を知ることが可能である。
【0125】
しかしながら、いくつかの方法を通じて形式的表現自体を更にセキュアにすることが可能である。
・ドキュメントレポジトリ自体がアクセス制御機構を提供可能であり、
・契約自体が、関連する解読鍵へのアクセスによって当該エンティティへのアクセスを限定する標準的な暗号化技術を通じてセキュア化可能である。
[契約の終了]
ブロックチェーンはトランザクションの永続的で変更不可な記録を提供するため、契約は、単に関連する契約文書を削除することによっては終了可能ではない。これは、セキュアなレポジトリはいくつかの標準的な機構を介しサポートされるブロックチェーン自体と同じストレージ及び存続ルールを有する必要があることを意味する。これは、解決策がブロックチェーンの記録を開始契約の有効期限を直接検出するための機構を提供する必要があることを意味する。
【0126】
これは、契約を表すUTXOの使用を介して処理される。いくつかの契約タイプについて、契約の有効期限は契約自体の公開と同時に公開可能である。効果的には、2つのトランザクションが作成され、一方は契約を公開し、契約を表すトランザクション出力を取得し、第2のものは当該出力を利用する。この第2のトランザクションは、所与の将来の日付に(契約のエンドを表す)に出力を使用するため、設定されるCheckLockTimeVerifyを有する。
【0127】
この自動使用は、契約のロールオンをサポートするため延長可能である(例えば、キャンセルされない場合、更に12ヵ月自動延長される契約)。この状況において、UTXOは使用され、それを“新たな”ロールオン契約に送信する。
【0128】
方法800はまた、トランザクションが少なくとも1つの未使用出力(UTXO)を有するか判断するため、ピア・ツー・ピア分散型台帳に照会すること(830)を含む。ピア・ツー・ピア分散型台帳に照会するための当該処理は、契約に関連するUTXOが使用されたか否かを確認するため、ブロックチェーンをチェックすることを伴う。UTXOが依然として未使用である場合、契約は有効なままである。UTXOが依然として未使用であるが、ロックタイムトランザクションが保留中である場合、これは、契約の有効期限を決定する。UTXOが使用されている場合、契約はある点で完了している。
【0129】
ピア・ツー・ピア分散型台帳を照会する処理(830)は、利害関係者(例えば、エージェント、第1ユーザ(U1)又は第2ユーザ(U2))が他のルートを介し契約を支配するトランザクションを認識していることを仮定する(一般に、それは契約発行者又は契約相手方の何れかであること)。しかしながら、契約文書へのアクセスと契約発行者の知識を有する何れのエンティティも、
・UTXOトランザクションに対するリディームスクリプトを導出し、
・一致したリディームスクリプトのハッシュによってUTXOを検出するためブロックチェーンをスキャンする、
ことによってチェックできる。
【0130】
本開示の他の実施例では、ピア・ツー・ピア分散型台帳を照会するステップ(830)は、自動化されたポーリング処理の一部として実行され、これによって、ブロックチェーンは、トランザクションが少なくとも1つの未使用出力(UTXO)を有するか判断するため(すなわち、トランザクションが未使用のままであるか判断するため)、所定の時間間隔でスキャンされる。
【0131】
方法800はまた、ピア・ツー・ピア分散型台帳を照会したことに応答して、契約の実行を変更するか判断すること(840)を含む。判断するステップ(840)は、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定できない場合に契約を終了するか、あるいは、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定される場合に契約を維持するかを含む。判断するステップ(840)は自動か処理の一部を構成してもよいことが理解されるべきである。例えば、コンピュータソフトウェアの特定のライセンスは、定期的(例えば、毎月又は毎年)に支払を要求するか、あるいは、特定の時間のみに実行するよう設計されているかもしれない。各ケースにおいて、ソフトウェアは、ピア・ツー・ピア分散型台帳をポーリングし、対応して動作することが可能である必要がある(例えば、コンピュータソフトウェアに対するアクティブなライセンスを維持するため、ユーザからの支払を要求する)。他の外部条件に対して条件付きで実行するソフトウェアの能力を有することがまた可能であってもよく、この場合、ソフトウェアはオラクルをポーリング可能である。地域的ロックアウト(すなわち、地理的な起動制限)が必要とされる場合、ユーザのIPアドレスがハッシュ化され、分散ハッシュテーブルに他のフィールドを作成するため利用可能である。
【0132】
あるいは又はさらに、ライセンスは所与の日付で満了することになっていてもよく、この場合、契約トランザクションは、それがオラクル(又はエージェント(A))のシグネチャによって使用可能であるように形式化されてもよく、他のトランザクションは、トランザクションの未使用出力(UTXO)をオラクル(又はエージェント(A))に自動的に払い戻す有効期限に設定されたロックタイムによって形式化される。
【0133】
少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定できない場合、契約発行者(例えば、エージェント又はベンダ)又は契約相手方(例えば、ライセンシ)は、既存の契約をクローズすることを所望しうる(すなわち、コンピュータソフトうぇなどのライセンスを終了する)。当該クロージャの扇動者は(大部分の場合、コンピュータソフトウェアのベンダ又はベンダのためのエージェント(A))、以前のUTXOが使用されたか否か検証することによって、契約がキャンセルされたか判断するため、ブロックチェーンをチェックする(方法800のステップ830に従って)。使用されていた場合、契約はすでにクローズされたとして、当該処理は終了する。しかしながら、少なくとも1つの未使用出力(UTXO)がピア・ツー・ピア分散型台帳から特定できない場合、ユーザ(例えば、ライセンシ)は分散ハッシュテーブル(DHT)を介しベンダのサーバに接続され、例えば、ライセンスを更新するために支払をする機会が与えられてもよいことが理解されるべきである。
【0134】
既存のクロージャトランザクションが存在する場合、扇動者は当該トランザクションを単に署名し、ブロックチェーンに提出する。既存のクロージャトランザクションがない場合、扇動者は、トランザクション入力が最後の契約のUTXOであることによってトランザクションを作成し、アンロックスクリプトは、それらのシグネチャ、契約に関連するメタデータ及び公開鍵である。
【0135】
トランザクションがブロックチェーン上で承認された時点で、それは、契約がクローズされたという公的な知識となる(参加者しか具体的な理由を知らないが)。
【0136】
テーブル4において、少なくとも1つの未使用出力(UTXO)を使用することによって契約(例えば、ライセンス)を終了するためのトランザクションの具体例が提供され、簡単化のため、マイナー費用が再び示されない。
【0137】
【表4】
テーブル3と同様に、テーブル3の4~8行は、トランザクション(ID-610)に対する入力を表す。本例では、入力は1・オブ・4マルチシグネチャP2SHトランザクション、すなわち、テーブル3に示されるトランザクション(ID-610)の出力である。7行目におけるリディームスクリプトは1・オブ・4マルチシグネチャP2SHトランザクションのリディームスクリプト、すなわち、第2のリディームスクリプト(RS2)に対応することが理解できる。従って、トランザクション(ID-610)の出力をアンロックするため、第2のリディームスクリプト(RS2)は、エージェントの公開鍵(PA)又は第1ユーザの公開鍵(PU1)の何れかによって署名される必要がある。
【0138】
テーブル3の9~13行は、トランザクション(ID-620)の出力を表し、この場合、未使用出力(UTXO)が使用されたことを表す(すなわち、仮想通貨量(C1)がエージェント(A)又はオラクルに払い戻された)。10行目は、第1の仮想通貨量(C1)である出力値を示す。
[コンピュータソフトウェア又はライセンスの場所を示す識別子]
上述されたように、データ(D1)又はライセンスは、コンピュータソフトウェア又はライセンスそれぞれの場所を示す識別子を有してもよい。
【0139】
一例では、識別子は、データ(D1)又はライセンスから独立に決定され、データ(D1)又はライセンスに対して別々のままであってもよい。識別子は更に、方法100において上述したように、データ(D1)及び第1のハッシュ値(H1)と一緒に鍵-値のペアの値に割り当てられてもよい。このようにして、識別子は、メッセージput(key,value)のvalueフィールドに含まれ、上述したように、DHT13における参加ノードに送信されてもよい。
【0140】
一例では、場所を示す識別子は、インターネット上のオブジェクトのURLを有してもよい。他の例では、場所を示す識別子はハッシュテーブル又はDHT13などのレポジトリのアドレスを有してもよい。更なる他の例では、場所を示す識別子は、第1ノード3の第1処理デバイス21に関連するデータストア17などのコンピュータベースリソース上に提供されるサーバ、データベース又はストレージ施設などのコンピュータベースレポジトリのアドレスを有してもよい。
【0141】
図6は、コンピュータソフトウェア又はライセンスの場所を決定する方法500を示す。方法500は、第1のリディームスクリプト(RS1)からメタデータ(M)を決定すること(510)を含む。上述したように、メタデータ(M)は、第1のリディームスクリプト(RS1)における公開鍵に利用可能な15の場所の1つ以上に埋め込まれてもよい。
【0142】
ビットコインプロトコルのP2SH法では、トランザクションの出力が以降のトランザクションにおいて使用されるとき、リディームスクリプトは、以降のトランザクションにおいて可視的になる。テーブル2を参照して上述したように、発行トークンのトランザクション(ID-600)は、エージェント(A)に払い戻される。このようにして、エージェント(A)は、この発行トークンを使用して第1のリディームスクリプト(RS1)を公開してもよい。従って、第2のハッシュ値(H2)に基づくメタデータ(M)は、P2P分散型台帳14上で可視的である。このようにして、第2のハッシュ値(H2)は、第1のリディームスクリプト(RS1)におけるメタデータ(M)から抽出可能である(520)。一例では、鍵-値のペアの鍵に関連する値は、リクエストメッセージget(key)を利用してDHT13から抽出可能である。
【0143】
方法500は更に、通信ネットワーク5を介しDHT13の参加ノードに関連するプロセッサに第2のハッシュ値(H2)を送信すること(530)を含む。上述したように、第2のハッシュ値(H2)は、鍵-値のペアの値であってもよい。また上述したように、所与の鍵に対する値は、DHT13の何れかの参加ノードに鍵を含むメッセージを提供することによって抽出されてもよい。従って、識別子が鍵-値のペアの値フィールドに含まれる例では、方法500は、参加ノードのプロセッサからコンピュータソフトウェア又はライセンスの場所を示す識別子を決定すること(540)が可能である。
[処理デバイス]
上述したように、第1ノード3及び第2ノード7は、コンピュータ、タブレットコンピュータ、モバイル通信デバイス、コンピュータサーバなどの電子デバイスであってもよい。電子デバイスは、処理デバイス21,27、データストア17及びユーザインタフェース15を有してもよい。
【0144】
図7は、処理デバイス21,27の具体例を示す。処理デバイス21,27は、第1ノード3、第2ノード7又は図示されない他のノードにおいて利用されてもよい。処理デバイス21,27は、バス1530を介し互いに通信するプロセッサ1510、メモリ1520及びインタフェースデバイス1540を有する。メモリ1520は、上述した方法100,500を実現するためのマシーン可読命令及びデータを含むコンピュータソフトウェアプログラムを格納し、プロセッサ1510は、方法100,500を実現するためのメモリ1520からの命令を実行する。インタフェースデバイス1540は、通信ネットワーク5と、いくつかの具体例では、ユーザインタフェース15及びデータストア17などの周辺機器との通信を実現する通信モジュールを有してもよい。処理デバイス1510は独立したネットワーク要素であってもよいが、処理デバイス1510はまた他のネットワーク要素の一部であってもよいことが留意されるべきである。さらに、処理デバイス1510によって実行されるいくつかの機能は、複数のネットワーク要素間で分散されてもよい。例えば、第1ノード3は、第1ノード3に関連するセキュアなローカルエリアネットワークにおいて方法100,500を実行するための複数の処理デバイス21を有してもよい。
【0145】
本開示はユーザ、雇用者、被雇用者、発行者、商人、プロバイダ又は他のエンティティが特定のアクション(署名、発行、判断、計算、送信、受信、作成などを含む)を実行することを説明している場合、当該単語は説明の簡単化のために利用される。これらのアクションはこれらのエンティティによって運営される計算デバイスによって実行されることが理解されるべきである。
【0146】
多数の変形及び/又は修正が本開示の広範な一般的範囲から逸脱することなく上述した実施例に対して行われうることが、当業者によって理解されるであろう。従って、本実施例は、全ての点において限定的でなく例示的なものとしてみなされるべきである。
【0147】
(付記1)
契約の実行を制御するコンピュータにより実現される方法であって、
コンピュータベースレポジトリに契約を格納するステップであって、前記契約は第1ユーザと第2ユーザとの間のライセンスに関連する、格納するステップと、
通信ネットワークを介しエージェントから前記第1ユーザ又は前記第2ユーザへのトークンの移動を含むトランザクションを受信するステップであって、前記トランザクションは、前記契約が格納されている場所を示す識別子を含むメタデータを含む、受信するステップと、
前記トランザクションが少なくとも1つの未使用出力を含むか判断するため、ピア・ツー・ピア分散型台帳を照会するステップと、
前記ピア・ツー・ピア分散型台帳を照会したことに応答して、前記契約の実行を修正するか判断するステップと、
を有する方法。
(付記2)
前記トランザクションは更に、決定的なリディームスクリプトアドレスを含む、付記1記載の方法。
(付記3)
リディームスクリプトアドレスは、ペイ・ツー・スクリプト・ハッシュ(P2SH)アドレスである、付記1又は2記載の方法。
(付記4)
前記判断するステップは、
前記少なくとも1つの未使用出力が前記ピア・ツー・ピア分散型台帳から特定不可である場合、前記契約を終了するステップ、又は、
前記少なくとも1つの未使用出力が前記ピア・ツー・ピア分散型台帳から特定される場合、前記契約を維持するステップ
を有する、付記1乃至3何れか一項記載の方法。
(付記5)
前記契約を終了するステップは、前記少なくとも1つの未使用出力を使用するため、更なるトランザクションをブロードキャストするステップを含む、付記4記載の方法。
(付記6)
前記更なるトランザクションをブロードキャストするステップにおいて、前記更なるトランザクションは、指定されたデータ及び/又は時間において前記少なくとも1つの未使用出力を使用する命令を含む、付記5記載の方法。
(付記7)
前記更なるトランザクションは、
前記少なくとも1つの未使用出力である入力と、
シグネチャ、前記メタデータ、前記エージェントに関連するエージェント公開鍵及び前記第1ユーザに関連する第1ユーザ公開鍵を含むリディームスクリプトと、
を含む、付記5又は6記載の方法。
(付記8)
前記契約は、
前記第1ユーザと前記第2ユーザとの間の前記ライセンスの処理に関する少なくとも1つの条件と、
実行が前記条件の評価に依存する少なくとも1つのアクションと、
を定義する、付記1乃至7何れか一項記載の方法。
(付記9)
前記メタデータは、
前記契約が前記コンピュータベースレポジトリに格納されているアドレスのアドレス又は表現、及び/又は
前記契約のハッシュを含む、付記1乃至8何れか一項記載の方法。
(付記10)
前記ピア・ツー・ピア分散型台帳を照会するステップは更に、
前記少なくとも1つの未使用出力が前記ピア・ツー・ピア分散型台帳の未使用トランザクション出力のリストに存在するか判断することによって、前記契約が終了したかチェックするステップを含む、付記1乃至9何れか一項記載の方法。
(付記11)
前記契約は、分散ハッシュテーブルに格納される。付記1乃至10何れか一項記載の方法。
(付記12)
前記契約は、前記契約を実現する決定的有限オートマトンを含む、付記1乃至11何れか一項記載の方法。
(付記13)
前記決定的有限オートマトンは、コード化方式を利用して定義される、付記12記載の方法。
(付記14)
前記契約に関連する前の鍵に関するサブ鍵を生成するステップと、
前記サブ鍵、前記契約の場所及び前記契約のハッシュを含む更なるリディームスクリプトを生成するステップと、
前記更なるリディームスクリプトにある量の仮想通貨を支払うステップと、
を実行することによって、前記契約を更新するステップを更に有する、付記1乃至13何れか一項記載の方法。
(付記15)
前記契約から導出されるサブ契約を生成するステップを更に有し、
前記サブ契約は、決定的アドレスに関連し、
シードを用いて導出される新たな公開鍵を利用するステップと、
前記契約に対するリファレンスと共に前記コンピュータベースレポジトリに前記サブ契約を格納するステップと、
前記契約に対するリファレンスを含むサブ契約トランザクションを前記ピア・ツー・ピア分散型台帳にブロードキャストするステップと、
前記契約に関連する前記メタデータに前記サブ契約に対するリファレンスを追加するステップと、
を実行することによって生成される、付記1乃至14何れか一項記載の方法。
(付記16)
前記第1ユーザと前記第2ユーザとの間の前記ライセンスは、
コンピュータソフトウェアと、
音楽、ビデオ及び電子書籍を含むデジタルメディアと、
の1つ以上に関する、付記1乃至15何れか一項記載の方法。
(付記17)
前記ピア・ツー・ピア分散型台帳は、ブロックチェーンである、付記1乃至16何れか一項記載の方法。
(付記18)
仮想通貨は、ビットコインである、付記1乃至17何れか一項記載の方法。
(付記19)
付記1乃至18何れか一項記載の方法を処理デバイスに実現させるマシーン可読命令を有するコンピュータソフトウェアプログラム。
(付記20)
契約の実行を制御するコンピュータシステムであって、
コンピュータベースレポジトリに契約を格納し、前記契約は第1ユーザと第2ユーザとの間のライセンスに関連し、
通信ネットワークを介しエージェントから前記第1ユーザ又は前記第2ユーザへのトークンの移動を含むトランザクションを受信し、前記トランザクションは、前記契約が格納されている場所を示す識別子を含むメタデータを含み、
前記トランザクションが少なくとも1つの未使用出力を含むか判断するため、ピア・ツー・ピア分散型台帳を照会し、
前記ピア・ツー・ピア分散型台帳を照会したことに応答して、前記契約の実行を修正するか判断する、
よう構成される処理デバイスを有するシステム。