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

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の高さと関連付けられる。
  • verifyState: ある時点のLight Clientの状態を元に対象Chainの状態を検証する。一部の例外を除き、多くのChainの状態はkey-value型のstorageとして表現可能であり、検証対象となるのは対象Chain内のある(key, value)のペアの存在証明である。また、反対にペアの非存在証明が用いられる場合がある。(e.g. IBCのPacket Timeout)

各Light Clientの仕様はブロックチェーンやそのコンセンサスプロトコルごとに異なる。上記のような機能の共通インタフェースを定義したものとして、IBCICS-02がある。LCPでは、Enclave内でLight Clientを実行する Enclave Light Client (ELC) は、ICS-02に基づくLight Client仕様をサポートする。