發票格式 (BOLT-11)
閃電發票是支付請求的編碼格式,包含收款所需的所有信息。
什麼是閃電發票?
閃電發票(Lightning Invoice)是 BOLT-11 規範定義的支付請求格式。 它使用 Bech32 編碼,包含收款人、金額、過期時間等信息。
發票示例
lnbc1500n1pjlg3z5pp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpusp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zs9qypqsqsp5zyg3zyg3...
發票結構
發票由以下部分組成:
| 部分 | 內容 | 示例 |
|---|---|---|
| 前綴 | 網路標識 | lnbc (主網) / lntb (測試網) |
| 金額 | 可選,帶單位 | 1500n = 1500 msat |
| 時間戳 | 創建時間 | Unix 時間戳 |
| 標籤數據 | 各種欄位 | payment_hash, 描述等 |
| 簽章 | 收款人簽章 | 65 bytes |
金額單位
閃電網路使用毫聰(millisatoshi, msat)作為最小單位。發票金額可使用以下後綴:
| 後綴 | 乘數 | 示例 |
|---|---|---|
| m | 0.001 BTC | lnbc1m = 100,000 sats |
| u | 0.000001 BTC | lnbc1u = 100 sats |
| n | 0.000000001 BTC | lnbc1500n = 150 sats |
| p | 0.000000000001 BTC | lnbc1000p = 1 msat |
常見標籤
p: Payment Hash
必填欄位,32 bytes 的 payment_hash。收款人創建 preimage,計算其 SHA256 哈希。 這是 HTLC 的核心。
d: Description
UTF-8 描述字符串,說明支付用途。錢包通常會顯示給用戶確認。
h: Description Hash
如果描述太長,可以只包含描述的哈希值。完整描述需要通過其他方式傳遞。
x: Expiry
發票過期時間(秒)。默認 3600 秒(1 小時)。過期後發票無效。
r: Route Hints
私有通道的路由提示,幫助發送者找到到達接收者的路徑。
n: Node ID
收款人的節點公鑰(33 bytes)。通常可以從簽章中恢復,但某些情況下需要明確指定。
解碼發票
使用命令行工具解碼發票:
# lnd
lncli decodepayreq lnbc1500n1p...
# c-lightning
lightning-cli decode lnbc1500n1p...
# 輸出示例
{
"currency": "bc",
"timestamp": 1234567890,
"expiry": 3600,
"payee": "02abcd...",
"payment_hash": "abc123...",
"description": "Coffee",
"amount_msat": 150000
} 無金額發票
發票可以不包含金額,讓付款人自行決定。這常用於:
- • 捐款
- • 小費
- • 可變價格的服務
注意: 無金額發票讓付款人控制金額,收款人應確保這符合預期。 某些錢包會警告用戶這類發票。
BOLT-12 Offers
BOLT-12 是新一代發票標準,解決了 BOLT-11 的一些限制:
| 特性 | BOLT-11 | BOLT-12 |
|---|---|---|
| 可重用 | 否(每次一個 payment_hash) | 是 |
| 隱私 | 暴露節點 ID | 盲化路徑 |
| 退款 | 不支援 | 支援 |
| 訂閱 | 不支援 | 支援 |
Offer 示例
lno1qgsqvgnwgcg35z6ee2h3yczraddm72xrfua9uve2rlrm9deu7xyfzrc2q...
LNURL
LNURL 是一套補充協議,提供更好的用戶體驗:
- • LNURL-pay:可重用的支付連結
- • LNURL-withdraw:提款連結
- • LNURL-auth:閃電登入
- • Lightning Address:email 風格地址 ([email protected])
最佳實踐
- ✓ 設置合理的過期時間(太短用戶來不及支付,太長增加風險)
- ✓ 添加清晰的描述讓用戶知道支付什麼
- ✓ 如果使用私有通道,確保包含路由提示
- ✓ 考慮使用 LNURL 或 BOLT-12 提供更好的體驗
延伸閱讀: 查看 BOLT-11 規範 了解完整的技術細節。