แต่เดิมนั้นการจ่ายเงินด้วย bitcoin บน lightning network แต่ละครั้งจำเป็นต้องสร้างรหัสที่เรียกว่า invoice ก่อนเสมอ โดยผู้รับเงินต้องสร้าง invoice และส่งให้กับผู้จ่าย ผู้จ่ายจะใช้ invoice นี้ในการจ่ายเงิน ซึ่งมีความยุ่งยากอยู่พอสมควรและทำให้การจ่ายเงินในบางรูปแบบเป็นไปไม่ได้ เช่น เราไม่สามารถส่งเงินได้หากไม่ติดต่อผู้รับก่อน
ข้อจำกัดอีกอย่างหนึ่งของ invoice คือใช้ได้ครั้งเดียว ถ้าต้องจ่ายเงินหลายครั้ง ก็จำเป็นต้องสร้าง invoice ทุกครั้งในการรับเงิน จึงเกิดความยุ่งยากอย่างมาก ลองนึกดูว่าขณะชม video streaming แล้วผู้ดำเนินรายการต้องการให้ผู้เข้าชมหลายร้อยคนส่งเงินให้พร้อมๆ กัน กระบวนการสร้าง invoice สำหรับทุกคนนั้นเป็นไปไม่ได้เลย นั่นจึงเป็นที่มาของ LNURL ซึ่งมีความยืดหยุ่นและแก้ปัญหาความไม่สะดวกของ invoice ได้เป็นอย่างดี
แล้ว LNURL คืออะไร?
LNURL เป็นกระบวนการจ่ายเงินโดยใช้รหัสคล้ายกับ invoice แต่ใช้งานได้ยืดหยุ่นกว่ามาก เราสามารถสร้าง LNURL สำหรับรับเงินที่ใช้งานได้ไม่จำกัดจำนวนครั้งโดยไม่จำเป็นต้องเปลี่ยนโค้ด หรือจ่ายเงินโดยไม่ต้องติดต่อคนรับเงินก่อนจ่ายเงิน เราสามารถจ่ายเงินด้วย LNURL ได้ทันทีก่อนที่ผู้รับเงินจะรู้ตัวด้วยซ้ำ การจ่ายเงินด้วย LNURL มีอยู่ 2 รูปแบบการใช้งานคือ
1. LNURL-pay หรือ LNURL-p เป็นโค้ดสำหรับจ่ายเงิน คือผู้ใช้สามารถแสกน LNURL-p เพื่อจ่ายเงินค่าสินค้าต่างๆ มันจึงเหมาะกับร้านค้า สามารถพิมพ์ LNURL-p เป็น QR-code ให้ผู้ซื้อแสกนจ่ายด้วย Lightning Wallet เหมือนกับที่เราใช้ PromptPay ในเมืองไทย ลักษณะการใช้ LNURL-p จึงค่อนข้างคล้ายกับ invoice ต่างกันที่ LNURL-p สามารถใช้ซ้ำได้ แต่ invoice ต้องสร้างใหม่ทุกครั้ง
2. LNURL-withdraw หรือ LNURL-w เป็นโค้ดสำหรับการรับเงิน ผู้ใช้แสกนเพื่อรับเงินเป็นการถอนเงินเข้ากระเป๋าของตนเอง สามารถประยุกต์ LNURL-w ในลักษณะเหมือน voucher ที่ร้านค้าให้แก่ลูกค้าเพื่อเป็น cash back คืนเงินให้ลูกค้า หรือนำ LNURL-w บันทึกในการ์ดเพื่อใช้ในรูปแบบของ giftcard ได้
นอกจาก LNURL จะสามารถใช้สำหรับการชำระเงินทั้งสองรูปแบบดังกล่าวแล้ว ยังมี LNURL อีกรูปแบบหนึ่ง ที่ใช้สำหรับยืนยันตัวตนซึ่งเรียกว่า LNURL-auth ยกตัวอย่างเว็บไซต์ที่รองรับเช่น LNMarkets, Kollider เป็นต้น วิธีการยืนยันตัวตนทำง่ายๆ โดยใช้แอพ wallet ทำการแสกน QR-code ของ LNURL-auth ที่เว็บไซต์สร้างขึ้น ก็สามารถเข้าใช้บริการต่างๆ ได้อย่างง่ายดายและสะดวกมากๆ โดยไม่ต้องกรอกชื่อผู้ใช้หรือรหัสผ่านเลย
กลไกการทำงานของ LNURL นั้นจำเป็นต้องมี web server โดยจะรับคำสั่งจากผู้ใช้ผ่านโปรโตคอล https แล้วจึงจัดการสร้าง invoice และจ่ายเงินบน lightning network ในกระบวนการทำงานเบื้องหลังอีกที ดังนั้น LNURL จึงไม่ใช่โปรโตคอลแบบ native บน lightning network ในมุมของผู้ใช้งานเราสามารถใช้งาน LNURL ได้ง่าย ๆ ด้วย Lightning Wallet ที่รองรับวิธีการนี้ ซึ่งมีอยู่หลายตัว เช่น Wallet of Satoshi, BlueWallet, Breez, Muun เป็นต้น
เมื่อเราสามารถใช้จ่ายเงินด้วย LNURL ซึ่งใช้ได้หลายครั้ง จะทำให้เกิด use case ที่ต่อยอดการใช้งานในรูปแบบอื่น ๆ ได้เช่น การรับเงินด้วย Lightning Address, การจ่ายเงินด้วย Bolt Card หรือ NFC Gift Card เป็นต้น
ความแตกต่างของโค้ด invoice และ LNURL คือ invoice จะขึ้นต้นด้วย lnbc.. แต่ LNURL ขึ้นต้นด้วย LNURL… เมื่อแสดงเป็น QR Code จะดูแล้วไม่ทราบความแตกต่าง การใช้งานจึงแทบจะเหมือนกัน โดยที่ LNURL ให้ประสบการณ์การใช้งานที่ดีกว่ามาก
แม้ LNURL จะเพิ่มความสะดวกแก่ผู้ใช้งานและทำให้ประสบการณ์การจ่ายเงินบน Lightning Network ดีขึ้น แต่ว่าตัวโปรโตคอลไม่ใช่เป็น native บน Lightning Network ดังนั้นผู้รัน Lightning node ทั่ว ๆ ไปยังคงไม่สามารถสั่งจ่าย/รับเงินด้วย LNURL จำเป็นต้องมี web server (เช่น LNbits+nginx) สำหรับทำหน้าที่รับคำสั่ง LNURL ที่ทำงานร่วมกับ node จึงจะใช้ได้ แต่ก็มีนักพัฒนาบางคนอยากผลักดันการจ่ายเงินลักษณะนี้ให้สามารถทำงานบน Lightning Network ได้แบบ native จึงเกิดเป็นมาตรฐานใหม่ชื่อ BOLT12 ผลักดันโดยบริษัท Blockstream ผู้พัฒนา c-lightning เป็นตัวตั้งตัวตี คงต้องรอดูกันว่าจะออกเป็นมาตรฐานได้หรือไม่ แต่สำหรับตอนนี้เราก็สามารถใช้ LNURL ได้อย่างสะดวกสบายแล้วแล้ว
และในตอนหน้าเราจะมาพูดถึงวิธีการสร้าง LNURL แบบง่าย ๆ ว่าทำอย่างไรได้บ้างครับ