EP 8 : Simplified Payment Verification (การตรวจสอบธุรกรรม)

Planning


Outline-text

ชื่อหัวข้อที่จะนำเสนอ

  • EP 8 : Simplified Payment Verification (การตรวจสอบธุรกรรม)

โครงสร้างของเนื้อหา

  • หัวข้อที่ 1 : เชื่อว่าหลายคนต้องทราบอยู่แล้วว่า การทำธุรกรรมไม่ว่าทำในรูปแบบใดก็ตามจะต้องมีการตรวจสอบธุรกรรมเสมอ เพื่อความยืนยันความถูกต้องและเป็นการแสดงให้เห็นว่าธุรกรรมนั้นเชื่อถือได้จริง ปกติถ้าเป็นระบบแบบเดิม เราจะมีตัวกลางซึ่งก็คือ ธนาคารในการตรวจสอบธุรกรรมให้ แต่ Bitcoin ไม่มีตัวกลาง แล้วจะตรวจได้อย่าง ใน EP นี้ของ Bitcoin Whitepaper จะมาอธิบายให้ทุกคนได้รู้กัน
  • หัวข้อที่ 2 : การตรวจสอบธุรกรรมของ Bitcoin ทำอย่างไร
  • หัวข้อที่ 3 : การตรวจสอบธุรกรรมจะเชื่อถือได้ถ้า Node ที่ซื่อสัตย์ยังควบคุมระบบส่วนใหญ่อยู่ หากถูกโจมตีจาก Attacker ที่กำลังมากจะมีวิธีที่จะป้องกันอย่างไร
  • หัวข้อที่ 4 : พูดถึงการทำธุรกรรมมาจนถึง EP นี้ ที่เป็นวิธีการตรวจสอบธุรกรรม ของ Bitcoin แล้วหลายคนอาจจะเกิดข้อสงสัยขึ้นมาก็คือ มีการตรวจสอบธุรกรรม แล้วการจัดสรรธุรกรรมล่ะ Bitcoin ทำได้มั้ย แล้วทำอย่างไร หากอยากทราบ ติดตามต่อใน EP 9 : Combining and Splitting Value การรวมและการแบ่งมูลค่า - Experimental :globe_with_meridians: / Content Board - Hashpire Community

ประเด็นสำคัญของบทความ

  • วิธีการตรวจสอบและยืนยันธุรกรรมของ Bitcoin
  • การป้องกันการถูกโจมตีจาก Attacker

สิ่งที่ผู้อ่านจะได้รับจากบทความ

  • รู้วิธีการตรวจสอบและยืนยันธุรกรรมที่ Bitcoin ใช้
  • วิธีการป้องการถูกโจมตีจาก Attacker ของ Bitcoin

Outline-graphic

รูปแบบของกราฟฟิค + โครงสร้าง


คำถามที่รบกวนให้ Reviewer ช่วยตอบค่ะ

1. ต้องการรู้ประเด็นไหนเพิ่มเติมไหม เพราะอะไร

2. คิดว่าเรียงลำดับการนำเสนอได้ดีรึยัง ถ้าไม่ดี มีไอเดียอย่างไร

3. มีประเด็นไหนควรตัดทิ้งไหม เพราะอะไร


:memo: Content text + graphic

คำศัพท์ที่ควรรู้ก่อนอ่านบทความ
Node : ผู้ที่มีส่วนร่วมในเครือข่าย หมายถึงคอมพิวเตอร์หรืออุปกรณ์ที่เชื่อมต่อเข้ากับเครือข่าย Blockchain
Block : สิ่งที่ใช้ในการจัดเก็บข้อมูล
Markle Tree : การจับคู่ข้อมูล(ธุรกรรม) แล้ว Hash ขึ้นมาเป็นลำดับขั้นที่สูงขึ้นเรื่อย ๆ ลักษณะคล้ายต้นไม้
Root Hash : ส่วนแรกของการเก็บข้อมูลแบบ Markle Tree
Nonce : ตัวเลขสุ่ม
Prev Hash : Hash ของ Block ก่อนหน้า
Full Node : Node ที่มีฟังก์ชันทุกอย่างของระบบครบถ้วน
Block Header : ส่วนหัวของ Block ประกอบด้วย Prev Hash, Nonce, Root Hash
Chain : สายโซ่ที่เชื่อมต่อ Block เข้าหากันในเครือข่าย Blockchain
Timestamp : การบันทึกเวลา (สามารถย้อนกลับไปอ่านได้ที่ EP 3 : การบันทึกเวลา (Timestamp Server))
Attacker : ผู้โจมตีระบบ
Broadcast : การส่งข้อมูลธุรกรรมไปยัง Node อื่น ๆ ในเครือข่ายเพื่อตรวจสอบและส่งข้อมูลต่อไปจนกว่าจะถึง Node มากกว่าครึ่งหนึ่งในเครือข่าย

เชื่อว่าหลายคนคงทราบอยู่แล้วว่า การทำธุรกรรมไม่ว่าทำในรูปแบบใดก็ตามต้องมีการตรวจสอบเพื่อยืนยันความถูกต้องและเป็นการแสดงให้เห็นว่าธุรกรรมนั้นเชื่อถือได้เสมอ หากเป็นระบบแบบเดิม เราจะมีตัวกลางอย่างธนาคารในการตรวจสอบธุรกรรมให้ แต่ Bitcoin ไม่มีตัวกลางแบบดังกล่าว แล้วจะตรวจสอบได้อย่างไร ใน "EP 8 : Simplified Payment Verification " จะมาอธิบายให้ทุกคนได้รู้กัน

การตรวจสอบธุรกรรมของ Bitcoin ทำอย่างไร

การตรวจสอบธุรกรรมสามารถทำได้โดยไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในเครือข่าย ผู้ใช้เพียงแค่เก็บสำเนา Block Header ของ Chain ที่ยาวที่สุดไว้ ซึ่งสามารถหาได้จากการดึงข้อมูลจาก Node ในเครือข่ายจนกว่าจะได้ Chain ที่ยาวที่สุด ซึ่งในแต่ละธุรกรรมจะเชื่อมโยงกับ Block ที่มีการทำ Timestamp ไว้

การตรวจสอบธุรกรรมป้องกันการโจมตีจาก Attacker ได้อย่างไร

โดยปกติ หากยังไม่ได้เชื่อมต่อข้อมูลกับเครือข่าย ผู้ใช้จะไม่สามารถตรวจสอบธุรกรรมของตนเองได้ แต่เมื่อมีการเชื่อมต่อข้อมูล ผู้ใช้สามารถเห็นว่า Node ยอมรับธุรกรรมและสร้าง Block เพิ่มขึ้น ซึ่งช่วยให้ผู้ใช้สามารถยืนยันได้ว่าธุรกรรมได้รับการยอมรับในเครือข่ายแล้ว

“การตรวจสอบและยืนยันธุรกรรมจะสามารถเชื่อถือได้หาก Node ที่ซื่อสัตย์ยังเป็นเสียงส่วนใหญ่ที่ตัดสินใจในเครือข่ายอยู่”

แม้ว่า Node ในเครือข่ายสามารถตรวจสอบธุรกรรมได้เอง แต่ Attacker สามารถสร้างธุรกรรมปลอมและ Broadcast ไปยัง Node อื่น ๆ ได้ โดย Attacker ที่มีกำลังประมวลผลของ CPU สูงจะสามารถหลอกระบบได้เป็นเวลานาน

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

สำหรับผู้ที่มีการทำธุรกิจและมีการรับชำระเงินเป็นประจำ อาจจำเป็นต้องใช้ Node ของตนเองในการตรวจสอบแทนการใช้ Node ของผู้อื่น เพื่อเพิ่มความปลอดภัยและความรวดเร็วในการตรวจสอบธุรกรรมให้มากขึ้น

เดินทางมาถึงโค้งสุดท้ายกันแล้ว คิดว่าหลายคนคงเห็นภาพรวมการทำงานของ Bitcoin ได้มากขึ้น ทั้งการสร้างธุรกรรม การจัดการกับธุรกรรม ผลตอบแทนที่จะได้รับ ไปจนถึงการตรวจสอบธุรกรรม เหมือนว่าจะครบถ้วนแล้วใช่มั้ยล่ะ แต่!!! มันยังไม่จบเพียงเท่านี้ หากอยากรู้ว่าในตอนหน้าจะเป็นเรื่องอะไร ติดตามต่อได้ใน Series : Bitcoin Whitepaper EP ต่อไป

Reference

  • Link here…
  • น่าจะเขียนตกรึเปล่าครับ กำลังของอะไรมากครับ ?
  1. อย่างไร ?
  1. อ่านประโยคนี้แล้วไปงงตอนท้าย “และได้กิ่งของ Markle ที่เชื่อมธุรกรรมไปยัง Block ที่มีการทำ Timestamp ไว้” อ่านแล้วไม่เข้าใจตรงนี้แฮะ ตัวเราเข้าใจว่าไงลองอธิบายพี่หน่อยครับ
  1. ที่"มี"กำลัง
  1. “ในขณะที่ Node สามารถตรวจสอบธุรกรรมได้ด้วยตนเอง” มันเชื่อมโยงยังไงกับสิ่งที่เล่ามาก่อนหน้านะครับ พี่อ่านแล้วงงมากๆ ถ้าเป็นเรื่องใหม่เราขึ้นพารากราฟใหม่ได้เลยนะครับ ไม่ต้องกลัวพารากราฟจะสั้น เราใช้โพสในเฟสอยู่ละ อะไรที่ยาวๆ เป็นปืดๆ คนไม่ค่อยอยากจะอ่านอยู่ละครับ ไปย่อหน้าสั้นๆ อ่านง่ายกว่าด้วย ฝากปรับครับ ทั้งหมดเลยครับ อ่านแล้วงงๆ เหมือนไม่เกี่ยวกันเลย เข้าใจว่าเอามาจาก white paper พอแปลมาตรงๆ แล้วเอามาเรียงไม่ดี มันจะอ่านไม่เข้าใจครับ ดังนั้นแตกเป็นเรืองๆ ว่าจะเล่าอะไรเล่าจบก็ขึ้นย่อหน้าใหม่เลย อ่านง่ายดี ไม่งั้นเขียนต่อกันแล้วงงว่าเกี่ยวไรกับส่วนก่อน…
  1. พี่ว่าจั่วหัวเรื่องยังไม่โดน ลองคิดหัวข้อใหม่หน่อย เราอยู่ในหัวข้อ SPV ก็น่าจะเป็นหัวข้อที่เชื่อมโยงกับ SPV จะดีกว่านะครับ ใช้คำว่า Bitcoin มันภาพใหญ่เกินไป
  1. เวิ้นเว้อไปมากครับ ลองไปปรับมาใหม่นะครับ เช่น
  • การยอมรับการแจ้งเตือนจาก Node ในเครือข่าย เมื่อตรวจพบ Block ที่ไม่ถูกต้อง ==> เรากำลังอธิบายถึงเรื่องแนวทางการป้องกันเรื่อง Attacker ปลอมธุรกรรม ?
  • “ดังนั้นน่าจะบอกว่าแนวทางการป้องกันคือ Node ในเครือข่าย เมื่อตรวจพบ Block ที่ไม่ถูกต้อง จะส่งการแจ้งเตือนไปยังผู้ใช้ เพื่อกระตุ้นผู้ใช้ให้ดาวน์โหลดข้อมูล Block ทั้งหมดมาใหม่”

ตัวอย่างพี่ลองถาม chatGPT มันก็อธิบายเข้าใจง่ายดีนะครับ พี่ว่าคนอ่านต้องการอะไรที่เข้าใจง่ายแบบนี้ แต่การลงลึกของเราก็ไม่ได้ผิด อาจจะเป็นการขยายความแบบเชิงลึกก็ได้ แต่ตัวแกนหลักของการอธิบายควรเข้าใจง่ายใครก็เสพได้ครับ

เช่นจากภาพ เราอาจจะมาขยายความต่อว่าข้อมูลบางส่วนที่ว่าคืออะไร (block header…) ในพารากราฟที่ต้องการลงลึก ใครไม่อยากอ่านก็จะได้ข้ามไปเลย มันลึกไป