EP 5 : Network (Bitcoin Whitepaper)

Planning


Outline-text

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

  • EP 5 : Network

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

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

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

  • ระบบ Network ของ Bitcoin

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

  • เข้าใจกระบวนการทำงานภาพรวมของ Bitcoin

Outline-graphic

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


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

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

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

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


:memo: Content text + graphic

คำศัพท์ที่ควรรู้ก่อนอ่านบทความ
Node : ผู้ที่มีส่วนร่วมในเครือข่าย หมายถึงคอมพิวเตอร์หรืออุปกรณ์ที่เชื่อมต่อเข้ากับเครือข่าย Blockchain
Chain : สายโซ่ที่เชื่อมต่อ Block เข้าหากันในเครือข่าย Blockchain
Block : สิ่งที่ใช้ในการจัดเก็บข้อมูล
Double-spending : การทำธุรกรรมซ้ำ
Proof-of-Work : สามารถกลับไปอ่านได้ใน EP 4 : Proof-of-Work
Broadcast : การส่งข้อมูลธุรกรรมไปยัง Node อื่น ๆ ในเครือข่ายเพื่อตรวจสอบและส่งข้อมูลต่อไปจนกว่าจะถึง Node มากกว่าครึ่งหนึ่งในเครือข่าย

จาก EP ที่ผ่านมาตั้งแต่ EP 2 : ธุรกรรม (Transactions) EP 3 : การบันทึกเวลา (Timestamp Server) และ EP 4 : Proof-of-Work หลาย ๆ คน อาจจะยังรู้สึกว่าไม่เห็นภาพระบบการทำงานของ Bitcoin ที่ชัดเจน ดังนั้นใน EP นี้จึงเป็นการอธิบายถึงระบบ “Network” ของ Bitcoin เพื่อให้ทุกคนเข้าใจในระบบการทำงานของ Bitcoin มากยิ่งขึ้น

ระบบ Network ของ Bitcoin จะทำตามขั้นตอนดังนี้

  1. เมื่อมีการสร้างธุรกรรมใหม่ขึ้นมามันจะถูก Broadcast ไปหา Node อื่น ๆ
  2. แต่ละ Node จะรวบรวมธุรกรรมใหม่ที่ได้รับมาใส่ลงไปใน Block
  3. แต่ละ Node จะทำ Proof-of-Work ซึ่งคือการแก้โจทย์เพื่อหาค่าที่น้อยกว่าค่าความยาก (Difficult) ที่กำหนด เพื่อสร้าง Block ของตนเอง
  4. เมื่อ Node ทำ Proof-of-work สำเร็จ จะทำการ Broadcast Block ของตัวเองไปยัง Node อื่น ๆ
  5. Node อื่น ๆ ในเครือข่ายจะยอมรับ Block ที่ส่งมา ก็ต่อเมื่อทุกธุรกรรมใน Block นั้นถูกต้อง และไม่ใช่การทำ Double spending
  6. Node จะยอมรับ Block ที่ส่งมาและบันทึก Block นั้น ๆ ลงบน Chain ของตัวเอง โดยใช้ Hash ของ Block ดังกล่าวเป็น Hash ก่อนหน้า สำหรับใช้ในการสร้าง Block ถัดไป

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

ประเด็นต่าง ๆ ที่อาจเกิดขึ้นในการทำ Broadcast

  • เมื่อมีการสร้างธุรกรรมใหม่ขึ้นมาและ Broadcast ไปในระบบ ธุรกรรมเหล่านั้นไม่จำเป็นต้องกระจายไปถึงทุก Node ในเครือข่ายตราบใดที่มันยังถูกส่งไปยัง Node ส่วนใหญ่
  • ถ้ามี Block ใดที่ถูกส่งมาซ้ำ Node จะปฏิเสธ Block นั้น
  • เมื่อ Node ได้รับ Block ใหม่มาและทราบว่ามี Block ที่หายไป (ได้รับ Block ผิดลำดับ หรือข้ามไป) ก็จะทำการขอ Block นั้นจาก Node อื่น ๆ

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

Reference

  • ประเดนนี้คืออะไร อ่านแล้วไม่เข้าใจครับ

จะอธิบายถึงประเด็นนี้ค่ะ ว่าถ้ามีมันมีกรณีต้องทำยังไง

looking good kub :+1:

@Namtan

  1. พี่ว่าไปนิยามคำว่า broadcast แล้วใช้ทับศัพท์ดีกว่าครับ และมันควรบอกว่าถูก broadcast ไปหาทุก node ครับ ใช้คำว่าอื่นๆ ดูถูก 100%
  1. พี่แปลได้ว่า “แต่ละ node จะรวบรวมธุรกรรมใหม่ที่ได้รับนั้นใส่เข้าไปใน Block” นะครับ ลองเรียบเรียงใหม่หน่อย ใน white paper ไม่เห็นบอกว่าไปรวบรวมจากหลายๆ node ?
  1. จาก white paper “finding a difficult proof-of-work” อันนี้น่าจะถือการแก้โจทย์ที่เราพูดถึงในบทก่อนหน้า อาจจะต้องรอ CF ทาง @anakornk ว่าอยากจะให้นิยามคำภาษาไทยว่าอะไร แก้โจทย์ ?

และ ข้อ 3 อ่านแล้วก็งงๆ จากที่แปลมันบอกว่า แต่ละ node ก็จะทำการแก้โจทย์สำหรับ Block ของตนเองโดยใช้ POW

ปล ไปเพิ่มคำนิยามให้ POW ข้างบนดีกว่าครับ ใช้หลายจุดมาก

  1. เหมือนจะแปลตกหล่น " Node อื่น ๆ ในเครือข่ายจะยอมรับ Block ที่ส่งมา ก็ต่อเมื่อทุกธุรกรรมใน Block นั้นถูกต้อง และไม่เกิด Double spending"
  1. พี่แปลได้แบบนี้ครับ “Node จะแสดงการยอมรับ Block ด้วยการสร้าง Block ถัดไปใน Chain โดยใช้ Hash ของ Block ที่ยอมรับเป็น Hash ก่อนหน้า” ลองเรียบเรียงใหม่ครับ

  1. อยากให้ลองเรียบเรียงใหม่ครับ อ่านแล้วมันไม่ลื่นไหล ใช้คำเปลือง อะไรตัดได้ตัดเลยครับ ส่วนสำคัญที่จะอธิบายในพารากราฟนี้คือ
  • Node จะเชื่อ chain ที่ยาวที่สุดเท่านั้น
  • ในกรณีที่มี 2 node ที่ยาวเท่ากัน ทำการ Broadcast Block ถัดไปที่คนละ version กัน
  • มีโอกาสที่ Node ปลายทางแต่ละแห่งจะได้รับข้อมูล Block ถัดไปที่คนละ version กัน
  • ซึ่ง Node ปลายทางจะสนใจแค่ version แรกที่ตัวเองได้รับ
  • ซึ่งความแตกต่างของ Block version แต่ละ Node จะหายไปเมื่อมี Node แห่งหนึ่งที่สามารถสร้าง Chain ได้ยาวที่สุด
  • ซึ่งทำให้ node อื่นๆ ต้องย้ายมาใช้ Chain ที่ยาวที่สุดแทน

คำถาม ตรงนี้รบกวนพี่ต้าช่วยตอบให้หน่อยนะคะ เป็นส่วนที่ติดอยู่ของบทความนี้ค่ะ ขอบคุณค่ะ

1. คำว่า broadcast ควรจะใช้คำภาษาไทยว่าอะไร ตอนใน meeting ใช้คำว่า กระจาย ตอนนี้เลยใช้คำว่ากระจายแทนไป แต่พี่บูมมี Comment ว่าคำว่ากระจาย ไม่ครอบคลุมความหมาย

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

3. “แต่ละ Node จะใช้ Proof-of-Work ในการแก้โจทย์เพื่อหาค่าที่น้อยกว่าค่าความยาก (Difficult) ที่กำหนด เพื่อสร้าง Block ของตนเอง” ประโยคนี้อธิบายแบบนี้ถูกต้องมั้ยคะ ไม่แน่ใจว่า Difficult จะใช้คำว่าอะไร

ใช้ broadcast เลยไม่ได้ ?

อ่านงงงง ได้รับธุรกรรมแล้ว ทำไมต้องไปรวบรวมอีก ?

  • User creates a transaction
  • User broadcast transaction to network
  • Node receive transaction and further broadcast to network
  • Node creates a block which includes the received transactions

แต่ละ Node จะทำ Proof-of-Work ซึ่งคือการแก้โจทย์เลข … เพื่อสร้าง Block ของตนเอง

@Namtan

  1. เมื่อทำ POW สำเร็จ ?
  1. คำว่าเพื่อซ้ำซ้อน → ลองใช้คำว่า “สำหรับใช้”
  1. ​" Node 2 แห่ง สามารถสร้าง" ไม่ควรเว้นวรรคเลยครับ อ่านแล้วความหมายเปลี่ยนและสะดุดได้เลย ควรเป็น => " Node 2 แห่งสามารถสร้าง…"
  1. อันนี้ควรเป็นเหมือนจั่วหัวรึเปล่าครับ แบบ “Node จะเชื่อ Chain ที่ยาวที่สุดเท่านั้น…” แล้วย่อหน้าต่อไปก็ขยายความไรงี้
  1. ลองไปถาม chatGPT มามันก็อธิบายเคลียร์ดีนะครับ ลองนำไปปรับใหม่ ของเราขาดขั้นตอนที่ 3 เปล่า ? ซึ่งพี่มองว่าเค้าอธิบายเป็น 3 step ก็เข้าใจดีนะครับ

  2. ตัดคำว่า “ที่” ทิ้ง

  1. ลองเรียบเรียงใหม่อ่านดีๆ ครับ มันเกือบดีละ ตอนนี้อ่านแล้วดูงงๆ ใช้คำไม่จำเป็นเยอะขอกระชับและเข้าใจง่ายกว่านี้ครับ