ปกบทความประวัติซอฟต์แวร์ Bitcoin Core

ประวัติซอฟต์แวร์ Bitcoin Core จากเวอร์ชัน 0.1 ถึงวันนี้

ไล่ประวัติของตัวซอฟต์แวร์ ไม่ใช่ประวัติของราคา ตั้งแต่วันที่โครงการขึ้น SourceForge จนถึงวันที่ซอฟต์แวร์เวอร์ชันใหม่ทำให้บล็อกเชนแยกสายโดยไม่ตั้งใจ พร้อมเอกสารต้นฉบับและตัวเลขค่าความยากจริง

วันที่ 8 มกราคม 2009 เวลา 14:27 ตามเวลาชายฝั่งตะวันออกของสหรัฐ มีอีเมลฉบับหนึ่งถูกส่งเข้าเมลลิ่งลิสต์ของนักเข้ารหัสที่ชื่อ Cryptography Mailing List หัวข้อว่า Bitcoin v0.1 released ผู้ส่งใช้ชื่อ Satoshi Nakamoto เนื้อความสั้นมาก บอกว่าเป็นการปล่อยซอฟต์แวร์ระบบเงินอิเล็กทรอนิกส์ตัวแรกที่ใช้เครือข่ายเพียร์ทูเพียร์ป้องกันการใช้เงินซ้ำ พร้อมลิงก์ดาวน์โหลดจาก SourceForge

อีเมลฉบับนั้นระบุไว้ตรงๆ ว่าซอฟต์แวร์ยังอยู่ในขั้นทดลอง รองรับเฉพาะ Windows และไม่มีอะไรรับประกันว่าสถานะของระบบจะไม่ต้องเริ่มใหม่ในอนาคต สิบเจ็ดปีต่อมา ระบบเดียวกันนั้นยังเดินอยู่โดยไม่เคยเริ่มใหม่สักครั้ง

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

พฤศจิกายน 2008 โครงการขึ้น SourceForge ก่อนจะมีซอฟต์แวร์ให้ใช้

วันที่ 9 พฤศจิกายน 2008 คือวันที่โครงการ Bitcoin ถูกลงทะเบียนบน SourceForge ซึ่งเป็นแหล่งรวมโครงการโอเพนซอร์สที่ใหญ่ที่สุดในยุคนั้น เกิดขึ้นหลังเอกสาร white paper เผยแพร่เพียงเก้าวัน และก่อนที่จะมีซอฟต์แวร์ให้ดาวน์โหลดจริงอีกสองเดือน

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

อีเมลประกาศ Bitcoin เวอร์ชัน 0.1 ของ Satoshi Nakamoto ในคลังเก็บของ Cryptography Mailing List

ภาพ: อีเมลต้นฉบับที่ประกาศ Bitcoin เวอร์ชัน 0.1 ลงเวลา 8 มกราคม 2009 เวลา 14:27 ตามเวลาชายฝั่งตะวันออกของสหรัฐ ซึ่งตรงกับเช้าวันที่ 9 มกราคมตามเวลาไทย จึงเป็นเหตุผลที่บางแหล่งระบุวันที่ 8 และบางแหล่งระบุวันที่ 9 ที่มา: คลังเก็บ Cryptography Mailing List ที่ metzdowd.com

มกราคม 2009 เวอร์ชัน 0.1 กับสิ่งที่อีเมลฉบับแรกบอกไว้

สิ่งที่น่าสนใจที่สุดของอีเมลประกาศเวอร์ชัน 0.1 คือรายละเอียดที่ Satoshi เขียนไว้ตั้งแต่วันนั้น และยังเป็นจริงอยู่ถึงวันนี้

  • จำนวนเหรียญทั้งหมดจะมีได้ 21,000,000 เหรียญ และจ่ายให้โหนดที่สร้างบล็อก โดยลดลงครึ่งหนึ่งทุกสี่ปี
  • สี่ปีแรกจ่าย 10,500,000 เหรียญ สี่ปีถัดไป 5,250,000 เหรียญ ไล่ลงไปเรื่อยๆ เป็นตารางที่เขียนไว้ในอีเมลตั้งแต่ก่อนมีผู้ใช้คนที่สอง
  • เหรียญที่เพิ่งขุดได้ต้องรอ 120 บล็อกก่อนถึงจะใช้ได้ ซึ่งเป็นกติกาที่ยังใช้อยู่ทุกวันนี้
  • พอร์ต 8333 คือพอร์ตที่ต้องเปิดเพื่อรับการเชื่อมต่อขาเข้า ซึ่งก็ยังเป็นพอร์ตมาตรฐานของเครือข่ายจนถึงปัจจุบัน
  • ค่าความยากถูกตั้งไว้ต่ำมากโดยตั้งใจ Satoshi เขียนว่าทำให้ง่ายไว้ก่อนเพื่อให้พีซีธรรมดาขุดได้ในไม่กี่ชั่วโมง แล้วมันจะยากขึ้นเองเมื่อมีคนแข่งมากขึ้น

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

I made the proof-of-work difficulty ridiculously easy to start with, so for a little while in the beginning a typical PC will be able to generate coins in just a few hours. It'll get a lot harder when competition makes the automatic adjustment drive up the difficulty.

Satoshi Nakamoto อีเมลประกาศ Bitcoin v0.1 วันที่ 8 มกราคม 2009

ข้อสุดท้ายคือข้อที่กลายเป็นเรื่องใหญ่ที่สุด เพราะกลไกปรับค่าความยากอัตโนมัติคือสิ่งที่ทำให้เครือข่ายผลิตบล็อกได้ประมาณทุกสิบนาทีเสมอ ไม่ว่าจะมีคนขุดกี่คนก็ตาม

ปี 2009 ปีที่ค่าความยากไม่ขยับเลยเกือบทั้งปี

ตัวเลขค่าความยากในการขุดเล่าเรื่องปีแรกของเครือข่ายได้ดีกว่าอะไรทั้งหมด เพราะมันคือหลักฐานว่ามีคนสนใจขุดมากแค่ไหนจริงๆ

ค่าความยากในการขุด Bitcoin ปีแรกถึงสิ้นปี 2013 (แกนตั้ง log scale)
3 ม.ค. 09
1
29 ธ.ค. 09
อยู่ที่ 1 มาเกือบปี
1
30 ธ.ค. 09
ปรับขึ้นครั้งแรก
1.18
31 ธ.ค. 13
1,180,923,195
3 ม.ค. 0929 ธ.ค. 0930 ธ.ค. 097 ก.ค. 1031 ธ.ค. 1031 ธ.ค. 1131 ธ.ค. 1231 ธ.ค. 13
ที่มา: Blockchain.com ชาร์ตค่าความยากในการขุด

เส้นนี้อ่านง่ายที่สุดถ้าดูสามจุดแรก ค่าความยากอยู่ที่ 1 ตั้งแต่บล็อกแรก จนถึงสิ้นปี 2009 แล้วเริ่มไต่ขึ้นทันทีที่มีคนเข้ามาขุดมากขึ้นในปี 2010

ค่าความยากเริ่มต้นที่ 1 ในวันที่ 3 มกราคม 2009 แล้วอยู่ที่ 1 ต่อเนื่องเกือบทั้งปี จนถึงวันที่ 30 ธันวาคม 2009 จึงปรับขึ้นเป็นครั้งแรกในประวัติศาสตร์ ไปอยู่ที่ 1.18289953431284 การที่มันไม่ขยับเลยเกือบสิบสองเดือนแปลว่าพลังขุดทั้งเครือข่ายยังน้อยมากจนกติกาไม่จำเป็นต้องปรับอะไร

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

ธันวาคม 2009 เวอร์ชัน 0.2 กับนักพัฒนาคนที่สอง

เวอร์ชัน 0.2 ออกวันที่ 16 ธันวาคม 2009 ของใหม่ที่สำคัญคือการรองรับการขุดด้วยซีพียูหลายคอร์พร้อมกัน และการรองรับระบบปฏิบัติการ Linux ซึ่งเป็นระบบที่นักพัฒนาส่วนใหญ่ใช้ทำงานจริง

สองอย่างนี้ฟังดูเป็นเรื่องเทคนิคเล็กๆ แต่ผลของมันคือการเปิดประตูให้คนที่มีความรู้เข้ามาช่วยดูแลโค้ดได้ Martti Malmi นักศึกษาชาวฟินแลนด์คือคนที่เข้ามาช่วยงานส่วนนี้ตั้งแต่ยุคนั้น และเป็นคนแรกๆ ที่ทำงานร่วมกับ Satoshi โดยตรง

ช่วงเดียวกันนั้นเองที่กลุ่มนักพัฒนาอาสาสมัครเริ่มก่อตัวขึ้นรอบโครงการ จากเดิมที่มีคนเขียนโค้ดคนเดียว กลายเป็นโครงการที่มีคนคอยรีวิวและส่งแพตช์เข้ามา ซึ่งเป็นการเปลี่ยนผ่านที่โครงการโอเพนซอร์สส่วนใหญ่ไม่รอด

กรกฎาคม 2010 เวอร์ชัน 0.3 กับวันที่คนนอกเข้ามาเจอ

เวอร์ชัน 0.3 ออกต้นเดือนกรกฎาคม 2010 เป็นเวอร์ชันแรกที่ออกแบบมาให้คนทั่วไปใช้ได้จริง ไม่ใช่เฉพาะคนที่อ่านโค้ดเป็น ห้าวันหลังจากนั้น เว็บข่าวเทคโนโลยี Slashdot ลงข่าวเกี่ยวกับ Bitcoin และนั่นคือครั้งแรกที่คนจำนวนมากนอกวงเข้ามาเจอโครงการนี้พร้อมกัน

ผลที่ตามมาทันทีคือจำนวนผู้ขุดเพิ่มขึ้นอย่างรวดเร็ว ค่าความยากที่ใช้เวลาเกือบปีกว่าจะขยับจาก 1 ไปเป็น 1.18 ขยับไปอยู่ที่ราว 23.5 ในวันที่ 7 กรกฎาคม 2010 และไปจบปีนั้นที่ราว 14,484 หรือโตขึ้นราวหนึ่งหมื่นสองพันเท่าภายในปีเดียว

สิงหาคม 2010 วันที่มีคนเสก 184 พันล้านเหรียญขึ้นมา

วันที่ 15 สิงหาคม 2010 มีผู้พบว่าบล็อกหมายเลข 74638 บรรจุธุรกรรมที่สร้างเหรียญขึ้นมา 184,467,440,737.09551616 เหรียญ แบ่งไปสองที่อยู่ ที่อยู่ละราว 92.2 พันล้านเหรียญ ทั้งที่กติกาบอกว่าทั้งระบบจะมีได้แค่ 21 ล้านเหรียญ

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

  • เวอร์ชันแก้ไขถูกปล่อยภายในห้าชั่วโมงหลังพบเหตุ พร้อมกติกาใหม่ที่ปฏิเสธธุรกรรมที่ยอดขาออกล้นค่า และปฏิเสธธุรกรรมใดก็ตามที่จ่ายเกิน 21 ล้านเหรียญในขาออกเดียว
  • เครือข่ายต้องย้อนสายกลับไปก่อนบล็อกที่มีปัญหา แล้วเดินหน้าใหม่บนสายที่ไม่มีธุรกรรมนั้น
  • นี่เป็นครั้งเดียวในประวัติศาสตร์ที่เครือข่าย Bitcoin ต้องย้อนสายเพราะบั๊กในตัวโปรแกรม ไม่ใช่เพราะการโจมตีจากภายนอก

หน้าเว็บสำรวจบล็อกเชนแสดงบล็อกหมายเลข 74638 ที่เกี่ยวข้องกับเหตุการณ์ค่าล้นปี 2010

ภาพ: บล็อกหมายเลข 74638 บนสายที่เครือข่ายใช้อยู่ทุกวันนี้ มีเพียง 3 ธุรกรรม และห่างจากบล็อกก่อนหน้า 6 ชั่วโมง 51 นาที ซึ่งยาวผิดปกติมากเมื่อเทียบกับเป้าหมาย สิบนาทีต่อบล็อก ช่วงเวลาที่หายไปนั้นคือร่องรอยของการที่เครือข่ายต้องย้อนสาย แล้วขุดใหม่ ที่มา: Blockstream Explorer

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

ธันวาคม 2010 โพสต์สุดท้ายของคนเขียนโค้ดคนแรก

วันที่ 12 ธันวาคม 2010 Satoshi Nakamoto โพสต์ข้อความในเว็บบอร์ดเป็นครั้งสุดท้าย จากนั้นก็หายไปจากวงการโดยไม่เคยกลับมาอีก สิ่งที่ทิ้งไว้คือโค้ดที่เปิดให้ทุกคนอ่านได้ และกลุ่มนักพัฒนาที่โตพอจะรับงานต่อ

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

ไดอะแกรมแสดงเส้นทางของการเปลี่ยนแปลงหนึ่งอย่างกว่าจะเข้าสู่เครือข่าย

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

การส่งมอบที่ไม่มีพิธีการ

ก่อนจะหายไป Satoshi ส่งมอบสิ่งที่มีอำนาจจริงสองอย่างให้ Gavin Andresen นักพัฒนาที่เข้ามาช่วยงานตั้งแต่ปี 2010 คือสิทธิ์ดูแลคลังโค้ดของโครงการ และกุญแจสำหรับส่งข้อความเตือนฉุกเฉินไปยังทุกโหนดในเครือข่าย ซึ่งเป็นกลไกที่ใช้ประกาศเตือนเมื่อเจอปัญหาร้ายแรง

การส่งมอบครั้งนั้นไม่มีประกาศเป็นทางการ ไม่มีเอกสารสัญญา และไม่มีการโหวตจากใคร มันเกิดขึ้นผ่านการคุยกันตรงๆ ระหว่างคนสองคน ซึ่งเป็นภาพที่ขัดกับความรู้สึกว่าระบบมูลค่าหลายล้านล้านบาทควรถูกส่งต่อแบบไหน

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

กันยายน 2012 Bitcoin Foundation กับคำถามว่าใครควรจ่ายค่าพัฒนา

วันที่ 27 กันยายน 2012 Bitcoin Foundation ถูกตั้งขึ้นโดยมีเป้าหมายที่ประกาศไว้คือสนับสนุนการพัฒนาโปรโตคอลและเป็นตัวแทนของวงการในการพูดคุยกับหน่วยงานรัฐ

ปัญหาที่มูลนิธินี้พยายามแก้เป็นปัญหาจริง คือซอฟต์แวร์ที่ดูแลเงินมูลค่าหลายร้อยล้านดอลลาร์ถูกดูแลโดยอาสาสมัครที่ไม่ได้รับค่าจ้าง แต่วิธีแก้แบบตั้งองค์กรกลางขึ้นมาก็สร้างคำถามใหม่ทันทีว่าองค์กรนั้นจะกลายเป็นศูนย์กลางที่ระบบตั้งใจจะไม่มีหรือเปล่า

มูลนิธิประสบปัญหาทางการเงินและเสียบทบาทไปในอีกไม่กี่ปีถัดมา ทุกวันนี้การพัฒนา Bitcoin Core ได้รับทุนจากหลายแหล่งที่กระจายกัน ทั้งบริษัทในวงการ มูลนิธิหลายแห่ง และผู้บริจาครายบุคคล ซึ่งเป็นรูปแบบที่ทนทานกว่าการพึ่งองค์กรเดียว

มีนาคม 2013 วันที่ซอฟต์แวร์เวอร์ชันใหม่ทำให้เครือข่ายแยกสาย

เวอร์ชัน 0.8 ออกวันที่ 19 กุมภาพันธ์ 2013 ของใหม่ที่ใหญ่ที่สุดคือการเปลี่ยนฐานข้อมูลเบื้องหลังจาก Berkeley DB ไปเป็น LevelDB เพื่อให้จัดการบล็อกเชนที่โตขึ้นเรื่อยๆ ได้เร็วขึ้น

สามสัปดาห์ต่อมา วันที่ 11 มีนาคม 2013 มีบล็อกหนึ่งถูกขุดขึ้นมาโดยมีจำนวนขาเข้าของธุรกรรมรวมกันมากกว่าที่เคยเจอมาก่อน โหนดที่ใช้เวอร์ชัน 0.8 รับบล็อกนั้นได้ แต่โหนดรุ่นเก่ากว่านั้นปฏิเสธ ผลคือบล็อกเชนแยกออกเป็นสองสายพร้อมกัน ซึ่งเป็นการแยกสายโดยไม่ตั้งใจ ต่างจากการแยกสายที่ตั้งใจทำอย่างกรณี Bitcoin Cash

เอกสาร BIP 50 รายงานชันสูตรเหตุการณ์บล็อกเชนแยกสายเดือนมีนาคม 2013

ภาพ: เอกสาร BIP 50 ที่ Gavin Andresen เขียนสรุปเหตุการณ์ ระบุตรงๆ ว่าสายที่ใช้รุ่น 0.8 มีพลังขุดราว 60% และการที่ BTCGuild กับ Slush ถอยรุ่นกลับไปเป็น 0.7 คือสิ่งที่ทำให้เครือข่ายกลับมาเป็นสายเดียว ที่มา: คลังเอกสาร BIP บน GitHub

รายงานชันสูตรเหตุการณ์ที่ Gavin Andresen เขียนไว้ในเอกสาร BIP 50 อธิบายไว้ว่าสายที่ใช้เวอร์ชัน 0.8 มีพลังขุดอยู่ราว 60% ซึ่งแปลว่าถ้าปล่อยไว้เฉยๆ สายนั้นจะชนะและโหนดรุ่นเก่าทั้งหมดจะตกขบวน

สิ่งที่เกิดขึ้นจริงคือกลุ่มขุดสองรายใหญ่ในเวลานั้น คือ BTCGuild และ Slush ตัดสินใจถอยซอฟต์แวร์ของตัวเองกลับไปเป็นรุ่น 0.7 เพื่อให้พูลของตัวเองปฏิเสธบล็อกใหญ่นั้นด้วย การย้ายพลังขุดครั้งนั้นทำให้สายที่ไม่มีบล็อกปัญหากลายเป็นสายที่ยาวกว่า และโหนดเวอร์ชัน 0.8 ก็ย้อนกลับมาที่สายเดิมเอง

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

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

มีนาคม 2014 วันที่ซอฟต์แวร์ได้ชื่อว่า Bitcoin Core

เวอร์ชัน 0.9.0 ที่ออกในเดือนมีนาคม 2014 คือจุดที่ซอฟต์แวร์เปลี่ยนชื่อจาก Bitcoin-Qt มาเป็น Bitcoin Core อย่างเป็นทางการ เหตุผลที่ประกาศไว้ตรงๆ คือเพื่อลดความสับสนระหว่าง Bitcoin ที่หมายถึงเครือข่าย กับ Bitcoin ที่หมายถึงโปรแกรม

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

เวอร์ชันสำคัญหลังปี 2014 ที่เปลี่ยนวิธีทำงานของเครือข่าย

หลังปี 2014 การพัฒนาเข้าสู่จังหวะที่นิ่งขึ้น ออกรุ่นใหญ่ปีละครั้งถึงสองครั้ง โดยมีรุ่นที่เปลี่ยนวิธีทำงานของเครือข่ายจริงๆ อยู่ไม่กี่รุ่น

  • 0.10 เปลี่ยนวิธีดาวน์โหลดบล็อกเชนเป็นแบบดึงหัวบล็อกก่อน ทำให้โหนดใหม่ซิงก์ได้เร็วขึ้นมากเมื่อเทียบกับวิธีเดิมที่ไล่ทีละบล็อกตามลำดับ
  • 0.12 ปรับปรุงการจัดการคิวธุรกรรมที่ยังไม่ถูกใส่ลงบล็อก ซึ่งกลายเป็นเรื่องสำคัญขึ้นมากเมื่อบล็อกเริ่มเต็มเป็นประจำ
  • 0.13.1 บรรจุโค้ดของ SegWit เข้ามา แต่ตัวกติกายังไม่มีผลจนกว่าผู้ขุดจะส่งสัญญาณสนับสนุนถึงเกณฑ์ ซึ่งเป็นการออกแบบที่แยกการปล่อยโค้ดออกจากการเปิดใช้กติกา
  • 0.21.1 บรรจุกลไกเปิดใช้ Taproot ซึ่งเป็นการอัปเกรดใหญ่ครั้งล่าสุดที่เปลี่ยนวิธีเขียนเงื่อนไขการใช้จ่ายให้ยืดหยุ่นและเป็นส่วนตัวมากขึ้น
  • 22.0 เปลี่ยนวิธีนับเวอร์ชัน ตัดเลขศูนย์นำหน้าที่ใช้มาตั้งแต่ 0.1 ออก หลังใช้มา 12 ปี

รูปแบบที่เห็นซ้ำในรุ่นเหล่านี้คือการแยกสองเรื่องออกจากกันเสมอ คือการปล่อยโค้ด กับการเปิดใช้กติกาใหม่ โค้ดออกมาก่อนเป็นเดือนหรือเป็นปี แล้วรอให้เครือข่ายส่งสัญญาณว่าพร้อม นี่คือบทเรียนที่ได้จากเหตุการณ์ปี 2013 โดยตรง

หน้ารายการรุ่นของคลังโค้ด bitcoin/bitcoin บน GitHub

ภาพ: คลังโค้ดของ Bitcoin Core บน GitHub เมื่อเดือนกันยายน 2026 มีผู้กด Star 90,200 ราย มีการคัดลอกไปพัฒนาต่อ 39,400 ครั้ง และมีคำขอรวมโค้ดที่ยังเปิดอยู่ 395 รายการ ตัวเลขชุดนี้เปิดให้ใครก็ตรวจได้ ที่มา: GitHub คลังโค้ด bitcoin/bitcoin

โหนดคืออะไร และทำไมจำนวนโหนดถึงสำคัญกว่าที่คิด

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

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

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

เหตุการณ์เดือนมีนาคม 2013 คือตัวอย่างที่ชัดที่สุด โหนดรุ่นเก่าปฏิเสธบล็อกที่ตัวเองมองว่าผิดกติกา ทั้งที่สายนั้นมีพลังขุดมากกว่า และสุดท้ายฝ่ายที่ต้องปรับตัวคือผู้ขุด ไม่ใช่โหนด

ค่าความยากวันนี้ เทียบกับวันที่ยังเป็นเลขหนึ่ง

ค่าความยากในการขุด Bitcoin ตั้งแต่ปรับขึ้นครั้งแรกถึงปี 2026 (แกนตั้ง log scale)
ธ.ค. 2009
1.18
ก.ย. 2026
125,807,076,547,198
ธ.ค. 2009ธ.ค. 2012ธ.ค. 2015ธ.ค. 2018ธ.ค. 2021ธ.ค. 2024ก.ย. 2026
ที่มา: Blockchain.com ชาร์ตค่าความยากในการขุด

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

จากค่าความยาก 1.18 ในวันที่ 30 ธันวาคม 2009 มาถึงราว 125.8 ล้านล้านในเดือนกันยายน 2026 คิดเป็นการเพิ่มขึ้นราว 106 ล้านล้านเท่า ตัวเลขระดับนี้อ่านยากจนแทบไม่มีความหมาย สิ่งที่มันบอกจริงๆ คือการจะเขียนประวัติศาสตร์บล็อกเชนย้อนหลังต้องใช้พลังขุดมากขนาดไหน

และตัวเลขนี้เดินขึ้นมาได้ด้วยกลไกที่เขียนไว้ในเวอร์ชัน 0.1 ตั้งแต่วันแรก ไม่มีใครต้องมานั่งปรับมือ ไม่มีคณะกรรมการไหนโหวต มันปรับตัวเองทุก 2,016 บล็อกตามกติกาที่อยู่ในโค้ดที่ทุกคนอ่านได้

คนไทยเข้าไปตรวจสอบเองได้แค่ไหน

ข้อดีของการเป็นโอเพนซอร์สคือมันไม่ได้จำกัดว่าใครอยู่ประเทศไหน คลังโค้ดของ Bitcoin Core อยู่บน GitHub เปิดให้ทุกคนอ่าน ทุกการเปลี่ยนแปลงมีบันทึกว่าใครเสนอ ใครรีวิว และเถียงกันเรื่องอะไรก่อนจะรวมเข้าไป

สำหรับคนที่ไม่ได้อ่านโค้ดเป็น ยังมีอีกสองอย่างที่ทำได้จริงและตรวจสอบได้จริง

  • ตรวจลายเซ็นของไฟล์ติดตั้งก่อนใช้ ทุกรุ่นมีไฟล์ระบุค่าแฮชและลายเซ็นของผู้สร้างรุ่นหลายคนแนบมาด้วย การเทียบค่าแฮชของไฟล์ที่ดาวน์โหลดกับที่ประกาศไว้ ใช้เวลาไม่กี่นาทีและกันไฟล์ปลอมได้จริง
  • รันโหนดของตัวเอง ข้อกำหนดจริงในปี 2026 คือพื้นที่เก็บข้อมูลหลายร้อยกิกะไบต์สำหรับสำเนาเต็ม กับอินเทอร์เน็ตที่เปิดทิ้งไว้ได้ ซึ่งเป็นสิ่งที่คอมพิวเตอร์บ้านทั่วไปในไทยทำได้ และมีโหมดตัดข้อมูลเก่าทิ้งสำหรับคนที่พื้นที่จำกัด

สิ่งที่ได้จากการรันโหนดเองไม่ใช่รายได้ แต่คือการไม่ต้องเชื่อคำบอกเล่าของใครเลยว่ายอดในกระเป๋าเราเป็นเท่าไหร่ ในประเทศที่คนส่วนใหญ่เข้าถึงคริปโตผ่านแอปของศูนย์ซื้อขายซึ่งแสดงตัวเลขให้ดูอย่างเดียว ความต่างตรงนี้คือความต่างระหว่างการเห็นตัวเลขกับการตรวจสอบตัวเลข

ไดอะแกรมเทียบหน้าที่ของโหนดกับหน้าที่ของผู้ขุด

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

สิ่งที่ประวัติของโค้ดบอก และประวัติของราคาไม่ได้บอก

  • ระบบนี้เคยพังจริง และซ่อมได้จริง ทั้งเหตุเสกเหรียญปี 2010 และเหตุแยกสายปี 2013 จบภายในไม่กี่ชั่วโมงทั้งคู่
  • การแก้ปัญหาแต่ละครั้งไม่ได้มาจากผู้มีอำนาจสั่ง แต่มาจากคนที่รันโหนดและคนที่ขุด ตัดสินใจเองว่าจะรันโค้ดเวอร์ชันไหน
  • กติกาสำคัญที่สุดถูกเขียนไว้ตั้งแต่เวอร์ชันแรก ทั้งเพดาน 21 ล้านเหรียญ การลดครึ่งทุกสี่ปี และการปรับค่าความยากอัตโนมัติ
  • คนเริ่มโครงการหายไปตั้งแต่ปี 2010 แล้วโครงการยังเดินต่อมาได้อีกสิบหกปี

คำถามที่พบบ่อย

Bitcoin Core กับ Bitcoin ต่างกันอย่างไร

Bitcoin คือเครือข่ายและโปรโตคอล ส่วน Bitcoin Core คือชื่อของซอฟต์แวร์ที่สืบทอดมาจากเวอร์ชัน 0.1 ที่ Satoshi ปล่อยออกมา ทุกวันนี้มีซอฟต์แวร์ตัวอื่นที่ต่อเข้าเครือข่ายเดียวกันได้ แต่ Bitcoin Core ยังเป็นตัวที่โหนดส่วนใหญ่ใช้

ทำไมเวอร์ชันถึงยังขึ้นต้นด้วยเลขศูนย์มานาน

เลขเวอร์ชันของ Bitcoin Core ขึ้นต้นด้วย 0 มาตั้งแต่ 0.1 จนถึง 0.21 แล้วเปลี่ยนวิธีนับเป็น 22.0 ในปี 2021 การใช้เลข 0 นำหน้ามายาวนานสะท้อนวัฒนธรรมของโครงการที่ไม่ประกาศว่าตัวเองเสร็จสมบูรณ์ ไม่ได้แปลว่าซอฟต์แวร์ยังไม่พร้อมใช้

ใครเป็นคนตัดสินว่าจะใส่อะไรลงในซอฟต์แวร์

ไม่มีใครคนเดียวตัดสิน การเปลี่ยนแปลงต้องผ่านการรีวิวของนักพัฒนาหลายคน และที่สำคัญกว่านั้นคือคนที่รันโหนดต้องเลือกอัปเดตเอง ถ้าคนส่วนใหญ่ไม่อัปเดต การเปลี่ยนแปลงนั้นก็ไม่มีผล เหมือนที่เกิดขึ้นในเหตุการณ์ปี 2013

ค่าความยากปรับบ่อยแค่ไหน

ทุก 2,016 บล็อก หรือประมาณสองสัปดาห์ โดยระบบจะดูว่าช่วงที่ผ่านมาใช้เวลาผลิตบล็อกเร็วหรือช้ากว่าเป้าหมายสิบนาทีต่อบล็อก แล้วปรับขึ้นหรือลงตามนั้น

ถ้าเจอบั๊กร้ายแรงอีก จะเกิดอะไรขึ้น

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

บทความทั้งหมด