メインコンテンツへスキップ

LCP v0.1 仕様(日本語概要)

このページは LCP v0.1 の日本語概要です。 正規(normative)な仕様は英語版の docs/protocol/protocol.md を参照してください(このリポジトリでは英語版が SSOT です)。

概要

LCP(Lightning Compute Protocol)は、Lightning の既存トランスポート(BOLT #1 カスタムメッセージ)上で動作するアプリケーション層プロトコルです。 Quote → Pay → Result の流れで、計算ジョブに対する支払いと結果受け渡しを行います。
  • BOLT(Lightning 仕様)を変更しません
  • 直接の Lightning ピア接続(Requester と Provider の peering)が必要です
  • 支払い(BOLT11 invoice)とジョブ条件(Terms)を terms_hash でバインドし、invoice swapping を防ぎます

ゴール(抜粋)

LCP v0.1 は以下を定義します:
  • ジョブ交渉のための最小 P2P メッセージセット
  • 支払いとジョブ条件のバインディング(invoice swapping 対策)
  • 結果を 1 メッセージで返す仕組み
  • アプリケーション層の idempotency / リプレイ耐性
  • Provider が受理するタスクテンプレート(task_kind + params)を接続スコープで宣言する方法

基本フロー(概念)

  1. Requester → Provider: lcp_quote_request
  2. Provider → Requester: lcp_quote_responseprice_msat / terms_hash / BOLT11 invoice 等)
  3. Requester が invoice を支払う(description_hash == terms_hash 等を検証)
  4. Provider → Requester: lcp_result

メッセージ種別(v0.1)

LCP v0.1 は BOLT #1 の odd type のカスタムメッセージを使います(unknown odd は ignore / unknown even は fatal のルールに準拠)。
  • 42081: lcp_manifest
  • 42083: lcp_quote_request
  • 42085: lcp_quote_response
  • 42087: lcp_result
  • 42095: lcp_cancel
  • 42097: lcp_error

TLV と拡張性(要点)

各メッセージの payload は TLV stream(bigsize(type)bigsize(length)value)です。
  • TLV は type 昇順にソートします
  • 同一 type の重複はしません
  • unknown TLV は無視します(forward compatibility)

LCP v0.2 の task_kind(概要)

LCP v0.2 では以下の task_kind を定義し、OpenAI 互換 API の HTTP request/response body bytes(JSON / SSE)を LCP の input/result stream の decoded bytes としてそのまま運びます(中身は解釈しません)。
  • task_kind="openai.chat_completions.v1"POST /v1/chat/completions
  • task_kind="openai.responses.v1"POST /v1/responses
  • input stream: content_type="application/json; charset=utf-8", content_encoding="identity"
  • params は TLV stream で、少なくとも model を含みます
  • result stream:
    • stream omitted/false(non-streaming): content_type="application/json; charset=utf-8", content_encoding="identity"
    • stream:true(streaming): content_type="text/event-stream; charset=utf-8", content_encoding="identity"(SSE bytes をそのまま搬送)
詳細・正規(normative)な仕様は英語版 docs/protocol/protocol.md の §5.2.1 を参照してください。

参考

  • LCP 英語仕様(SSOT): docs/protocol/protocol.md
  • Lightning BOLT #1 messaging: https://github.com/lightning/bolts/blob/master/01-messaging.md