この文書は、異なるネットワークにわたってデジタル資産、トークン、暗号通貨などの資産を転送するためのセキュアエンクレーブ環境に関するものである。ネットワークは、異なる資産クラスを使用し、異なる機能を提供する、異なるブロックチェーンとすることができる。開示された技術は、2つ以上のブロックチェーン間にブリッジを提供することができ、ブリッジは、セキュアかつ信頼できるエンクレーブ内で動作する。資産は、同じアドレスではあるがそれぞれのブロックチェーン上のウォレット間で転送することができ、それによって、ユーザが同じ秘密鍵を使用して両方のウォレットを制御することを可能にし、資産が間違ったウォレットに転送される可能性を低減することができる。開示された技術は、指定された監視者(例えば、関係者、エンティティ、ノード)を介してリモート認証を通じて正当性確認できるクロスチェーンスマートコントラクトのように動作する。資産(例えば、スマートコントラクト)の転送は、セキュアエンクレーブ環境内で行うことができるため、転送は悪意のあるアクターによって変更されない可能性がある。更に、完全には信頼できない監視者は、遠隔認証技術を使用して、エンクレーブ及びエンクレーブ内で実施されている任意のスマートコントラクトの完全性を正当性確認することができる。複数のノードの代わりに、エンクレーブのみがスマートコントラクトトランザクションを行う又は実行するため、そのエンクレーブに異なるブロックチェーン(例えば、ネットワーク)間の転送をサポートさせることがより実行可能になる可能性がある。
図面を参照すると、図1Aは、ブロックチェーンにわたってトークンを転送するためのセキュアエンクレーブ環境100の概念図である。第1のブロックチェーン104A及び第2のブロックチェーン104Bは、ネットワーク102を介して通信することができる。第1のブロックチェーン104Aは、複数のノード106A~Nを含むことができる。ノード106A~Nの各々は、互いに通信し、第1のブロックチェーン104A内で1つ以上の動作を実行することができる。例えば、ノード106A~Nは、ユーザがトークン、又はトークンの数量を第2のブロックチェーン104Bに転送しようとするとき、ユーザウォレットから第1のブロックチェーン104A内のブリッジウォレットにトークンを転送することができる。ノード106A~Nはまた、バーン要求が行われ、第2のブロックチェーン104Bにおいて正当性確認されると、ブリッジウォレットからユーザウォレットへトークンを解放することができる。同様に、第2のブロックチェーン104Bは、互いに通信する、第2のブロックチェーン104B内で1つ以上の動作を実行できる複数のノード108A~Nを含むことができる。例えば、ユーザが第2のブロックチェーン104Bでトークンをバーンすると、ノード108A~Nは、第2のブロックチェーン104Bでユーザのウォレットからトークンを解放することができる。ノード106A~N及び108A~Nは、第1のブロックチェーン104Aと第2のブロックチェーン104Bとを実行する匿名ノードであり得る。
いくつかの実装形態では、第1のブロックチェーン104Aと第2のブロックチェーン104Bとは、資産がトランザクションにおいて生成、取引、記憶、及び/又は使用され得る任意の他のタイプのネットワークであり得る。トークンなどの資産は、ブリッジ114を介して、第1のブロックチェーン104Aと第2のブロックチェーン104Bとの間で転送され得る。ブロックチェーン104A及び104Bの各々は、それらの固有のデジタル資産、暗号通貨、及び/又はトークンを有し得る。
エンクレーブ110は、第1のブロックチェーン104Aと第2のブロックチェーン104Bとの間のブリッジ114を介したトークン数量の転送を提供することができる。エンクレーブ110は、2つ以上のブロックチェーン又は他のネットワークの間に存在することができる。エンクレーブ110は、それ自体のスタンドアロンのコンピューティング環境として実行することができるが、エンクレーブ110は、トランザクションを発行(例えば、ミント及びバーン)することによって、第1のブロックチェーン104Aと第2のブロックチェーン104Bとの両方の状態に影響を与える。
エンクレーブ110は、サーバ、コンピューティングシステム、及び/又はサーバ及び/又はコンピューティングシステムのネットワーク上で動作されるセキュアコンピューティング環境であり得る。エンクレーブ110は、ステートレスであり、絶えず変化することができる。このセキュア環境は、オペレータが実行できる。同じオペレータがブリッジ114を実行することもできる。オペレータは匿名にすることができる。オペレータによって起動されたとき、エンクレーブ110は、図7~図10を参照して更に説明されるように、正しいかつセキュアなコードが正しいオペレータによって実行されていることを確実にするために、リモート認証を使用して正当性確認され得る。例えば、エンクレーブ110がダウンした場合、監視者112A~Nは、互いに独立して、ブリッジ114が応答するかどうかの決定を行ってもよい。次いで、集合的に、監視者112A~Nは、エンクレーブ110のオペレータに連絡し、ブリッジ114を固定する必要があることをオペレータに通知することができる。場合によっては、オペレータは、エンクレーブ110をシャットダウンしたり、さもなければエンクレーブ110の実行を消失/停止したりすることができる。そのようなシナリオでは、監視者112A~Nは、エンクレーブ110のオペレータになるために別のエンティティを集合的に選択することができる。いくつかの実装形態では、オペレータは、監視者112A~Nのいずれか1つ、又はセキュアエンクレーブ環境100内で動作する任意の他のエンティティであってもよい。新しいオペレータが選択されると、監視者112A~Nは、オペレータが同じコードを実行するために使用するであろうマスタシークレット鍵を新しいエンクレーブで再構成するために、エンクレーブ110のマスタシークレット鍵の秘密シェアを使用することができる。したがって、エンクレーブ110からのトランザクション及びアクティビティは、エンクレーブ110がダウンしたことがなく、新しいオペレータが選択されなかったかのように再開することができる。
エンクレーブ110は、第1のブロックチェーン104Aなどの1つのブロックチェーンから、第2のブロックチェーン104Bなどの別のブロックチェーンへのトークンの転送を許可することができる。例えば、第1のブロックチェーン104Aからのトークンの数量は、その数量が第2のブロックチェーン104B上の交換で使用され得るように、第2のブロックチェーン104B上でミントされ得る。
いくつかの実装形態では、セキュアエンクレーブ環境100は、2つ以上のブロックチェーン間の資産の通信及び転送を提供することができる。例えば、セキュアエンクレーブ環境100は、第1のブロックチェーン104Aと第2のブロックチェーン104Bとの間のブリッジ114、及び第2のブロックチェーン104Bと第3のブロックチェーンとの間の第2のブリッジを提供することができる。1つ以上の追加のブロックチェーン又は他のネットワークはまた、本明細書に説明の技術を使用して、第1のブロックチェーン104Aと第2のブロックチェーン104Bとのうちの1つ以上とブリッジされ得る。
セキュアエンクレーブ環境100は、信頼できるコードベース及び信頼できないコードベースから構成され得る。信頼できるコードベースは、エンクレーブ110内で実行されるコードベースの一部であり得、信頼できないコードは、エンクレーブ110の外で実行され得る。例えば、信頼できないコードは、エンクレーブ110を初期化及び起動するだけでなく、エンクレーブ110のリモート認証を実行することに責任を負うことができる。以下で更に説明するように、リモート認証は、サードパーティが信頼できることをサードパーティがリモートエンティティに証明し、そのエンティティとの認証された通信チャネルを確立することができるプロセスである。認証の一部として、エンクレーブ110は、そのアイデンティティ、ソースコードが改ざんされていないこと、エンクレーブ110が最新のセキュリティアップデートを備えた本物の有効化されたプラットフォーム上で実行されていることを証明することができる。
本明細書に説明されるように、エンクレーブ110は、ブリッジ114の動作をサポートするためにオンチェーンイベントを処理する責任を負うことができる。これらのイベントは、第1のブロックチェーン104Aからラッピングされたトークンをミントするための第2のブロックチェーン104B上のスマートコントラクトの作成、第2のブロックチェーン104A上の資産をミントすること、第1のブロックチェーン104A上の制御されたウォレットに資産を保持すること、及び第1のブロックチェーン104A上のトークン又は他の資産を指定されたアドレスに解放することを含むことができる。1つ以上の他のオンチェーンイベントは、エンクレーブ110によって処理され得る。
セキュアエンクレーブ環境100はまた、複数の監視者112A~Nを含むことができる。監視者112A~Nは、エンクレーブ110の信頼できるパートナーであるリモートサーバ又は他のコンピューティングシステムであり得る。監視者112A~Nは、匿名であり得、エンクレーブ110、並びに第1のブロックチェーン104A及び第2のブロックチェーン104Bと通信することができる。監視者112A~Nは、ユーザのアドレスから第1のブロックチェーン104A上のブリッジのウォレットにトークンを転送し、第2のブロックチェーン104B上でラッピングされたトークンを解放するなどのオンチェーンイベントについて、第1のブロックチェーン104A及び第2のブロックチェーン104Bを監視することができる。監視者112A~Nは、そのようなオンチェーンイベントを正当性確認し、それぞれのブロックチェーンでオンチェーンイベントを実行するための命令をブロードキャストすることができる。
第1のブロックチェーン104Aと第2のブロックチェーン104Bとの両方でエンクレーブ110によって使用されるアドレスの秘密鍵は、単一のマスタシークレット鍵から導出することができる。マスタシークレット鍵は、エンクレーブ110内にセキュアに保持され得る。マスタシークレット鍵は、シークレットシェア技術を使用して共有に分割され、複数の監視者112A~Nに分配され得る。シークレットシェアは、トランスポート層セキュリティ(TLS)及び/又はリモート認証を介して送信され得る。再起動時に、エンクレーブ110は、例えば、監視者112A~Nからマスタシークレット鍵のN個のシェアのうちのK個をフェッチして、マスタシークレット鍵を再計算することができる。次いで、マスタシークレット鍵を使用して、資産又はトークンを保持するために使用することができる第1のブロックチェーン104Aアドレスの秘密鍵と、スマートコントラクトを展開し、第2のブロックチェーン104B上で新しい資産又はトークンをミントするために使用することができる第2のブロックチェーン104Bの秘密鍵(複数可)とを再導出することができる。
一般に、エンクレーブ110は、第1のブロックチェーン104Aでブリッジウォレットに移動する資金、又は第2のブロックチェーン104Bでスマートコントラクトを介してバーンされる資金を追跡することができる。この情報は、監視者112A~Nから監視者110に中継することができ、監視者112A~N間のN個のコンセンサスのうちのK個は、監視者110がアクションを取るために必要とすることができる。同様に、監視者112A~Nは、どのトランザクションがエンクレーブ110によって既に処理されたかを追跡する役割を担うことができる。エンクレーブ110は、第1及び/又は第2のブロックチェーン104A及び104Bのためのオンチェーン構成要素を使用することができる。例えば、第1のブロックチェーン104A上では、エンクレーブ110は、第1のブロックチェーン104A上の標準ウォレット(例えば、以下、ブリッジウォレット)の秘密鍵を所有することができる。このウォレットは、第1のブロックチェーン104Aのトークンと、ブリッジ114を介して第2のブロックチェーン104Bに移動されたトークンとを含む、資産又はトークンの混合物を含むことができる。エンクレーブ110は、第1のブロックチェーン104A上に保持される全てのトークン資金と、第2のブロックチェーン104B上にミントされたトークン(バーンされたトークンを除く)との1対1の関係を維持することができる。第1のブロックチェーン104Aのトークンは、いくつかの実装形態では、第2のブロックチェーン104Bからトークン(例えば、トークン数量)を戻すための関連付けられた手数料を支払うために使用され得る。
別の例として、第2のブロックチェーン104B上で、エンクレーブ110は、第2のブロックチェーン104B上の標準ウォレットの秘密鍵を所有することができる。加えて、エンクレーブ110は、第2のブロックチェーン104Bに移行される各資産タイプをミントするために使用することができるテンプレートトークンを有することができる。第2のブロックチェーン104B上のウォレットは、ミントトランザクションのトランザクションフィードを支払うために使用されるトークンを含むことができ、更に、トークンをミントすることが許可された唯一のアドレスであることができる。トークンが第1のブロックチェーン104Aから第2のブロックチェーン104Bに移動されるとき、トークンのごく一部分は、手数料の支払いとしてブリッジオペレータのアドレスにミントすることもできる。同様に、トークンがアンラッピングされるとき(例えば、第2のブロックチェーン104Bから第1のブロックチェーン104Aに移動するとき)、トークンのごく一部分は、第1のブロックチェーン104Aのオペレータ制御ウォレット(例えば、ブリッジウォレット)に送信され得る。
エンクレーブ110が、アクション(例えば、トークンのミント又は解放)が行われることを決定すると、エンクレーブ110は、反対側のネットワーク上でアクション(例えば、要求)を処理するために必要なトランザクションを生成し、署名することができる。署名されたトランザクションを生成した後、エンクレーブ110は、マスタシークレット鍵から生成された鍵を使用してそれらを暗号化し、暗号化されたトランザクションを監視者112A~Nの各々に送信することができる。監視者112A~NのうちのK個が暗号化されたトランザクションを受領確認すると、エンクレーブ110は、監視者112A~Nが、トランザクションタイプに応じてそれぞれのブロックチェーンにブロードキャストするための、暗号化されていないトランザクションを、監視者112A~Nの各々に送信することによってアクションを完了することができる。この2相プロセスは、監視者112A~Nのいずれも、どのトランザクションをエンクレーブ110が処理するのかを制御できないことを確実にするために有益であり得る。
例示的な例として、暗号化されたトランザクションが最初に監視者112A~Nに送信されず、代わりに署名されたトランザクションが直接送信され、ネットワーク障害、予期しないエラー、又は悪意のある行動のために、エンクレーブ110がトランザクションを監視者112A~Nのうちの1つを除く全てに送信することに失敗するシナリオを考慮する。エンクレーブ110を再起動する必要がある場合、エンクレーブ110は、エンクレーブ110が再処理しなければならないであろう不完全なトランザクションについて、監視者112A~Nに問い合わせてもよい。この場合、監視者112A~Nの閾値は、トランザクションが処理されていないと正直に言うことができるが、署名されたトランザクションを受信した監視者112A~Nのうちの単一の監視者は、そのトランザクションをそれぞれのブロックチェーンにブロードキャストできたのに、署名されたトランザクションをブロードキャストしなかったと、エンクレーブ110に報告した可能性がある。監視者112A~Nのうちの単一の監視者は、悪意がある可能性がある。この場合、エンクレーブ110は、要求を二重処理してもよく、これは、トークンの二重ミントをもたらしてもよい。一方、本明細書に開示される2相プロセスを使用して、監視者112A~Nの閾値数は、暗号化されたトランザクションを最初に受領確認しなければならない。エンクレーブ110のみが、トランザクションを復号することができる。任意の再起動時に、エンクレーブ110は、「準備」段階での任意のトランザクションについて監視者112A~Nの各々に尋ねることができ、次いで、エンクレーブ110が既に作成したそれらのトランザクションを復号し、再生することができる。単一の監視者のみが暗号化されたトランザクションを受信した場合でも、エンクレーブ110は、暗号化されたトランザクション内に含まれるトランザクションを生成したことを依然として正当性確認することができる。監視者112A~Nの閾値が暗号化されたトランザクションを受領確認した後に、単一の監視者のみが暗号化されていない署名されたトランザクションを受信する場合、再起動時に、エンクレーブ110は、事前に暗号化されていないトランザクションを受信しなかった監視者112A~Nを再同期することができる。
本明細書に説明されるエンクレーブ110は、ステートレスであり得る。その結果、いつでも新しいブリッジを作成又は移行することができる。監視者112A~Nの少なくとも大多数の間でコンセンサスに達する限り、新しいブリッジ及び/又はエンクレーブを確立することができる。ブリッジはまた、監視者112A~Nによって保持される、エンクレーブ110のマスタ秘密鍵のシークレットシェアを使用して再構築することもできる。ブリッジの再構築は、ブリッジウォレット118の以前のバージョンに保持されたトークンの数量と同じブリッジウォレット118を構築することも含むことができる。システム100の例示的な実装形態は、エンクレーブ環境150において以下に示される。
図1Bは、ブロックチェーン104C~104Nにわたってトークンを転送するためのセキュアエンクレーブ環境150の概念図である。この例では、ブロックチェーン104C、104E、及び104Mは、コントラクト無しのブロックチェーンであり、ブロックチェーン104D、104F、及び104Nは、コントラクト付きブロックチェーンである。エンクレーブ110が、2つのブロックチェーン間のブリッジ114を介したトークン数量の転送を提供できるように上記に示されているように、エンクレーブ110は、コントラクト無しブロックチェーン104C、104E、又は104Mから、コントラクト無しブロックチェーン104C、104E、若しくは104M、又はコントラクト付きブロックチェーン104D、104F、若しくは104Mのいずれかへのトークン数量の転送を、ブリッジ114を介して提供することができる。同様に、エンクレーブ110が、2つのブロックチェーン間のブリッジ114を介したトークン数量の転送を提供できるように上記に示されているように、エンクレーブ110は、コントラクト付きブロックチェーン104D、104F、又は104Noから、コントラクト無しブロックチェーン104C、104E、若しくは104M、又はコントラクト付きブロックチェーン104D、104F、若しくは104Mのいずれかへのトークン数量の転送を、ブリッジ114を介して提供することができる。
一般に、コントラクト無しブロックチェーン104C、104E、及び104Mは、スマートコントラクトサポートを提供しないか、又は所望の使用に十分なスマートコントラクトサポートを提供しないかのいずれかのタイプのブロックチェーンを含む。例えば、分散ファイナンス(defi)又は土地所有権管理のタイプは各々、ブロックチェーンがdefi又は土地所有権管理をサポートするためにサポートされなければならないコントラクトの最小数及びタイプを有し得る。そのような場合、コントラクト無しブロックチェーン104C、104E、及び104Mは、defi又は土地所有権管理のためのツールを本来的には提供しないブロックチェーンの例である。
一般に、コントラクト付きブロックチェーン104D、104F、及び104Nは、所望の使用に十分なスマートコントラクトサポートを提供するタイプのブロックチェーンを含む。例えば、分散ファイナンス(defi)又は土地所有権管理のタイプは各々、ブロックチェーンがdefi又は土地所有権管理をサポートするためにサポートされなければならないコントラクトの最小数及びタイプを有し得る。そのような場合、コントラクト付きブロックチェーン104D、104F、及び104Nは、defi又は土地所有権管理のためのツールを本来的に提供するブロックチェーンの例である。
コントラクト無し又はコントラクト付きのいずれかとしての分類は、様々な使用の間で異なる場合があることが理解されよう(例えば、1つのブロックチェーンは、defiのためにコントラクト付きであってもよいし、土地所有権管理のためにコントラクト無しであってもよく、又はその逆であってもよい)。更に、コントラクト無し又はコントラクト付きとしての分類は、ブロックチェーンの分析又は考慮のみを伴う場合があり、ブロックチェーンに明示的に符号化されない場合がある。
したがって、環境100の一例である環境150を使用して、特定の使用に不十分なブロックチェーンから特定の使用に十分なブロックチェーンに資産をブリッジすることができる。そのような機能は、いくつかの技術的利点を可能にすることができる。例えば、人は、通常、長期間にわたって貯蓄に保持される資産をブロックチェーン104C上で所有し得るが、短期間のdefiに従事することを望む場合がある。したがって、人は、環境150を使用して、自分の資産をブロックチェーン104Dにブリッジし、defiに従事し、次いで、資産をブロックチェーン104Cで使用するために戻し得る。これは、有利には、所望の計算機能を提供することができないブロックチェーンの技術的な問題を解決する、低機能のブロックチェーン内の資産により大きな機能を提供することができる。
環境100の説明においてここ及び上記に示されるように、環境150は、コントラクト無しブロックチェーンネットワークから第1の資産をロックし、コントラクト付きブロックチェーンネットワーク内の第1の資産を表す第2の資産をミントするロック動作を実施することができ、コントラクト付きブロックチェーンネットワークは、コントラクト無しブロックチェーンネットワーク上でサポートされていないスマートコントラクトをサポートする。環境100の説明にここ及び上記に示されるように、環境150は、第2の資産が返却又は破壊されることに応答して、第1のブロックチェーンネットワーク内の第1の資産を転送することによって、第1の資産をロック解除するロック解除動作を実施することができる。
図2は、本明細書に説明される技術のいくつかを実行する監視者112A~Nの概念図である。図1A及び図1Bを参照して説明されるように、複数の監視者112A~Nは、ネットワーク102(複数可)を介して互いに、並びに第1のブロックチェーン104A及び第2のブロックチェーン104Bと通信するコンピューティングデバイスの匿名コンピュータサーバ、システム、及び/又はネットワークであり得る。監視者112A~Nは、オラクル(oracles)、又はボックスブロックチェーンクライアントからの他のものであり得る。
監視者112A~Nはまた、秘密データストア202及び公開データストア200と通信することができる。いくつかの実装形態では、例えば、監視者112A~Nの各々は、異なる秘密データストア202と通信することができ、監視者112A~Nの全ては、同じ公開データストア200と通信することができる。いくつかの実装形態では、監視者112A~Nの各々は、異なる秘密データストア及び公開データストアと通信することができる。
監視者112A~Nは、本開示全体を通して説明されるセキュアエンクレーブ環境においていくつかの責任を有する信頼できる関係者であり得る。ブリッジは、例えば、セキュアエンクレーブ環境によってサポートされている第1のブロックチェーン104Aと第2のブロックチェーン104Bとの状態を読み取り及び更新するために、監視者112A~Nに依存することができる。エンクレーブは、全てのブロックチェーン要求を複数の独立した監視者112A~Nに送信するように構成することができ、これらの定足数の監視者112A~Nは、エンクレーブが応答を受け入れるために同等の応答を提供する必要がある。これにより、単一の監視者がエンクレーブをだますために嘘をついたり、悪意を持って行動したりすることがないことを確実にすることができる。監視者112A~Nがより多いほど、かつ定足数に必要な監視者112A~Nの数が多いほど、ブリッジはより分配されてセキュアになることができる。
図1を参照して言及したように、監視者112A~Nの各々は、エンクレーブが最初に初期化するときに、エンクレーブからマスタシークレット鍵の単一のシークレットシェアを受信することができる。これらのシェアの設定可能な閾値は、エンクレーブのマスタシークレット鍵を再生成するのに十分であり得る。エンクレーブが再起動した場合、エンクレーブは監視者112A~Nに問い合わせてシークレットシェアを取得し、エンクレーブのマスタシークレット鍵値を再計算することができる。エンクレーブによって使用される他の全てのシークレット値は、マスタシークレット鍵から決定論的に導出することができる。
監視者112A~Nはまた、第1のブロックチェーン104Aと第2のブロックチェーン104Bとを連続的に監視するか、又はそうでなければインデックスを付けることができる。エンクレーブは、第1のブロックチェーン104A及び第2のブロックチェーン104Bの各々の特定のアドレスに送信されたトランザクションについて、監視者112A~Nに問い合わせることができる。監視者112A~Nは、秘密データストア202などのデータストア内のトランザクションのインデックスを構築することができる。インデックスを構築するために、監視者112A~Nは、各ブロックについて、第1のブロックチェーン104Aのノード106A~N及び第2のブロックチェーン104Bのノード108A~Nに問い合わせて、トランザクションを通して反復することができる。
監視者112A~Nはまた、どのブリッジ要求がエンクレーブによって処理されたかを追跡することができる。より具体的には、監視者は、ラッピングトランザクション及びアンラッピングのトランザクションを追跡することができる。ラッピングトランザクションを受信すると、ブリッジの信頼できるコードベースは、本明細書に説明されるように、第2のブロックチェーン104B上でミントトランザクションを生成し、送信することができる。同様に、ブリッジは、アンラッピングトランザクションを受信すると、第1のブロックチェーン104A上で解放/転送トランザクションを生成し、送信することができる。これらのトランザクションをそれぞれのネットワークに送信するために、エンクレーブは、最初にトランザクションを監視者112A~Nに中継しなければならず、トランザクションは、第1のブロックチェーン104Aのノード106A~N及び第2のブロックチェーン104Bのノード108A~Nにブロードキャストされ得る。一度ブロードキャストされると、監視者112A~Nは、トランザクションを秘密データストア202内で処理されたものとしてマークすることができる。
更に、監視者112A~Nは、ラッピングされたトークンのペアリングを追跡することができる。本明細書で説明されるブリッジは、ブリッジがサポートする第1のブロックチェーン104Aの各トークンについて、第2のブロックチェーン104B上でラッピングされたトークンコントラクトを作成することができる。再起動されると、ブリッジはサポートする追加のトークンをリストし、新しいラッピングされたトークンコントラクトを作成できる。ブリッジは、以前にサポートしていたトークンのリストを削除することはできない。ブリッジが、サポートされているトークンのリストを削除しないようにするために、サポートされている全てのトークン及びそれらに対応するラッピングされたトークンコントラクトアドレスは、監視者112A~Nに(例えば、秘密データストア202に)記憶され、起動時にエンクレーブによってフェッチされることができる。
いくつかの実装形態では、監視者112A~Nはまた、ユーザ又はエンティティが第2のブロックチェーン104B上の資産をミントすることを許可されているものを維持することができる。ブリッジは、監視者112A~Nが、第2のブロックチェーン104Bのスマートコントラクトを介して資産を削除すること、及び資産をミントする能力を追加することができるように構築することができる。新しいブリッジがオンラインになった場合、又は既存のブリッジが新しいアドレスに移行する必要がある場合、監視者112A~Nは、そのための許可を明示的に与えることができる。
監視者112A~Nはまた、公開情報をホストしてもよい。手数料、最小転送要件、サポートされているトークンなどの情報は、エンクレーブで構成及び維持できる。エンクレーブが公的にアクセス可能ではないため、監視者112A~Nは、その情報を公的にホストする責任を負うことができる。加えて、監視者は、公衆消費のための認証レポートをホストする責任を負うことができる。この情報は、公開データストア200に記憶され、監視者112A~Nによって公に報告されたときに取得され得る。
いくつかの実装形態では、監視者112A~Nを変更することができる。特定のセキュアエンクレーブ環境のための監視者112A~Nのメンバーシップを変更するために、エンクレーブによって実行されるコードは、セキュアエンクレーブ環境で作用する各監視者の識別子(例えば、ドメイン)を含むように修正することができる。既存の監視者112A~Nは、監視者112A~Nが更新される前に、メンバーシップの変更に同意する必要がある場合がある。標準的なTLS技法を使用して、本明細書に説明されている監視者112A~N、エンクレーブ、及びブリッジの間に正しいセキュア通信が確立されることを確実にすることができる。
更に、いくつかの実装形態では、監視者112A~Nに関する情報は、公開することができる。この情報は、そうでなければ、セキュアエンクレーブ環境にわたって統括する監視者112A~Nを識別する識別子又はドメインを含むことができる。そのような情報を公開することは、監視者112A~Nが互いを信頼するのを助け、またユーザがセキュアエンクレーブ環境を信頼するのを助けるのに有益であり得る。更にいくつかの実装形態では、監視者112A~Nのいずれか1つ以上は、他のセキュアエンクレーブ環境におけるエンクレーブ又は他のエンクレーブのオペレータであってもよい。監視者システムの更なる詳細は、同時に出願されている「SECURE AND TRUSTWORTHY BRIDGE FOR TRANSFERRING ASSETS ACROSS DIFFERENT NETWORKS WITH AN UPDATING POOL OF WARDENS」に記載されており、その内容は、参照により本明細書に組み込まれる。
図3A~図3Dは、本明細書に説明される技術を使用してブロックチェーン上でトークンをミントするためのプロセスの概念図である。図3Aを参照すると、図1を参照して説明したように、ユーザは、第1のブロックチェーン104A上でユーザのウォレット116からブリッジウォレット118へトークン126Aの転送を開始することができる(ステップA)。トークン126Aは、第1のブロックチェーン104Aのトークン、暗号通貨、又は他のデジタル資産であり得る。トークン126Aを転送することは、トークン126Aの数量をブリッジウォレット118に転送することを含むことができる。トークン126Aがブリッジウォレット118に転送されると、ユーザは、第2のブロックチェーン104B上で使用するために、第1のブロックチェーン104Aからトークン126Aを転送するトランザクションを開始する。言い換えれば、ユーザは、第2のブロックチェーン104B上でトークンをミントするトランザクションを開始している。
ユーザウォレット116は、第2のブロックチェーン104B上の対応するウォレットにも使用され得るアドレスを有することができる。したがって、トークン126Aの数量は、同じアドレスを使用して、第1のブロックチェーン104A上のユーザウォレット116から第2のブロックチェーン104B上のユーザウォレットに転送され得る。これは、トークン126Aの数量が第2のブロックチェーン104B上の間違ったウォレットに転送される可能性を低減し、それによってセキュアエンクレーブ環境100のセキュリティ及び信頼を増加させるのに有利であり得る。
ブリッジウォレット118は、エンクレーブ110によって保持される秘密鍵を有することができる。ブリッジウォレット118は、エンクレーブ110によって動作させることができ、第1のブロックチェーン104A上のユーザウォレットから転送されるトークン126Aなどのトークンを記憶又は別様にロックすることができる。ブリッジウォレット118は、例えば、バーン要求/トランザクションが第2のブロックチェーン104Bで受信されるまで、その中にトークン126Aなどのトークンを保持することができる(例えば、図4A~図4Dを参照)。トークン126Aがブリッジウォレット118に保持されている限り、トークン126Aは、ユーザによって複製又は別様に使用することができない。更に、第1のブロックチェーン104Aは、第1のブロックチェーン104A上に資産、トークン、及び/又はトランザクションを有する全てのユーザのためのユーザウォレットを維持することができる。第1のブロックチェーン104Aのノード106A~Nは、トークン126Aをユーザウォレット116からブリッジウォレット118に転送するなどの動作を実行することができる。
更に図3Aを参照すると、監視者112A~Nは、ブリッジウォレット118への更新について第1のブロックチェーン104Aをポーリングすることができる(ステップB)。第1のブロックチェーン104Aをポーリングすることは、ブリッジウォレット118の状態が修正されたか、又は別様に変更されたかを決定するために、ノード106A~Nのうちの1つ以上と通信することを含むことができる。例えば、監視者112A~Nは、ノード106A~Nをポーリングして、ユーザがトークンをユーザのウォレットからブリッジウォレット118に転送したかどうかを判定することができる。上述のように、ユーザがユーザのウォレットからブリッジウォレット118にトークンを転送するとき、ユーザは、第2のブロックチェーン104Bにトークンを転送するプロセスを開始している。
監視者112A~Nのうちの1つ以上は、数秒、数分、及び/又は数時間ごとなどの所定の時間に第1のブロックチェーン104Aをポーリングすることができる。例えば、監視者112A~Nは、5秒ごとに第1のブロックチェーン104Aをポーリングすることができる。いくつかの実装形態では、エンクレーブ110は、監視者112A~Nをポーリングして、次いで、第1のブロックチェーン104Aをポーリングすることができる。
いくつかの実装形態では、監視者112A~Nの第1のサブセットは、第1のブロックチェーン104Aをポーリングすることができ、監視者112A~Nのうちの1つ以上の他のサブセットは、第1のブロックチェーン104Aをポーリングしてもよく、しなくてもよい。例えば、監視者112A~Nの第1のサブセットは、第1の時間に第1のブロックチェーン104Aをポーリングすることができ、監視者112A~Nの第2のサブセットは、第1の時間とは異なる第2の時間(例えば、第1の時間の後、第1の時間の前)に第1のブロックチェーン104Aをポーリングすることができる。
監視者112A~Nのうちの1つ以上は、ブリッジウォレット118への更新を識別することができる(ステップC)。図3Aの例では、監視者112A、112B、及び112Nは、ユーザウォレット116からブリッジウォレット118へのトークン126Aの転送が第1のブロックチェーン104A上で発生したことを識別する(例えば、正当性確認する)。監視者112A、112B、及び112Nは、このトークン転送をエンクレーブ110に通知することができる。したがって、監視者112A~Nは、1つのユーザウォレットからブリッジウォレット118へのトークンのオンチェーンデポジットを探すことができる。場合によっては、全ての監視者112A~Nは、トークン転送が第1のブロックチェーン104A上で発生したことを識別することができる。図3Aに示されるように、いくつかの実装形態では、全てよりも少ない監視者112A~Nが、トークン転送が発生したことを識別してもよい。
エンクレーブ110がトークン転送に関して監視者112A~Nのうちの1つ以上から通知を受信すると、エンクレーブ110は、トークン転送についてコンセンサスに達したかどうかを決定することができる(ステップD)。コンセンサスは、トランザクションが、第1のブロックチェーン104Aから第2のブロックチェーン104Bへのトークン126Aの数量を転送することを進めることができるようになったことを正当性確認するために必要とされる最小数量の監視者112A~Nとすることができる。監視者112A~Nの間でコンセンサスに達するかどうかを決定することは、単一の監視者がブリッジウォレット118の状態について嘘をつかないこと、及び/又は悪意を持ってエンクレーブ110及びトークンのミントプロセスを制御しようとしないことを確実にするのに有益であり得る。したがって、監視者112A~Nの間のコンセンサスは、エンクレーブ110が監視者112A~Nを信頼することを可能にし、それによって、ブロックチェーンにわたってトークンを転送するためのセキュア環境を作成することができる。
いくつかの実装形態では、コンセンサスは、監視者112A~Nの50%以上であり得る。いくつかの実装形態では、コンセンサスは、限定されないが、55%、60%、70%、80%、90%、95%などを含む、監視者112A~Nの大部分を超える任意の値であり得る。
図3Aの例では、コンセンサスは50%であり得る。したがって、ステップDにおいて、エンクレーブ110は、監視者112A~Nの50%以上が、ユーザウォレット116からブリッジウォレット118へのトークン126Aの転送を識別したかどうかを判定することができる。ここで、4つの監視者112A~Nのうちの3つがトークン転送を識別したので、50%のコンセンサスが満たされている。したがって、プロセスは、図3Bに進むことができる。
図3Bに示されるように、コンセンサスに達したので(例えば、図3AのステップDを参照)、エンクレーブ110は、第2のブロックチェーン104B上でトークンをミントするための命令を生成することができる(ステップE)。命令は、ブリッジウォレット118へのトランザクションを開始したユーザウォレット116に関連付けられたアドレスを識別することができる。命令はまた、第2のブロックチェーン104B上で定量化されるか、又はそうでなければミントされる必要があるであろうトークンの数量を識別することができる。図1を参照して上述したように、ユーザウォレット116に関連付けられた同じアドレスを使用して、第2のブロックチェーン104Bのどのウォレットに対してトークンをミントするのかを識別することができる。同じアドレスを使用することは、トークンが第2のブロックチェーン104B上の間違ったウォレットに対してミントされる可能性を低減するのに有利であり得る。
ミントするための命令が生成されると、エンクレーブ110は、命令を暗号化することができる(ステップF)。命令を暗号化することは、ユーザのプライバシーが維持され、トランザクションがエンクレーブ110から監視者112A~Nに転送されるときにトランザクションがセキュアであることを確実にするのに有益であり得る。これは、エンクレーブ110がダウンし、ブートバックしなければならない場合にも有益であり得る。暗号化は、エンクレーブ110の外で動作する悪意のあるノード又は他の悪意のあるユーザの活動からトランザクションを保護することができる。暗号化された命令302は、第2のブロックチェーン104B上の要求側ユーザのウォレットのアドレス、及び第2のブロックチェーン104B上にミントされるトークン126Aの数量を含むことができる。
エンクレーブ110は、正当性確認のために、暗号化された命令を監視者112A~Nに送信することができる(ステップG)。このステップを実行することは、監視者112A~Nのいずれも、ミントプロセスを制御するために単独で動作しないことを確実にするために有利であり得る。更に、命令を暗号化することは、エンクレーブ110がダウンし、リブートされる場合に、暗号化された命令が、エンクレーブ110によって、監視者112A~Nに要求され、復号され、次いで、トランザクションのミントを完了するために使用され得るように、有益であり得る。
図3Cを参照すると、監視者112A~Nのうちの1つ以上は、暗号化された命令を受信したことを正当性確認することができる(ステップH)。エンクレーブ110は、ミントするための実際の命令を監視者112A~Nに送信する前に、大部分の監視者112A~Nからの受信の受領確認を望むことができる。1つ以上の監視者112A~Nは、この正当性確認をエンクレーブ110に送信することができる。次いで、エンクレーブ110は、監視者112A~NのうちのK個が暗号化命令の受信を正当性確認したかどうかを判定することができる(ステップI)。監視者のうちのK個は、任意の数量の監視者112A~Nであり得、例えば、50%又は監視者112A~Nの大部分以上のいくつかの数量である(例えば、図3AのステップDを参照して説明されているコンセンサスを参照されたい)。図3Cの例では、Kは、監視者112A~Nの少なくとも半分に等しくてよい。ここで、全ての監視者112A~Nは、ステップHにおける暗号化された命令の受信を正当性確認した。したがって、ステップIにおいて、エンクレーブ110は、監視者のうちの少なくともK個が受信を正当性確認したと決定することができる。
K閾値が満たされているので、エンクレーブ110は、今度は、命令を復号することができる(ステップJ)。言い換えれば、エンクレーブ110と監視者112A~Nとの間には、セキュア接続がある。監視者112A~Nは、一緒になって、第2のブロックチェーン104B上でトークンをミントするための命令をブロードキャストすることができる。
したがって、復号された命令は、監視者112A~Nに送信され得る(ステップK)。エンクレーブ110は、全てのトランザクションに対して同一の復号化鍵を使用することができるため、エンクレーブ110は、復号化鍵を保持してもよい。したがって、エンクレーブ110は、ステップKにおいて、完全に復号された命令を監視者112A~Nに送信してもよい。
図3Dを参照すると、監視者112A~Nが復号されたミント命令を受信すると、監視者112A~Nは、復号された命令を第2のブロックチェーン104Bにブロードキャストすることができる。より具体的には、監視者112A~Nは、命令をノード108A~Nのうちの1つ以上にブロードキャストすることができる。
ノード108A~Nのうちの1つ以上は、トークン126Bをミントすることができ、これは、ミントされたトークン126Bをユーザウォレット120に入れることを含むことができる(ステップM)。上述のように、ユーザウォレット120は、ユーザウォレット116に使用されるアドレスと同じアドレスを使用して識別されてもよい。アドレスは、復号された命令302において識別され得る。いくつかの実装形態では、ユーザウォレット120のアドレスがユーザウォレット116のアドレスと異なり、ユーザウォレット120のアドレスは、ユーザウォレット116からブリッジウォレット118への第1のブロックチェーン104A上で行われた転送トランザクションのメモフィールドに含めることができる。次に、ノード108A~Nは、メモフィールド内のアドレスを使用して、トークン126Bをユーザウォレット120に対してミントすることができる。宛先アドレスがメモフィールド内又はトランザクションの別の部分にあるとき、監視者112A~Nをポーリングして、メモフィールド内の宛先アドレスがユーザウォレット120のアドレスと一致することを正当性確認することができる。このプロセスを使用して、トークン126Bが間違ったウォレットに対してミントされていないことを確実にすることができる。
トークン126Bをミントすることは、トークン126Aをラッピングすることを含むことができる。言い換えれば、実際のトークン126Aは、第1のブロックチェーン104Aから第2のブロックチェーン104Bに転送されない。代わりに、トークン126Bは、IOUとして機能するラッピングされたトークン126Aであり、ユーザがトークン126Aとして第1のブロックチェーン104上でどのくらいの値を有するかを示す。したがって、トークン126Bをミントすることは、復号された命令302で識別されるトークン126Aの数量に対応するトークン126Bを生成することを含むことができる。次に、ユーザは、第2のブロックチェーン104Bの交換において、ミントされたトークン126Bを使用することができる。
図4A~図4Dは、本明細書に説明される技術を使用してブロックチェーン上でトークンを解放するためのプロセスの概念図である。トークンを解放することは、ブロックチェーン上でトークンをバーンすることを含む。図4Aを参照すると、図3A~図3Dを参照して説明したユーザなどのユーザは、第2のブロックチェーン104B上でトークン126Bをユーザウォレット120からバーンアドレス122及び/又はブリッジウォレット124に転送することができる(ステップA)。図3A~図3Dからの同じユーザは、図4A~図4Dで説明された解放のプロセスには関与し得ない。代わりに、クロスチェーンをトランザクションしている他の任意のユーザが、ユーザウォレット120を割り当てられ、それらのトークン126Bをバーンアドレス122及び/又はブリッジウォレット124に転送することができる。
ユーザは、スマートコントラクト(例えば、トランザクション)を呼び出し又は起動して、第2のブロックチェーン104B上でそれらのトークン126Bをバーンすることができる。次いで、ノード108A~Nは、トークン126Bをユーザウォレット120から解放することができる。図3A~図3Dを参照して説明されるように、トークン126Bは、ユーザが第1のブロックチェーン104A上のブリッジウォレット118に移動させたトークン126Aの数量のミントされたトークンであり得る。このように、トークン126Bは、トークン126Aをラッピングすることができる。
第2のブロックチェーン104B上のユーザウォレット120は、第1のブロックチェーン104A上のユーザウォレット116と同じアドレス及び同じ秘密鍵を有することができる。したがって、同じユーザは、ユーザウォレット120及びユーザウォレット116にアクセスすることができる。上述したように、同じアドレスを使用することは、トークンをミントすること及びバーンすることなどのトランザクションのセキュリティを確実にするのに有利であり得る。いくつかの実装形態では、ユーザウォレット120及びユーザウォレット116は、上述したように、異なるアドレスを有することができる。
バーンアドレス122は、第2のブロックチェーン104Bの公開アドレスであり得る。ユーザは、トークン及び他の暗号通貨などの資産をバーンアドレス122に送信することができる。一度バーンアドレス122に送信されると、バーンアドレス122の秘密鍵がないため、資産を回復することはできない。バーンアドレス122に送信された資産は、本質的にバーンされ、二度と使用することができない。したがって、ユーザがユーザウォレット120からバーンアドレス122にトークン126Bを送信するとき、ユーザは、自分のウォレット120からトークン126Bを削除しており、そのトークン126Bに再びアクセスしたり、そのトークン126Bを使用したりすることはできない。
図4A~図4Dに示されるように、エンクレーブ110は、第2のブロックチェーン104B上でブリッジウォレット124を、並びに第1のブロックチェーン104A上でブリッジウォレット118を動作及び維持することができる。トークン126Aなどの資産は、そのようなトークン数量が使い果たされ、及び/又はユーザウォレット116のユーザに戻されて解放されるまで、第1のブロックチェーン104A上のブリッジウォレット118に保持されてもよい。トークン126Bなどの資産は、第2のブロックチェーン104A上のブリッジウォレット124に入れることができ、その結果、それらの資産をバーンすることができ、もはやユーザによって使用又は回復することができない。いくつかの実装形態では、資産は、所定の期間ブリッジウォレット124に保持され得、次いで、資産は、1つ以上のバッチでバーンされ得る。いくつかの実装形態では、ブリッジウォレット124に転送される資産は、ブリッジウォレット124に到着するとバーンされてもよい。
更に図4Aを参照すると、監視者112A~Nのうちの1つ以上は、第2のブロックチェーン104Bを、バーンアドレス122及び/又はブリッジウォレット124への任意の更新についてポーリングすることができる(ステップB)。図3AのステップBを参照して説明されるように、監視者112A~Nは、5秒ごとなどの所定の時間で第2のブロックチェーン104Bの状態変化についてノード108A~Nをポーリングすることができる。また、エンクレーブ110は、所定の時間に第2のブロックチェーン104Bのノード108A~Nをポーリングするように監視者112A~Nに要求することができる。監視者112A~Nは、ユーザウォレット120(又は他のウォレット)からバーンアドレス122及び/又はブリッジウォレット124へのトークン126B(又は他のトークン)の転送に関与するスマートコントラクト(例えば、トランザクション)がノード108A~Nによって実行されたかどうかを決定するために、第2のブロックチェーン104Bをポーリングすることができる。したがって、監視者112A~Nは、バーン要求が発生したことを示唆する第2のブロックチェーン104Bの状態への任意の変化を認識することができる。
監視者112A~Nのうちの1つ以上は、トークン126Bの転送が第2のブロックチェーン104B上で発生したことを識別することができる(ステップC)。図3AのステップCを参照して説明されるように、監視者112A~Nは、トークン126Bのバーンに関与するスマートコントラクト(例えば、トランザクション)が作成され、実行されたことを正当性確認することができる。更に、上述したように、いくつかの実装形態では、全てよりも少ない監視者112A~Nがトークン転送を識別し得る。いくつかの実装形態では、監視者112A~Nの全てが、トークン転送を識別してもよい。ここで、監視者112A、112B、及び112Nは、トークン転送が発生したことを識別する。監視者112A、112B、及び112Nは、トークン転送の識別をエンクレーブ110に転送することができる。
次いで、エンクレーブは、第1のブロックチェーン104A上のブリッジウォレット118から解放される対応するトークン126Aについてコンセンサスに達したかどうかを判定することができる(ステップD)。図3AのステップDを参照して説明されるように、コンセンサスは、トークン解放アクションが発生するためにトークン転送の識別を提供しなければならない所定数量の監視者112A~Nであり得る。例えば、コンセンサスは、監視者112A~Nの少なくとも大部分であり得る。いくつかの実装形態では、コンセンサスは、ステップBの更新のために第2のブロックチェーン104Bをポーリングする監視者112A~Nの少なくとも大部分であり得る。いくつかの実装形態では、コンセンサスは、セキュアエンクレーブ環境100を統括する監視者112A~Nの少なくとも大部分であり得る。更に、いくつかの実装形態では、コンセンサスは、55%、60%、65%、70%、75%、80%、85%、90%、95%などを含むがこれらに限定されない、監視者112A~Nの任意の数値、数量、又はパーセンテージであり得る。
図4Aの例では、エンクレーブ110は、第1のブロックチェーン104A上のブリッジウォレット118からトークン126Aを解放するべくコンセンサスに達したと決定することができる。ここで、4つの監視者112A~Nのうちの3つは、50%を超える、又はセキュアエンクレーブ環境100で動作する監視者112A~Nの大部分である、第2のブロックチェーン104B上のトークン転送を識別した。したがって、エンクレーブ110は、十分な数の監視者112A~Nがスマートコントラクト(例えば、トランザクション)を正当性確認して、トークン126Bをユーザウォレット120からバーンアドレス122及び/又はブリッジウォレット124に転送したと判断することができる。
図4Bに示されるように、エンクレーブ110は、第1のブロックチェーン104A上のブリッジウォレット118内の対応するトークン126Aを解放するための命令を生成することができる(ステップE)。図3BのステップEを参照して説明されるように、命令は、トークン126Aが第1のブロックチェーン104A上に解放されるべきであるユーザウォレット116のアドレスを含むことができる。命令はまた、第1のブロックチェーン104A上のブリッジウォレット118から解放されるべきトークン126Aの数量も含むことができる。全体を通して記載されるように、ユーザウォレット116のアドレスは、ユーザウォレット120のアドレスと同一であってもよい。いくつかの実装形態では、アドレスは異なる場合がある。アドレスが異なる場合、第2のブロックチェーン104B上でトークン126Bを転送するためにステップAで実行されたスマートコントラクトは、メモフィールドなどに、ユーザウォレット116のアドレスを示すことができる。エンクレーブ110は、監視者112A~Nをポーリングして、第1のブロックチェーン104A上のユーザウォレット116とのアドレスの一致を識別することによって、メモフィールド内のアドレスを正当性確認することができる。監視者112A~N(例えば、監視者112A~Nの少なくとも大部分)がアドレスを正当性確認すると、エンクレーブ110は、ステップEで生成される命令にアドレスを含めることができる。
次いで、エンクレーブ110は、命令を暗号化することができる(ステップF)。図3B及び図7~図10を参照して説明されるように、エンクレーブ110がダウンし、リブートされる必要がある場合、命令を暗号化することは有利であり得る。暗号化された命令402は、ユーザウォレット116のアドレスと、ブリッジウォレット118から解放されるトークン126Aの数量とを含むことができる。
エンクレーブ110は、正当性確認のために、暗号化された命令402を監視者112A~Nに送信することができる(ステップG)。図3B及び図7~図10を参照して説明したように、暗号化された命令を監視者112A~Nに送信することは、いずれの監視者112A~Nも第1のブロックチェーン104A上でトークン126Aの解放を、悪意を持って制御しないことを確実にするのに有利であり得る。
図4Cに示されるように、監視者112A~Nのうちの1つ以上は、暗号化された命令を受信したことを正当性確認することができる。したがって、これらの監視者112A~Nは、正当性確認をエンクレーブ110に送信することができる(ステップH)。
エンクレーブ110が監視者112A~Nのうちの1つ以上から正当性確認を受信すると、エンクレーブ110は、監視者112A~NのうちのK個が暗号化された命令を正当性確認したかどうかを決定することができる(ステップI)。図3CのステップIを参照して説明されるように、Kは、監視者112A~Nの大部分(例えば、50%、55%、60%、65%、70%、75%、80%、85%、90%、95%など)以上の任意の数量の監視者112A~Nであり得る。
図4Cでは、全ての監視者112A~Nは、暗号化された命令の受領を正当性確認した。したがって、エンクレーブ110は、ステップIで、監視者112A~NのうちのKが暗号化された命令を正当性確認したと判断することができる(この例では、監視者112A~Nの100%)。監視者112A~NのうちのK個が正当性確認したため、エンクレーブ110は、命令を復号することができる(ステップJ)。エンクレーブ110は、監視者112A~Nとのセキュア接続及び信頼を確立している。したがって、エンクレーブ110は、第1のブロックチェーン104A上でトークン126Aの解放を実行するために必要な命令を監視者112A~Nに提供することができる。エンクレーブ110は、復号化に使用される秘密鍵を保持するため、エンクレーブ110は、命令を復号し、復号された命令を監視者112A~Nに送信し得る(ステップK)。エンクレーブ110は、図4Cの全ての解放トランザクションを復号するために同じ秘密鍵を使用することができる。更に、図7~図10を参照して更に説明されているように、秘密復号化鍵は、エンクレーブ110のマスタシークレット鍵から作成され得る。復号化鍵は、エンクレーブ110にのみ知られることができ、エンクレーブ110によってのみ使用されることができる。復号化鍵は、暗号化された命令402とともに監視者112A~Nに送信され得ないため、監視者112A~Nは命令を復号することができる。エンクレーブ110で復号化鍵を維持することは、監視者112A~Nのいずれも、解放トランザクションに関して互いに独立して、及び/又は悪意を持って行動することができないことを確実にするのに有利であり得る。セキュリティ及び信頼は、エンクレーブ110、監視者112A~N、及び解放トランザクションに関与するユーザ(複数可)の間で維持することができる。
図4Dでは、監視者112A~Nが復号された命令を受信すると、監視者112A~Nは、復号された命令を第1のブロックチェーン104Aにブロードキャストすることができる(ステップL)。言い換えれば、復号された命令は、第1のブロックチェーン104Aのノード106A~Nにブロードキャストされ得る。ノード106A~Nのうちの1つ以上は、命令を使用して解放トランザクションを実行することができる。例えば、ノード106A~Nのうちの1つ以上は、ブリッジウォレット118からトークン126Aを解放することができる(ステップM)。トークン126Aを解放することは、復号された命令で示されるトークン126Aの数量をユーザウォレット116に戻すことを含むことができる。本明細書に説明されるように、ノード106A~Nは、復号された命令に含まれるアドレスを使用してユーザウォレット116を識別することができる。トークン126Aがブリッジウォレット118から解放されると、トークン126Aはもはや凍結されない。ユーザウォレット116のユーザは、第1のブロックチェーン104A上のトランザクション、スマートコントラクト、交換などでトークン126Aを使用することができる。ユーザはまた、例えば、ブリッジ114を介して、第2のブロックチェーン104Bを含むが、これに限定されない1つ以上の他のブロックチェーン又はネットワークにトークン126Aの数量を転送することができる。図4A~図4Dに関して説明されるデータ及び動作の例は、特定の実施形態において以下に説明される。
図4Eでは、ユーザウォレット400及び406を有するコントラクト無しブロックチェーン104C、並びにブリッジウォレット402及び404を有するコントラクト付きブロックチェーン104Dが、それぞれ示される。ユーザウォレット400及び406は、例えば、コントラクト無しブロックチェーン104Cからコントラクト付きブロックチェーン104Dに資産Aをブリッジし、次に戻ってくることを望む、環境100のユーザによって制御される。ブリッジウォレット402及び404は、例えば、エンクレーブ110及び監視者112によって制御され、ユーザにブリッジングサービスを提供する。
理解されるように、コントラクト付きブロックチェーンネットワーク及びコントラクト無しブロックチェーンネットワークは、アドレスを指定するために異なるデータ形式を使用する。例えば、コントラクト無しブロックチェーン104Cは、ベース58の符号化を伴うデータ形式を使用してもよく、一方、コントラクト付きブロックチェーン104Dは、ベース16の符号化を伴うデータ形式を使用してもよい。所与のニーモニックアドレス(例えば、人可読語の文字列)について、異なる鍵生成関数は、コントラクト無しブロックチェーン104C及びコントラクト付きブロックチェーン104Dのアドレスを生成するために使用され得る。そのようなシナリオでは、ブロックチェーン104Cは、ブロックチェーン104C上のアドレスのための1つ以上の対応する鍵(例えば、公開/秘密鍵ペアの公開鍵)を決定論的に生成するプログラム(例えば、ウォレット)によって対話することができる。同様に、ブロックチェーン104Dは、ブロックチェーン上のアドレスのための1つ以上の対応する鍵を決定論的に生成するプログラム(例えば、ウォレット)によって対話することができる。いくつかの場合、コントラクト無しブロックチェーン104Cは、単一のニーモニックアドレスを使用して複数の公開/秘密鍵ペアを生成するプログラムと対話し得、また、単一のニーモニックアドレスを使用して単一の公開/秘密鍵ペアを生成するプログラムと対話し得る。同様に、いくつかの場合、コントラクト付きブロックチェーン104Dは、単一のニーモニックアドレスを使用して複数の公開鍵/秘密鍵ペアを生成するプログラムと対話し得、また、単一のニーモニックアドレスを使用して単一の公開鍵/秘密鍵ペアを生成するプログラムと対話し得る。
これは、例えば、ウォレット400のアドレス_1及びウォレット406のアドレス_4を、アドレス_1及びアドレス_4が異なるフォーマットであり、かつ異なるバイナリ値を保持しているにもかかわらず、単一のニーモニックアドレスで参照することを有利に可能にすることができる。同様に、これは、例えば、ウォレット402のアドレス_2及びウォレット404のアドレス_3を、アドレス_2及びアドレス_3が異なるフォーマットであり、かつ異なるバイナリ値を保持しているにもかかわらず、単一のニーモニックアドレスで参照することを有利に可能にすることができる。
図4Fでは、コントラクト無しブロックチェーン104Cが第1の形式でアドレスを有し、コントラクト無しブロックチェーン104Eが第2の形式でアドレスを有する例が示される。しかしながら、この例では、コントラクト付きブロックチェーン104D及び104Fは、同じ(第3の)形式でアドレスを有する。そのような例では、単一の(第3の)鍵生成関数のみが矛盾するブロックチェーン104D及び104Fに使用される一方で、2つの異なる鍵生成関数がコントラクト無しブロックチェーン104C及び104Eに必要とされ得る。したがって、単一のニーモニックアドレスは、様々なコントラクト付きブロックチェーンネットワーク及び様々なコントラクト無しブロックチェーンネットワーク上の対応するアドレス(例えば、単一のユーザ又はブリッジサービスプロバイダなどの単一の当事者によって制御されるアドレス)を参照するために使用され得る。
図5は、トークンをミントするためのプロセス500のスイムレーン図である。プロセス500は、図3A~図3Dを参照して説明したトークンをミントするためのプロセスと同様である。ミントは、1つのブロックチェーン上のユーザが、そのブロックチェーンから別のブロックチェーンにトークンの数量を転送することを要求するときに起こり得る。トークンの数量を転送する要求は、スマートコントラクトの形態であり得る。
エンクレーブ110、監視者112A~N、及び第2のブロックチェーン104Bによって、プロセス500の1つ以上のブロックを実行することができる。プロセス500の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス500を参照すると、監視者112A~Nは、第1のブロックチェーン上のブリッジウォレットへの更新について、図1~図4を参照して説明されたブロックチェーン104Aなどの第1のブロックチェーンをポーリングすることができる(502)。図3AのステップBを参照されたい。ブリッジウォレットへの更新は、ユーザのウォレットからブリッジウォレットへのトークン数量の転送を含むことができる。この転送は、スマートコントラクトを介してユーザによって開始され、第1のブロックチェーン104Aを動作させる1つ以上のノードによって実行され得る。
監視者112A~Nのうちの1つ以上は、504でブリッジウォレットにトークン転送が行われたことを識別することができる。図3AのステップCを参照されたい。例えば、監視者112A~Nは、トークン数量が、第1のブロックチェーン104A上でユーザウォレットからブリッジウォレットに実際に転送されたことを正当性確認することができる。
次いで、エンクレーブ110は、506において、トークン転送について、監視者112A~Nの間でコンセンサスに達したかどうかを判定することができる。図3AのステップDを参照されたい。監視者112A~Nの間でコンセンサスに達しなかった場合、プロセス500はブロック502に戻ることができ、監視者112A~Nは、ブリッジウォレットに行われた任意の更新について、第1のブロックチェーン104Aを継続的にポーリングすることができる。十分でない数の監視者112A~Nが更新について第1のブロックチェーン104Aをポーリングする場合、コンセンサスに達しない場合がある。また、十分な数の監視者112A~Nが更新について第1のブロックチェーン104Aをポーリングしたが、大部分より少ない監視者112A~Nのがトークン転送が発生したことを正当性確認した場合、コンセンサスに達しない場合がある。
監視者112A~Nの間でコンセンサスに達した場合、エンクレーブ110は、508において、第2のブロックチェーン104B上でトークンをミントするための命令を生成することができる。図3BのステップEを参照されたい。命令は、トークンがミントされ得る第2のブロックチェーン104B上のユーザのウォレットのアドレスを示すことができる。命令はまた、第2のブロックチェーン104B上でミントされるトークンの数量を示すことができる。数量は、第1のブロックチェーン104A上でユーザウォレットからブリッジウォレットに転送されたトークンの数量に対応し得る。
エンクレーブ110は、510において、命令を暗号化することができる。図3BのステップFを参照されたい。
次いで、エンクレーブ110は、512において正当性確認のために、暗号化された命令を監視者112A~Nに送信することができる。図3BのステップGを参照されたい。
監視者112A~Nは、514において暗号化された命令を正当性確認することができる。図3CのステップHを参照されたい。例えば、監視者112A~Nは、暗号化された命令を受信したことを正当性確認することができる。
エンクレーブ110は、516において、監視者112A~NのうちのK個が暗号化された命令の受信を正当性確認するかどうかを判定することができる。図3CのステップIを参照されたい。全体にわたって説明されるように、Kは、監視者112A~Nの大部分、又は監視者112A~Nの大部分よりも大きい任意の数量の監視者112A~Nであり得る。
516において、監視者112A~NのうちのK個が暗号化された命令の受信を正当性確認しない場合、プロセス500は、ブロック502に戻ることができる。ブロック506を参照して上述したように、例えば、全ての監視者112A~Nが暗号化された命令を受信したわけではない場合、監視者112A~NのうちのK個は、受信を正当性確認しない場合がある。全ての監視者112A~Nが暗号化された命令を受信したが、大部分より少ない監視者112A~Nが所定の期間内にエンクレーブ110に応答した場合、監視者112A~NのうちのK個は受信を確認しない場合がある。例えば、監視者112A~Nは、エンクレーブ110からの正当性確認要求が期限切れになる前に、命令の受信を正当性確認するための閾値期間を有し得る。
516において、監視者112A~NのうちのK個が暗号化された命令の受信を正当性確認する場合、エンクレーブ110は、518において命令を復号することができる。図3CのステップJを参照されたい。
次いで、エンクレーブ110は、520において、復号された命令を監視者112A~Nに送信することができる。図3CのステップKを参照されたい。
監視者112A~Nは、522において、第2のブロックチェーン104B上でトークンをミントするために、復号された命令をブロードキャストすることができる。図3DのステップLを参照されたい。命令は、第2のブロックチェーン104Bを動作させる1つ以上のノードにブロードキャストされ得る。
次いで、第2のブロックチェーン104Bは、ステップ524において、復号された命令を使用してトークンをミントすることができる。図3DのステップMを参照されたい。上述したように、トークンは、第2のブロックチェーン104Bを動作させる1つ以上のノードによってミントされ得る。
図6は、トークンを解放するためのプロセス600のスイムレーン図である。プロセス600は、図4A~図4Dを参照して説明したトークンを解放するためのプロセスと同様である。トークンを解放することは、1つのブロックチェーン上のユーザがそのブロックチェーン上のトークンの数量を要求する、又はそうでなければバーンするときに起こり得る。トークンをバーンすると、別のブロックチェーン上のユーザの対応するウォレットに影響を与える。結局のところ、バーンされた一方のブロックチェーン上のトークンの数量は、もう一方のブロックチェーン上のブリッジウォレットから解放され、もう一方のブロックチェーン上のユーザのウォレットに戻すことができる。1つのブロックチェーン上でトークンの数量をバーンする要求は、スマートコントラクトの形態であり得る。
エンクレーブ110、監視者112A~N、及び第1のブロックチェーン104Aによって、プロセス600の1つ以上のブロックを実行することができる。プロセス600の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス600を参照すると、監視者112A~Nは、第2のブロックチェーン104B上のバーンアドレス及び/又はブリッジウォレットへの更新について、第2のブロックチェーン104Bなどの第2のブロックチェーンをポーリングすることができる(602)。図4AのステップBを参照されたい。
監視者112A~Nのうちの1つ以上は、604において、第2のブロックチェーン104B上でユーザのウォレットからバーンアドレス及び/又はブリッジウォレットへのトークン転送が行われたことを識別することができる。図4AのステップCを参照されたい。
次いで、エンクレーブ110は、606において、トークン転送について、監視者112A~Nの間でコンセンサスに達したかどうかを判定することができる。図4AのステップDを参照されたい。合意に達しなかった場合、プロセス600は、ブロック602に戻ることができる。監視者112A~Nの間でコンセンサスに達した場合、次いで、エンクレーブ110は、608において、第1のブロックチェーン104A上のブリッジウォレットに保持されているトークンの数量を解放するための命令を生成することができる。図4BのステップEを参照されたい。命令は、トークン数量を解放することができる第1のブロックチェーン104A上のユーザのウォレットのアドレスを示すことができる。命令はまた、第1のブロックチェーン104A上のブリッジウォレットから解放するトークンの数量を示すことができる。上述したように、ブリッジウォレットから解放され、第1のブロックチェーン104A上でユーザのウォレットに戻される数量は、第2のブロックチェーン104B上でバーンされたトークンの数量に対応してもよい。
エンクレーブ110は、610において、命令を暗号化することができる。図4BのステップFを参照されたい。エンクレーブ110は、秘密鍵を使用して命令を暗号化することができる。秘密鍵は、エンクレーブ110を動作させるために使用されるマスタシークレット鍵から生成され得る。
エンクレーブ110は、612において正当性確認のために、暗号化された命令を監視者112A~Nに送信することができる。図4BのステップGを参照されたい。
監視者112A~Nのうちの1つ以上は、614において、暗号化された命令の受信を正当性確認することができる。図4CのステップHを参照されたい。
次いで、エンクレーブ110は、616において、監視者112A~NのうちのK個が暗号化された命令の受信を正当性確認するかどうかを判定することができる。図4CのステップIを参照されたい。監視者112A~NのうちのK個が受信を正当性確認しなかった場合、プロセス600は、ブロック602に戻ることができる。監視者112A~NのうちのK個が受信を正当性確認した場合、次いで、エンクレーブ110は、618において、命令を復号することができる。図4CのステップJを参照されたい。図6を参照して上述したように、エンクレーブ110は、マスタシークレット鍵から導出される秘密復号化鍵を使用して命令を復号することができる。エンクレーブ110は、秘密復号化鍵を保持することができ、鍵を監視者112A~Nに転送しない場合がある。したがって、エンクレーブ110は、暗号化された命令及び復号化鍵の代わりに、620において、復号された命令を監視者112A~Nに送信する。図4CのステップKを参照されたい。
監視者112A~Nは、622において、第1のブロックチェーン104A上のブリッジウォレットからトークン数量を解放するために、復号された命令をブロードキャストすることができる。図4DのステップLを参照されたい。例えば、監視者112A~Nは、第1のブロックチェーン104Aを動作させる1つ以上のノードに命令をブロードキャストする。
したがって、第1のブロックチェーン104Aは、624において、ブリッジウォレットからトークン数量を解放し、トークン数量をユーザのウォレットに戻すことができる。図4DのステップMを参照されたい。例えば、第1のブロックチェーン104Aの1つ以上のノードは、復号された命令を使用して、命令で識別されるユーザのウォレットのアドレスを使用して第1のブロックチェーン104A上でブリッジウォレットからユーザのウォレットにトークンの量を解放することができる。
図7は、エンクレーブを起動するためのプロセス700のスイムレーン図である。プロセス700は、エンクレーブ110のようなエンクレーブがインスタンス化されるたびに実行され得る。プロセス700の1つ以上のブロックは、エンクレーブ110及び監視者112A~Nによって実行することができる。プロセス700の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス700を参照すると、エンクレーブ110は、702において、構成ファイルを用いてブートすることができる。構成ファイルは、エンクレーブ110を確立するためにオペレータによって使用されるセキュアコードベースであり得る。構成ファイルは、エンクレーブ110、ブリッジ、及びブリッジされているネットワーク又はブロックチェーンを統括する監視者112A~Nを識別するアドレス及び/又はドメインなどの情報を含むことができる。構成ファイルはまた、エンクレーブ110のためのマスタシークレット鍵を生成するための命令を含むことができる。更に、構成ファイルは、ブリッジが存在するネットワーク又はブロックチェーンを示すことができる。
構成ファイルを使用して、エンクレーブ110は、704において、マスタシークレット鍵を生成することができる。マスタシークレット鍵は、暗号学的にセキュアランダム鍵であり得る。他の全ての秘密鍵及びその他のシークレット値は、このマスタシークレット鍵から決定論的に導出することができる。本開示を通して説明されるように、マスタシークレット鍵は、命令を暗号化及び復号するためにエンクレーブ110によって使用され得る秘密鍵を導出するために使用され得る。マスタシークレット鍵は、エンクレーブ110がダウンし、再起動する必要がある場合に、エンクレーブ110をブートするためにも使用され得る。更に、マスタシークレット鍵を使用して、前のエンクレーブのトランザクションを実行し続けることができる新しいエンクレーブを確立することができる。
エンクレーブ110はまた、生成されたときに、マスタシークレット鍵にチェックサムを追加することができる。チェックサムを追加することは、エンクレーブ110が監視者にそのシークレットシェアを取得するように要求し、監視者が、要求が有効なエンクレーブ内から発信されたことを正当性確認できない潜在的な状況を解決するのに有利であり得る。このような状況において、エンクレーブのオペレータは、各監視者からシークレットシェアを、悪意を持って収集することができる。同様に、監視者は、設定要求が適切にエンクレーブ110から来たかどうかを知らない場合があるため、オペレータは、エンクレーブ110の外で生成されたシークレットシェアを、悪意を持って設定することができる。更に、単一の悪意のある監視者が誤ったシークレットシェアを提供し、それによってブリッジが誤ったマスタシークレット鍵を再生成する可能性がある。マスタシークレット鍵にチェックサムを追加すると、これらの状況を解決できる。例えば、マスタシークレット鍵を生成した後、鍵の値はランダムになり、鍵のSHA256ハッシュの最後の4バイトが続く。このようにして、エンクレーブ110は、監視者112A~Nからのシークレットシェアを使用して再生成するマスタシークレット鍵が正しいかどうかを即座にチェックすることができる。チェックサムが一致しない場合、次いで、エンクレーブ110は、監視者112A~Nから取得するシークレットシェアの異なるグループを使用して、マスタシークレット鍵を再生成しようとすることができる。いくつかの実装形態では、シークレットシェアの総数からのシークレットシェア閾値の任意のグループを使用して、マスタシークレット鍵を再生成することができる。
エンクレーブ110はまた、706において、どのエンティティが監視者112A~Nとして機能するかを識別することができる。上述のように、構成ファイルは、監視者112A~Nとして選択されたエンティティを識別するために使用され得るアドレス、ドメイン、又は他の識別子を含むことができる。
次いで、エンクレーブ110は、708において、監視者112A~Nを正当性確認することができる。監視者112A~Nを正当性確認することは、監視者112A~Nのアドレスを使用して監視者112A~Nの各々との接続を確立することを含むことができる。SSL証明書正当性確認技術及び/又はTLSを使用して、監視者112A~Nが、実際には、このセキュアエンクレーブ環境を統括するための正しい監視者112A~Nであることを正当性確認することもできる。更に、正当性確認中、監視者112A~Nは、リモート認証を実行することができる。監視者112A~Nは、ブリッジがエンクレーブ110内で動作しているかどうか確信が持てない場合があるため、エンクレーブ110によって確立されたブリッジをまだ信頼していない場合がある。したがって、リモート認証を用いて、エンクレーブ110は、監視者112A~Nに起動するように要求を送信することができる。監視者112A~Nは、リモート認証を開始して、ブリッジがエンクレーブ110内で実行されており、正しい構成ファイルを使用していることを確実にすることができる。リモート認証は、エンクレーブ110が最初に、又はその後の時間に起動するたびに、発生し得る。リモート認証は、エンクレーブ110がマスタシークレット鍵の一部を監視者112A~Nと共有できるように、エンクレーブ110を信頼するための監視者112A~Nを提供する。
監視者112A~Nが正当性確認されると(及びリモート認証が完了すると)、エンクレーブ110は、710において、マスタシークレット鍵をシークレットシェアに分割することができる。マスタシークレット鍵は、監視者112A~Nの数量に等しいいくつかのシークレットシェアに分割され得る。したがって、10個の正当性確認された監視者112A~Nがある場合、マスタシークレット鍵は、10個のシークレットシェアに分割され得る。マスタシークレット鍵は、構成ファイルで指示された数のシークレットシェアに分割することができる。例えば、いくつかの実装形態では、マスタシークレット鍵は、監視者112A~Nの数量よりも少ない数のシークレットシェアに分割され得る。いくつかの実装形態では、マスタシークレット鍵は、監視者112A~Nの数量よりも大きい数のシークレットシェアに分割され得る。
シークレットシェアは、監視者112A~Nの間で分配することができる。したがって、各監視者112A~N(又は監視者112A~Nのサブセット)は、712において、シークレットシェアを受信することができる。監視者112A~Nは、エンクレーブ110が正しい構成ファイルを用いて、かつセキュア環境で動作していることを正当性確認するために、例えば、リモート認証を使用して、シークレットシェアを正当性確認することができる。マスタシークレット鍵のシークレットシェアを分配することは、エンクレーブ110を保護し、エンクレーブ110に対する攻撃又は他のセキュリティ侵害を予防するのに有利であり得る。更に、いずれの監視者も、シークレットシェアのうちの1つを用いて、単独で、又は悪意を持ってエンクレーブ110内で行動することはできない。エンクレーブ110への変更及びエンクレーブ110で発生するトランザクションは、シークレットシェアをプールし、シークレットシェアのうちのK個でマスタシークレット鍵を再構成することによってのみ行うことができる。
したがって、監視者112A~Nの各々は、714において、マスタシークレット鍵のそれらのシークレットシェアを記憶することができる。シークレットシェアは、図2に描写及び説明された秘密データストア202などの秘密データストア又はデータベースに記憶することができる。例えば、エンクレーブ110が起動又は再起動するたびに、エンクレーブ110は、マスタシークレット鍵を再生成するために、監視者112A~Nからシークレットシェアを取得することができる。
エンクレーブ110がシークレットシェアを監視者112A~Nに送信すると、エンクレーブは716において、実行することができる。言い換えれば、エンクレーブ110は、ブリッジされているブロックチェーンの状態に影響を与えるトランザクションを実行するように動作することができる。例えば、エンクレーブ110は、図1~図6を参照して説明したように、ミントトランザクション及びバーントランザクションを完了するか、そうでなければ認可することができる。エンクレーブ110を実行することは、ブリッジを開始することを含む。スマートコントラクトは、第1のブロックチェーンと第2のブロックチェーンとの間のサポートされている各資産について、エンクレーブ110によって作成することができる。例えば、いくつかの実装形態では、エンクレーブによってクリエータスマートコントラクトを呼び出して、サポートされている資産(複数可)のための任意の必要なスマートコントラクトを作成することができる。
図8は、エンクレーブ起動時のエンクレーブ110のリモート認証のためのプロセス800のスイムレーン図である。プロセス800は、エンクレーブ110又は別のエンクレーブがブート及び/又はリブートされるたびに実行することができる。プロセス800を実行することは、エンクレーブ110が信頼できるように、エンクレーブ110が有効なセキュアコードで実行されていることを確実にするのに有利であり得る。プロセス800の1つ以上のブロックは、エンクレーブ110及び監視者112A~Nによって実行することができる。プロセス800の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス800を参照すると、エンクレーブ110は、802において、構成ファイルを用いてブートすることができる。構成ファイルに関する議論については、図7のブロック702を参照されたい。ブロック802は、エンクレーブ110が最初にブートされたときに発生し得る。ブロック802はまた、エンクレーブ110がダウンし、再起動されているときに発生し得る。
次いで、エンクレーブ110は、804において、一時セッション鍵で開始する要求を送信することができる。送信要求の命令は、構成ファイルから導出することができる。監視者112A~Nは、806において、要求を受信することができる。次いで、監視者112A~Nは、810においてエンクレーブ110を正当性確認するために、808においてリモート認証を実行することができる。エンクレーブ110は、監視者112A~Nのいずれかからマスタシークレット鍵のシークレットシェアを受信できるようになる前に、一時セッション鍵を送信しなければならない。
監視者112A~Nが要求を受信すると、その要求が有効なエンクレーブ内から発信されたものであるかどうかを知らない場合がある。したがって、監視者112A~Nが要求を受信すると、監視者112A~Nは、ブリッジのリモート認証を実行して、エンクレーブ110を正当性確認することができる。いくつかの実装形態では、リモート認証は、エンクレーブ110の有効性確認されたバージョンから以前に生成されたエンクレーブ110の有効性確認されたハッシュ値を取得することを含むことができる。エンクレーブ110について生成される現在のハッシュ値は、エンクレーブ110が実際にセキュアであり有効であるかどうかを判定するために、有効性確認されたハッシュ値と比較され得る。いくつかの実装形態では、クライアントコンピューティングデバイスのユーザ又は他のエンティティはまた、リモート認証を開始することができる。クライアントコンピューティングデバイスは、要求をエンクレーブ110及び/又は監視者112A~Nのいずれかに送信することができる。要求は、例えば、エンクレーブ110の有効性確認されたハッシュ値を取得することと、現在のハッシュ値を受信することと、有効性確認されたハッシュ値と現在のハッシュ値との比較を実行して、エンクレーブ110をリモートで有効性確認することと、を含むことができる。現在のハッシュ値は、エンクレーブ110の有効性確認されたハッシュ値を公的にアクセス可能にする別のコンピュータシステムから取り出すことができる。
リモート認証が失敗した場合、要求は、監視者112A~Nによって拒否され得る。言い換えれば、監視者112A~Nは、悪意のあるオペレータがエンクレーブ110及びその中のブリッジを実行しようとしている可能性があると判断することができる。監視者112A~Nは、リモート認証が失敗したときに、マスタシークレット鍵のシークレットシェアをエンクレーブ110に送信しない場合がある。
リモート認証がパスすると、監視者112A~Nは、(例えば、リモート認証プロセスでDiffie-Hellman鍵交換を使用して導出された)シークレットシェアをエンクレーブ110と共有することができる。本開示全体で説明されるように、監視者112A~Nが、有効かつセキュアなエンクレーブが監視者112A~Nと通信していること、及びエンクレーブ110が正しい構成ファイルで実行されていることを総合的に正当性確認するとき、リモート認証はパスすることができる。チェックサムは、上述したように、監視者112A~Nによって、エンクレーブ110が有効かつセキュアなコードを実行しているかどうかを判定するために実行することができる。
したがって、エンクレーブ110が、810において正当性確認されると、監視者112A~Nは、マスタシークレット鍵のそれらのシークレットシェアをエンクレーブ110に送信することができる。信頼は、監視者112A~Nとエンクレーブ110との間に確立されている。エンクレーブ110は、814において、マスタシークレット鍵のシークレットシェアを受信することができる。
次に、エンクレーブ110は、エンクレーブ110が応答で返すことができるシークレットシェアを暗号化するためにシークレットシェアを使用することができ、また、808において、リモート認証プロセスの一部として使用されたリモート認証コンテキストを提供することができる。エンクレーブ110は、同じ共有シークレットを使用することによって、監視者112A~Nのシークレットシェアを復号することができる。エンクレーブ110は、シークレットシェアを設定する前に、監視者112A~Nにシークレットシェアを要求することができるため、エンクレーブ110はまた、リモート認証のためにこれらの共有シークレットを使用して、エンクレーブ110が監視者112A~Nの各々に送信するシークレットシェアを暗号化することができる。このようにして、監視者112A~Nは、シークレットシェアが実際にはエンクレーブ110自体によって生成されたことを正当性確認することができ、監視者112A~Nが、シークレットシェアをエンクレーブ110以外のいかなるエンティティにも提供していないことを知ることができる。
エンクレーブ110は、816において、受信したシークレットシェアのうちのK個を使用してマスタシークレット鍵を再構築することができる。いくつかの実装形態では、マスタシークレット鍵は、全てのシークレットシェアよりも少ない数で適切に再構築することができる。いくつかの実装形態では、マスタシークレット鍵は、全てのシークレットシェアで再構築することができる。構成ファイルは、Kを識別することができ、又はマスタシークレット鍵を再構築するためにいくつのシークレットシェアが必要とされ得るかを識別することができる。
マスタシークレット鍵が再構築されると、エンクレーブ110は、818において、鍵を使用してブリッジを動作させることができる。例えば、トークンをミント及び解放するなどのトランザクションは、ブリッジを介して接続されているチェーンにわたって実行できる。
図9は、エンクレーブ110を再起動するためのプロセス900のスイムレーン図である。プロセス900は、エンクレーブ110が何らかの理由で初めてブート及び/又はダウンするたびに実行することができる。全体を通して記載されるように、エンクレーブ110は、ステートレスである。エンクレーブ110がブートバックすると、エンクレーブ110は、監視者112A~Nをポーリングして、エンクレーブ110がダウンした時点で、どのミントトランザクション及び/又はバーントランザクションが現在実行されているか、キューイングされているか、完了しているか、及び/又は停止しているかを判定することができる。したがって、エンクレーブ110は、まるでエンクレーブ110が最初にダウンしなかったかのように、ミントトランザクション及び/又はバーントランザクションを完了することでピックアップすることができる。プロセス900は、プロセス700及び/又は800の後に発生し得る。プロセス900は、トークンをミント又は解放するための命令を暗号化した後にエンクレーブ110がダウンしたとき(例えば、図3B及び図4BのステップFを参照)、及び/又は暗号化された命令が正当性確認のために監視者112A~Nに送信されたとき(例えば、図3B及び図4BのステップGを参照)に実行することができる。
プロセス900の1つ以上のブロックは、エンクレーブ110及び監視者112A~Nによって実行することができる。プロセス900の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス900を参照すると、一度、エンクレーブ110がブートされると(例えば、リモート認証が実行され、エンクレーブ110がセキュア環境で有効なコードで動作していることを監視者112A~Nが正当性確認する)、エンクレーブ110は、エンクレーブ110が再起動される前に、監視者112A~Nが任意の暗号化された命令を受信したかどうかを判定するために、監視者112A~Nをポーリングすることができる(902)。図3~図6を参照して説明されるように、暗号化された命令は、それぞれのブロックチェーン上でトークンをミント及び/又はバーンするための命令を含むことができる。
次いで、監視者112A~Nは、エンクレーブ110がダウンし、次いで再起動される前に、暗号化された命令を受信したかどうかを正当性確認することができる(904)。図2を参照して説明したように、監視者112A~Nは、秘密データストア202内の第1のブロックチェーン104Aと第2のブロックチェーン104Bと上で発生するトランザクション及びアクティビティをインデックス化することができる。したがって、監視者112A~Nは、暗号化された命令のインデックスを検索することができる。
エンクレーブ110は、906において、監視者112A~NのうちのK個が受信を正当性確認したかどうかを判定することができる。本開示を通して説明されるように、Kは、監視者112A~Nの大部分より大きい任意の値であり得る。監視者112A~NのうちのK個が再起動前に暗号化された命令の受信を正当性確認しない場合、受信を正当性確認した監視者112A~Nのいずれかが悪意を持って行動している可能性がある。したがって、エンクレーブ110は、命令を復号し、それぞれのブロックチェーン上でそれらをブロードキャストし続けることはできない。エンクレーブ110が、監視者112A~NのうちのK個が暗号化された命令を受信したことを正当性確認することができない場合、プロセス900は再起動することができ、エンクレーブ110は、十分な数の監視者112A~N(例えば、N個の監視者のうちのK個)がオンラインに戻るまで、及び/又は暗号化された命令の受信を正当性確認するまで、監視者112A~Nをポーリングし続けることができる。
場合によっては、エンクレーブ110は、監視者112A~NのうちのK個から正当性確認を受信する必要がない場合がある。代わりに、エンクレーブ110は、暗号化され、署名された命令の単一のコピーを監視者112A~Nのうちの1つから受信することができる。暗号化された命令を受信すると、エンクレーブ110は、以前に暗号化された命令を受信していない監視者112A~Nのいずれかに命令を送信することができる。エンクレーブが、監視者112A~NのうちのK個が暗号化された命令を有することを承認し、それによってそれをフォールトトレラントにすると、エンクレーブ110は、命令の復号されたバージョンを監視者112A~Nに送信することができる。
監視者112A~NのうちのK個が、906において再起動する前に暗号化された命令の受信を有効性確認した場合(又は、エンクレーブ110が暗号化され、署名された命令を監視者112A~Nのうちの1つから受信した場合)、エンクレーブ110は、トークンをミント又は解放する命令が生成されたが、エンクレーブ110がダウンする前に完了していないと判定することができる。したがって、エンクレーブ110は、本開示全体を通して記載されるように、908において、命令を復号することができる。例えば、監視者112A~Nは、暗号化された命令をエンクレーブ110に戻すことができる。エンクレーブ110は、エンクレーブ110によって保持され、マスタシークレット鍵から導出された秘密復号化鍵を使用して命令を復号することができる。
次いで、エンクレーブ110は、910において、復号された命令を再生することができる。命令を再生することは、復号された命令を監視者112A~Nに送信することを含むことができる。次いで、監視者112A~Nは、それぞれのブロックチェーンのノードに命令をブロードキャストすることができ、その結果、命令は、エンクレーブ110がダウンしなかったかのように実行及び完了することができる。そのようなシナリオでは、監視者112A~Nが、既にブロードキャストされかつ受け入れられた命令を再ブロードキャストしても、それらの命令は単に無視することができ、それぞれのブロックチェーンのノードは、トークンが既にロック解除又は転送されている場合、トークンをロック解除又はあるユーザウォレットから別のユーザウォレットに転送しない場合がある。
図10は、エンクレーブ110を再起動するためのプロセス1000のスイムレーン図である。例えば、プロセス1000は、暗号化されたトランザクション(複数可)が正当性確認のために監視者112A~Nに送信された後(例えば、図3B及び図4BのステップGを参照)、任意選択で、監視者112A~Nが暗号化された命令の受信を正当性確認した後(例えば、図3C及び図4CのステップHを参照)、エンクレーブ110がダウンしたときに生じ得る。プロセス1000はまた、エンクレーブ110が命令を復号した後にエンクレーブ110がダウンしたとき(例えば、図3C及び図4CのステップJを参照)、及び/又はエンクレーブ110が復号された命令を監視者112A~Nに送信したとき(例えば、図3C及び図4CのステップKを参照)に実行することができる。
プロセス1000の1つ以上のブロックは、エンクレーブ110及び監視者112A~Nによって実行することができる。プロセス1000の1つ以上のブロックはまた、他のアクター、サーバ、及び/又はコンピューティング環境によって実行することができる。
プロセス1000を参照すると、エンクレーブ110は、エンクレーブ110が再起動される前に、監視者112A~Nをポーリングして、監視者112A~Nが復号された命令を受信したかどうかを判定することができる(1002)。監視者112A~Nは、1004において復号された命令を受信したかどうかを正当性確認することができる。命令の受信を正当性確認することについての説明については、図9のブロック904を参照されたい。
次いで、エンクレーブ110は、1006において、監視者112A~Nのうちの1つが復号された命令の受信を正当性確認するかどうかを判定することができる。1つの監視者で復号された命令の受信を確認するのに十分であり得る。なぜなら、1つの監視者が復号された命令を受信した場合、エンクレーブ110がダウンする前に、監視者112A~Nの少なくとも大部分が暗号化された命令の受信を既に正当性確認していたからである。したがって、監視者112A~Nは既に正当性確認されており、命令を実行するためにエンクレーブ110によって信頼され得る。更に、少なくとも1つの監視者が復号された命令の受信を確認する場合、これは、他の監視者112A~Nのいずれかが復号された命令を受信することができる前に、エンクレーブ110がダウンしたことを示すことができる。復号された命令の受信はまた、エンクレーブ110がダウンする前に、ミントトランザクション及び/又はバーントランザクションが通過したことを示すことができる。
エンクレーブ110がダウンする前に、監視者112A~Nのうちの1つでさえ、復号された命令の受信を正当性確認しない場合、プロセス1000は停止することができる。場合によっては、再起動時に、エンクレーブ110は、暗号化された命令について監視者112A~Nをポーリングすることができる。対応する復号された命令を受信した監視者112A~Nのいずれも、何も応答しないことができる。エンクレーブ110が、監視者112A~Nのうちの少なくとも1つから暗号化された命令を受信する場合、暗号化された命令を残りの監視者112A~Nに送信することができる。次に、命令の復号されたバージョンを全ての監視者112A~Nに送信することができる。監視者112A~Nのいずれも、復号された命令を以前に受信したことがない場合、命令をブロードキャストし、ブロックチェーンに追加することができる。そうでなければ、命令が既にブロードキャストされている場合、命令に関連付けられたトランザクションはブロックチェーンに影響を与えない。
上述のように、監視者112A~Nのうちの少なくとも1つが1006において、復号された命令の受信を正当性確認した場合、エンクレーブ110は、命令が少なくとも1つの監視者によってそれぞれのブロックチェーンにブロードキャストされた可能性があると決定することができる。命令が、対応するトランザクション(例えば、トークンのミント又はバーン)を完了するために、それぞれのブロックチェーンのノードのために実際にブロードキャストされることを確実にするために、エンクレーブ110は、1008において、監視者112A~Nのうちのどれが、復号された命令を受信しなかったのかを識別することができる。そのために、エンクレーブ110は、単に、どの監視者112A~Nが、復号された命令の受信を正当性確認したかを識別し、次いで、ポーリングされたが、受信を正当性確認しなかった監視者112A~Nの全てを選択することができる。
次いで、エンクレーブ110は、1010において、復号された命令を識別された監視者に送信することができる。監視者112A~Nは、1012において、暗号化された命令を受信することができる。次いで、監視者112A~Nは、1014において、トークンのミント及び/又はロック解除及び転送を完了することができるように、それぞれのブロックチェーン上で命令をブロードキャストすることができる。
図11は、本明細書で説明される技術を実施するために使用することができる、コンピューティングデバイス1100の例及びモバイルコンピューティングデバイスの例を示す。コンピューティングデバイス1100は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。モバイルコンピューティングデバイスは、パーソナルデジタルアシスタント、携帯電話、スマートフォン、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことが意図されている。ここに示される構成要素、それらの接続及び関係、並びにそれらの機能は、例示的なものに過ぎず、本文書に説明及び/又は請求される発明の実装形態を限定することを意味するものではない。
コンピューティングデバイス1100は、プロセッサ1102、メモリ1104、記憶デバイス1106、メモリ1104及び複数の高速拡張ポート1110に接続された高速インターフェース1108、並びに低速拡張ポート1114及び記憶デバイス1106に接続された低速インターフェース1112を含む。プロセッサ1102、メモリ1104、記憶デバイス1106、高速インターフェース1108、高速拡張ポート1110、及び低速インターフェース1112の各々は、様々なバスを使用して相互接続され、共通のマザーボード上に、又は必要に応じて他の方法で取り付けることができる。プロセッサ1102は、高速インターフェース1108に結合されたディスプレイ1116などの外部入力/出力デバイス上にGUIのためのグラフィカル情報を表示するために、メモリ1104内又は記憶デバイス1106上に記憶された命令を含む、コンピューティングデバイス1100内で実行するための命令を処理することができる。他の実装形態では、必要に応じて、複数のメモリ及びメモリのタイプとともに、複数のプロセッサ及び/又は複数のバスを使用することができる。また、複数のコンピューティングデバイスを接続することができ、各デバイスは、必要な動作の一部を提供する(例えば、サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステム)。
メモリ1104は、リモートデバイス1100内に情報を記憶する。いくつかの実装形態では、メモリ1104は、揮発性メモリユニットである。いくつかの実装形態では、メモリ1104は、不揮発性メモリユニットである。メモリ1104はまた、磁気ディスク又は光ディスクなどの別の形態のコンピュータ可読媒体であり得る。
記憶デバイス1106は、コンピューティングデバイス1100に大容量記憶を提供することができる。いくつかの実装形態では、記憶デバイス1106は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、又はテープデバイス、フラッシュメモリ若しくは他の同様のソリッドステートメモリデバイス、又は記憶エリアネットワーク若しくは他の構成内のデバイスを含むデバイスのアレイのようなコンピュータ可読媒体であるか、又はそれを含むことができる。コンピュータプログラム製品は、情報キャリアに有形に具体化することができる。コンピュータプログラム製品はまた、実行されるときに、上述したような1つ以上の方法を実行する命令を含むことができる。コンピュータプログラム製品はまた、メモリ1104、記憶デバイス1106、又はプロセッサ1102上のメモリなどのコンピュータ可読媒体又は機械可読媒体で有形に具現化することができる。
高速インターフェース1108は、コンピューティングデバイス1100のための帯域幅集約型動作を管理し、一方、低速インターフェース1112は、低帯域幅集約型動作を管理する。そのような機能の割り当ては、単に例示的なものである。いくつかの実装形態では、高速インターフェース1108は、メモリ1104、ディスプレイ1116(例えば、グラフィックスプロセッサ又はアクセラレータを介して)、及び様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート1110に結合される。実装形態では、低速インターフェース1112は、記憶デバイス1106及び低速拡張ポート1114に結合されている。様々な通信ポート(例えば、USB、Bluetooth、イーサネット、無線イーサネット)を含むことができる低速拡張ポート1114は、例えば、ネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナ、又はスイッチ若しくはルータなどのネットワーキングデバイスなどの1つ以上の入力/出力デバイスに結合することができる。
コンピューティングデバイス1100は、図に示されるように、いくつかの異なる形態で実装され得る。例えば、標準サーバ112として、又はそのようなサーバのグループ内で複数回実装することができる。加えて、それは、ラップトップコンピュータ1122などのパーソナルコンピュータに実装され得る。それはまた、ラックサーバシステム1124の一部として実装され得る。あるいは、コンピューティングデバイス1100からの構成要素は、モバイルコンピューティングデバイス1150などのモバイルデバイス(図示せず)内の他の構成要素と組み合わせることができる。そのようなデバイスのそれぞれは、コンピューティングデバイス1100及びモバイルコンピューティングデバイス1150のうちの1つ以上を含むことができ、システム全体は、互いに通信する複数のコンピューティングデバイスで構成され得る。
モバイルコンピューティングデバイス1150は、他の構成要素の中でも、プロセッサ1152、メモリ1164、ディスプレイ1154などの入力/出力デバイス、通信インターフェース1166、及びトランシーバ1168を含む。モバイルコンピューティングデバイス1150はまた、追加のストレージを提供するために、マイクロドライブ又は他のデバイスなどの記憶デバイスを備えることができる。プロセッサ1152、メモリ1164、ディスプレイ1154、通信インターフェース1166、及びトランシーバ1168のそれぞれは、様々なバスを使用して相互接続され、いくつかの構成要素は、共通のマザーボード上に、又は必要に応じて他の方法で取り付けることができる。
プロセッサ1152は、メモリ1164に記憶された命令を含む、モバイルコンピューティングデバイス1150内の命令を実行することができる。プロセッサ1152は、別個の及び複数のアナログプロセッサ及びデジタルプロセッサを含むチップのチップセットとして実装することができる。プロセッサ1152は、例えば、ユーザインターフェースの制御、モバイルコンピューティングデバイス1150によって実行されるアプリケーション、及びモバイルコンピューティングデバイス1150による無線通信など、モバイルコンピューティングデバイス1150の他の構成要素の調整を提供することができる。
プロセッサ1152は、制御インターフェース1158、及びディスプレイ1154に結合されたディスプレイインターフェース1156を介してユーザと通信することができる。ディスプレイ1154は、例えば、TFT(薄膜トランジスタ液晶ディスプレイ)ディスプレイ又はOLED(有機発光ダイオード)ディスプレイ、又は他の適切なディスプレイ技術であり得る。ディスプレイインターフェース1156は、ディスプレイ1154を駆動して、グラフィック及び他の情報をユーザに提示するための適切な回路を備えることができる。制御インターフェース1158は、ユーザからコマンドを受信し、それらをプロセッサ1152にサブミットするために変換することができる。加えて、外部インターフェース1162は、他のデバイスとのモバイルコンピューティングデバイス1150の近距離通信を可能にするように、プロセッサ1152との通信を提供することができる。外部インターフェース1162は、例えば、いくつかの実装形態では有線通信のために、又は他の実装形態では無線通信のために提供することができ、複数のインターフェースも使用することができる。
メモリ1164は、リモートデバイス1150内に情報を記憶する。メモリ1164は、コンピュータ可読媒体、揮発性メモリユニット、又は不揮発性メモリユニットのうちの1つ以上として実装され得る。拡張メモリ1174はまた、例えば、SIMM(シングルインラインメモリモジュール)カードインターフェースを含むことができる拡張インターフェース1172を介して、モバイルコンピューティングデバイス1150に提供及び接続することができる。拡張メモリ1174は、モバイルコンピューティングデバイス1150に追加の記憶空間を提供することができるか、又はモバイルコンピューティングデバイス1150にアプリケーション又は他の情報を記憶することもできる。具体的には、拡張メモリ1174は、上述したプロセスを実行又は補完する命令を含み得、セキュア情報も含み得る。したがって、例えば、拡張メモリ1174は、モバイルコンピューティングデバイス1150のためのセキュリティモジュールとして提供することができ、モバイルコンピューティングデバイス1150のセキュア使用を可能にする命令でプログラムすることができる。加えて、ハッキング不可能な方法でSIMMカード上に識別情報を配置するなどの追加の情報とともに、SIMMカードを介してセキュアアプリケーションを提供することができる。
メモリは、例えば、以下で考察されるように、フラッシュメモリ及び/又はNVRAMメモリ(不揮発性ランダムアクセスメモリ)を含むことができる。いくつかの実装形態では、コンピュータプログラム製品は、情報キャリアに有形に具体化される。コンピュータプログラム製品は、実行されると、上述したような1つ以上の方法を実行する命令を含む。コンピュータプログラム製品は、メモリ1164、拡張メモリ1174、又はプロセッサ1152上のメモリなどのコンピュータ可読媒体又は機械可読媒体であり得る。いくつかの実装形態では、コンピュータプログラム製品は、例えば、トランシーバ1168又は外部インターフェース1162を介して、伝搬信号で受信することができる。
モバイルコンピューティングデバイス1150は、必要に応じてデジタル信号処理回路を含むことができる通信インターフェース1166を介して無線通信を行ってもよい。通信インターフェース1166は、とりわけ、GSM音声通話(モバイル通信のためのグローバルシステム)、SMS(ショートメッセージサービス)、EMS(エンハンスドメッセージングサービス)、又はMMSメッセージング(マルチメディアメッセージングサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(パーソナルデジタルセルラー)、WCDMA(広帯域符号分割多元接続)、CDMA2000、又はGPRS(一般的なパケット無線サービス)などの様々なモード又はプロトコル下での通信を提供することができる。そのような通信は、例えば、無線周波数を使用してトランシーバ1168を介して発生することができる。加えて、Bluetooth、WiFi、又は他のそのようなトランシーバ(図示せず)を使用するなど、狭域通信が発生する可能性がある。加えて、GPS(全地球測位システム)受信機モジュール1170は、追加のナビゲーション関連無線データ及び位置関連無線データをモバイルコンピューティングデバイス1150に提供することができ、これは、モバイルコンピューティングデバイス1150上で実行されるアプリケーションによって必要に応じて使用することができる。
モバイルコンピューティングデバイス1150はまた、オーディオコーデック1160を使用して可聴的に通信することができ、オーディオコーデック1160は、ユーザから話された情報を受信し、それを使用可能なデジタル情報に変換することができる。オーディオコーデック1160は、同様に、スピーカを介して、例えば、モバイルコンピューティングデバイス1150のハンドセット内で、ユーザのために可聴音を生成することができる。そのような音は、音声電話通話からの音を含むことができ、記録された音(例えば、音声メッセージ、音楽ファイルなど)を含むことができ、また、モバイルコンピューティングデバイス1150上で動作するアプリケーションによって生成された音を含むことができる。
モバイルコンピューティングデバイス1150は、図に示されるように、いくつかの異な形態で実装され得る。例えば、携帯電話1180として実装することができる。また、スマートフォン1182、パーソナルデジタルアシスタント、又は他の同様のモバイルデバイスの一部として実装することもできる。
本明細書で説明されるシステム及び技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現され得る。これらの様々な実装は、記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、及びそれらにデータ及び命令を送信するように結合された、特殊又は汎用であり得る少なくとも1つのプログラム可能プロセッサを含むプログラム可能システム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラムにおける実装を含むことができる。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション又はコードとしても知られる)は、プログラム可能プロセッサのための機械命令を含み、高レベルの手続き型及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブリ/機械言語で実装することができる。本明細書で使用されるとき、機械可読媒体及びコンピュータ可読媒体という用語は、機械命令を機械可読信号として受信する機械可読媒体を含む、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用される任意のコンピュータプログラム製品、装置及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能ロジックデバイス(PLD))を指す。機械可読信号という用語は、機械命令及び/又はデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、本明細書に説明のシステム及び技術は、ユーザに情報を表示するためのディスプレイデバイス(例えば、CRT(ブラウン管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供することができるキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)と、を有するコンピュータ上に実装され得る。他の種類のデバイスは、ユーザとの対話を提供するためにも使用され得、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であり得、ユーザからの入力は、音響、速度、又は触覚入力を含む任意の形態で受信され得る。
本明細書に説明するシステム及び技術は、バックエンドコンポーネント(例えば、データサーバ)を含むか、ミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むか、又はフロントエンドコンポーネント(例えば、ユーザが本明細書に説明するシステム及び技術の実装形態と対話可能なグラフィカルユーザインターフェース又はWebブラウザを有するクライアントコンピュータを含むクライアントコンピュータ)、あるいはそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムに実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態又は媒体(例えば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)及びワイドエリアネットワーク(WAN)、例えば、インターネットが含まれる。
コンピューティングシステムは、クライアント及びサーバを含み得る。クライアント及びサーバは、概して、互いに遠隔にあり、典型的には、通信ネットワークを通して対話する。クライアント及びサーバの関係は、それぞれのコンピュータ上で動作し、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
図12は、アンラッピング手数料を決定するために使用できるデータ1200の概略図である。例えば、コントラクト無しブロックチェーンネットワーク104Aは、トランザクションのための未使用のトランザクション出力(UTXO)スキームを使用するように構成され得、一方、コントラクト付きブロックチェーンネットワークは、トランザクションのためのアカウントモデルを使用する。UTXO1202~1210は、エンクレーブ環境100/150に利用可能なそれらのUTXOである。他のタイプのブロックチェーンネットワークは、アカウントベースのデータを含む資産を追跡するために、同じ又は異なるデータスキームを使用することができる。
資産がブロックチェーン104Aからブロックチェーン104Bにブリッジされるとき、第1のニーモニックアドレスから決定論的に作成された第1のアドレスを参照して、第1のUTXOコマンドに基づいて、第1の資産をロックするロック動作が実施される。例えば、ユーザは、アドレス_1でウォレット400(図4Eを参照)から第1の資産(資産A)を転送し、アドレス_2でウォレット402に転送する。ロック動作は、第1のニーモニックアドレスから決定論的に作成された第2のアドレスを含む第1のアカウントベースのコマンドを使用して、第2の資産をミントする。アドレス_1を導出するために使用されるものと同じニーモニックを使用して、ブリッジプログラムは、ウォレット406で資産A’をアドレス_4に転送することができる。この転送に同じニーモニックを使用することによって、環境100は、ブロックチェーン104A及び104Bがアドレスを指定するために異なるデータ形式を使用しているにもかかわらず、ユーザに単一のデータオブジェクト(例えば、ニーモニックアドレス)のみを維持することを要求しながら、有利にバックエンドデータ動作を調整することができる。ロック解除動作は、第2のニーモニックアドレスから決定論的に作成された第3のアドレスを参照して、第2のアカウントベースのコマンドに基づいて、第1の資産をロック解除する。
ロック解除動作は、第2のニーモニックアドレスから決定論的に作成された第4のアドレスを含む第2のUTXOコマンドを使用して、第1の資産をロック解除する。
ユーザがブロックチェーン104B上の自分の資産をロック解除することを望む場合、ロック解除動作が実施される。ロック解除動作は、第1の資産の値を、ブリッジプログラムに利用可能なUTXOオブジェクトの平均値で割った値に基づいて、ロック解除動作のための予想される転送手数料を決定することを含む。
例えば、ブロックチェーン104A上での転送を実現するために、転送手数料は、転送要求への入力として使用される全てのUTXO1202~1210に対して、ブロックチェーンネットワーク104Aによって請求される。したがって、ガスコストは、トランザクションにおけるUTXOの数に大きく基づいている。UTXOの数を推定し、したがって、ブロックチェーン104Aによって請求され得る転送手数料の量を推定するために、予想される転送手数料が見出される。いくつかの場合、この予想される転送手数料は、ユーザのウォレットに返却される総量をUTXO1202~1210の平均サイズで除算する。この予想される転送料金はまた、ロック解除動作を実施することの一部として、エンクレーブ110によって収集されたブリッジ手数料を含むことができる。このブリッジ手数料は、例えば、エンクレーブ110及び監視者112のハードウェアを維持し、運用費用をカバーし、及びエンクレーブ110及び監視者112の所有者にブリッジサービスを提供するためのインセンティブを提供するために使用することができる。
ロック解除が実際に実行される前に、システムの構成に応じて、ユーザの認可が必要であっても、必要でなくてもよい(例えば、ユーザは、より速いトランザクションを確実にするために、そのような認可ステップをオプトアウトしたか?)。ユーザの認可が必要な場合、ロック解除動作は、予想される転送手数料(ブリッジ手数料の有無にかかわらず)を提示することと、ユーザの認可を受信することとを含むことができる(例えば、ユーザがGUIのボタンをクリックすることに基づいて、ユーザは、公開鍵の対応物を用いてエンクレーブ110によって承認されるメッセージに署名することによって、秘密鍵の所有権を証明する)。
次に、ロック解除が処理され、第1の資産のロック解除の一部として実際の転送手数料が発生する。実際の転送手数料は、第1の資産のロック解除の一部としてロック解除された資産から差し引かれる。多くの場合、又は全ての場合、実際の転送手数料は予想される転送手数料とは異なる。例えば、動作1212で、予想されるUTXOの必要な値は、実際のUTXOの必要な値と一致し(5及び5)、実際のアンラッピング手数料と同じである予想されるアンラッピング手数料(ユーザに提示され、認可された)(15.44及び15.44)をもたらす。動作1214において、実際の必要なUTXOは、予想される必要なUTXOよりも大きく(6及び5)、結果として、実際のアンラッピング手数料は、予想されるアンラッピング手数料よりも大きい(18.44及び15.44)。しかしながら、動作1212において、それは、ロック解除された資産から推測される予想されるアンラッピング手数料であり、実際のアンラッピング手数料ではないことに留意されたい。この差分(3)をカバーするために、オーバーフローアカウントは差分(3)が差し引かれる。動作1216において、実際の必要なUTXOは、予想される必要なUTXOよりも小さく(4及び5)、結果として、実際のアンラッピング手数料は、予想されるアンラッピング手数料よりも小さい(12.44及び15.44)。しかしながら、動作1214において、それは、ロック解除された資産から推測される予想されるアンラッピング手数料であり、実際のアンラッピング手数料ではないことに留意されたい。この差分は、上記と同じオーバーフローアカウントに追加される。このようにして、ユーザは、有利には、より予測可能なアンラッピングコストを与えることができ、オーバーチャージ及びアンダーチャージがオーバーフローアカウントに適用されるため、転送手数料の変動性をバッファリングすることができる。
図13は、記憶されたデータ及びグラフィックユーザインターフェースを有するブロックチェーンウォレットアプリケーションの図である。レガシーウォレット1300は、ブリッジ環境100が作成される前に、又はブリッジング動作を認識していない、又はブリッジング動作をサポートすることに関心がない組織によって、ブロックチェーン104Aのために開発されたウォレットを含むことができる。コントラクト付き及びコントラクト無しウォレット1302は、ブロックチェーン104Aのレッジ、並びにユーザが自分の資産をブリッジすることを望む可能性のある他のコントラクト付きブロックチェーン及びコントラクト無しブロックチェーンをサポートする。
ウォレットデータ1300では、単一のニーモニックアドレスが単一のブロックチェーンについて記憶され、その単一のニーモニックアドレスから、多くのシークレット、例えば、秘密鍵又はその単一のブロックチェーンに関連する他の秘密として使用されるように導出される。ウォレットデータ1300では、単一のニーモニックアドレスが、ユーザがウォレット1302を介して対話している複数の(例えば、全ての、全てのサブセットの)ブロックチェーンにわたってユーザのために使用されるように記憶される。
示されるように、ウォレット1300は、第1の非カストディアルウォレットをサポートするコントラクト無しネットワークに使用可能であり(例えば、ユーザによって管理される鍵を用いて)、第1の非カストディアルウォレットにおいて、第1の非カストディアルウォレットのユーザに提示可能なニーモニックアドレスが、コントラクト無しブロックチェーンネットワーク上のアドレスの複数の対応する鍵を決定論的に生成するために使用される。その同じコントラクト無しブロックチェーンはまた、第2の非カストディアルウォレットをサポートすることができ(例えば、両方が同じ又は異なるユーザによって同時に使用され得る)、第2の非カストディアルウォレットにおいて、第2のウォレットのユーザに提示可能なニーモニックアドレスが、コントラクト無しブロックチェーンネットワーク(複数可)上及びコントラクト付きブロックチェーンネットワーク(複数可)上のアドレスの単一の対応する公開鍵を決定論的に生成するために使用される。いくつかの場合、2つのコントラクト付きブロックチェーンネットワークは、アドレスを指定するために同一のデータ形式を使用し、したがって、ウォレット1302は、同一のデータを含む導出されたシークレット(アドレス、秘密鍵など)を使用する。
本明細書には多くの具体的な実施の詳細が含まれているが、これらは本開示の範囲に対する制限として解釈されるべきではなく、むしろ特定開示される技術の特定の実施形態に固有であり得る特徴の記述として解釈されるべきである。別個の実施形態の文脈で本明細書に説明する特定の特徴は、単一の実施形態において一部又は全体を組み合わせて実施することもできる。逆に、単一の実施形態の文脈で説明する様々な特徴は、複数の実施形態において別々に、又は任意の適切なサブ組み合わせで実施することもできる。更に、特徴は、特定の組み合わせで作用するものとして本明細書で説明し、及び/又は当初はそのように特許請求の範囲としたが、特許請求の範囲とした組み合わせからの1つ以上の特徴は、場合によっては組み合わせから削除できるとともに、特許請求の範囲とした組み合わせは、サブ組み合わせ又はサブ組み合わせのバリエーションに移され得る。同様に、特定の順序で作動が説明されているが、これは、望ましい結果を得るために、そのような作動を示された特定の順序で、又は順次実行すること、あるいは全ての作動を実行することを必要とすると理解すべきではない。主題における特定の実施形態を説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内である。