164 / 691BOLT11

BOLT 11

用于 Lightning 支付的签名账单

BOLT 11 包含一笔具体 Lightning 支付的条件。账单有效并不代表存在可用路径,也不代表付款已经完成。

BOLT 11 是采用 Bech32 编码的签名 Lightning 账单标准,包含 payment hash、收款方信息及支付条件。它是付款请求,不是支付成功的证明。

Bech32 用校验和检测抄写错误,并不是加密。基于 secp256k1 的 ECDSA 签名保护账单内容,将其绑定到收款方密钥,而非经过核实的人。与 Bech32 地址不同,BOLT 11 没有 90 字符限制。二维码可以使用大写,但大小写混用无效。 [BOLT 11 — Invoice protocol]

lnbc 表示主网,lntb 表示 testnet,lntbs 表示 signet,lnbcrt 表示 regtest。金额以 BTC 为单位,可带 m、u、n 或 p 倍率。使用 p 时末位必须为 0,才能得到整数 msat;1000 msat 等于一个 satoshi。省略金额意味着由付款方填写,并非零金额支付。 [BOLT 11 — Invoice protocol]

p 字段包含 payment hash,即 payment preimage 的 SHA256。s 字段包含 payment_secret,收款方要求在路由支付的最后一段提供它。Secret 既不是 preimage,也不是钱包种子。当前 BOLT 11 要求两者均存在;从账单读出 secret 本身不能证明付款。 [BOLT 11 — Invoice protocol] [BOLT 4 — Onion routing]

账单恰好包含一种形式:文本 d,或外部描述的哈希 h。对于 h,钱包必须验证所提供描述的 SHA256;哈希本身无法说明购买内容。签名把内容与密钥绑定,并不保证商家承诺属实。解码后的文本应作为数据安全显示。 [BOLT 11 — Invoice protocol]

Timestamp 加 x 决定到期时间;没有 x 时默认有效期为 3600 秒。c 字段是最后一个 HTLC 的 min_final_cltv_expiry_delta,单位为区块,并非另一段以秒计的有效期;缺省时至少采用 18 个区块。账单到期不会撤销已经完成的付款。 [BOLT 11 — Invoice protocol]

9 字段表示必需或可选功能。未知偶数位要求拒绝支付,未知奇数位则忽略;已知功能的依赖必须满足。只有账单提供 basic_mpp 时才能使用 Basic MPP。拆分支付并不产生多张独立账单。 [BOLT 11 — Invoice protocol] [BOLT 9 — Assigned feature flags]

r 字段提供通往收款方的 routing hints,可能暴露节点密钥、通道标识及费用参数,但不能证明当前流动性。可选 f 字段可提供链上地址;这是另一种支付方式,有自己的费用和确认过程。因此,整张账单不是私密或可永久重复使用的联系人地址。 [BOLT 11 — Invoice protocol] [BOLT 4 — Onion routing]

发送后要区分等待与完成。应保存账单及相应 preimage 作为结算依据,而不仅是二维码截图。丢失响应后,先在钱包核实状态。新账单或另一支付方式可能导致再次付款;格式本身不提供通用的重复支付保护。 [BOLT 4 — Onion routing] [Core Lightning — Payment result]

要获得更完整的理解,请将本词条与以下词条结合阅读: Lightning Network, HTLC, BOLT 12, Nostr Wallet Connect, Satoshi. 反向关联还来自: Nostr Wallet Connect, BOLT 12, LNURL, Lightning Address.

DOC · 001BOLT 11 — Invoice protocol规范DOC · 002BOLT 4 — Onion routing规范DOC · 003BOLT 9 — Assigned feature flags规范DOC · 004Core Lightning — Payment result文档
来源优先 · 非投资建议