What is Nostr?
Jakk Goodday
npub1mqc…nz85
2023-09-13 06:39:52

Jakk Goodday on Nostr: ## 1-Tap Zap ด้วย NWC (NIP-47) กดทีสองทีก็ Zap ...

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


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

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

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

## NWC คืออะไร?


ตอนที่คุณ Roland (npub1zk6…l6ef) พูดถึง 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 มาอำนวยความสะดวกให้กับผู้ใช้งาน (อีกเจ้าที่ผมพอนึกออกตอนนี้ คือ Mutiny Wallet (npub1mut…23vg) ไม่แน่ใจว่ามีเจ้าไหนอีกบ้าง..)

### วันนี้เราจะมาลองเชื่อมต่อ 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 หลังจากเรากดค้างที่รูป ⚡(ต้องขออภัยจริงๆ ครับ เพราะผมจำไม่ได้แล้วว่ามันเอาไปกรอกให้ออโต้ หรือต้องก้อปไปกรอกเอง)

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


## NWC ปลอดภัยมากแค่ไหน??
แม้จะเหมือนว่ากดไม่กี่ที เงินของเราก็พุ่งไปแล้ว

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

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

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

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

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

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

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

## "Don't trust, verify!"
#Nostr101 #Siamstr #nwc #alby
Author Public Key
npub1mqcwu7muxz3kfvfyfdme47a579t8x0lm3jrjx5yxuf4sknnpe43q7rnz85