Light Client
Light Clientとは、対象となるブロックチェーンのヘッダーを検証するClientである。フルノードと異なり、ブロックの全てのトランザクションを実行はせずにヘッダーのみを検証するため、少ないリソースで実行することができる。
Light Clientは、一般的に次の機能を備える:
- initializeClient: 対象Chainの信頼できるHeaderやセキュリティパラメータにより、Light Clientの初期状態を作成する。この”Initial” Headerは検証ができないため、信頼が必要である。また、セキュリティパラメータとしては、PoSのLong range attackを防ぐためにtrusting periodがよく用いられる。
- updateClient: Light Clientの状態と対象ChainのHeaderを入力として、検証が成功した場合に新たな状態に遷移させる関数。なお、状態は対象Chainの高さやHeaderから得られたChainの状態ルート値を含む。
- verifyMembership: ある高さに対応するLight Clientの状態を元に対象Chainの状態を検証する関数。一部の例外を除き、多くのChainの状態はkey-value型のstorageとして表現可能であり、検証対象となるのは対象Chainの状態を構成する(key, value)のペアの存在証明である。また、反対にペアの非存在証明が用いられる場合がある。(e.g. IBCのPacket Timeout)
各Light Clientの検証仕様はブロックチェーンやそのコンセンサスプロトコルごとに異なる。上記のような機能の共通インタフェースを定義したものとして、IBCのICS-02がある。LCPでは、Enclave内でLight Clientを実行する Enclave Light Client (ELC) は、ICS-02に基づくLight Client仕様に準拠する。