跳至主要內容
高級

BOLT12 Offers

深入理解 BOLT12 Offers,閃電網路的下一代支付請求協議。

20 分鐘

什麼是 BOLT12?

BOLT12 是閃電網路規範的重大更新,引入了「Offers」概念——一種可重複使用的支付請求格式。 與一次性的 BOLT11 發票不同,Offers 可以永久有效,並支持更豐富的功能, 如訂閱支付、退款、和更好的隱私保護。

為什麼需要 BOLT12? BOLT11 發票設計上是一次性的,每次支付都需要新發票。 BOLT12 Offers 解決了這個問題,同時帶來了更好的隱私和功能。

BOLT11 vs BOLT12

特性 BOLT11 BOLT12
使用次數 一次性 可重複使用
金額 固定或為空 固定、範圍或付款者決定
有效期 通常 1 小時 可永久有效
付款者隱私 有限 支持盲化路徑
收款者隱私 節點 ID 暴露 可隱藏節點 ID
退款支持 內建支持
格式前綴 lnbc... lno...(offer)

Offers 工作流程

1

創建 Offer

商家創建一個 Offer(lno1...),包含描述、金額範圍等資訊

2

發送請求

付款者掃描 Offer,通過洋蔥訊息發送 invoice_request

3

返回發票

商家收到請求,生成專屬發票並通過洋蔥訊息返回

4

完成支付

付款者收到發票,按正常流程完成閃電支付

Offer 格式解析

# 範例 Offer
lno1qgsqvgjwvd...(bech32m 編碼)

# 解碼後的內容
offer_id: 8a3c...
description: "Coffee Shop Tips"
issuer: "Bitcoin Cafe"
amount_msat: 0 (付款者決定)
features: 0x0200
paths: [blinded_path_1, blinded_path_2]
node_id: (隱藏,使用盲化路徑)

關鍵功能

盲化路徑 (Blinded Paths)

收款者可以提供「盲化路徑」而非真實節點 ID。 付款者只知道路徑的入口點,無法得知最終目的地。

A → B → ??? → ??? → 收款者
(後半段路徑被加密)

洋蔥訊息 (Onion Messages)

BOLT12 使用洋蔥訊息進行通訊,無需建立通道即可發送訊息。 這允許匿名請求發票。

  • • 無需支付即可通訊
  • • 端到端加密
  • • 支持回覆路徑

應用場景

🎁

靜態支付碼

一個 Offer 可以永久使用,適合打賞、捐款

🔄

訂閱服務

定期支付服務費,無需每次生成新發票

↩️

退款機制

商家可以通過原支付路徑發起退款

🔒

隱私支付

盲化路徑保護收款者身份

📱

NFC 支付

Offer 可嵌入 NFC 標籤,簡化線下支付

自動支付

結合 LSP 實現自動化支付流程

Offer 類型

類型 前綴 用途
Offer lno1... 收款者發布,請求付款
Invoice Request lnr1... 付款者發送,請求發票
Invoice lni1... 收款者回應,包含支付詳情
Invoice Error - 錯誤回應

實現狀態

實現 狀態 備註
CLN (Core Lightning) ✓ 完整支持 Rusty Russell 主導開發
LDK ✓ 已支持 Spiral 開發
Eclair ✓ 已支持 ACINQ
LND ⏳ 開發中 計劃支持
Phoenix ✓ 已支持 移動端錢包

CLI 範例

# 創建 Offer (CLN)
lightning-cli offer any "Coffee tips"

# 返回:
# "bolt12": "lno1qgsqvgjwvd..."
# "offer_id": "8a3c..."

# 從 Offer 獲取發票
lightning-cli fetchinvoice lno1qgsqvgjwvd... 10000

# 支付 BOLT12 發票
lightning-cli pay lni1qqs...

最佳實踐: 對於需要接收多次支付的場景(如打賞、訂閱),優先使用 BOLT12 Offers 而非 BOLT11 發票。 這不僅提供更好的用戶體驗,還增強了隱私保護。

已複製連結
已複製到剪貼簿