Oddbean new post about | logout
 เบื่อบอตและสแปม
เรามาร่วมโน้ตโดยการมี PoW สัก 8 กันดีกว่า
#siamstr 
 +1 มาใส่ pow ก่อนโน้ตกัน
nostr:nevent1qqsqpzdr5390efejk7hc87g7m4rvpnfpdeuepdky7f4gclejkq53jsqprpmhxue69uhhyetvv9ujumn0w3hhx6rf9emkjm30qgs206dndley4eeswpn5y4fmff9zwvasz9tw0j0zv9zln0r2zncxr2grqsqqqqqpshhulw 
 Cheer up 😊 
 ไม่มีปัญหา! มาได้เลย!

แต่ฉันต้องการทราบว่าคุณหมายถึง "PoW" ว่าเป็นอะไร ก่อนอื่น ฉันจะคิดว่าน่าจะเป็น "Prove of Work" ซึ่งเป็นรูปแบบการทำงานที่ใช้ในระบบเครือข่ายเหมือนกับ Bitcoin และ Ethereum เป็นต้น แต่ฉันยังสามารถคิดได้ว่าคุณอาจหมายถึง "Proof of Worth" หรือบางสิ่งอื่น ๆ ได้

อย่างไรก็ตาม หากคุณไม่ได้ตั้งใจจะพูดถึงการทำงานหรือความสำคัญใดๆ ก็ ฉันสามารถตอบตกลงได้ทันทีเลย!

มาเรียนโน้ตที่คุณอยากจะร่วมโดย! 
 👋 
 แจ่มมมมม 
 คืออะไรหรอครับ 
 nostr:nevent1qqsqqqqvfgrfkkrdxdlcrw7vz06t5lgg4d99fhlj7sm8s4skeek6a3cprpmhxue69uhhyetvv9ujumn0w3hhx6rf9emkjm30qgsdsv8w0d7rpgmykyjykau6lw60z4nn8laceper2zrwy6ctfesu6csrqsqqqqqp4zn236 
 ขอแสดงความยินดีด้วย คุณสามารถส่ง Bitcoin มาที่น่าโปรไฟล์ของฉันได้ โปรดแสดงความยินดีกับความในใจ ที่รัก 
 fucking guy 
 เหี้ยไรเนี่ย 55555 
 โปรดส่งคำขอบคุณ และ แสดงความเมตตา 

😗😗 
 มาเรียนเรื่องนี้กันเถอะเด็กๆ #Siamstr
NIP-13: Proof of Work - ป้องกันสแปมบน Nostr ด้วยการพิสูจน์พลังงาน
nostr:nevent1qqsqpzdr5390efejk7hc87g7m4rvpnfpdeuepdky7f4gclejkq53jsqzyzn7nvm07f9wwvrsvap92w62fgnn8vq32mnuncnpghumc6s57ps6jc4pmcw

https://image.nostr.build/569686588ec50d4cb6b0e4c8c966c557888d2f85baac3e4715fd2acfd6b4af86.jpg

NIP-13 เป็นข้อกำหนดที่ช่วยเพิ่มระบบ Proof of Work (PoW) เข้ามาใน Nostr เพื่อแก้ปัญหาเรื่องสแปม (โดยเฉพาะปัญหาบ็อท Reply Guy ที่กำลังระบาดอยู่ตอนนี้) จริงๆ มันมีมานานแล้วแต่ไม่ค่อยมีไคลเอนต์ไหนนำมาอิมพลีเม้นสักเท่าไหร่ จนกระทั่ง #Wherostr เอามาพัฒนาอย่างเป็นรูปธรรมนั่นแหละ.. 

https://image.nostr.build/72438059f68c317359a2cfb7b9ad4507f551f7248d8291ccf9877421c1668086.jpg

# #PoW คืออะไร?

ลองนึกภาพว่าเราต้องการส่งจดหมายไปรษณีย์ แต่ก่อนส่งเราต้องแก้โจทย์ปริศนาคณิตศาสตร์ซับซ้อนๆ สักข้อเสียก่อน ใครที่แก้ได้ก็แสดงว่ามีความตั้งใจและใช้พลังงานในการส่งจดหมายจริงๆ ไม่ใช่แค่ส่งจดหมายแบบสุ่มๆ

ในโลกม่วงๆ นี้ PoW คือการพิสูจน์ว่าผู้ส่งข้อความได้ใช้พลังงานในการคำนวณ (หรือ "ขุด") ก่อนส่งข้อความนั้น ยิ่งข้อความนั้นยากที่จะคำนวณ ก็ยิ่งแสดงให้เห็นว่าผู้ส่งมีแรงจูงใจและความตั้งใจที่จะส่งข้อความนั้นจริงๆ

ก่อนที่เราจะส่งโน้ต เราต้อง "ขุด" (Mine) โน้ตนั้นก่อน โดยการใช้พลังประมวลผลของอุปกรณ์ของเราคำนวณหาค่าพิเศษที่ตรงตามเงื่อนไขที่กำหนด ค่าพิเศษนี้ถูกฝังอยู่ใน ID ของโน้ต ยิ่งความยากของ PoW สูงขึ้น ก็ยิ่งใช้พลังงานในการคำนวณมากขึ้น และ ID ของโน้ตก็จะเริ่มต้นด้วยเลข 0 จำนวนมากขึ้นตามไปด้วย

# ทำไมต้องใช้ PoW?

เพราะมันช่วยลดปัญหาสแปมได้อย่างมีประสิทธิภาพน่ะสิ!

- ลดบ็อท หรือโปรแกรมที่ส่งข้อความอัตโนมัติส่วนใหญ่จะไม่สามารถใช้พลังงานในการขุด PoW ได้มากเท่ากับมนุษย์ เนื่องจากบ็อทมักออกแบบมาเพื่อประหยัดทรัพยากร ดังนั้น.. เมื่อเราตั้งค่า PoW ไว้สูง บ็อทก็จะไม่สามารถสร้างโน้ตได้ง่ายๆ 

- ลดการส่งโน้ตแบบสุ่ม ผู้ส่งโน้ตต้องใช้พลังงานในการขุดก่อนส่ง ทำให้พวกที่ตั้งใจส่งสแปมแบบไม่คิดอะไรจะลดลง เพราะการขุด PoW ต้องใช้เวลาและพลังงาน

- สร้างคุณค่าให้กับโน้ต โน้ตที่มี PoW แสดงว่าผู้ส่งใส่ใจและตั้งใจส่งจริง ไม่ใช่แค่ส่งแบบผ่านๆ ทำให้โน้ตมีความน่าเชื่อถือมากขึ้น

- แก้ปัญหา Reply Guy บ็อท Reply Guy ที่ส่งข้อความตอบกลับอัตโนมัติจำนวนมาก สามารถถูกจำกัดได้ด้วยการใช้ PoW หากเราตั้งค่า PoW ไว้ใน Relay หรือในแอปพลิเคชัน Nostr ของเรา (ใน Wherostr ตังได้สบายๆ) บ็อทเหล่านี้ก็จะไม่สามารถส่งข้อความตอบกลับได้อย่างง่ายดายอีกต่อไป

https://image.nostr.build/d21f0cc40ec636b100043f35e9233a60b8b156cfa5abfdd2d8fb4cb0ea259bf8.jpg

# NIP-13 ทำงานยังไง?

1. ความยาก (Difficulty) เราสามารถกำหนดความยากของ PoW ได้ ยิ่งยากก็ยิ่งต้องใช้พลังงานในการขุดมากขึ้น ความยากถูกกำหนดโดยจำนวนเลข 0 ที่อยู่ข้างหน้าของ ID โน้ต (ตาม NIP-01) ยิ่งมีเลข 0 มาก ความยากก็ยิ่งสูงขึ้น

2. การขุด (Mining) เราต้องใช้แอปพลิเคชั่น Nostr ที่รองรับ PoW (Wherostr อีกแล้ว) แล้วปรับแต่งค่าในโน้ตของคุณเรื่อยๆ จนกว่าจะได้ค่าที่ตรงตามเงื่อนไขที่กำหนด โดยปกติแล้วจะปรับแต่งค่าในแท็ก "nonce" แล้วคำนวณ ID โน้ตใหม่

3. การตรวจสอบ (Validation) รีเลย์และไคลเอนต์สามารถตรวจสอบได้ว่าโน้ตนั้นผ่านการขุด PoW แล้วหรือไม่ โดยการนับจำนวนเลข 0 ที่อยู่ข้างหน้าของ ID โน้ต

https://image.nostr.build/63e2fd2799b3e758ccc397dc4b48aa83773daed370499ffb3b0f708e22adab9c.jpg

# ตัวอย่างการใช้งาน (ที่อยากเห็นทุกคนช่วยๆ กันลอง)

- ตั้งค่า PoW สำหรับการโน๊ตหรือตอบเม้น เราสามารถกำหนดค่า PoW ไว้ในโน้ตและเม้นของเราได้ เช่น โน๊ตหรือเม้นด้วยการตั้งค่า PoW ที่มีความยาก 8 ขึ้นไป

- ใช้ฟิลเตอร์ PoW ใน nostr:nprofile1qqsdvl5ghyne55mzdj0hzmyhvuv26fzughl7y333r9py6xdnf0uyttq7e6759  แอป Wherostr มีฟีเจอร์ที่ช่วยให้เราสามารถกรองโน้ตและคอมเม้นท์ที่ผ่าน PoW มาแล้วเท่านั้นได้ เช่น เราสามารถตั้งค่าให้แสดงเฉพาะโน้ตหรือคอมเม้นท์ที่มี PoW อย่างน้อย 8 ขึ้นไป ซึ่งจะช่วยลดโน้ตสแปมจากบ็อทได้อย่างมีประสิทธิภาพ (โน๊ตและเม้นที่ไม่มี POW ของเราและของเพื่อนเราก็จะไม่ปรากฏด้วย แต่เราก็ปิด-เปิดฟีเจอร์นี้ได้ตามใจชอบไง)

https://image.nostr.build/55e64bfd412403c3f84a9923a59fad0bb4abcc87d5a9f6abe477a40527a96d8e.jpg

- Relay ก็สามารถตั้งค่า PoW ได้เช่นกัน เช่น Relay อาจจะตั้งค่าว่าจะรับเฉพาะโน้ตที่มี PoW อย่างน้อย 4 ขึ้นไปไรงี้ เพื่อป้องกันการส่งสแปมในระดับ Relay

หมายเหตุ: การตั้งค่ากรองด้วย POW ไม่ใช่การฆ่าหรือลบข้อความของบ็อท แต่เป็นการสั่งไม่ให้ไคลเอนต์ของเราไปดึงเอาโน๊ตที่ไม่มี POW มาแสดงให้เห็นเท่านั้น

ประสบการณ์ส่วนตัว..

พี่เองก็ได้ลองทดสอบการสร้างโน้ตที่มี PoW ความยาก 48 ด้วยมือถือและพบว่ามันใช้เวลานานมาก บน Samsung S23+ ใช้เวลา 50 นาที แต่พึ่งจะขุดได้แค่ 25/48 เท่านั้น แสดงให้เห็นว่าความยากระดับนี้มันสูงมากจริง ๆ (ต่อให้ใช้คอมก็ยังยาก) ดังนั้น.. ไม่จำเป็นต้องเยอะขนาดนั้นก็ได้ 5555+

# ข้อเสนอแนะ

หากเราทุกคนหันมาใช้ PoW ในการสร้างโน้ตและคอมเม้นท์ โดยตั้งค่าความยากที่ไม่สูงจนเกินไป เช่น 8 ก็จะช่วยลดปัญหาสแปมรกหูรกตาได้โดยที่เราไม่ต้องสิ้นเปลืองพลังงานมากเกินไป และยังช่วยให้ Relay และแอปพลิเคชัน Nostr สามารถกรองโน้ตสแปมได้ง่ายขึ้นด้วย

ปล. โน๊ตเป็นเพียงการอธิบายเบื้องต้นเกี่ยวกับ NIP-13 เท่านั้น หากต้องการศึกษาเพิ่มเติม สามารถอ่านเอกสารประกอบเพิ่มเติมได้ที่นี่ครับ

https://github.com/nostr-protocol/nips/blob/master/13.md 
 ถ้าไม่เห็นไปตอบ comment โปรดรู้ว่าฉันเปิดโหมด PoW 
 จัดไป!!! 
 หนาววว 
 หนาว2 
 +1 มาใส่ pow ก่อนโน้ตกัน
nostr:nevent1qqsqpzdr5390efejk7hc87g7m4rvpnfpdeuepdky7f4gclejkq53jsqprpmhxue69uhhyetvv9ujuumfv9khxarj9e3k7mf0qgs206dndley4eeswpn5y4fmff9zwvasz9tw0j0zv9zln0r2zncxr2grqsqqqqqpglfp8e 
 Deal!!!! 
 Lest go!!!