(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【0007】
留意すべきことに、本願明細書に定められ及び記載される本発明は、言葉の正当な意味で、取引と共に使用することに限定されない。取引は、文書、ファイル、又は指定条件下でトリガされ得る動作セットを定める他のメカニズムであって良い。制御条件は、公然と満たされて良い。本発明は、法的又は商業的指向の状況における使用に限定されると考えられるべきではない。用語「取引」は、このような限定的意味に解釈されるべきではない。例えば、取引は、鉄道若しくは航空機又はコンサート会場のチケットであって良く、チケットには、バリアのアンロックを提供するための機械可読バーコードのようなアクセスコードが印刷される。
【0008】
したがって、添付の請求項に定められるように、本願明細書において発明が提供される。
【0009】
本発明の態様によると、取引の可視性及び/又は実行を制御するコンピュータにより実施される方法であって、前記方法は、
(a)コンピュータに基づくレポジトリ上に又はその中に取引を格納するステップと、
(b)ブロックチェーンにトランザクションをブロードキャストするステップであって、前記トランザクションは、
i)少なくとも1つの未使用アウトプット(UTXO)、及び、
ii)前記取引の格納された場所を示す識別子を有するメタデータ、を有する、ステップと、
(c)前記取引を、
前記取引に関連付けられた前のキーに関連するデータを用いて、新しいキーを生成し、
前記新しいキー、前記取引の前記場所、前記取引のハッシュを有するスクリプトを生成し、
前記スクリプトに通貨額を支払う、
ことにより、更新する又はロールオンするステップと、
を含む方法が提供される。
【0010】
取引に関連付けられた前のキーに関連するデータを用いて新しいキーを生成し、新しいキーと取引の場所と取引のハッシュとを含むスクリプトを生成し、及びスクリプトに通貨額を支払うことにより、取引を更新し又はロールオンすることにより、これは、新しいキーが前のキーに関連するので、許可されたパーティが更新又はロールオンされる取引との自身の接続により、確実性又はプライバシの損失を伴わずに、元の取引を閲覧できるという利益をもたらす。更新又はロールオンされる取引に関連付けられたキーは元の取引のキーに関連付けられるので、コンピュータに基づくオフチェーン(つまり、ブロックチェーンの部分を形成しない)レポジトリに取引を格納することにより、確実性又はプライバシの損失を伴わずに、メモリ及び処理容量が削減できるという更なる利益がもたらされる。
【0011】
「ロールオーバ」の状況では、UTXOが使用されて、それを「新しい」ロールオンされる取引に送る。しかしながら、ロック時間の前にアウトプットを使用することにより、したがって取引全体を取り消すことにより、既存の取引を取り消すことが可能であって良い。
【0012】
本発明は、取引の可視性及び/又は実行を制御するコンピュータにより実施される方法及びシステムを提供できる。「可視性」は、取引の存在及び/又は内容がどのように及び誰に利用可能か又はアクセス可能かを意味し得る。取引は「スマートコントラクト(smart contract)」であって良い。方法は自動スマートコントラクト方法であって良い。これは、取引の存在、有効性、及び/又は実行を監視する処理を自動化する方法であって良い。取引はブロックチェーントランザクションの少なくとも部分の形式で表現できるので、本発明は、トークン化方法/システムとして参照されて良い。トランザクションの中のメタデータは、取引を表現し及び/又はアクセスするために使用される、ブロックチェーンにより実施されるトークンを提供して良い。
【0013】
本発明は、レポジトリ(記録簿)への取引の記憶を可能にする方法/システムを提供し得る。ここで、取引のハッシュは、取引を見付けるための検索キーとして使用できる。
【0014】
方法は、
コンピュータに基づくレポジトリ上に又はその中に取引を格納するステップと、
ブロックチェーンへトランザクションをブロードキャストするステップであって、前記トランザクションは、
i)少なくとも1つの未使用アウトプット(UTXO)、及び、
ii)前記取引の格納された場所を示す識別子を有するメタデータ、を含む、ステップと、
を含んで良い。
【0015】
取引は、UTXOがブロックチェーン上で使用されるまで、公開され又は有効であると解釈されて良い。ブロックチェーンは、ビットコインブロックチェーンであって良く、又はそうでなくて良い。これは、UTXOにより表現されるようなブロックチェーン上の取引の状態又は有効性を表現する新規なメカニズムの利益をもたらす。
【0016】
方法は、オフチェーンのコンピュータにより実施される処理、エージェント、又は他のエンティティを用いて、ブロックチェーンの状態を観察し、及びアウトプットが現在未使用か否かに基づき特定の方法で振る舞うステップを含んで良い。処理は、未使用アウトプットを、取引の状態の指示子として解釈するよう構成されて良い。言い換えると、アウトプットがブロックチェーン上のUTXOリスト内に残る、つまりトランザクションが未使用のままである間、これは、メタデータにより指される又は参照される取引の有効性又は「公開」状態を示すために使用されて良い。取引は、UTXOが使用されると、完了された(終了された)と考えられて良い。この条件は、取引の中で記述されて良い。しかしながら、UTXOが使用されると、メタデータは、取引へのポインタ又は参照及び取引のハッシュを含み続けることが可能であるので、取引はその機能を保持できる。
【0017】
方法は、取引の存在を公表するステップを含んで良い。これは、以下のステップにより達成できる。
・取引発行人は、新しい取引文書を作成し、これをレポジトリに公表する。該文書の格納場所及びセキュアなハッシュが、後の使用のために格納されて良い。
・n人のうちのm人のマルチシグネチャ構造で、取引文書がセキュアであることを保証するRedeemScriptを生成する。ここで、
− mは少なくとも1であり、
− nはmとメタデータブロック数の和である。
・少なくとも1つの公開鍵をスクリプトに含める。これは、取引発行人の公開鍵であって良い。しかしながら、他の署名も要求されて良い。
・望ましくはP2SHトランザクションを通じて、通貨額、例えばビットコインをスクリプトに支払う。
・トランザクションがブロックチェーンに公表されるまで待機し、公表されたトランザクションのトランザクションIDを抽出する。
・ロック時間を取引の有効期限に設定して新しいトランザクションを生成し、トランザクションから公開鍵ハッシュへアウトプットを払い戻す。又は、
ローリング期間取引について、自動計算エージェントを用いて、ブロックチェーン上のトランザクションを検出し、それを新しい取引にローリングするためのコードをトリガする前に取引有効期限まで待機する。又は、
完了に基づく取引について(ここで、y個のエンティティのうちのx個のエンティティが、取引が満たされたことに合意する)、n人のうちのm人のマルチシグネチャトランザクションを生成し、完了すると共同署名するために、それをこれらのエンティティに発行する。
【0018】
レポジトリは、オフブロック記憶リソースであって良い。言い換えると、レポジトリは、ブロックチェーン自体の部分を形成しなくて良い。コンピュータに基づくレポジトリは、サーバであって良く又はそれを含んで良い。レポジトリは、データベース又はコンピュータに基づくリソース上に設けられた他の記憶設備であって良い。レポジトリは、インデックス付けされて良く、検索可能である。レポジトリは、分散ハッシュテーブルを含んで良い。取引は、分散ハッシュテーブル(Distributed Hash Table:DHT)の中に又はそれに関連付けられて格納されて良い。
【0019】
トランザクションは、決定性Redeem又はロッキングスクリプトアドレスを更に含んで良い。アドレスは、P2SH(pay−to−script−hash)アドレスであって良い。したがって、取引の存在(又は取引の中の定められた要素)は、取引の発行人により決定され又は提供され得るpay−to−script−hashアドレス、及び/又は取引のメタデータを用いて、ブロックチェーンに公表されるトランザクションを用いて公衆に利用可能にされて良い。
【0020】
方法は、アウトプット(UTXO)を使用するためにブロックチェーンに(更なる)トランザクションをブロードキャストすることにより、取引を終了するステップ、を更に含んで良い。更なるトランザクションは、アウトプット(UTXO)であるインプット、及び、署名と前記メタデータと公開鍵とを含むアンロックスクリプト、を有して良い。
【0021】
これは、アウトプットを使用するために、ブロックチェーントランザクションの使用により、取引の自動終了の利益をもたらし得る。
【0022】
取引は、i)少なくとも1つの条件、ii)条件の評価に実行が依存する少なくとも1つのアクション、を定めて良い。条件は、真又は偽に評価可能なテストであって良い。条件は、取引(例えば、条項(clause))の部分であって良い。条件の完了又は実行は、取引の達成のために要求されて良い。条件は、真と評価された場合に、完了されて良い。
【0023】
メタデータは、i)取引がコンピュータに基づくレポジトリに格納された場所のアドレス又はアドレスの提示、及び/又は、ii)取引のハッシュ、を有して良い。
【0024】
方法は、ブロックチェーン状態を観察するステップを含んで良い。これは、UTXOを含むトランザクションを見付けるためにブロックチェーンを検索するステップを含んで良い。これは、未使用トランザクションUTXOがブロックチェーンの未使用トランザクションアウトプットのリストの中にあるか否かを決定することにより、取引が終了しているか否かを調べるステップ、を含んで良い。この監視する又は調べる処理は、自動化されて良い。これは、適切にプログラムされたコンピューティングエージェント又はリソースにより実行されて良い。これは、実質的に以下に「本発明と共に使用するための説明のための計算エージェント」と題される章に記載される通りであり得る。エージェントは、UTXOの使用又は未使用状態に基づきアクションを実行して良い。したがって、UTXOの状態は、オフブロック計算エージェントの振る舞いを制御し又はそれに影響して良い。
【0025】
方法は、指定日及び/又は時間にアウトプットを使用する指示を含むトランザクションをブロックチェーンにブロードキャストするステップを含んで良い。指示はCheckLockTimeVerify指示であって良い。
【0026】
取引の内容の一部又は全部へのアクセスは、少なくとも1つの指定された許可パーティに制限されて良い。言い換えると、取引の一部又は全部にアクセスする又はそれを閲覧するために、許可が必要とされて良い。幾つかの実施形態では、保護メカニズムが取引自体に適用されて良い。例えば、ファイルの1又は複数の部分が保護されて良いが、全体的な内容は公開されて良い。この部分的保護は、取引の中の情報の暗号化、並びに、取引の内容に対する変更を検出するハッシュ、の両方に適用されて良い。
【0027】
取引は、取引を実施するために決定性有限
オートマトン(Deterministic Finite Automaton:DFA)を有して良い。決定性有限
オートマトンは、コード化スキームを用いて定められて良い。決定性有限
オートマトンは、
i)望ましくはスクリプト言語を用いる、少なくとも1つのブロックチェーントランザクション、
ii)ブロックチェーンの状態を監視するよう構成された計算エージェント(これは、以下の「本発明と共に使用するための説明のための計算エージェント」と題される章に記載され得る)、及び/又は、
iii)デジタルウォレットに対する指示セット、を用いて実施されて良い。
【0028】
本発明の別の態様によると、取引の可視性及び/又は実行を制御するコンピュータにより実施される方法であって、前記方法は、
(a)コンピュータに基づくレポジトリ上に又はその中に取引を格納するステップと、
(b)ブロックチェーンにトランザクションをブロードキャストするステップであって、前記トランザクションは、
i)少なくとも1つの未使用アウトプット(UTXO)、及び、
ii)前記取引の格納された場所を示す識別子を有するメタデータ、を有する、ステップと、
(c)前記取引から導出されるサブ取引を生成するステップであって、前記サブ取引は、決定性アドレスに関連付けられ、
iii)シードを用いて導出された新しい公開鍵を用いて、
iv)前記取引への参照と共に前記レポジトリ上に又はその中に前記サブ取引を格納し、前記参照を含むスクリプトを有するトランザクションを前記ブロックチェーンにブロードキャストし、及び/又は、
v)既存の取引のメタデータに前記サブ取引への参照を追加する、
ことにより生成される、ステップと、
を含む方法が提供される。
【0029】
取引から導出されるサブ取引を生成するステップであって、サブ取引は決定性アドレスに関連付けられ、シードを用いて導出された新しい公開鍵を用いて、取引への参照と共にレポジトリ上に又はその中にサブ取引を格納し、参照を含むスクリプトを有するトランザクションをブロックチェーンにブロードキャストし、及び/又は、既存の取引のメタデータにサブ取引への参照を追加する、ことにより生成される、ステップにより、これは、サブ取引が元の取引に暗号によって結合されるので、確実性又はプライバシの損失を伴わずに、サブ取引が独立に管理可能であるという利点を提供する。さらに、サブ取引をオフブロックレポジトリに格納することにより、メモリ及び処理リソースが最小化できる。
【0030】
方法は、ブロックチェーンを監視するために及び/又は取引内容に基づきアクションを実行するために、コンピュータに基づくエージェントの使用を含み得る。このようなエージェントは、実質的に以下に「本発明と共に使用するための説明のための計算エージェント」と題される章に記載される通りであり得る。
【0031】
本発明は、上述の方法ステップのうちのいずれか又は本願明細書に記載の方法の任意の実施形態を実行するよう構成された、コンピュータにより実施されるシステムを更に提供し得る。本発明は、取引の可視性及び/又は実行を制御するコンピュータにより実施されるシステムであって、前記システムは、
取引を格納するよう構成されたコンピュータに基づくレポジトリと、
トランザクションを有するブロックチェーンであって、前記トランザクションは、
i)少なくとも1つのアウトプット(UTXO)、及び、
ii)前記取引の格納された場所を表す識別子を有するメタデータ、
を有する、ブロックチェーンと、
を含むシステムを提供し得る。
【0032】
メタデータは、取引のハッシュを更に格納して良い。取引はスマートコントラクト(smart contract)であって良い。
【0033】
レポジトリは、データベースを有して良い。これは、DHTを有して良い。これは、インデックス付けされ、検索可能であって良い。これは、取引へのアクセスを制御するために少なくとも1つのセキュリティメカニズムを有して良い。
【0034】
システムは、的セルに構成された計算に基づくエンティティ又はエージェントを更に有して良い。エージェントは、ブロックチェーンを監視し及び/又は検索するよう構成されて良い。これは、ブロックチェーンの状態に基づき、少なくとも1つのアクションを実行するよう構成されて良い。これは、UTXOが使用されたか否かを決定するよう構成されて良い。これは、UTXOが使用されたか否かに基づき1又は複数のアクションを実行するよう構成されて良い。
【0035】
ある実施形態又は態様に関連して本願明細書に記載された任意の特徴は、任意の他の実施形態又は態様に関連して使用されても良い。例えば、方法に関連して記載されて任意の特徴は、システムに関連して使用されて良く、逆も同様である。
【0036】
本発明により提供され得る利益のうちの幾つかの非限定的リストがここで提供される。
【0037】
本発明は、ここでは「取引(contracts)」として参照される場合のある構造化制御条件の自動管理を簡略化する技術的構成を提供し得る。これは、また、疑義の生じた場合に、取引の状態に合意することを容易にする。本発明は、取引の有効性のコンピュータによる自動決定を可能にする方法で、取引のセキュアな公開されたレコードを保持し、及び検証により許可エンティティに取引の詳細を公開するメカニズムも提供し得る。したがって、本発明は、知的な方法でリソースへのアクセスを許可し又は禁止する、セキュリティの向上した制御メカニズムを提供し得る。
【0038】
本発明は、コンピュータシステムを介して聴衆に取引を公表する能力も提供し、取引の詳細が認定エンティティだけに制限可能であるが、取引の存在の知識が公衆に知られるようにする。言い換えると、AとBとの間に取引が存在することを誰もが知ることができ、これは公に検証可能であるが、その存在以外の全ては認定パーティ(標準的にA及びBだけ)に制限される。
【0039】
これは、取引が時間で制限される(つまり、特定時間後に又は所与の日付で取引が終了する)、条件で制限される(つまり、取引の中で指定された成果物が満たされると、取引が終了する)、又は制限のない(つまり、取引を終了すべき通知期間と共に取引がロールオンし続ける)ことを可能にする、コンピュータにより実施されるメカニズムも提供する。
【0040】
これは、該取引を公に終了するための通知を提供するメカニズムを提供し得る。例えば、期間終了を「制定する」ために、使用されるトランザクションの中でnLockTime+CheckLockTimeVerify(CLTV)を用いる。
【0041】
これは、区分化されるべき取引の異なる側面に渡る制御を可能にする決定性の方法で、サブ取引の階層を構造化するメカニズムを提供し得る。例えば、技術の発展過程において、要求段階は、発展段階と異なる制御トリガセットを有することがある。
【0042】
本発明がブロックチェーンプラットフォーム上で実施され、ブロックチェーンの機能を拡張して、技術的に異なる方法で使用可能になるとき、本発明は改良されたブロックチェーンシステム又はプラットフォームを提供し得る。
【0043】
本発明は、例えばデジタルアクセスのために、任意の未使用トランザクション(UTXO)をスマートコントラクトにするために使用できる。例えば、消費者がある期間中にサービスにアクセスするために商人に支払うシナリオを考える。商人の支払アドレスがスマートコントラクトとして実施される場合、本発明は、サービスのためのアクセス制御メカニズムを実装するために使用できる。金銭が支払われたこと、及び期間の終了時に商人のアカウントに価値を運び去るために自動化処理が使用されることを保証するために、チェックが行われ得る。
【発明を実施するための形態】
【0045】
ブロックチェーンに構築されるスマートコントラクトは、ビットコイントランザクションに(つまり、ロック/アンロックスクリプトの中に)直接埋め込まれるロジックを通じて、及び/又は外部のコンピュータに基づくアプリケーションを通じて、施行できる。このような外部のコンピュータに基づくアプリケーションは、「エージェント」、「オラクル」、又は「ボット」として参照される場合がある。さらに、幾つかの取引条件は、nLockTimeフィールドのような他のビットコイントランザクション要素を通じて施行可能である。
【0046】
本願明細書に記載される発明では、取引は、取引を表すブロックチェーン上に有効な未使用トランザクションアウトプットUTXOが存在する限り、事実上残っていると解釈される。この未使用状態は、取引自体の中の条件又は諸規定により振る舞いが制御される種々のメカニズム(例えば、プログラムされた計算エージェント)の結果として影響を受け変更され得ることが理解される。例えば、取引は、該取引が特定日に終了すること、又は該取引が特定値が指定閾に達すると終了することを規定する。
【0047】
取引を表現するために未使用トランザクションアウトプットを使用するこの原理は、暗号化技術のような他の特徴と組み合わせて使用できる。これは、複雑なシナリオ及び活動の実施を可能にする。事実上、未署名トランザクションアウトプットUTXOに関するコンテキスト、及び自身を使用可能にするスクリプト内の関連メタデータは、該トランザクションが、取引の正式な詳細を含むオフチェーンレポジトリへのポインタ又は参照として作用することを可能にする。ここで、「オフチェーン」は、ブロックチェーン自体の部分ではないことを意味する。これは、ブロックチェーンを検査することにより取引が終了しているか又は未だ有効/公開されているかを決定するために、誰もがソフトウェアに基づくコンポーネント又はツールを使用できるようにするメカニズムを提供する。取引が終了すると、これは、トランザクション内の使用済みアウトプットとしてブロックチェーンに記録され、これは公開検査のために利用可能である。ブロックチェーントランザクションは、取引の存在及び現在状態の恒久的、変更不可能、且つ公開されたレコードになる。
【0048】
レポジトリ(「レジストリ」又は「レジスタ」とも呼ばれる)は、例えば分散ハッシュテーブル(distributed hash table:DHT)を含む種々の方法で実装されて良い。取引のハッシュが生成され、メタデータとしてブロックチェーントランザクション内に格納され、ブロックチェーンから取引を参照するための検索キーとして機能できる。取引の場所への参照も、トランザクションメタデータ内で提供される。例えば、レポジトリのURLが提供されて良い。メタデータが公衆の閲覧に付されている間、取引自体は、部分的に保護されなくて良く又はされて良い。
【0049】
CheckLockTimeVerify(CLTV)のような標準的なビットコインの特徴は、取引が、将来のある時点での正式な自動終了を有することを可能にする。ブロックチェーンの使用は、この終了日をセキュアな(変更不可能な)公開レコードの問題にすることを可能にする。この概念は、以下に記載する複数の暗号鍵の使用と組み合わせて、明示的に取り消されない限り、CLTVモデルが取引を自動的にロールオンする又は更新することを可能にする。
【0050】
決定性サブキーの使用は、本願明細書に記載のトークン化メカニズムと組み合わせて、取引に対してサブ取引又はスケジュールが生成されることを可能にする。
【0051】
さらに、オフブロック計算エージェント(オラクル)の使用は、取引条件付けが信頼できる第三者により構築され及び偏光されることを可能にする。これは、エージェントのアクションが、取引定義の中で提供される条件(例えば「IF」ステートメント)により影響され得ることを意味する。
【0052】
<主な用語>
以下の用語が本願明細書で使用され得る。
・取引発行人:
このエンティティは、取引のブロックチェーンへの公表を担う主体を表す。
・関心パーティ:
このエンティティは、特定の取引が未だ場にあるか否かを決定する必要があり得る又は取引の細目を決定する必要があり得る主体を表す。
・レポジトリ:
このエンティティは、ブロックチェーンのスマートコントラクトが参照する取引の構造化表現を安全に保管する/格納する場所を表す。
・取引相手:
このエンティティは、特定取引の相手を表す。多くの場合、このエンティティは存在しないことに留意する。
・取引:
これは、レポジトリ内に格納された構造化文書又はファイルであり、ブロックチェーンから参照される。取引は、任意の種類の取引又は合意であり得る。これは、例えば、金融取引、権利証書、サービス取引、等を含み得る。取引は、その内容の観点で公開又は秘密であり得る。取引は、コード化スキームを用いる構造化方法で表現されるという点で、形式化される。
【0053】
<取引モデル>
取引モデルの基本要素は以下の通りである:
・コード化スキームは、任意の種類の取引の完全な記述を可能にする。スキームは、新しい構成であって良く、又はXBRL、XML、JSON(等)のような既存の設備を使用して良い。
・取引を実施するためのDFA(決定性有限
オートマトン、Deterministic Finite Automaton)は、コード化スキームの中で完全に定義できる。これは、以下から構成される。
− パラメータのセット、これのパラメータを供給すべき場所、
− 状態定義のセット、
− 遷移のトリガ及び遷移中に従うルールを含む、状態間の遷移のセット、
− ルール定義テーブル。
・取引のこのインスタンスのための特定パラメータの定義。
・取引を安全に保管し保護するためのメカニズム。
・取引を、正式な法律の言語で人間に可読にする「ブラウザ」。
・コード化スキームをオラクルコード及び/又はビットコインスクリプトのようなスクリプトに変換する「コンパイラ」。
【0054】
<取引の実施>
取引がレポジトリに登録されると、関連アドレス、例えばURL及びハッシュは、チェーン上のトランザクションを制御トランザクション自体に関連付けるために、ブロックチェーントランザクション内のメタデータとして使用可能である。これは、種々の形式で実施できるが、適切なコード化スキームは、完全のために以下の「コード化スキーム」と題された章で提供される。
【0055】
取引定義に含まれるDFAがどのように実施できるかに関する多数の異なる方法が存在する。
・ブロックチェーントランザクション又はトランザクションシーケンスとして。種々の形式のDFAが、ビットコインスクリプト言語の中で直接実施されて良い。当業者はこれを理解し、本発明はDFAがブロックチェーントランザクションにより実施される方法に関して限定されない。
・エージェントに基づく(例えば、オラクル)プロセス又はプロセスシーケンスとして。以下の「本発明と共に使用するための説明のための計算エージェント」と題された章は、ブロックチェーン及び可能な他の外部ソースを監視するために適切なエージェントを定義し及び実行する基本処理を記載する。
・スマートウォレットに対する指示セットとして。この内容では、スマートウォレットは、トランザクションインプットのブロックチェーントランザクションへの割り当てのような特定取引条件を処理可能なローカルなオラクル処理を事実上簡略化する。
【0056】
所与の取引定義は、上述の3つのメカニズムの混合として実施でき、各取引状態トランザクションは事実上別個の実施であることに留意する。
【0057】
関連トランザクション/コードを手作業で作ることを含む、取引定義から実施を生成する多数の方法が存在する。
【0058】
<取引の存在の公表>
取引の存在(又は取引の中の定義された要素)を公表するために、トランザクションTxは、pay−to−script−hash(P2SH)アドレスを用いてブロックチェーンに公表される。P2SHトランザクションは、トランザクションが送信されるために、受け手が、スクリプトハッシュに適合するスクリプト、及びスクリプト評価を真にマークするデータを提供しなければならないものである。本発明の実施形態に関連して、pay−to−script−hash(P2SH)は、直ちに以下から決定できる。
− 取引の発行人、及び、
− 取引のメタデータ。
【0059】
本発明の幾つかの実施形態に従い、未使用トランザクションは、取引状態の指示子として解釈できる。オフチェーン処理は、ブロックチェーンを監視し、アウトプットが未使用か否かに基づき特定方法で振る舞うよう構成され得る。言い換えると、このアウトプットがブロックチェーン上のUTXOリスト内に残る(つまりトランザクションが未使用のままである)間、これは、メタデータにより指される又は参照される取引の有効性を示す。取引は、このアウトプットが使用されると、完了されたと考えられる。UTXOが存在する限り(取引が有効/公開されたままである)この状態は、取引自体の状態であり得る。しかしながら、他の実施形態では代替の終了条件が適切な場合があるので、これはプロトコルの必須規定ではない。トランザクションが使用された後でも(したがって、UTXOリストの中にもはや存在しない)、該トランザクションは永久にブロックチェーン上に存在したままであり、取引へのポインタ又は参照、及び取引のハッシュを保持したままである。したがって、使用された後でもトランザクションはその機能を保持し得る。
【0060】
<サブ取引/条件>
サブ取引は、既存取引に直接関連する取引である。条件は、取引条件に適合するために満たされなければならない、既存取引の中の条項(clause)である。
【0061】
本発明の実施形態に従い、サブ取引及び条件の両者は、同じ方法で、つまり決定性redeemスクリプトアドレスを有するUTXOとして実装される取引として、実施できる。両方の場合に、エンティティは、UTXOが使用されるとき完了すると解釈できる(ある条件の場合には、これは、該条件が満足されていることを示す)。上述のように、メタデータは、レポジトリ内のエンティティの場所へのポインタ又は参照、及びそのハッシュも依然として含む。したがって、他の実施形態では、取引上指定された条件に依存して、アウトプットが使用された後でも、サブ取引又は条件は存在したままであり、及び機能を保持したままであって良い。
【0062】
条件又はサブ取引の決定性アドレスを生成するために使用可能な多数のメカニズムが存在する。
− シード情報を用いて新しい公開鍵を導出する。
− レポジトリ内にあるマスタ取引への参照と有し、これをメタデータ参照として使用する、サブ取引を生成し公表する。
− 既存取引のメタデータへの参照を条件/サブ取引に追加する。
【0063】
<取引の安全な保管>
取引の正式表現(つまり、取引内容を指定する文書又はファイル)は、特定取引の正式な必要に依存して種々の方法で安全に保管され得る。しかしながら、全ての場合に、取引の存在の公開レコードが、メタデータレコードに含まれるブロックチェーンに公表される(特定のメタデータ構造の詳細については「コード化スキーム」と題された章を参照する)。
【0064】
このブロックチェーンレコードから、認定エンティティは、トランザクションが公表されてから正式表現が変更されていないことを決定するためのハッシュと一緒に、正式表現の場所を知ることができる。
【0065】
しかしながら、多数の方法を通じて正式表現自体を更に安全に保管することが可能である。
− 文書レポジトリ自体が、アクセス制御メカニズムを提示可能である。
− 取引自体が、関連復号鍵へのアクセスを有するこれらのエンティティへのアクセスを制限する標準的な暗号化技術を通じて安全に保管できる。
【0066】
多くの場合、取引自体は、取引について部分的保護を有する。例えば、ファイル内の幾つかのセクションは保護されて良く、一方で、全体的内容は公開される。例えば、固定利率ローンをどのように実施するかの詳細は公開されるが、そのローンを誰が、いくら、及びどんな率で組んだかという知識は取引パーティにだけ知られる。
【0067】
この部分的保護は、取引の中の情報の暗号化、並びに、取引の内容に対する変更を検出するハッシュ、の両方に適用される。
【0068】
多数の取引について、取引の詳細はその寿命に渡り変更され得る。これは、取引自体の再発行を要求すべきではない。これは、取引のサブセットに渡るハッシュの範囲を決定することにより達成できる。これが有用であり得る一例は、契約型投資信託の実施においてである。契約型投資信託を支える取引は変化してはならないが、構成単位の受益者は取引の売りを通じて変更され得る。一実施形態では、変化の記録は、サブ取引を用いて達成できる。
【0069】
<取引の終了>
ブロックチェーンは永久的な変更不可能なトランザクションのレコードを提供するので、取引は、単に関連する取引文書を削除することにより終了できない。これは、セキュアな取引レポジトリが、多数の標準的メカニズムを通じてサポートされるブロックチェーン自体と同じ記憶装置及び維持ルールを有しなければならないことを意味する。これは、ソリューションが、ブロックチェーンレコードを通じて直接に取引の終了を検出するメカニズムを提示しなければならないことを意味する。
【0070】
終了の方法は、取引の中の条件として定められ、様々な方法で施行できる。これらの方法の全部は、本発明により概念的にカバーされる。本発明の好適な実施形態では、終了は、取引を表すUTXOの使用を通じて取り扱われる。
【0071】
多数の取引種類について、取引の終了は、取引自体の公開と同時に公表され得る。実際上、2つのトランザクションが生成される。第1トランザクションは、取引を公表し、取引を表すトランザクションアウトプットを得るためである。第2トランザクションは、該アウトプットを使用するためである。この第2トランザクションは、所与の将来の日(取引の終わりを表す)にアウトプットを使用するために該トランザクションに設定されたCheckLockTimeVerifyを有する。
【0072】
上述のように、これは私達の標準的方法であるが、唯一の方法ではない。
【0073】
この自動使用は、取引のロールリングオンをサポートするために拡張できる(例えば、取引が取り消されない場合、該取引は更に12ヶ月の間、自動的に延長される)。この状況では、UTXOが使用されて、それを「新しい」ロールオンされる取引に送る。しかしながら、ロック時間の前にアウトプットを使用することにより、したがって取引全体を取り消すことにより、古い取引を取り消すことが可能である。
【0074】
<使用例モデル>
図1は、本発明の実施形態による使用例モデルの概観を示す。この説明のための使用例モデルは、ビットコインスクリプト内のDFAの要素を直接実施するために、標準的なビットコイントランザクションがどのように使用できるかを示す。主要な使用例の例が、説明を目的としてここに提供される。
【0075】
<取引の生成>
取引発行人(本例では1次主体である)は、一般的可視性のためにブロックチェーンに取引を公表したいと望む。この処理は、表1に概略を示される。
【表1】
以下に詳述される、2つの主要な実施形態又は本シナリオの変形が存在する。
・既存取引からサブ取引を生成する。
・既存取引を新しい取引へロールオーバする(既存取引を更新する)。
【0076】
<サブ取引の生成>
この状況では、取引発行人は、既存取引からサブ取引を生成したいと望む。この処理は、表2に概略を示される。
【表2】
1又は複数の実施形態によると、サブ取引は独立に監視されて良い。例えば、測量士からの承認の要求される不動産建造取引を検討する。取引は「subject to sign−off by <x>」と記載する。これを実施するために、ステップ150.60が生成され、署名すべき<x>へ巡回させられる。RepayScriptは、時間制限されていないが、要求される署名者が<x>であるn人のうちのm人のマルチシグネチャ要素として生成される。幾つかの実施形態では、トランザクションは、2つのアウトプット:<x>への手数料、及びステップ150.50で生成されたUTXOの支払、を有する。
【0077】
<例示的な使用例:既存取引のロールオーバ>
本使用例では、取引発行人は、既存取引を新しい取引にロールオーバしたいと望む。表3に説明のための処理が提供される。
【表3】
<例:取引のチェック>
本使用例では、関心パーティが、彼(彼女)の問い合わせている活動をカバーする取引が存在することを確認したいと望む。このような処理は、表4に示される。
【表4】
上述の主な変化は、関心パーティが、何らかのルートを通じて取引を支配するトランザクションに気付いていることを想定している(通常、関心パーティが取引発行人又は取引相手である場合である)。しかしながら、取引文書及び取引発行人の知識へのアクセスを有する任意のエンティティは、以下によりチェックできる:
・UTXOトランザクションのRedeemScriptを導出する、及び、
・RedeemScriptハッシュに適合するUTXOを見付けるためにブロックチェーンをスキャンする。
【0078】
<例:取引の終了>
この使用例では、取引発行人又は取引相手は、既存取引を閉じたいと望む。この処理は、表5に概略を示される。
【表5】
<取引条件>
上述と同じメカニズムが、チェックポイントのような所与の取引の中の条件を監視するために使用できる。例えば、取引が100BTCの価値であると決定され、20BTCがチェックポイント1〜5で支払われるべきである場合、上述のサブ取引モデルは、マスタ取引及び5個のサブ取引を導出するために使用できる。これらのサブ取引の各々は、(例えば公証人、又は同様の者のような)同じ又は異なる署名者を用いて完了としてマークできる。この方法では、公開レコードが維持でき、取引に付属する条件が満たされたことを示す。次に、この概念を、処理、又は取引が完了としてマークされると20BTCの支払をトリガするために使用可能なアプリケーション(「ボット」)と組み合わせることが可能である。
【0079】
説明を目的として、本発明が使用され得るアプリケーションのうちの幾つかを示す幾つかの例示的なシナリオが以下に提供される。これらのシナリオの全てで、取引自体の内容は、無関係且つ非限定的であると考えられる。
【0080】
<例示的シナリオ1:資産の公開レジストリ>
本シナリオでは、ボブは、彼の資産(例えば、彼の家)所有権をブロックチェーンに公表することを決定する。この段階で他に行うことはない。次に後続のトランザクションで使用され得るものは単に資産である。この状況では、取引について終了日は存在しない。
図2Aは、2つの状態:(i)取引が開かれている、及び(ii)取引が閉じられている、を有する単純な状態機械を示す。
図2Bは、ビットコイントランザクションアウトプット上で伝達され、取引場所及び(ハッシュにより)有効性の証明を指定する、メタデータ定義を示す。
図2Cは、ブロックチェーンに取引を最初に格納した「発行」トランザクションを示す(しかしながら、これは実際には、実際の取引ではなく、ハッシュを格納するだけである)。
図2Dは、ビットコインを使用することにより取引を取り消す。
【0081】
<例示的シナリオ2:隠された所有権を有する資産の生成及びレジストリ>
これは、シナリオ1の僅かに拡張されたバージョンであり、ボブは、ブロックチェーンに資産を公表したいと望むが、彼の所有権を直接明かすことを望まない。
【0082】
この状況では、ボブは、先ず、資産を表現するために、彼の公開鍵からサブキーを生成する。このサブキーは、次に、資産の詳細の部分としてブロックチェーン上で公開される。ここでも、この状況では、資産について終了日は存在しない。(詳細な例は、サブキーが生成され得る1つの方法について以下に提供される。「サブキー生成の方法」と題された以下の章を参照する。)
本シナリオの状態機械は、
図2Aに示すようなシナリオ1の状態機械と同じである。
図3Aは、本シナリオのためのメタデータ定義を示す。メタデータは、ビットコイントランザクションアウトプット上で伝達され、取引場所及び(ハッシュにより)有効性の証明を指定する。
図3Bは、アセットに「資金を供給する」ためのトランザクションを示す。つまり、幾つかのビットコインを資産の公開鍵に入れて、資産が(
図3Cに示す公開トランザクションのような)自身のトランザクションに資金供給できるようにする。
図3Bは、ビットコイントランザクションではないので、ボブによる資産サブキーの生成を示さない。
【0083】
図3Cは、資産の公開のためのブロックチェーントランザクションを示す。
図3Dは、取引の閉鎖のためのトランザクションを示す。取引の取り消しが要求されると、UTXOが使用される。この状況では、要件は、資産及び署名すべき資産の隠された所有者の両者のためである。
【0084】
<例示的シナリオ3:賃貸借取引>
この説明のための状況では、ボブは、3年間の固定期間の間、イブと賃貸借取引を組む。取引の条項は、支払数を指定する。支払の詳細は、本発明に関して関係ない。しかしながら、取引は破棄条項を有しない固定条項を有する。
【0085】
これは、
図4Aに示すような単純な状態機械モデルを有する。
図4Bは、本シナリオのためのメタデータを示す。
図4Cは、資産の所有権をブロックチェーン上で公表するためのトランザクションを示す。先ず、ボブが資産に何らかの資金を供給し、次に、資産が自身を公表する。
【0086】
<例示的シナリオ4:取引のローリング>
この説明のための状況では、ボブは、ローリング年率ベースでイブから家を借りることを決定する。ここで、彼は、更新日に賃貸借を取り消すために2ヶ月前に通知を提供する必要がある。その他の場合には、自動継続される。これは、
図5Aに示すような単純な状態機械モデルを有する。
図5Bは、本シナリオのためのメタデータを示す。
図5Cは、初期取引及び取引の初期ロールオーバをブロックチェーン上に公表するためのトランザクションを示す。
【0087】
最初の年の後に、ボブは、賃貸借を継続し、終了しない。EVE−S3−T2は公表された直後に、自動計算エージェントにより取り上げられ、もう1年継続される。留意すべきことに、これはイブ自身の内部ロジックを用いてイブにより行われることも可能である。
【0088】
2年目の後に、ボブは、賃貸借を終了することを選択し、EVE−S3−T3と同じインプットを用いてトランザクションを提出する。しかしながら、このトランザクションは未だ提出されていないので、インプットは未使用であり、ボブのトランザクションが最初にブロックチェーン上に公表された場合、EVE−S3−T3を無効にしてしまう。含まれる額は些細であるが、ボットは、アウトプットがイブの公開鍵ハッシュに向けられない限り(又は取引が実際に何を記載しても)、トランザクションに連署しない。ボブの取引の終了のためのトランザクションは
図5Dに示される。
【0089】
<例示的シナリオ5:取引条件付き>
この説明のための状況では、ボブは、新しい不動産を供給するために建築業者のプールと契約に入り、独立した承認を必要とする取引の中の多数の条件を指定する(第1条件は、ローカルの計画当局からの計画の認可である)。これは、
図6Aに示すような単純な状態機械モデルを有する。
図6Bは、本シナリオのためのメタデータを示す。
図6Cは、ボブが、(場合によっては後述するサブキー生成技術を用いて、間rねんサブキーを導出した後に)初期取引及び2つのサブ取引を生成し、それらを公表するトランザクションを示す。
図6Dは、計画許可が承認されるときのためのトランザクションを示す。
【0090】
<コード化スキーム>
取引を参照するために使用されるメタデータは、様々な方法でフォーマット化できる。しかしながら、適切なコード化スキームがここに記載される。
【0091】
取引の定める権利が取引の保持者又は所有者に贈与される場合、取引は転送可能である。非転送可能取引の一例は、参加者が指名される取引である。つまり、権利が、取引の保持者ではなく特定の指名されたエンティティに贈与される。転送可能取引だけが、このコード化スキームで議論される。
【0092】
トークンは、取引により贈与される権利を詳述する又は定める特定取引を表す。本発明に従い、トークンは、ビットコイントランザクションの形式の取引の表現である。
【0093】
このコード化方法は、3つのパラメータ又はデータアイテムを有するメタデータを使用する。このデータは、以下を示し得る:
i)取引の下で利用可能な株(share、持分)の量
(これは、本願明細書で「NumShares」と呼ばれることがある)、
ii)送り手から少なくとも1つの受け手へ転送されるべき転送単位の量(これは、「ShareVal」と呼ばれることがある)、
iii)転送単位の量の値を計算するための因子(これは、「ペギングレート(pegging rate)」と呼ばれることがある)。
【0094】
このコード化スキームの利点は、上述の3つのパラメータだけを用いて、ブロックチェーン上のトークンとして取引をカプセル化又は表現するために使用できることである。実際に、取引は、これらの3つのデータアイテムのうちの最小限を用いて指定できる。このコード化スキームは任意の種類の転送可能取引のために使用可能なので、共通アルゴリズムが考案され適用され得る。これらのメタデータアイテムの更なる詳細は、以下に提供される。
【0095】
分割可能トークンは、トランザクションアウトプット上の値が、複数のトークンに渡り(つまり、複数のトランザクションに渡り)割り当てられるより小さな量に細分化され得るものである。典型は、トークン化されたフィアット通貨である。分割可能取引は、非ゼロペギングレート(PeggingRate)を指定する取引として定められる。分割可能取引では、トランザクションアウトプットの中で転送されるトークン化された値は、ペギングレートにより基礎ビットコイン(bitcoin:BTC)値に結び付けられる。つまり、取引ah、ペギングレートの観点で、保持者の権利を指定する。非分割可能トークンでは、ペギングレートが存在せず、取引は、固定値の観点で、保持者の権利を指定する(例えば、「この取引は、正確に$1000で換金できる」という無記名債券、又は「この取引は1ヘアカットと交換可能である」という商品引換券のように)。非」分割可能取引では、基礎トランザクションBTC値は取引値と無関係である。
【0096】
表現「基礎BTC値」は、トランザクションアウトプットに付加されるビットコイン額(BTC)を表す。ビットコインプロトコルでは、各トランザクションアウトプットは、有効と考えられる非ゼロBTC額を有しなければならない。実際には、BTC額は、記述時に現在546サトシに設定される設定最小値(「ダスト(dust)」)より大きくなければならい。1ビットコインは、100百万サトシに等しいと定められる。ビットコイントランザクションは本願明細書では所有権の交換を助ける手段としてのみ使用されるので、実際の基礎BTC額は任意である。真の値は、取引仕様の中にある。理論上、全てのトークンは、ダストにより伝達され得る。
【0097】
本発明のコード化スキームに従い、具体的に、分割可能トークンでは、基礎BTC値は次の意味:ペギングレートにより取引値との関係を運ぶ、を有する。ペギングレートは、それ自体任意であり、基礎BTC額を小さく保つために選択される。単にダストを有する基礎となる各トークントランザクションではなく、ペギングレートを使用する理由は、本発明のプロトコルが可視性を実現するからである。トークンが幾つかの小さな額のトランザクションアウトプットに分けられるとき、元の取引を調整する必要がない。むしろ、各細分化トークンの取引値は、単に、ペギングレート及び基礎BTC値の細分化された額に基づき計算される。
【0098】
限定トークンは、NumSharesと呼ばれる量により定められる固定非ゼロの株数により合計発行値が固定された(又は「限定された」)トークンである。したがって、限定取引の下では更なる株は発行されない。例えば、競走馬の共同所有権のための取引は、競走馬の100%に限定される(例えば、それぞれ1%で100個の株、又はそれぞれ10%で10個の株、等)。非限定取引は、例えば要求額のフィアット通貨を彼らの引当金(Reserve Account)に追加することにより、発行人が株の更なる発行を引き受け可能であることを意味する。NumSharesは、全ての取引に明示的に記載されなければならない。限定取引は、NumShares>0を有しなければならない。非限定取引は、NumShares=0を設定することにより示される。
【0099】
典型的な例は、準備預金口座に保持される合計値が存在する約束手形(つまり未償還トークン)の合計値に一致するようにする、通貨準備(金準備と類似する)である。この概念は、通貨準備を超えて、在庫ストックにまで拡大する。例えば、認可印刷Tシャツトークンの発行人は、10,000枚のTシャツの在庫で開始して良く、これらの10,000枚のTシャツを表す分割可能トークンを発行して良い(ここで、各株=1枚のTシャツを表す)。元のトークンは細分化でき、各細分化トークンは、ペギングレートにより定められるトランザクションアウトプットの基礎BTC値に従い、Tシャツの枚数に償還可能である。しかしながら、需要が増大する場合、発行人は更なる株を発行することを決定して良い(つまり、更に10,000枚だけ流通株数を増大する)。このような場合には、更なる発行を引き受けるために、発行人の準備口座(つまり、在庫倉庫)に更に10,000枚のTシャツを預けることが、発行人の義務である。したがって、在庫にあるTシャツの合計枚数は、常に、合計未償還株数である(ここで、在庫は「準備口座」として作用する)。
【0100】
ペギングレートは、分割可能取引にのみ適用される。ここで、(ShareValと呼ばれる量により表される)株の値は、基礎BTC額に固定される。例えば、取引は、発行人が基礎1BTC毎に$10,000のレートでトークンを償還することを約束すると指定して良い。これは、(例えば)15,400サトシのトークン化された基礎アウトプット値を有するトランザクションが$1.54で償還可能であることを意味し得る。ペギングレートについて0の値は、取引が非分割可能であることを示す(つまり、無記名債券のように、全体のみが転送可能である)。ペギングレートが0に設定されると(非分割可能トークンを意味する)、基礎BTC値は、取引値と無関係であり、任意の額に設定可能である。通常、この場合には、運用コストを最小化するために、基礎BTC額を可能な限り小さく保つ(つまり、ダストに設定する)ことが望ましい。
【0101】
NumSharesは、(限定)取引の下で利用可能な合計(固定)株数である。限定取引では、NumSharesは、ゼロより大きい全体数でなければならない。非限定取引では、いつでも(引き受けられるならば)より多くの株が発行可能なので、NumSharesは固定されない。これは、値を0に設定することにより示される。
【0102】
株は、転送単位として定められ、ShareValはその単位の値である。例えば、フィアット通貨では、転送単位は1セントに設定されて良い。あるいは、例えば、転送単位は50セントに設定されて良く、この場合には、転送は50セントの「ロット」でのみ実行できる。ShareValは、パーセンテージとしても表現できる。例えば、ブリーダが競走馬を10個の等しい株で売りたいと望む場合、ShareVal=0を設定10%である。ShareValは0より大きくなければならず、且つ取引において定められなければならない。
【0103】
TotalIssuanceは、発行された株の合計値を表す。この値は限定取引にのみ関連する。非限定取引については、発行は固定されず、より多くの株が発行されて良い。株がパーセンテージとして表現される場合、定義によりTotalIssuance=0を設定100%である。
【0104】
限定取引では、NumShares、ShareVal、及びTotalIssuanceは、以下のように関連する。
【0105】
NumShares×ShareVal=TotalIssuance
TotalIssuanceの0の値は、非限定取引であることを意味する。非限定取引の一例は、フィアット通貨である(したがって、TotalIssuanceは0に設定される)。限定取引の例は、(i)限定版記念硬貨(1000個鋳造され、1株=1硬貨である)、TotalIssuance=1000×1=1000個の硬貨、(ii)入場券のある会場の席、TotalIssuance=利用可能な合計席数、である。
【0106】
流通は、未使用トークンの合計値として定められる(つまり、UTXO(未使用トランザクションアウトプット)の中のトランザクションにより決定される)。全部の未使用トランザクションの完全な集合は、全てのビットコインノードに利用可能なリストの中に保持される。例えば、発行人が最初に$10,000をフィアット通貨型のトークンとして発行し、時間を経て$5500の価値のトークンが償還された場合、流通=$4500である(未償還トークンの値である)。この値は、関連する準備口座の差引残高に調整されるべきである。
【0107】
<サブキー生成の方法>
以上では、表3及び例示的なシナリオは、元の(マスタ)キーからサブキーを生成することが有利である状況を参照した。これが実行され得る1つの方法を説明するために、これを達成する方法が以下に提供される。
【0108】
図7は、通信ネットワーク5を介して第2ノード7と通信する第1ノード3を含むシステム1を示す。第1ノード3は関連する第1処理装置23を有し、及び第2ノード5は関連する第2処理装置27を有する。第1及び第2ノード3、7は、コンピュータ、電話機、タブレットコンピュータ、モバイル通信装置、コンピュータサーバ、等のような電子装置を含んで良い。一例では、第1ノード3はクライアント(ユーザ)装置であって良く、第2ノード7はサーバであって良い。サーバは、デジタルウォレットプロバイダのサーバであって良い。
【0109】
第1ノード3は、第1ノードマスタ秘密鍵(V
1C)及び第1ノードマスタ公開鍵(P
1C)を有する第1非対称暗号対に関連付けられる。第2ノード7は、第2ノードマスタ秘密鍵(V
1S)及び第2ノードマスタ公開鍵(P
1S)を有する第2非対称暗号対に関連付けられる。言い換えると、第1及び第2ノードは、それぞれ、個々の公開−秘密鍵対を保有する。
【0110】
個々の第1及び第2ノード3、7の第1及び第2非対称暗号対は、ウォレットの登録のような登録処理中に生成されて良い。各ノードの公開鍵は、通信ネットワーク5に渡るように、公に共有されて良い。
【0111】
第1ノード3及び第2ノード7の両者において共通シークレット(common secret:SC)を決定するために、ノード3、7は、通信ネットワーク5を介して秘密鍵を通信することなく、それぞれ方法300、400のステップを実行する。
【0112】
第1ノード3により実行される方法300は、少なくとも第1ノードマスタ秘密鍵(V
1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2秘密鍵(V
2C)を決定するステップ330を含む。生成器値は、第1ノードと第2ノードとの間で共有されるメッセージ(M)に基づいて良い。これは、以下に詳述するように、通信ネットワーク5を介してメッセージを共有するステップを含んで良い。方法300は、少なくとも第2ノードマスタ公開鍵(P
1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2公開鍵(P
2S)を決定するステップ370を更に含む。方法300は、第1ノード第2秘密鍵(V
2C)及び第2ノード第2公開鍵(P
2S)に基づき、共通シークレット(common secret:CS)を決定するステップ380を含む。
【0113】
重要なことに、同じ共通シークレット(CS)が、方法400により第2ノード7においても決定できる。方法400は、第1ノードマスタ公開鍵(P
1C)及び生成器値(Generator Value:GV)に基づき、第1ノード第2公開鍵(P
2C)を決定するステップ430を含む。方法400は、第2ノードマスタ秘密鍵(V
1S)及び生成器値(Generator Value:GV)に基づき、第2ノード第2秘密鍵(V
2S)を決定するステップ470を更に含む。方法400は、第2ノード第2秘密鍵(V
2S)及び第1ノード第2公開鍵(P
2C)に基づき、共通シークレット(common secret:CS)を決定するステップ480を含む。
【0114】
通信ネットワーク5は、ローカルエリアネットワーク、ワイドエリアネットワーク、セルラネットワーク、無線通信ネットワーク、インターネット、等を含んで良い。これらのネットワークでは、データは電気線、光ファイバ、又は無線のような通信媒体を介して送信されて良く、登頂者11による様な盗聴を受けやすい場合がある。方法300、400は、通信ネットワーク5を介して共通シークレットを送信することなく、第1ノード3及び第2ノード7が共通シークレットを両方とも独立して決定できるようにする。
【0115】
したがって、1つの利点は、安全でない可能性のある通信ネットワーク5を介して秘密鍵を送信する必要を有しないで、共通シークレット(CS)が安全に且つ各ノードにより独立して決定できることである。また、共通シークレットは、秘密鍵として(又は秘密鍵の基礎として)使用されて良い。
【0116】
方法300、400は、追加ステップを含んで良い。
図11を参照する。方法300は、第1ノード3において、メッセージ(M)及び第1ノード第2秘密鍵(V
2C)に基づき、署名メッセージ(SM1)を生成するステップを含んで良い。方法300は、第1署名メッセージ(SM1)を通信ネットワークを介して第2ノード7へ送信するステップ360を更に含む。一方、第2ノード7は、第1署名メッセージ(SM1)を受信するステップ440を実行して良い。方法400は、第1署名メッセージ(SM2)を第1ノード第2公開鍵(P2C)により検証するステップ450、及び第1署名メッセージ(SM1)を検証するステップの結果に基づき第1ノード3を認証するステップ460を更に含む。有利なことに、これは、第2ノード7が、(第1署名メッセージが生成された場所である)意図された第1ノードが第1ノード3であることを認証することを可能にする。これは、第1ノード3だけが、第1ノードマスタ秘密鍵(V
1C)へのアクセスを有する、したがって、第1ノード3だけが、第1署名メッセージ(SM1)を生成するための第1ノード第2秘密鍵(V
2C)を決定できるという仮定に基づく。理解されるべきことに、同様に、第2署名メッセージ(SM2)は、第2ノード7において生成され、第1ノード3へ送信され得る。したがって、ピアツーピアシナリオにおけるように、第1ノード3は、第2ノード7を認証できる。
【0117】
第1ノードと第2ノードの間のメッセージ(M)の共有は、様々な方法で達成されて良い。一例では、メッセージは、第1ノード3において生成されて良く、次に通信ネットワーク5を介して第2ノード7へ送信される。代替として、メッセージは、第2ノード7において生成されて良く、次に通信ネットワーク5を介して第1ノード3へ送信される。幾つかの例では、メッセージ(M)は公開されて良く、したがってセキュアでないネットワーク5を介して送信されて良い。1又は複数のメッセージ(M)は、データストア13、17、19に格納されて良い。当業者は、メッセージの共有が様々な方法で達成できることを理解する。
【0118】
有利なことに、共通シークレット(CS)の再生成を可能にするレコードは、そのレコード自体が秘密に格納され又はセキュアに送信される必要がなく、保持され得る。
【0119】
<登録の方法100、200>
登録の方法100、200の一例は、
図9を参照して記載される。
図9では、方法100は第1ノード3により実行され、方法200は第2ノード7により実行される。これは、それぞれ第1ノード3及び第2ノード7のために第1及び第2非対称暗号対を確立するステップを含む。
【0120】
非対称暗号対は、公開鍵暗号化で使用されるような、関連付けられた秘密鍵及び公開鍵を含む。本例では、非対称暗号対は、楕円曲線暗号システム(Elliptic Curve Cryptography:ECC)及び楕円曲線演算の特性を用いて生成される。
【0121】
方法100、200では、これは、共通ECCシステムに合意している110、210、且つ基点(G)を用いる、第1ノード及び第2ノードを含む(注:基点は、共通生成器として参照され得るが、用語「基点」は、生成器値GVとの混同を避けるために使用される)。一例では、共通ECCシステムは、ビットコインにより使用されるECCシステムであるsecp256K1に基づいて良い。基点(G)は、選択され、ランダムに生成され、又は割り当てられて良い。
【0122】
ここで第1ノード3について考えると、方法100は、共通ECCシステム及び基点(G)を解決するステップ110を含む。これは、第2ノード7又は第3ノード9から、共通ECCシステム及び基点を受信するステップを含んで良い。代替として、ユーザインタフェース15は、第1ノード3に関連付けられる。これにより、ユーザは、共通ECCシステム及び/又は基点(G)を選択的に提供できる。更に別の代替案では、共通ECCシステム及び/又は基点(G)の一方又は両方が、第1ノード3によりランダムに選択されて良い。第1ノード3は、通信ネットワーク5を介して、基点(G)と共に共通ECCシステムを使用することを示す通知を、第2ノード7へ送信して良い。また、第2ノード7は、共通ECCシステム及び基点(G)の使用に対する肯定応答を示す通知を送信することにより、解決して良い210。
【0123】
方法100は、第1ノード3が、第1ノードマスタ秘密鍵(V
1C)及び第1ノードマスタ公開鍵(P
1C)を有する第1非対称暗号対を生成するステップ120を更に含む。これは、共通ECCシステムの中で指定された許容範囲の中のランダム整数に少なくとも部分的に基づき、第1ノードマスタ秘密鍵(V
1C)を生成するステップを含む。これは、次式に従い第1ノードマスタ秘密鍵(V
1C)及び基点(G)の楕円曲線点乗算に基づき、第1ノードマスタ公開鍵(P
1C)を決定するステップを更に含む。
P
1C=V
1C×G (式1)
したがって、第1非対称暗号対は、以下を含む:
V
1C:第1ノードにより秘密に保持される第1ノードマスタ秘密鍵。
P
1C:公に知らされる第1ノードマスタ公開鍵。
【0124】
第1ノード3は、第1ノードマスタ秘密鍵(V
1C)及び第1ノードマスタ公開鍵(P
1C)を、第1ノード3に関連付けられた第1データストア13に格納して良い。セキュリティのために、第1ノードマスタ秘密鍵(V
1C)は、鍵が秘密のままであることを保証するために、第1データストア13のセキュアな部分に格納されて良い。
【0125】
方法100は、
図9に示すように、第1ノードマスタ公開鍵(P
1C)を通信ネットワーク5を介して第2ノード7へ送信するステップ130を更に含む。第2ノード7は、第1ノードマスタ公開鍵(P
1C)を受信すると220、第1ノードマスタ公開鍵(P
1C)を第2ノード7に関連付けられた第2データストア17に格納して良い230。
【0126】
第1ノード3と同様に、第2ノード7の方法200は、第2ノードマスタ秘密鍵(V
1S)及び第2ノードマスタ公開鍵(P
1S)を有する第2非対称暗号対を生成するステップ240を含む。第2ノードマスタ秘密鍵(V
1S)も、許容範囲内のランダム整数である。また、第2ノードマスタ公開鍵(P
1S)は、次式により決定される。
P
1S=V
1S×G (式2)
したがって、第2非対称暗号対は、以下を含む:
V
1S:第2ノードにより秘密に保持される第2ノードマスタ秘密鍵。
P
1S:公に知らされる第2ノードマスタ公開鍵。
【0127】
第2ノード7は、第2非対称暗号対を第2データストア17に格納して良い。方法200は、第2ノードマスタ公開鍵(P
1S)を第1ノード3へ送信するステップ250を更に含む。また、第1ノード3は、第2ノードマスタ公開鍵(P
1S)を受信し140、格納して良い150。
【0128】
理解されるべきことに、幾つかの代案では、それぞれの公開マスタ鍵は、受信され、(信頼できる第三者のような)第3ノード9に関連付けられた第3データストア19に格納されて良い。これは、認証機関のような、公開ディレクトリとして動作する第三者を含んで良い。したがって、幾つかの例では、第1ノードマスタ公開鍵(P
1C)は、共通シークレット(CS)が要求されるときだけ、第2ノード7により要求され受信されて良い(逆も同様である)。
【0129】
登録ステップは、初期設定として1度生じるだけで良い。
【0130】
<セッション開始及び第1ノード3による共通シークレットの決定>
共通シークレット(CS)を決定する一例は、
図10を参照してここに記載される。共通シークレット(CS)は、第1ノード3と第2ノード7との間の特定のセッション、時間、トランザクション、又は他の目的のために使用されて良く、同じ共通シークレット(CS)を使用することが望ましい又はセキュアでなくて良い。したがって、共通シークレット(CS)は、異なるセッション、時間、トランザクション、等の間で変更されて良い。
【0131】
以下は、上述したセキュアな送信技術の説明のために提供される。
【0132】
[メッセージ(M)を生成する310]
本例では、第1ノード3により実行される方法300は、メッセージ(M)を生成するステップ310を含む。メッセージ(M)は、ランダム、疑似ランダム、又はユーザ定義であって良い。一例では、メッセージ(M)は、Unix時間又はノンス(及び任意の値)に基づく。例えば、メッセージ(M)は次のように与えられ得る。
メッセージ(M)=Unix時間+ノンス (式3)
幾つかの例では、メッセージ(M)は任意である。しかしながら、理解されるべきことに、メッセージ(M)は、幾つかのアプリケーションで有用であり得る(Unix時間、等のような)選択的値を有して良い。
【0133】
方法300は、メッセージ(M)を通信ネットワーク5を介して第2ノード7へ送信するステップ315を含む。メッセージ(M)は秘密鍵についての情報を含まないので、メッセージ(M)は、セキュアでないネットワークを介して送信されて良い。
【0134】
[生成器値(GV)を決定する320]
方法300は、メッセージ(M)に基づき生成器値(Generator Value:GV)を決定するステップ320を更に含む。本例では、これは、メッセージの暗号ハッシュを決定するステップを含む。暗号ハッシュアルゴリズムの一例は、256ビット発生器値(GV)を生成するためにSHA−256を含む。つまり、
GV=SHA−256(M) (式4)
理解されるべきことに、他のハッシュアルゴリズムが使用されて良い。これは、セキュアなハッシュアルゴリズム(Secure Hash Algorithm:SHA)ファミリの中の他のハッシュアルゴリズムを含んで良い。幾つかの特定の例は、SHA3−224、SHA3−256、SHA3−384、SHA3−512、SHAKE128、SHAKE256を含むSHA−3サブセットの中のインスタンスを含む。他のハッシュアルゴリズムは、RIPEMD(RACE Integrity Primitives Evaluation Message Digest)ファミリの中のアルゴリズムを含んで良い。特定の例は、RIPEMD−160を含んで良い。他のハッシュ関数は、Zemor−Tillichハッシュ関数及びナップサック・ハッシュ関数に基づくファミリを含んで良い。
【0135】
[第1ノード第2秘密鍵を決定する330]
方法300は、次に、第2ノードマスタ秘密鍵(V
1C)及び生成器値(GV)に基づき、第1ノード第2秘密鍵(V
2C)を決定するステップ330を含む。これは、次式に従い第1ノードマスタ秘密鍵(V
1C)及び生成器値(GV)のスカラ加算に基づき得る。
V
2C=V
1C+GV (式5)
【0136】
したがって、第1ノード第2秘密鍵(V
2C)は、ランダム値ではないが、代わりに第1ノードマスタ秘密鍵から確定的に導出される。暗号対の中の対応する公開鍵、つまり第1ノード第2公開鍵(P
2C)は、以下の関係を有する。
P
2C=V
2C×G (式6)
【0137】
式5から式6にV
2Cを代入すると、次式を得る。
P
2C=(V
1C+GV)×G (式7)
ここで、「+」演算子はスカラ加算を表し、「×」演算子は楕円曲線点乗算を表す。楕円曲線暗号代数は、分配的であり、式7は次式のように表すことができる。
P
2C=V
1C×G+GV×G (式8)
【0138】
最後に、(式1)は(式7)に代入され、次式を得る。
P
2C=P
1C+GV×G (式9.1)
P
2C=P
1C+SHA−256(M)×G (式9.2)
式8〜9.2において、「+」演算子は楕円曲線点加算を表す。したがって、対応する第1ノード第2公開鍵(P
2C)は、第1ノードマスタ公開鍵(P
1C)及びメッセージ(M)の導出可能な所与の知識であり得る。方法400に関して以下に更に詳述するように、第2ノード7は、第1ノード第2公開鍵(P
2C)を独立に決定するために、このような知識を有して良い。
【0139】
[メッセージ及び第1ノード第2秘密鍵に基づき、第1署名メッセージ(SM1)を生成する350]
方法300は、メッセージ(M)及び決定した第1ノード第2秘密鍵(V
2C)に基づき、第1署名メッセージ(SM1)を生成するステップ350を更に含む。署名メッセージを生成するステップは、メッセージ(M)にデジタル方式で署名するために、デジタル署名アルゴリズムを適用するステップを含む。一例では、これは、第1署名メッセージ(SM1)を得るために、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)の中でメッセージに第1ノード第2秘密鍵(V
2C)を適用するステップを含む。ECDSAの例は、secp256k1、secp256r1、secp384r1、se3cp521r1を有するECCシステムに基づくものを含む。
【0140】
第1署名メッセージ(SM1)は、第2ノード7において対応する第1ノード第2公開鍵(P
2C)により検証できる。第1署名メッセージ(SM1)のこの検証は、第1ノード3を認証するために第2ノード7により使用されて良い。これは、方法400において以下に議論される。
【0141】
[第2ノード第2公開鍵を決定する370’]
第1ノード3は、次に、第2ノード第2公開鍵(P
2S)を決定して良い370。上述のように、第2ノード第2公開鍵(P
2S)は、少なくとも第2ノードマスタ公開鍵(P
1S)及び生成器値(GV)に基づいて良い。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので370’、第2ノード第2公開鍵(P
2S)は、式6と同様に次のように表すことができる。
P
2S=V
2S×G (式10.1)
P
2S=P
1S+GV×G (式10.2)
式10.2の数学的証明は、第1ノード第2公開鍵(P
2C)について式9.1を導出するために上述したものと同じである。理解されるべきことに、第1ノード3は、第2ノード7と独立に第2ノード第2公開鍵を決定できる370。
【0142】
[第1ノード3において共通シークレットを決定する380]
第1ノード3は、次に、第1ノード第2秘密鍵(V
2C)及び決定した第2ノード第2公開鍵(P
2S)に基づき、共通シークレット(CS)を決定して良い380。共通シークレット(CS)は、第1ノード3により次式により決定されて良い。
S=V
2C×P
2S (式11)
【0143】
<第2ノード7において実行される方法400>
第2ノード7において実行される対応する方法400が、ここで説明される。理解されるべきことに、これらのステップのうちの幾つかは、第1ノード3により実行された上述のステップと同様である。
【0144】
方法400は、メッセージ(M)を通信ネットワーク5を介して第1ノード3から受信するステップ410を含む。これは、ステップ315において第1ノード3により送信されたメッセージ(M)を含んで良い。第2ノード7は、次に、メッセージ(M)に基づき生成器値(GV)を決定する420。第2ノード7により生成器値(GV)を決定するステップ420は、上述の第1ノードにより実行されるステップ320と同様である。本例では、第2ノード7は、第1ノード3と独立の、この決定するステップ420を実行する。
【0145】
次のステップは、第1ノードマスタ公開鍵(P
1C)及び生成器値(GV)に基づき、第1ノード第2公開鍵(P
2C)を決定するステップ430を含む。本例では、公開鍵は、基点(G)との楕円曲線点乗算により秘密鍵として決定されるので430’、第1ノード第2公開鍵(P
2C)は、式9と同様に次のように表すことができる。
P
2C=V
2C×G (式12.1)
P
2C=P
1C+GV×G (式12.2)
【0146】
式12.1及び12.2の数学的証明は、式10.1及び10.2について上述したものと同じである。
【0147】
[第2ノード7が第1ノード3を認証する]
方法400は、未確認第1ノード3が第1ノード3であることを認証するために、第2ノード7により実行されるステップを含んで良い。上述のように、これは、第1ノード3から第1署名メッセージ(SM1)を受信するステップ440を含む。第2ノード7は、次に、ステップ430で決定された第1ノード第2公開鍵(P
2C)により第1署名メッセージ(SM1)の署名を検証して良い450。
【0148】
デジタル署名の検証は、上述の楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)に従い行われて良い。重要なことに、第1ノード第2秘密鍵(V
2C)により署名された第1署名メッセージ(SM1)は、V
2C及びP
2Cが暗号対を形成するので、対応する第1ノード第2公開鍵(P
2C)によってのみ正しく検証されるべきである。これらの鍵は、第1ノード3の登録で生成された第1ノードマスタ秘密鍵(V
1C)及び第1ノードマスタ公開鍵(P
1C)において確定するので、第1署名メッセージ(SM1)の検証は、第1署名メッセージ(SM1)を送信する未確認第1ノードが登録中と同じ第1ノード3であることを認証する基礎として使用できる。したがって、第2ノード7は、第1署名メッセージを検証するステップ(450)の結果に基づき、第1ノード3を認証するステップ(460)を更に実行して良い。
【0149】
[第2ノード7が共通シークレットを決定する]
方法400は、第2ノード7が、第2ノードマスタ秘密鍵(V
1S)及び生成器値(GV)に基づき、第2ノード第2秘密鍵(V
2S)を決定するステップ470を更に含んで良い。第1ノード3により実行されるステップ330と同様に、第2ノード第2秘密鍵(V
2S)は、次式に従い、第2ノードマスタ秘密鍵(V
1S)及び生成器値(GV)のスカラ加算に基づき得る。
V
2S=V
1S+GV (式13.1)
V
2S=V
1S+SHA−256(M) (式13.2)
【0150】
第2ノード7は、次に、第1ノード3と独立して、次式に基づき、第2ノード第2秘密鍵(V
2S)及び第1ノード第2公開鍵(P
2C)に基づき、共通シークレット(CS)を決定して良い480。
S=V
2S×P
2C (式14)
【0151】
[第1ノード3及び第2ノード7により決定された共通シークレット(CS)の証明]
第1ノード3により決定された共通シークレット(CS)は、第2ノード7において決定された共通シークレット(CS)と同じである。式11及び式14が同じ共通シークレット(CS)を提供することの数学的証明が、ここで記載される。
【0152】
第1ノード3により決定された共通シークレット(CS)を考えると、次のように式10.1は式11に代入できる。
S=V
2C×P
2S (式11)
S=V
2C×(V
2S×G)
S=(V
2C×V
2S)×G (式15)
【0153】
第2ノード7により決定された共通シークレット(CS)を考えると、次のように式12.1は式14に代入できる。
S=V
2S×P
2C (式14)
S=V
2S×(V
2C×G)
S=(V
2S×V
2C)×G (式16)
【0154】
ECC代数学は可換性なので、次の通り式15及び式16は等価である。
S=(V
2C×V
2S)×G=(V
2S×V
2C)×G (式17)
【0155】
[共通シークレット(CS)及び秘密鍵]
共通シークレット(CS)は、ここで、第1ノード3と第2ノード7との間のセキュアな通信のために、対称鍵アルゴリズムにおいて、秘密鍵として又は秘密鍵の基礎として、使用できる。
【0156】
共通シークレット(CS)は、楕円曲線点(x
S,y
S)の形式であって良い。これは、ノード3、7により合意された標準的な公に知られた演算を用いて、標準的な鍵フォーマットに変換されて良い。例えば、x
S値は、AES
256暗号鍵として使用され得る256ビットの整数であって良い。これは、更に、160ビットの長さの鍵を必要とする任意のアプリケーションのために、RIPEMD160を用いて160ビットの整数に変換され得る。
【0157】
共通シークレット(CS)は、必要に応じて決定されて良い。重要なことに、共通シークレット(CS)はメッセージ(M)に基づき再決定できるので、第1ノード3は共通シークレット(CS)を格納する必要がない。幾つかの例では、使用されるメッセージ(M)は、マスタ秘密鍵のために要求されるのと同レベルのセキュリティを有しないデータストア13、17、19(又は他のデータストア)に格納されて良い。幾つかの例では、メッセージ(M)は公に利用可能であって良い。
【0158】
しかしながら、幾つかのアプリケーションに依存して、共通シークレット(CS)が第1ノードマスタ秘密鍵(V
1C)と同じくらいセキュアに保たれるならば、共通シークレット(CS)は、第1ノードに関連付けられた第1データストア(X)に格納され得る。
【0159】
有利なことに、この技術は、単一のマスタキー暗号対に基づき、複数のセキュアな秘密鍵に対応し得る複数の共通シークレットを決定するために使用できる。
【0160】
<生成器値(鍵)の階層構造>
例えば、一連の連続する生成器値(GV)が決定されて良い。ここで、各連続GVは、前の生成器値(GV)に基づき決定されて良い。例えば、連続する専用鍵を生成するためにステップ310〜370、410〜470を繰り返す代わりに、ノード間の事前合意により、生成器値の階層構造を確立するために、前に使用された生成器値(GV)が両方のパーティにより繰り返し再ハッシュされ得る。実際に、メッセージ(M)のハッシュに基づく生成器値は、次世代生成器値(GV’)のための次世代メッセージ(M’)になり得る。これを行うことは、計算されるべき共有シークレットの連続生成を可能にし、更なるプロトコルにより確立される送信、特に共通シークレットを生成する毎に複数のメッセージの送信の必要がない。次世代共通シークレット(CS’)は、以下のように計算できる。
【0161】
先ず、第1ノード3及び第2ノード7の両者が、次世代生成器値(GV’)を独立して決定する。これは、ステップ320及び420と同様であるが、次式により適応される。
【0162】
M’=SHA−256(M) (式18)
GV’=SHA−256(M’) (式19.1)
GV’=SHA−256(SHA−256(M)) (式19.2)
【0163】
第1ノード3は、次に、次世代の第2ノード第2公開鍵(P
2S’)及び第1ノード第2秘密鍵(V
2C’)を上述のステップ370及び330と同様であるが次式により適応され、決定して良い。
P
2S’=P
1S+GV’×G (式20.1)
V
2C’=V
1C+GV’ (式20.2)
【0164】
第2ノード7は、次に、次世代の第1ノード第2公開鍵(P
2C’)及び第2ノード第2秘密鍵(V
2S’)を上述のステップ430及び470と同様であるが次式により適応され、決定して良い。
P
2C’=P
1C+GV’×G (式21.1)
V
2S’=V
1S+GV’ (式21.2)
【0165】
第1ノード3及び第2ノード7は、次に、それぞれ、次世代共通シークレット(CS’)を決定して良い。特に、第1ノード3は、次式により次世代共通シークレット(CS’)を決定する。
CS’=V
2C’×P
2S’ (式22)
【0166】
第2ノード7は、次式により次世代共通シークレット(CS’)を決定する。
CS’=V
2S’×P
2C’ (式23)
更なる世代(CS’’、CS’’’、等)は、チェーン階層構造を生成するために同じ方法で計算できる。この技術は、第1ノード3及び第2ノード7の両者が元のメッセージ(M)又は最初に計算された生成器値(GV)、及びそれがどのノードに関連するか、を見失わないことを要求する。これは公に知られた情報なので、この情報の保有に関してセキュリティ問題は存在しない。したがって、この情報は、(ハッシュ値を公開鍵にリンクする)「ハッシュテーブル」に保持され、(例えばTorrentを用いて)ネットワーク5に渡り自由に配布されて良い。さらに、階層構造内の任意の個々の共通シークレット(CS)が今までに解決されていない場合、これは、秘密鍵V
1C、V
1Sがセキュアなままであるならば、階層構造の中の任意の他の共通シークレットのセキュリティに影響しない。
【0167】
<鍵の木構造>
上述のようなチェーン(線形)階層構造と同様に、木構造の形式の階層構造が生成できる。木構造によると、認証鍵、暗号鍵、署名鍵、支払鍵、等のような異なる目的の様々な鍵が決定されて良い。それにより、これらの鍵は、全て単一のセキュアに維持されるマスタキーにリンクされる。これは、種々の異なる鍵を有する木構造901を示す
図12に図示される。これらの各々は、別のパーティと共有されるシークレットを生成するために使用できる。枝分かれする木は、幾つかの方法で達成でき、それらのうちの3つが以下に記載される。
【0168】
(i)マスタキー・スポーニング
チェーン階層構造では、乗算した再ハッシュしたメッセージを元のマスタキーに加算することにより、各々の新しい「リンク」(公開/秘密鍵ペア)が生成される。例えば(明確性のため、第1ノード3の秘密鍵のみを示す)、
V
2C=V
1C+SHA−256(M) (式24)
V
2C’=V
1C+SHA−256(SHA−256(M)) (式25)
V
2C’’=V
1C+SHA−256(SHA−256(SHA−256(M))) (式26)
等である。
【0169】
枝を生成するために、任意の鍵がサブマスタキーとして使用できる。例えば、V
2C’は、正規のマスタキーに対して行われるように、ハッシュを加算することにより、サブマスタキー(V
3C)として使用できる。
V
3C=V
2C’+SHA−256(M) (式27)
【0170】
サブマスタキー(V
3C)は、それ自体が、次世代鍵(V
3C’)を有して良い。例えば次式の通りである。
V
3C’=V
2C’+SHA−256(SHA−256(M)) (式28)
【0171】
これは、
図13に示すマスタキー・スポーニング(spawning)方法を用いて、木構造903を提供する。
【0172】
(ii)論理的関連付け
この方法では、木の中の全てのノード(公開/秘密鍵ペア)は、チェーンとして(又は任意の他の方法で)生成され、木の中のノード間の論理的関係は、ポインタを用いて木の中の各ノードが木の中の自身の親ノードに単純に関連付けられるテーブルにより維持される。したがって、ポインタは、セッションの共通シークレットキー(CS)を決定するために、関連する公開/秘密鍵ペアを決定するために使用できる。
【0173】
(iii)メッセージ多様性
新しい公開/秘密鍵ペアは、チェーン又は木の任意のポイントに新しいメッセージを導入することにより、生成できる。メッセージ自体は、任意であって良く、又は何らかの意味若しくは関数を伝達して良い(例えば、それは、「現実の」銀行口座番号に関連して良い、等である)。新しい公開/秘密鍵ペアを形成するためのこのような新しいメッセージがセキュアに保持されることが望ましい場合がある。
【0174】
<本発明と共に使用するための説明のための計算エージェント>
本発明は、取引処理の自動化された態様を実行するために、計算リソース又はエージェントを利用できる。適切なエージェントの一例が以下に提供されるが、他の実装が使用されて良い。
【0175】
エージェントは、チューリング(Turing)機械の実装において非消去可能テープとしてブロックチェーンを使用して、ブロックチェーンと連携して動作して良い。このエージェントは、ブロックチェーンネットワークと並列に実行し、(ループ)処理の実行を監督し及び扱う。ループ処理は、例えば装置又はシステムの処理又は制御の自動化のような所与のタスクを実行するよう設計される。この並列リソースは、ブロックチェーンの状態を監視し、トランザクションをブロックチェーンに書き込ませることができる。ある意味で、これは、ブロックチェーンをチューリング機械の非消去可能テープとして利用し、以下の定義及び特徴を有する。
1.ブロックチェーンは、チューリング機械のテープとして作用する。ブロックチェーンの中の各トランザクションは、テープ上のセルを表す。このセルは、有限なアルファベットからの記号を含み得る。
2.テープヘッドは、ブロックチェーン上に既に書き込まれているブロックから情報を読み出すことができる。
3.テープヘッドは、多くのトランザクションを含む新しいブロックを、ブロックチェーンの終わりに書き込むことができる。しかしながら、それらは、既に存在するブロックに書き込むことができない、このように、ブロックチェーンテープは非消去可能である。
4.各トランザクションのマルチシグネチャのP2SH(pay−to−script−hash)トランザクションの部分として格納され得る。
【0176】
エージェントに重要な機能は、ブロックチェーンの現在状態を監視する自動エンティティとして作用することである。これは更に、任意のオフブロックソースから、信号又は入力を受信できる。ブロックチェーン状態及び/又は受信した入力に依存して、エージェントは特定動作を実行して良い。エージェントは、どの動作が実行されるべきかを決定する。これらは、「現実世界」(つまり、オフブロック)の中の作用、及び/又(新しいトランザクションを生成する及びブロードキャストするような)はブロックチェーンに対する作用を含んで良く又は含まなくて良い。エージェントが取る作用は、ブロックチェーン状態によりトリガされて良い。エージェントは、更に、ビットコインネットワークにブロードキャストされるべき次のトランザクションセットについて決定し、後にブロックチェーンに書き込んで良い。
【0177】
エージェントの作用は、並列に且つ同時にブロックチェーン(例えば、ビットコイン)ネットワークに対して実行する。ある意味で、これは、ブロックチェーン(例えば、ビットコイン)スクリプトの機能を格納する。この連続監視は、結合されたエージェント及びブロックチェーンシステムチューリング完全(Turing Complete)を作成する「ループ」制御フロー構成を実施する。
【0178】
チューリング機械は、以下の2つのスタックを含む。
・データスタック:これは、上述のようにブロックチェーンにより表される。
・制御スタック:これは、エージェント機能により表される。これは、繰り返し制御フロー機能に関連する情報を格納する。
【0179】
制御スタックのデータスタックからの分離は、無限ループがビットコイン中核で生じることを防ぎ、サービス拒否攻撃を軽減するという利点を提供する。
【0180】
エージェントは、任意の種類のループ構成(例えば、FOR−NEXT、REPEAT UNTIL、等)によりループ可能なサブルーチンを管理し及び実行する。本願明細書に記載の説明のための実施形態は、「繰り返し(repeat)」構成の一例を用いる処理を含む。ユーザは、インデックス(i)及び限界(J)を指定して良い。これらはそれぞれ、現在の反復番号(標準的に0から開始してカウントされる)、及び繰り返しループの合計反復数、を表す。
【0181】
各反復について、
1.インデックスが1だけ増大する。終了条件については、インデックスが限界に達すると、反復は停止する。
2.「if condition then action([条件]ならば[動作]する)」(ICTA)文を含むコードブロックが実行される。動作は、ブロックチェーン上の又は外の任意の動作であって良い。
3.このサブルーチンの暗号ハッシュが計算される。これは、トランザクションの部分としてブロックチェーンに格納できる。ハッシュは各コードにユニークなので、どのコードが使用されているかの検証を可能にする。
【0182】
ループ本体は、コードブロックを含む。各コードブロックは、「if condition then action([条件]ならば[動作]する)」(ICTA)文を含む。これは、以下に一致するトランザクションについて、ブロックチェーンの現在状態を監視する。
・開始又はトリガ条件(例えば、特定日に達したとき)、
・繰り返し条件(つまり、前の反復に関連付けられたメタデータ又はハッシュ)、
・停止条件(つまり、ループの最後の反復)。
【0183】
ICTA文は、エージェントが、ブロックチェーンの現在状態に基づき、次のトランザクションについて決定することを可能にする。次のトランザクションを生成することは、トランザクションをビットコインネットワークにブロードキャストすること、及び新しいトランザクションをブロックチェーンに書き込むことを含む。これは、この反復が実行されたことの記録として作用する。トランザクションがブロックチェーンに書き込まれると、マネジャは、続いて、前の反復が実行されブロックチェーンに書き込まれたことを知り、次の反復を実行するだろう。後者は、インデックス(i)がコードブロックの中で指定された限度(J)に達するとき、繰り返しループが存在するまで継続する。
【0184】
各トランザクションは、再利用可能な方法で、ブロックチェーンに保存される。ビットコイン実装では、トランザクションの中の各署名は、SIGHASHフラグを付加される。このフラグは、異なる値を取ることができる。これらの値の各々は、この署名の所有者の関与無しに、トランザクションの他の部分が変更され得るか否かを示す。再利用可能トランザクションは、トランザクションインプットのうちの1つの中にSIGHASHフラグ「SigHash_AnyoneCanPay」を有する。これは、誰もがトランザクションのインプットに貢献することを許容する。このパラメータは、エージェントのICTA関数が、複数回、異なるインプットで、実行され且つ繰り返されることを可能にする。この関数の使用は、例えば再利用トランザクションの複製により、認可パーティに制限できる。
【0185】
ICTAコードブロックの「If condition」部分は、任意の種類の条件を監視できる。これは、他のプログラミング言語(例えば、C、C++、Jave)と同様であり、ブロックチェーンに格納された情報に限定されない。例えば、これは、日付及び時間(つまり、特定の日時に達したとき)を監視し、又は天気(つまり、気温が10℃より低く且つ雨が降っているとき)を監視し、取引又は信用の条件(つまり、企業Aが企業Bを買うとき)を監視し得る。
【0186】
ICTAコードブロックの「Then action」部分は、多数の動作を実行できる。本発明は、取り得る動作の数又は種類に関して限定されない。動作は、ブロックチェーン上のトランザクションに限定されないが、動作に関連するメタデータを含むトランザクションは、ブロックチェーンに書き込まれて良い。
【0187】
メタデータは、任意の形式であり得る。しかしながら、一実施形態では、メタデータは、動作に関連するより多くのデータ又は指示を含むファイルへのハイパーリンクを格納して良い。メタデータは、動作に関連するより多くのデータ又は指示を含むハッシュテーブルへのハイパーリンク、及びハッシュテーブルに対する検索キーとして作用する動作のハッシュの両方を格納して良い。
【0188】
エージェントの制御スタックは、各ユーザの必要に特化した多数の方法で実装できる。例えば、制御スタックの繰り返しループは、任意のチューリング完全言語に基づき得る。言語の1つの可能な選択は、Forth型スタックに基づく言語である。この言語を使用する利点は、制御スタックを、既知であり且つ広く使用されているビットコインスクリプトとプログラミング型において一貫性を保つことである。
【0189】
<ビットコインスクリプトの交互形式スタック(Alternate Stack)をデータ記憶空間として使用する>
ビットコインスクリプトは、コマンド、更に呼び出されるオペコード、を含む。これらは、ユーザが、データを「alt stack」として知られる交互形式スタックに移動させることを可能にする。
【0190】
オペコードは、次の通りである。
・OP_TOALTSTACK。これは、データを主スタックの最上部からalt stackの最上部に移動させる。
・OP_FROMALTSTACK。これは、データをalt stackの最上部から主スタックの最上部に移動させる。
【0191】
これは、計算機にデータを格納させる「記憶(memory)」機能と同様に、中間計算ステップからのデータをalt stackに格納させる。一実施形態では、alt stackは、小さな計算タスクを解決するようビットコインスクリプトを構成するために、及び結果を計算に返すために、使用される。
【0192】
<エージェントを管理するためにコードレジスタを使用する>
エージェントは、また、自身の所有し且つ実行する全てのコードのレジストリを管理する。このレジストリは、特定キーを特定値にマッピングするルックアップテーブル又は辞書のように構造化される。キー及び値ペアは、それぞれ、コードブロックのハッシュ(H
1)及びコードが格納された場所のIPv6アドレスにより表される。キーH
1を用いてコードブロックを読み出すために、ルックアップテーブルが使用されて、関連する値(これは、コードの格納されている場所である)を読み出し、及びそれに応じてソースコードを読み出す。コードレジストリの実装は変化し得る。
【0193】
<エージェントのコードのトランザクションメタデータ、及びループの再スポーニング>
特定の反復でエージェントのループを再スポーニングするために必要な情報は、ブロックチェーンに記録されたトランザクションの中にメタデータとして格納される。
【0194】
このように、ブロックチェーン上のトランザクションは、エージェント上で実行されているループの所与の反復に関する情報を格納し、又はそれへのアクセスを提供する。この情報は、ループに関連付けられた任意の変数の値、例えばインデックスi、及び任意の他の必要な情報、例えばコードブロック内で使用されるパラメータの値又は更に要求される情報がアクセス可能な場所の位置関連データ、を含み得る。
【0195】
メタデータ自体は、トランザクションの中のマルチシグネチャのP2SH(pay−to−script−hash)スクリプトの部分として格納される。トランザクションと共に記録されたメタデータは、コードが過去にどのように実行されたかのオーディットトレイルを記録する能力も与える。
【0196】
エージェントが各反復で繰り返しループコードブロックを再スポーニングできる幾つかの方法が存在する。コードブロックは、エージェント自体にハードコードされて良く、又は秘密に若しくは公に利用可能なファイルに格納でき、又は、秘密若しくは公開ハッシュテーブルファイル上のエントリとして格納され得る、又はこれらの組み合わせである。コードブロックは、ハードコードされた変数に固定され、又は固定であるが、移植可能なパラメータを含み得る。パラメータは、任意のデータフォーマットの単一値であって良く、又は小さなコードチャンクであって良く、又はそれらの組み合わせであって良い。パラメータは、トランザクション(例えば、ビットコイントランザクション)の中のメタデータから、又は内部データベース又は秘密/公開ファイル又はハッシュテーブル又はこれらの任意の組み合わせのような外部ソースから、直接に該パラメータを読み出すことにより移植され得る。パラメータ値の外部ソースへのポインタは、トランザクションの中のメタデータに格納されて良い。
【0197】
以下のステップは、エージェントがi番目の反復で繰り返しループコードブロックをどのように再スポーニングできるかの一例を提供する。本例では、コードレジストリは、ハッシュテーブルである。これにより、ハッシュ値がテーブルの検索キーとして作用し、トランザクション上のメタデータに格納される。
1.エージェントは、コードレジストリ内のエントリに一致するコードブロックのハッシュを含むトランザクションについて、ブロックチェーンを監視する。
2.エージェントは、対応するハッシュ(H
1)を含むトランザクションを見付ける。
3.エージェントは、「メタデータ−CodeHash」を読み出し、H
1を得るためにCodeHashフィールドを得て、H
1を用いてコード(C
1)を読み出す。RIPEMD−160(SHA256(C
1))がH
1に等しい場合、コードは変化しておらず、安全に次のステップに進める。
4.エージェントは、インデックスIを格納する「メタデータ−CodeHash」を読み出し、i番目の反復でコードを再スポーニングする。言い換えると、ループが、適切な反復で「リロード」される。
5.メタデータの発生元を検証するために、ユーザの署名がP2SHコマンドに含まれる。
6.これらのデータがループのこの反復のために必要な場合、エージェントは、「メタデータ−OutputHash」及び「メタデータ−OutputPointer」を読み出し、前のステップのアウトプットを検索する。
【0198】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
本発明は、トークン化、ブロックチェーン、及びスマートコントラクト(smart contract)技術の分野に関する。本発明は、取引の自動管理を簡易化する技術的構成を提供する。本発明は、取引の記憶のためのコンピュータに基づくレポジトリを用いる方法及びシステムを含む。取引は、次に、ブロックチェーン上のトランザクションにより表現される。トランザクションのスクリプトの中のメタデータは、取引のハッシュ、及びレポジトリ内の場所を識別する手段を含む。トランザクションは、自身の状態をオープン(つまり、終了していない)取引として示す未使用アウトプット(UTXO)も含む。取引は、後の時点で、例えばnLockTime+CheckLockTimeVerify(CLTV)を用いてアウトプットを使用することにより終了される。この概念を他の技術及び計算コンポーネントと組み合わせることにより、本発明は、取引の更新又はロールオーバ、又は取引をサブ取引若しくは条件に分割するような種々のタスクを実施する強力なメカニズムを提供できる。さらに、取引の状態及び存在はブロックチェーンによる証明なので、これは、永久的に、公に可視の且つ変更不可能な、取引のレコードを提供する。