メインコンテンツまでスキップ

Architecture

Overview

LCPは、2つのブロックチェーン間のMessage/Packetの送信をrelayするIBC Relayerと連携して動作する。受信チェーンは送信チェーンのLight Client検証を直接行わないため、RelayerはLCPに対して送信チェーンを検証するように要求する。そしてその検証結果をRelayerは受信チェーンに提出し、受信チェーンは代わりに検証する。

次の図は2つのchain間のLCPを用いたアーキテクチャおよびPacket-relayのフローである。

Packet-relayの各ステップは次のようになる。ここでは、chainBがchainA上のpacketの存在証明を検証する場合を想定する。

  1. 最初にRelayerはchainA上でchainB宛のPacketが送信されたことを検出する
  2. RelayerはLCP NodeのAppにchainAを検証するように要求する
  3. AppはLCP EnclaveにPacketの検証を要求するVerifyMembership commandを送信する。また、Handlerはcommand受取り、ELCにpacketの検証を要求する。
  4. ELCはchainAに対応するLight Clientによりpacket commitmentを検証し、そのcommitmentにEKにより署名を行いproofを生成する
  5. 4.のcommitmentとproofをEnclaveは返し、AppはそれをRelayerに返す
  6. Relayerは5.のcommitmentとproofをchainBに提出し、chainB上のLCP Clientによりpublic EKを用いて検証される

Components

LCP Node

LCP Nodeは、Intel SGXを搭載し、LCP Enclaveを作成するHost Applicationを実行する。

Host Application

Host App(単にAppとも呼ぶ)は、LCP Enclaveの作成およびEKの生成、またRelayerからの要求を元にELCへ検証の要求を行うGRPC serverを実装する。

また、Host AppはRemote Attestationのために、AEと対話を行い、LCP Enclaveの情報を含むQuoteを作成する。このQuoteをIASなどのAttestation ServiceへQuoteを送信することで、Verifiable Quoteを取得できる。DCAP(ECDSA attestation)を利用する場合は、IASの代わりに外部の検証者が直接的にQuoteを検証する。

LCP Enclave

LCP Enclaveは、Handler, Enclave Manager(EM), ELCの各モジュールから構成されるEnclaveである。ELC moduleはregister_implementationを用いてEnclaveに登録可能であり、1つのEnclaveには複数のELCを登録することができる。

また、Host Appからのecallによる要求をHandlerがroutingして適切なモジュールを実行する。

Enclave Light Client (ELC)

ELCは、Enclave内で動作するLight Clientモジュールである。

ELCは、RelayerからAppを介して要求されたChainのheaderや状態の存在証明を検証し、その結果を示す新たなcommitmentを生成する。Enclave内でEKを用いてそのcommitmentに署名を行うことでProofを生成し、commitmentとともにAppに返す。Appを介してそれらを受け取ったRelayerは相手chainに提出し、それらはLCP Clientにより検証される。

詳細についてはこちらを参照。

Enclave Manager (EM)

EMは、ELCのcommitmentのproofを生成するためのEnclave Key(EK)を生成する。また、外部の検証者がEnclaveの妥当性を確認するためのRemote Attestationに必要なEKの公開鍵を含むReportを生成する。

Attestation Service

Remote partyによるenclaveの妥当性の確認を可能にするためのRemote Attestationを提供するサービスである。IAS、Microsoft Azure Attestation(MAA)があり、外部serviceを必要としない方式としてECDSA attestationがある。LCPでは、最初にIASをサポートしている。このドキュメントでは特に注釈がない限りはRemote AttestationについてはIASの利用を前提に記述する。

Attestation Serviceにより得られたVerifiable Quoteの署名を検証し、期待するEnclaveのMRENCLAVE値と照合することで、Quoteに含まれるデータが正しく対象のEnclaveにより構成されたことがわかる。さらにこれにより、検証者はQuote内のEKが正しくEnclave内で生成されたことを確認できる。このプロセスの詳細はRemote Attestationで述べる。

Relayer

Relayerは2つのChainの間に存在し、検証を行うChainに必要なデータを提供するために検証先のChainやLCP Nodeと対話を行う。これはIBCにおけるRelayerと同義である。

LCP Client

LCP Clientは、ELCの生成したcommitmentとproofを検証するChain上のIBC Client実装である。 LCP Clientは、Appが生成したLCP EnclaveのためのVerifiable Quoteを検証した上で、そこに含まれるEKの公開鍵を取得し保持する。DownstreamのchainのLCP Clientはその鍵を用いてELCにより生成されたcommitmentを検証し、Upstream chainの状態遷移や存在証明の妥当性の確認を行う。

詳細についてはこちらを参照。