-

@ Cypherpruk
2025-02-24 04:03:17
บิตคอยน์ทำงานอย่างไร?
เคยสงสัยกันไหมครับว่าบิตคอยน์มีหน้าตาเป็นอย่างไร? มันเป็นเหรียญดิจิทัล โปรแกรมคอมพิวเตอร์ หรือเป็นอะไรที่ซับซ้อนกว่านั้น?
.
จริง ๆ แล้ว บิตคอยน์เป็นเพียงแค่โปรโตคอล หรือกฎเกณฑ์ที่กำหนดวิธีการส่งมูลค่า หรือข้อมูลทางบัญชีระหว่างกันครับ
.
คล้ายกับอินเทอร์เน็ตที่เราใช้ทุกวันนี้ซึ่งเป็นโปรโตคอลที่กำหนดวิธีการส่งข้อมูลผ่านเครือข่าย ไม่มีข้อจำกัดว่าจะต้องใช้ซอฟต์แวร์ใดเป็นพิเศษ คงไม่มีใครใช้โปรแกรมชื่อ "อินเทอร์เน็ต" ใช่ไหมครับ?
แต่เราสามารถเลือกใช้เบราว์เซอร์หรือแอปใดก็ได้เพื่อเชื่อมต่ออินเทอร์เน็ต
.
บิตคอยน์ก็เช่นกันครับ
เราสามารถเลือกใช้ซอฟต์แวร์สำหรับเชื่อมต่อเครือข่ายบิตคอยน์ ซึ่งเรียกว่า "Bitcoin node" (จะขอเรียกว่าโหนดนะครับ)
ปัจจุบันมีหลายตัวเลือก เช่น Bitcoin Core, Bitcoin Knots, bcoin, btcd, Gocoin, Libbitcoin, และ Mako เป็นต้น
โดยตัวที่นิยมใช้มากที่สุดคือ Bitcoin Core และเป็นซอฟต์แวร์ที่พัฒนาต่อยอดมาจากซอฟต์แวร์ต้นฉบับของ Satoshi Nakamoto
.
แล้วโหนดทำงานยังไง?
เมื่อเรารันซอฟต์แวร์โหนดครั้งแรก โปรแกรมจะเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่นที่รันซอฟต์แวร์ Bitcoin node และเริ่มดาวน์โหลดไฟล์ที่เป็นบัญชีรายการธุรกรรม ซึ่งไฟล์นี้จะมีขนาดใหญ่มากครับ เพราะมันเก็บบันทึกทุกธุรกรรมที่เคยเกิดขึ้นบนเครือข่ายบิตคอยน์ตั้งแต่บล็อกแรกในปี ค.ศ. 2009 จนถึงปัจจุบัน
.
เมื่อมีใครสักคนหนึ่งในเครือข่ายทำธุรกรรมส่งบิตคอยน์ให้คนอื่น ข้อมูลธุรกรรมนี้จะถูกส่งต่อจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง กระจายไปทั่วเครือข่าย (ดูรูปที่ 2)
จนกระทั่งทุกโหนดในเครือข่ายได้รับสำเนาของธุรกรรมนั้นและนำไปบันทึกลงในไฟล์บัญชีธุรกรรมทั้งหมด
.
ปัญหามันมีอยู่ว่า...
เราสามารถส่งธุรกรรมที่ขัดแย้งกันเข้าสู่เครือข่ายได้
เนื่องจากบิตคอยน์เป็นข้อมูลดิจิทัล จึงสามารถถูกคัดลอกและส่งซ้ำได้
ยกตัวอย่างให้เห็นภาพนะครับ
Alice มีบิตคอยน์ 1 เหรียญ แล้วสร้างธุรกรรมสองรายการโดยใช้บิตคอยน์เหรียญเดียวกัน
ธุรกรรมหนึ่งส่งให้ Bob อีกธุรกรรมหนึ่งส่งไปให้ Carol
จากนั้น Alice ส่งธุรกรรมทั้งสองเข้าสู่เครือข่ายพร้อมกัน
บางโหนดอาจได้รับธุรกรรมที่ Alice ส่งให้ Bob ก่อน
ขณะที่บางโหนดอาจได้รับธุรกรรมที่ Alice ส่งให้ Carol ก่อน (ดูรูปที่ 3)
แบบนี้เราจะรู้ได้ยังไงว่าธุรกรรมไหนเกิดขึ้นก่อนและเป็นธุรกรรมที่ถูกต้อง?
.
ปัญหานี้เรียกว่า "double-spend" หรือการใช้จ่ายซ้ำซ้อนครับ
ถ้าไม่มีศูนย์กลางคอยตัดสินใจ คำถามนี้จะกลายเป็นปัญหาที่ยากมาก เพราะในเครือข่ายบิตคอยน์ คอมพิวเตอร์ทั่วโลกทำงานกันอย่างอิสระ ไร้ศูนย์กลาง
Satoshi ได้แก้ปัญหานี้โดยใช้กลไกการเขียนธุรกรรมลงไฟล์เป็นช่วงเวลา
ทุกธุรกรรมจะถูกเก็บไว้ในหน่วยความจำของโหนดก่อน ยังไม่มีการบันทึกลงในไฟล์บัญชีธุรกรรมแบบถาวร
ทุก ๆ 10 นาที จะมีการสุ่มเลือกโหนดหนึ่งในเครือข่าย
เพื่อนำธุรกรรมที่รออยู่ในหน่วยความจำมาเขียนลงไฟล์บัญชีธุรกรรมพร้อมประทับเวลาที่บันทึกโดยธุรกรรมที่ถูกประทับเวลาเดียวกันจะต้องไม่ขัดแย้งกัน
หากเกิดธุรกรรมทีขัดแย้งกัน เช่นกรณี Alice ส่งบิตคอยน์ให้ Bob และ Carol พร้อมกัน จะมีเพียงธุรกรรมเดียวเท่านั้นที่ถูกเลือก
.
บัญชีธุรกรรมอัปเดตใหม่นี้จะถูกกระจายไปยังโหนดอื่น ๆ ในเครือข่าย (ดูรูปที่ 4)
โหนดทั้งหมดจะยอมรับธุรกรรมในไฟล์บัญชีใหม่นี้เป็นธุรกรรมที่ถูกต้อง และลบธุรกรรมที่ขัดแย้งออกจากหน่วยความจำ
.
ผลลัพธ์ที่ได้คือ…
ไม่มีธุรกรรมที่ใช้จ่ายซ้ำซ้อน ถูกเขียนลงในไฟล์บัญชี
ทุกโหนดจะอัปเดตไปยังไฟล์บัญชีเวอร์ชันเดียวกันเสมอเป็นความจริงเพียงหนึ่งเดียว
.
อ่านมาถึงตรงนี้ หลายท่านอาจจะสงสัยว่า
ในทุก ๆ 10 นาที เครือข่ายบิตคอยน์เลือกโหนดที่จะบันทึกธุรกรรมใหม่ได้อย่างไร โดยที่ทุกโหนดยอมรับเป็นเสียงเดียวกัน?
.
การสุ่มนี้เกิดขึ้นด้วยกระบวนการที่เรียกว่า "การขุด" หรือ Mining ครับ
ซึ่งเป็นการแข่งขันของโหนดทั้งเครือข่ายภายใต้กฎทางคณิตศาสตร์ที่ยุติธรรม และไม่มีคนกลางใดเป็นผู้ตัดสิน
.
ครั้งหน้าเราจะมาคุยเรื่องการขุดบิตคอยน์กันนะครับ
https://image.nostr.build/4a2284d3c3b3d9a7d19d1111798199276cd8f788d04da25f5f0bb0ad7e57d2f5.jpg
https://image.nostr.build/c468ec30463fe99d9a595352fbf09af0ebd781782dba84dd39d4d353f67b3a71.jpg
https://image.nostr.build/accfa752090b431ffcfc4eab9a8f5d37135da79fee81ca2e78897d1c239b41b9.jpg
https://image.nostr.build/2d4e57da7ffe48029a82bb5753124bfd1c1ceedc296905e39e4aa097b8f50a81.jpg
#siamstr