## 1-Tap Zap ด้วย NWC (NIP-47) กดทีสองทีก็ Zap ได้เลย

https://video.nostr.build/532776ce839809674e11be95e7c9159ba6511e7a3cf5b59915161a12db8959d5.mp4

## NIP-47 และ NIP-07 ในบทความเดียว!

ก่อนหน้านี้หลายท่านใช้ #Amethyst เวลาจะ Zap ต้องกดปุ่มสายฟ้า > เลือกจำนวนที่ต้องการ Zap > รอระบบโหลด > มีหน้าต่างเด้งมาให้เลือก LN Wallet > สลับจอไปโหลดหน้าแอป Wallet > กดยืนยันธุรกรรม > สลับจิกลับมาที่แอป Amethyst

อูยยย.. หลายขั้นตอนจัง...

แต่ด้วยโปรโตคอล NWC (Nostr Wallet Connect) หรือ NIP-47 ร่วมกับ nostr:npub1getal6ykt05fsz5nqu4uld09nfj3y3qxmv8crys4aeut53unfvlqr80nfm ตามคลิปที่เห็น เรากดทีสองทีก็ Zap ได้แล้ว!! เจ๋งเป็นบ้า!!

## NWC คืออะไร?

ตอนที่คุณ nostr:npub1zk6u7mxlflguqteghn8q7xtu47hyerruv6379c36l8lxzzr4x90q0gl6ef พูดถึง NWC ในงาน #BTC2023 เชื่อว่าหลายท่านก็น่าจะยังนึกไม่ออกว่ายูสเคสของมันจะหน้าตาเป็นยังไง?

ขอเริ่มจาก Nostr Implementation Possibilities (NIPs) กันก่อน ซึ่งก็คือโปรโตคอลพื้นฐานในการสื่อสาร สำหรับการพัฒนาไคลเอนต์และแอปพลิเคชันต่างๆ บน #Nostr นั่นเอง และ NWC ก็เป็น NIP หนึ่งในนั้น..

NIP-47 (NWC) เป็นโปรโตคอลที่ช่วยให้ไคลเอนต์ Nostr สื่อสารกับ Lightning Node ได้โดยตรงครับ

ทำให้เราสามารถทำธุรกรรม LN หรือทำการ Zap ผ่านมือถือได้โดยไม่ต้องมากขั้นตอน หรือไม่ต้องคอยมากดอนุมัติธุรกรรม รวมทั้งไม่ต้องคอยสลับแอปไปมาด้วย (สะดวกมากเหมือนคลิปด้านบน)

สายหัวบวมศึกษา NIP-47 เพิ่มเติมได้ที่นี่

https://github.com/nostr-protocol/nips/blob/master/47.md

## อยากลองใช้ NWC แล้ว

Getalby คือ LN wallet เจ้าแรกๆ ที่พัฒนา NWC มาอำนวยความสะดวกให้กับผู้ใช้งาน (อีกเจ้าที่ผมพอนึกออกตอนนี้ คือ nostr:npub1mutnyacc9uc4t5mmxvpprwsauj5p2qxq95v4a9j0jxl8wnkfvuyque23vg ไม่แน่ใจว่ามีเจ้าไหนอีกบ้าง..)

### วันนี้เราจะมาลองเชื่อมต่อ Alby NWC เข้ากับแอป Amethyst ของเรากันครับ

โดยที่ใต้ Note ใดๆ ในแอป Amethyst เมื่อเรากดค้างที่ปุ่มสายฟ้า ⚡มันจะเด้งหน้าต่างให้เราสามารถกำหนดได้ว่าจะตั้งค่าการ Zap จำนวนเท่าไหร่บ้าง (กำหนดได้หลายค่า) และด้านล่างได้มีการเพิ่มระบบ NWC มาให้ด้วย ดังในภาพ

เราสามารถกดที่รูป QR code เพื่อแสกนการตั้งค่า NWC ที่เคยทำไว้มาได้เลย (กรณีที่เราไปทำ NWC ไว้ด้วย Browser ใน PC) หรือกดที่รูป 'ผึ้งน้อย' ไอคอน Alby ที่จะพาเราไปสู่การตั้งค่าด้วยเบราเซอร์มือถือในหน้านี้...

หรือจะเข้าหน้า Alby NWC ด้วยตัวเองผ่านคอมพิวเตอร์หรือมือถือก็ได้ โดยไปที่นี่

https://nwc.getalby.com

จากนั้น Alby จะขอให้เราล็อกอินด้วย Alby account เพื่อเข้าใช้งาน

คราวนี้แหละที่เราต้องหัวบวมเพิ่ม ถ้าคิดจะทำบนมือถือ..

เพราะมือถือแอนดรอยด์ในตอนนี้ ยังไม่ค่อยมีเบราเซอร์ที่รองรับการล็อกอิน Alby ด้วย NIP-07 (Browser Extension) ด้วยเหตุนี้เราจึงจำเป็นต้องไปใช้ 'Kiwi browser' ครับ

และเมื่อติดตั้ง Kiwi browser เรียบร้อยแล้ว เราต้องทำการติดตั้ง Extension ที่ชื่อว่า Flamingo 🦩 ด้วย

โดยกดปุ่ม 3 จุดที่ด้านบน Kiwi เลือก Extension แล้วค้นหา Flamingo (เหมือนการติดตั้ง Extension ใน Google Chrome) เมื่อเสร็จแล้วก็เปิดใช้งานมันด้วยนะ

จากนั้นกด 3 จุดอีกครั้ง เลื่อนลงมาล่างสุดเพื่อเลือกเจ้านก Flamingo ที่เราพึ่งติดตั้งไป

เราจะทำการตั้งค่ามันให้เรียบร้อย

## ทำไมต้องใช้ Browser Extension (NIP-07)

เพราะการจะเซ็นต์ Digital signature เพื่อกระทำสิ่งใดบน Nostr เราจำเป็นต้องใช้ Private key ของเรา หรือ รหัสที่ขึ้นต้นด้วย 'nsec1'

เราไม่ควรนำ nsec มากรอกลงไปในเว็บเบราเซอร์ตรงๆ เพราะมีโอกาสสูงที่ Private key ของเราจะไม่ปลอดภัย เนื่องจากการแทร็คหรือแฮ็คข้อมูลส่วนตัวบนเบราว์เซอร์นั้นทำได้ง่าย เช่น ล้วงเอาจากหน่วยความจำของเบราเซอร์, จากคุ้กกี้ ฯลฯ

ดังนั้นจึงได้มีการพัฒนา NIP-07 ขึ้นมา

เพื่อให้เราสามารถเปิดเผย Private key (nsec) ของเราเฉพาะกับเซอร์วิซเจ้าเดียวอย่าง Browser Extension ได้นั่นเอง..

เมื่อเราจะล็อกอินเข้าใช้งานเว็บไหน หรือไคลเอนต์เจ้าไหน เราก็เพียงแค่นำรหัสที่เก็บไว้ใน Extension (NIP-07) นี้มา sign ได้เลย โดยไม่จำเป็นต้องกรอก nsec หรือเปิดเผยมันบ่อยๆ

ตัวอย่างเซอร์วิซนี้ก็เช่น Alby Extention บน PC หรือ Flamingo บนมือถือนั่นเอง (บน iOS มี Nostore)

## มาทำกันต่อ..

เอาล่ะ.. เมื่อเราตั้งค่าการล็อกอินใน Flamingo เรียบร้อยแล้ว คราวนี้เราจะสามารถล็อกอินเข้าใช้งาน Alby บนมือถือเพื่อตั้งค่า NWC ได้ซะที (ที่ nwc.getalby.com)

เมื่อล็อกอินเข้าสู่ Getalby NWC แล้วเราก็กดสร้างการเชื่อมต่อใหม่ (+ New connection) ได้เลย

เราจะเข้าสู่หน้านี้ เพื่อตั้งชื่อให้กับการเชื่อมต่อรายการนี้ (เราสร้างได้มากกว่า 1 รายการ) และเราสามารถกำหนดวันหมดอายุของมัน หรือตั้งเพดานงบในการใช้จ่ายของรายการนี้ได้ด้วย

สำหรับ Amethyst เรายังสามารถเลือกตั้งค่าความเป็นส่วนตัวในการ Zap ได้ด้วย

มีแบบเปิดเผย Public (เปิดชื่อให้ทุกคนเห็นว่าเรา Zap), Private (เปิดชื่อให้เฉพาะคนที่ได้รับ sats เห็นเท่านั้น) และ Anonymous (ไม่เปิดเผยชื่อให้ใครเห็น)

นอกจากนี้ยังมีแบบที่เป็นส่วนตัวสุดๆ คือ Non-zap ที่ Nostr ไคลเอนต์ก็ไม่รู้ว่าเรา Zap ไปให้ใครยังไง เพราะเราทำและเปิดเผยธุรกรรมแค่บน LN เท่านั้น

จากนั้นเราจะได้รหัสสำคัญสำหรับ NIP-47 จำนวน 3 รายการ ได้แก่

- Wallet Connect Pubkey

- Wallet Connect Relay

- Wallet Connect Secret

ที่ต้องเอาไปกรอกเพื่อให้ Amethyst สามารถทำงานร่วมกับกระเป๋า Alby ของเราผ่านการใช้งาน One-Tap Zap ได้นั่นเอง

3 ค่านี้เราจะเอาไปกรอกใน Amethyst หลังจากเรากดค้างที่รูป ⚡(ต้องขออภัยจริงๆ ครับ เพราะผมจำไม่ได้แล้วว่ามันเอาไปกรอกให้ออโต้ หรือต้องก้อปไปกรอกเอง)

หลังจากนั้นเราก็สามารถทำอย่างในคลิปนี้ได้ละครับ

https://video.nostr.build/532776ce839809674e11be95e7c9159ba6511e7a3cf5b59915161a12db8959d5.mp4

## NWC ปลอดภัยมากแค่ไหน??

แม้จะเหมือนว่ากดไม่กี่ที เงินของเราก็พุ่งไปแล้ว

แต่จริงๆ แล้ว เราก็สามารถกำหนดปริมาณ sats ที่เราจะจ่ายเอาไว้ก่อนได้ และเลือกได้ก่อนการ Zap แต่ละครั้งว่าจะจ่ายเท่าไหร่ครับ

ดังนั้นโอกาสเงินรั่วก็ขึ้นกับความไม่ระวังของเราเอง

เราฝาก Private key ไว้ให้ Alby, Flamingo ดูแล ซึ่งทั้งสองเจ้าเคลมว่าเขาไม่มีทางรู้คีย์ของเราได้ (ผมไม่แน่ใจว่ามันเก็บแบบไหนในทางเทคนิค)

แต่มันก็เป็น trade-off ที่เราต้องเลือกเชื่อใจในตัวกลางให้น้อยที่สุด แทนที่จะเปิดเผยคีย์ในทุกที่ เราก็เปิดเผยแค่ที่เดียวที่รับประกันว่าจะไม่ล้วงคีย์เราไป มันก็ปลอดภัยกว่าแน่นอน

ปลอดภัยที่สุด คือ ไม่เปิดเผยคีย์ที่ไหนเลย (แต่เราก็ยังต้องกรอกตอนเข้าใช้งานไคลเอนต์อย่าง Amethyst หรือ Damus อยู่ดีไหม?)

โดยใช้วิธีเดิมคือยอมทำหลายขั้นตอนแล้วอนุมัติธุรกรรมเองดีกว่า

ทั้งนี้ ความสะดวกสบายมักจะไม่ได้มาพร้อมกับความปลอดภัย แต่ถ้าเราเข้าใจเบื้องหลังของตัวเทคโนโลยีหรือโปรโตคอลดีพอ (แนะนำให้ทำการศึกษาเพิ่มเติม) เราก็สามารถตัดสินใจได้เองว่าจะเลือกใช้ความเชื่อใจของเราอย่างไร

## "Don't trust, verify!"

#Nostr101 #Siamstr #nwc #alby

Reply to this note

Please Login to reply.

Discussion

ขอบคุณมากๆครับ 😀🙏

ทำได้มั๊ยคับ 🤔

ยังเลยครับพี่

คืนนี้ว่าจะลองทำตามดูค้าบ 😅🙏

ใครใจไม่ถึงอย่าลอง!! #Zap มันมือมาก 555

ขอบคุณครับ เย่ๆๆ ได้แล้วว

ดีใจด้วย ไปต่อที่ Spring เลย

https://spring.site/

อันดับแรกขอวิธี Lock amethyst แบบ scan นิ้วหรือตั้ง pw มันทำได้ไหมครับ...กลัวลูกเล่นแล้ว zap รัวอะดิครับ 5555

ยังไม่น่ามีนะครับ แจ้งแนะนำไปทางหัวหน้าทีมพัฒนาเลย nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z

He siad:

"First, I'd like to ask how to lock Amethyst by scanning your finger or setting PW. Can it be done? I'm afraid the kid will play tricks and zap me a lot, haha."

thx bro

มามั๊ย วันนี้ สรุป?

ไปครับ ตอนนี้อยู่เมืองแล้ว