EP 4 : Proof-of-Work

Planning


Outline-text

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

  • EP 4 : Proof-of-Work

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

  • หัวข้อที่ 1 : เกริ่นนำ จาก EP 3 : การบันทึกเวลา (Timestamp Server) ซึ่งถูกนำมาใช้ในการแก้ปัญหา Double spending ทำให้เราสามารถรู้ได้ว่า Block ใดมาก่อนหรือหลัง แต่การแก้ปัญหาโดยใช้ Timestamp นั้นจะต้องมีระบบที่ชื่อว่า “Proof-of-Work” เข้ามาช่วย อธิบายว่าทำไมต้องเข้ามาช่วย
  • หัวข้อที่ 2 : Proof of work ถูกนำมาใช้ทำ Timestamp ยังไง วิธีการทำคือยังไง
  • หัวข้อที่ 3 : Proof of work แก้ปัญหาในเรื่องการหาเสียงส่วนใหญ่ที่จะเป็นสิ่งที่ตัดสินใจในระบบ
  • หัวข้อที่ 4 : หากติดตามมาจนถึง หัวข้อ Proof-of-Work แล้วยังเห็นภาพกระบวนการทำธุรกรรม (Transactions) ของ Bitcoin ไม่ชัดเจน ใน EP หน้า ทุกคนจะเห็นภาพได้ชัดเจนยิ่งขึ้น หากไม่อยากพลาดที่สำคัญนี้ ติดตามต่อได้ใน EP 5 : Network (Bitcoin Whitepaper) - Experimental :globe_with_meridians: / Content Board - Hashpire Community

Q 1 : timestamp สร้าง Proof of work โดยเพิ่มจำนวน Nonce ใน Block คำนวณจากอะไร

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

  • Proof-of-Work คืออะไร มาทำ Timestamp ยังไง

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

  • เข้าใจระบบ Proof-of-Work ในเบื้องต้น

Outline-graphic

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


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

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

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

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


:memo: Content text + graphic

คำศัพท์ที่ควรรู้ก่อนอ่านบทความ
Node : ผู้ที่มีส่วนร่วมในเครือข่าย หมายถึงคอมพิวเตอร์หรืออุปกรณ์ที่เชื่อมต่อเข้ากับเครือข่าย Blockchain
Chain : สายโซ่ที่เชื่อมต่อ Block เข้าหากันในเครือข่าย Blockchain
Block : สิ่งที่ใช้ในการจัดเก็บข้อมูล
Nonce : ตัวเลขสุ่ม
Attacker : ผู้โจมตีระบบ
Double-spending : การทำธุรกรรมซ้ำ
Exponential : ฟังก์ชันเลขชี้กำลัง ที่จะมีค่าเพิ่มขึ้นหรือลดลงแบบทวีคูณ
IP หรือ IP Address ( internet Protocal Address ) : คือ หมายเลขประจำเครื่องคอมพิวเตอร์แต่ละเครื่องในระบบเครือข่าย

จาก EP 3 : การบันทึกเวลา (Timestamp Server) จะเห็นได้ว่า Bitcoin ใช้ Timestamp Server ในการจัดอันดับธุรกรรม เพื่อให้แต่ละ Node มีอันดับธุรกรรมที่จัดเรียงแบบเดียวกันและทราบว่าธุรกรรมใดมาก่อนหรือหลัง ทำให้สามารถแก้ปัญหา Double-spending ได้ แต่ว่ามันก็ยังไม่สามารถแก้ปัญหาได้ทั้งหมด เนื่องจากในการใช้งานจริง เมื่อมีการส่ง Block ไปมาจำนวนมากอาจจะทำให้แต่ละ Node มี Timestamp Server ที่แตกต่างกันไปจนไม่สามารถระบุได้ว่า Timestamp Server ชุดใดเป็นชุดที่ถูกต้อง ซึ่ง Bitcoin ได้แก้ปัญหาดังกล่าวด้วยการนำระบบ “Proof-of-Work” เข้ามาช่วย

การใช้ระบบ Proof-of-work ในการทำ Timestamp Server ของ Bitcoin
Bitcoin ต้องการสร้างระบบกระจายการบันทึกเวลา (Distributed Timestamp Server) แบบ Peer-to-Peer (P2P) โดยใช้ Proof-of-work ซึ่งจะมีการตั้งโจทย์ว่าต้องการบิตที่เป็นเลข 0 จำนวนกี่ตัว จากนั้นเราจะทำการประมวล (work) เพื่อหาบิตที่เป็นเลข 0 ให้ได้มากกว่าที่โจทย์กำหนด โดยการเพิ่มจำนวน Nonce ลงใน Block จนกว่าจะเจอค่าที่ทำให้ Block Hash มีจำนวนบิตเป็นเลข 0 มากที่สุด ดังนั้น ยิ่งโจทย์ต้องการบิตที่เป็นเลข 0 มากเท่าไร ความยากในการประมวลผล (Work) ที่ใช้จะเพิ่มขึ้นแบบ Exponential ตามไปด้วย

Proof-of-work ช่วยตัดสินความถูกต้องของ Timestamp Server อย่างไร
ถ้าหากว่าการหาเสียงส่วนใหญ่ที่เป็นตัวตัดสินใจในระบบเป็นแบบ 1 IP 1 Vote อาจจะมีโอกาสที่ใครสักคนจะสร้าง IP จำนวนมากขึ้นมาเพื่อควบคุมระบบได้

แต่ Proof-of-work จะใช้การหาเสียงส่วนใหญ่ในระบบแบบ 1 CPU 1 Vote โดย Chain ที่ยาวที่สุดหรือมีการทำ Proof-of-work มากที่สุด ก็คือ Chain ที่ได้รับการ Vote มากที่สุด ซึ่งจะถือได้ว่าเป็น Chain ที่เสียงส่วนใหญ่ในระบบเชื่อถือ ถ้าหากเสียงส่วนใหญ่ในระบบยังถูกควบคุมโดย Node ที่ซื่อสัตย์ Chain ที่ถูกต้องจะยังคงเป็น Chain ที่ยาวที่สุดเมื่อเทียบกับ Chain อื่น ๆ

การแก้ไข Block ที่ผ่านไปแล้ว Attacker จะต้องทำการประมวลผล Proof-of-work ใน Block นั้นใหม่และต้องสร้าง Block ให้เร็วและมี Chain ยาวกว่า Chain ที่ Node ซื่อสัตย์สร้างขึ้น

แต่ความเป็นไปได้ที่ Attacker จะสร้าง Block ได้ทันจะน้อยลงแบบ Exponential ในทุก ๆ Block ที่เพิ่มขึ้นมาใน Chain ซึ่งค่าความยาก (Difficult) ในการทำ Proof-of-work จะถูกกำหนดโดยดูจากค่าเฉลี่ยของจำนวน Block ที่ถูกสร้างขึ้นในแต่ละชั่วโมง ถ้ามันถูกสร้างเร็วเกินไป ค่าความยากก็จะเพิ่มขึ้นตามไปด้วย

การทำงานของระบบ Blockchain ของ Bitcoin ประกอบด้วย ธุรกรรม (Transactions) , การบันทึกเวลา (Timestamp Server) จนมาถึงการทำ Proof-of-Work ทั้งหมดนี้จะถูกนำไปรวมอยู่ในระบบบางอย่างที่จะทำให้ทุกคนเห็นภาพการทำงานที่ชัดเจนมากยิ่งขึ้น หากอยู่รู้ว่าระบบที่ว่าคืออะไร ติดตามต่อได้ใน Series : Bitcoin Whitepaper EP ต่อไป

Reference

@Namtan

  • หัวข้อที่ 1 อยากให้ชี้แจงด้วยทำไม ต้องใช้ “Proof-of-Work” เข้ามาช่วย ไม่ใช้ไม่ได้หลอเพราะอะไร
  • มันแก้ปัญหาด้วยวิธีการหาเสียงส่วนใหญ่ ?

อื่นๆ โอเคแล้วครับ

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

@Namtan พี่ตรวจแล้วโอเคแล้วครับ ยังไงต้องฝากติดตามให้ @anakornk มารีวิว final อีกรอบครับ :slight_smile:

image

@Namtan พี่มีปรับแก้ให้นิดหน่อยครับ ภาพรวมอ่านแล้วโอเคแล้วครับ :slight_smile: