§ ถาม-ตอบ · Lightning

ใช้ BOLT12 ปลอดภัยหรือยัง?

คำตอบสั้นๆ

BOLT12 production-ready แล้วใน Phoenix, Zeus, และ Strike (ผ่าน LNDK) มี Lightning offer แบบ reusable ใช้งานบน mainnet ตั้งแต่ปลายปี 2025 ปลอดภัยสำหรับการใช้งานประจำวัน บาง wallet เก่ายังไม่รองรับ ให้เก็บ BOLT11 fallback ไว้ ตัว protocol เองเสถียรแล้ว

อัปเดตล่าสุด · 10 พฤษภาคม 2569

EN version →

ใช่ — BOLT12 ปลอดภัยพอสำหรับการจ่าย Lightning ในชีวิตประจำวันแล้วในปี 2026 Spec ถูก merge เข้า official Lightning bolts repo และมีอย่างน้อย 3 production wallet (Phoenix, Zeus, Strike ผ่าน LNDK runtime) ที่ส่ง implementation ใช้งานบน mainnet Cryptographic primitive ที่ BOLT12 introduce — onion message, blinded path, offer signature — live บน Lightning network ตั้งแต่ปี 2024 ไม่มี vulnerability ระดับ protocol ที่รู้จัก สิ่งที่เหลือเป็นเรื่อง interoperability และการครอบคลุมของ ecosystem ไม่ใช่เรื่องความปลอดภัย

เพื่อเข้าใจว่า BOLT12 เปลี่ยนอะไร เทียบกับ format invoice เดิมของ Lightning — BOLT11 BOLT11 invoice เป็น string ครั้งเดียว รับเดียว จำนวนเดียว หมดอายุไม่กี่นาที ถ้าจะรับเงิน 2 ครั้งต้อง gen 2 invoices ถ้าอยากให้ “tip jar” QR บนเว็บ — ทำไม่ได้ ต้อง update QR ทุกไม่กี่นาที BOLT11 elegant สำหรับสิ่งที่มันเป็น แต่ UX คือ “ขอ invoice ทุกครั้งที่จะจ่าย” — ไม่สมูธในจุดที่ Bitcoin ควรรู้สึกเหมือนเงินสด

BOLT12 introduce offer: payment request แบบ reusable ที่ signed gen 1 offer encode เป็น QR หรือ string เริ่มต้นด้วย lno1... ใส่บนเว็บ tip card bio ผู้จ่ายทุกคนที่ scan offer initiate onion message ไป node ที่อยู่หลัง offer ขอ invoice สด node ผู้รับตอบกลับด้วย payment hash ปกติ และ HTLC stream ตั้งขึ้น Offer เองไม่หมดอายุ ไม่เปิดเผย node ID ของผู้รับโดยตรง (ซ่อนหลัง blinded path ได้) รองรับ recurring หรือ amount-flexible payment ตั้งแต่ default

มี 3 ข้อ safety สำคัญที่ควรเข้าใจก่อนใช้ offer ใน production:

Privacy ดีกว่า BOLT11 ใน default — แต่เฉพาะถ้า implementation ใช้ blinded path จริง Offer BOLT12 จะเปิดเผย node ID ของผู้รับ หรือซ่อนหลัง one-to-many blinded path ก็ได้ Phoenix ใช้ blinded path ตั้งแต่วันแรก Zeus มี toggle Self-host LND-via-LNDK ปัจจุบันยัง publish raw node ID เป็น default อยู่ (อยู่ใน roadmap) ถ้าสนใจว่า Lightning node ไหนรับเงินจะ private อย่าสมมติว่า “BOLT12 = privacy” — verify default config ของ implementation ก่อน Protocol enable privacy; default config ใน wallet decide ว่าได้ไหม

Onion-message reachability ดีแต่ยังไม่ universal การ setup payment ของ BOLT12 ต้องการให้ node ผู้รับ reachable ผ่าน onion message ซึ่ง propagate ใน network ต่างจาก HTLC ตอนกลางปี 2026 routing node หลักรับ onion message แต่ node เก่าส่วนน้อยยังไม่ และ private node บางตัวอาจ disable onion message forwarding ไว้ จริงๆ ผู้ส่งส่วนใหญ่ถึงผู้รับส่วนใหญ่ทำงานได้ดี แต่ถ้าสร้าง service ที่ depend on 100% delivery ให้ fall back เป็น BOLT11 invoice ถ้า offer-fetch fail Wallet อย่าง Phoenix และ Zeus ทำให้ transparent

Spec versioning เรื่องจริง Specification ของ BOLT12 ผ่าน draft หลาย iteration ตั้งแต่ 2022 รวมถึง breaking change ใน offer encoding เวอร์ชันที่ merge เข้า official spec ปลายปี 2025 คือ “stable” version ถ้า gen offer ด้วย wallet เก่าที่ยังไม่ update ผ่าน spec finalization offer พวกนั้น parse ไม่ได้ด้วย sender ปัจจุบัน — update wallet และเช็ค encoding version ใน offer string ถ้า integrate level ต่ำ User ทั่วไปไม่เห็น — update wallet ก็เรียบร้อย

สำหรับ use case ทุกวัน BOLT12 ปลดล็อกสิ่งที่ awkward จริงก่อนนี้:

Wallet และ service ที่ รองรับ BOLT12 ใน production วันนี้: Phoenix, Zeus, Strike (ผ่าน LNDK), Cake Wallet, และ Core Lightning ที่ self-host (ที่มี BOLT12 support ก่อน merge เป็น reference implementation) Wallet และ service ที่ ยังไม่รองรับ BOLT12: Wallet of Satoshi, BlueWallet, Muun, และ exchange withdrawal flow ส่วนใหญ่ ถ้าส่งจาก wallet ที่ไม่ support offer ผู้รับต้อง fall back ไป BOLT11 invoice แบบ one-shot — ปกติ gen ผ่าน wallet เดียวกับที่ออก offer ได้

ถ้าอยาก verify Lightning offer หรือ address ก่อนส่ง paste string ลง Lightning address verifier ของเรา เช็ค encoding ระบุว่าเป็น BOLT11 invoice, BOLT12 offer หรือ LNURL-pay address และ flag pattern phishing ทั่วไป (lookalike domain, malformed payload) สำหรับ payload invoice BOLT-11 decoder และ BOLT-12 decoder แสดงทุก field — destination, amount, expiry, route hint, signature validity — โดยไม่พยายาม payment เลย Verify ว่า destination ตรงกับที่ตั้งใจก่อนเซ็น send

เวอร์ชันสั้น: BOLT12 ปลอดภัยและมีประโยชน์พอที่จะตั้งเป็น default receive method บน wallet ที่รองรับ ความเสี่ยงใหญ่สุดในปี 2026 ไม่ใช่ protocol safety — แต่คือคนที่จะส่งให้อยู่บน wallet ที่ยังไม่รองรับ offer เก็บ BOLT11 fallback ไว้ ที่เหลือของการ upgrade เป็น invisible upside

แหล่งอ้างอิงหลัก

  1. BOLT12 — Bitcoin Optech topic [1]
  2. BOLT12 specification — Lightning bolts repo [2]
  3. ACINQ — Phoenix wallet BOLT12 release notes [3]
  4. Zeus wallet — BOLT12 offers documentation [4]
  5. LNDK — BOLT12 support for LND nodes [5]