BOLT12 Offer和发票有何不同? 图 1
BOLT12 Offer和发票有何不同? · 图 1

BOLT12 Offer 更像可重复使用的收款入口,BOLT11 通常是一张已经包含支付条件的单次发票。付款 BOLT12 时,钱包仍要根据 Offer 发起请求并取得具体 invoice,不能直接把 Offer 当作最终付款凭证。

两者处在不同阶段

BOLT11 由收款方生成,付款方拿到后可直接检查金额、payment hash 和 expiry。BOLT12 Offer 可以长期展示,支持无固定金额或重复购买;付款钱包根据 Offer 发送 invoice_request,收款方再返回与本次购买对应的 invoice,把商品入口和本次账单分开。

一次 BOLT12 付款的消息链

  1. 解码 Offer,检查链、说明、金额规则和签名。
  2. 创建 invoice_request,填入本次金额、数量或 payer 信息。
  3. 验证返回 invoice 与原 Offer、请求参数和收款方签名的关联。
  4. 按具体 invoice 付款,保存 payment hash 与结算证明。

何时仍适合 BOLT11

一次性线下收款、当前钱包尚不支持 BOLT12,或商户需要最简单兼容路径时,BOLT11 更直接。Offer 的可复用性不等于永久可信:商户密钥、路由和商品条件会变化,每次拿到 invoice 后仍要重新确认。用户还应确认钱包是否真正实现 BOLT12,而不是把无法识别的 bech32 字符串按普通发票处理。

Offer 本身可长期存在,但返回的 invoice 仍有本次支付的金额、路径和有效性条件。钱包必须验证各对象之间的签名承诺,并把 invoice_request 中可能携带的付款方信息按隐私数据处理;不支持的字段应明确拒绝,不能静默降级成另一种付款语义。

Lightning BOLT12 Offer:操作前的知识坐标

  1. 三对象交互:用三对象交互直接回答搜索意图并形成可执行核验信息。
  2. 复用能力对照:用复用能力对照直接回答搜索意图并形成可执行核验信息。
  3. 字段与签名:用字段与签名直接回答搜索意图并形成可执行核验信息。
  4. 兼容性边界:用兼容性边界直接回答搜索意图并形成可执行核验信息。

Lightning BOLT12 Offer:来源支持到哪一层

  1. BOLT12 Offer设计为可复用的付款入口,付款方先基于Offer生成invoice_request,再由收款方返回具体invoice。
  2. 与一次性BOLT11发票相比,Offer可表达无金额或重复使用场景,并采用TLV与merkle化签名承诺组织字段。
  3. Offer、invoice_request和invoice是不同对象;拿到Offer不等于已经获得可支付发票,兼容性也取决于双方钱包实现。(有限确认)

Lightning BOLT12 Offer的证据出处

  • Lightning BOLT12 Offer的一级来源 1:Lightning BOLTs。用于正式字段、流程或产品说明
  • Lightning BOLT12 Offer的一级来源 2:BOLT11 Payment Encoding。用于实现路径、比较基准或风险边界

与Lightning BOLT12 Offer直接相邻的站内主题

关于Lightning BOLT12 Offer的说明只用于技术教育和风险识别,不构成收益承诺。

Lightning BOLT12 Offer操作完成后的回看

不要依据前端提示立即结束任务。重新读取三对象交互,核对复用能力对照是否变化,再用字段与签名验收;结果矛盾时停止追加操作。

Lightning BOLT12 Offer:发布时必须保留的限定

BOLT12实现和互操作支持仍在发展,文章不把规范仓库内容写成所有Lightning钱包都已支持。