算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
lightning-keysend【设计与创意】Keysend / spontaneous payments: send Lightning to a destination without an invoice. Receiver derives preimage from sender-supplied TLV record. BOLT 9 bit 50. USE WHEN: implementing tipping flows, designing zero-friction micro-payments, evaluating keysend vs BOLT11 invoice flow.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Keysend lets the sender pay a destination by node pubkey without the receiver issuing a BOLT11 invoice first. The sender includes the preimage as a TLV record in the onion; receiver extracts and fulfills.
Sender:
preimage_random = random(32 bytes)
payment_hash = SHA256(preimage_random)
Build onion with TLV record:
type 5482373484 ("keysend"): preimage_random
HTLC for amount → forwarded via onion routing → arrives at destination.
Receiver:
Receives HTLC with payment_hash.
Sees TLV type 5482373484 in onion payload.
Extracts preimage. Verifies SHA256(preimage) == payment_hash.
If matches, fulfill HTLC immediately.
Per BOLT 1: custom records ≥ 65536 are reserved for proprietary use. The keysend type was chosen by Lightning Labs as a (large) sentinel.
text/plain
type for memos.AMP-keysend combines AMP's per-part nonces with keysend's preimage-in- onion mechanism. Each part contributes a Shamir share; receiver reassembles preimage. Used by some podcast apps for streaming sats.
boost or value4value apps.Common custom record types:
34349334: keysend message text.7629169: pubky / podcast-index sender info.133773310: app-specific.These are app-defined; no global registry. Risk of conflicts; check app docs.
| Impl | Keysend send | Keysend receive |
|---|---|---|
| LND | yes | yes |
| CLN | yes (via plugin) | yes |
| LDK | yes | yes |
| Eclair | yes | yes |
| Phoenix | partial | yes |
BOLT12 supports an "offer" that allows arbitrary amount payments WITHOUT pre-issued per-payment invoices, but with proper proof of payment (signed by recipient).
For new builds, prefer BOLT12 keysend over bare keysend where implementation supports it.