This article has been translated from English to Thai.

บิทคอยน์ตอบคำถามว่า “ธุรกรรมไหนที่จะเก็บเอาไว้?

วิธีที่บิทคอยน์ตอบคำถามนี้มันช่างอัจฉริยะอย่างเลยล่ะ

มาดูวิธีกันเลย...

ทุกโหนดบนเครือข่ายบิทคอยน์จะแชร์ข้อมูลเกี่ยวกับธุรกรรมใหม่ๆ

ธุรกรรมที่เกิดขึ้นบนเครือข่ายบิทคอยน์จะไม่ถูกเพิ่มเข้าไปในบล็อกเชนโดยตรง แต่จะถูกเก็บรวบรวมและจัดเก็บในสิ่งที่เรียกว่า "memory pool” ก่อน

ทุกคอมพิวเตอร์ที่รันโปรแกรมบิทคอยน์จะสร้าง พื้นที่เก็บข้อมูลชั่วคราวสำหรับธุรกรรม ที่เรียกว่า "memory pool" หรือสั้นๆ ว่า "mempool"

แต่ละโหนดบิทคอยน์จะมี mempool ของมันเอง ซึ่งจะเก็บคิวของธุรกรรมที่ได้ตรวจสอบและถือว่าถูกต้องแล้ว Bitcoin Node's Memory Pool

พูดกว้างๆ mempool คือ คิวที่จัดเรียงเป็นระเบียบที่เก็บและจัดเรียงธุรกรรมก่อนที่จะถูกเพิ่มไปยังบล็อกใหม่ที่สร้างขึ้น

  • memory pool เก็บธุรกรรมที่ “สดใหม่” หรือยังไม่ได้รับการยืนยัน (จัดเก็บเป็นธุรกรรมเดี่ยวๆ)
  • บล็อกเชนเก็บธุรกรรมที่ “เก็บถาวร” หรือได้รับการยืนยันแล้ว (บรรจุอยู่ใน “บล็อก”)

ธุรกรรมบิทคอยน์ทั้งหมดคือธุรกรรมที่ “ยังไม่ได้รับการยืนยัน” และมีอยู่ใน mempool ก่อนที่จะ “ได้รับการยืนยัน” และเพิ่มไปยังบล็อกเชน

ในเครือข่ายบิทคอยน์ ทุกโหนดเต็มมี memory pool ของมัน

All Bitcoin nodes have a memory pool

สมมติว่าคุณสร้างธุรกรรมในฝั่งนี้ของเครือข่าย (ธุรกรรมสีม่วง)

แล้วไปฝั่งโน้นและใช้บิทคอยน์เดิมและแทรกธุรกรรม สีแดง ในคอมพิวเตอร์นี้

ถ้าคุณสังเกตว่า ธุรกรรมสองอันนี้ ไม่ได้เขียนลงไฟล์โดยตรง ธุรกรรมทั้งสองอันถูกเก็บไว้ใน memory pool ของแต่ละคอมพิวเตอร์ก่อน

Both transactions are stored in memory pool

ดังนั้นธุรกรรมทั้งสองจะกระจายไปทั่วเครือข่าย

คอมพิวเตอร์นี้จะปฏิเสธธุรกรรม สีแดง เพราะว่ามันได้รับธุรกรรม สีม่วง แล้ว

Transaction is rejected from mempool

ดังนั้นตอนนี้ธุรกรรมทั้งสองอันก็อยู่บนเครือข่าย

แต่ยังไม่ได้เขียนลงไฟล์ ดังนั้น ไฟล์ยังไม่ได้รับการอัปเดต

Both transactions are waiting in mempool

สิ่งที่จะเกิดขึ้นคือคอมพิวเตอร์ทุกเครื่องจะทำงานและพยายาม นำธุรกรรมจาก memory pool ของมันลงไปในไฟล์

พวกเขาจะแข่งขันเพื่อเป็นกลุ่มแรกที่สามารถนำธุรกรรมจาก memory pool ของตนเพิ่มลงในไฟล์ได้Bitcoin mining nodes compete

สมมติว่าคอมพิวเตอร์เครื่องนี้ (สีเหลือง) เป็นเครื่องแรกที่สามารถทำได้

Bitcoin node first to add transaction to blockchain

มันจะ เพิ่มธุรกรรมของมันจาก memory pool ลงไปในไฟล์:

Bitcoin nodes adds transaction to blockchain

และเมื่อมันทำเสร็จแล้ว...

มันจะ ส่งไฟล์ที่อัปเดตของมัน ไปให้คนอื่นๆ ที่มันเชื่อมต่อด้วย...

Bitcoin node shares blockchain copy

และพวกเขาจะ อัปเดตไฟล์ของตัวเอง

ในภาพประกอบด้านล่าง โหนดนี้ได้รับไฟล์ที่อัปเดตซึ่งมีธุรกรรม สีม่วง ที่ใช้บิทคอยน์เดียวกัน

Bitcoin node kicks out conflicting transaction

เกิดอะไรขึ้นกับธุรกรรม สีแดง ที่ขัดแย้งกันใน memory pool ของมัน?

เนื่องจากบิทคอยน์เดียวกันถูกใช้ในธุรกรรม สีม่วง แล้ว มันจะเตะเอาธุรกรรมสีแดงออกจาก memory pool ของมัน!

โหนดนี้จะส่งไฟล์ที่อัปเดตต่อไป

และโหนดอื่นๆ จะทำเช่นเดียวกัน...มันจะเตะธุรกรรมที่ขัดแย้งกันออกจาก memory pool ของมัน

All Bitcoin nodes kick out conflicting transaction

ตอนนี้คอมพิวเตอร์ทุกเครื่องมีไฟล์ที่อัปเดตแล้ว

นี่คือวิธีการแก้ปัญหาที่มีสองธุรกรรมขัดแย้งกันบนเครือข่าย

คุณก็แค่มี “พื้นที่รอ” (mempool) สำหรับธุรกรรมที่รอการยืนยัน และ โหนดต่างๆ แข่งขันกันเพื่อเพิ่มธุรกรรมของตนลงในไฟล์

ในตัวอย่างนี้ คน สีม่วง จะได้รับบิทคอยน์...Bitcoin transaction is successful

แต่เมื่อคุณพยายามจะใช้บิทคอยน์เดียวกันกับคน สีแดง มันจะไม่สำเร็จหรอกนะBitcoin transaction fails

กระบวนการที่โหนดต่างๆ แข่งขันกันเพื่อนำธุรกรรมจาก memory pool ของมันลงในไฟล์ (“บล็อกเชน”) นี้เรียกว่า การขุดเหมือง