ที่มา: หลิว เจียเหลียน
เมื่อวันพฤหัสบดี BTC ผันผวนเล็กน้อยในช่วง 86-87k มีนาคม 2025 ใกล้จะสิ้นสุดลงแล้ว เดือนมีนาคมผ่านไปแล้วและไตรมาสแรกก็ใกล้จะสิ้นสุดแล้ว ตามที่ Today’s Teaching Chain กล่าวไว้ ไตรมาสแรกนี้ถือเป็นไตรมาสที่แย่ที่สุดนับตั้งแต่ปี 2018
เวลาเป็นเหมือนน้ำ และปีก็เป็นเหมือนบทเพลง BTC เป็นเพลงที่เล่นตามเวลา แต่ในช่วงปีแรกๆ โดยเฉพาะก่อนปี 2013 มีข้อสังเกตที่ไม่ลงรอยกันบางประการในขบวนการนี้ ธนบัตรที่ไม่สอดคล้องกันเหล่านี้เป็นการทำธุรกรรมบนเหรียญที่เกิดขึ้นซ้ำๆ (ธุรกรรมการผลิตเหรียญ)
ธุรกรรมที่เรียกว่า coinbase (ธุรกรรมการสร้างเหรียญ) หรือเรียกอีกอย่างว่าธุรกรรม coinbase คือธุรกรรมแรกในแต่ละบล็อก BTC ที่เพิ่งสร้างขึ้นใหม่ นักขุดที่ขุดบล็อกมักจะใช้ธุรกรรมนี้เพื่อส่งรางวัลบล็อกไปยังที่อยู่ของเขาเอง
อย่างที่เรารู้กันดีอยู่แล้วว่าการทำธุรกรรม BTC ธรรมดาไม่สามารถทำซ้ำได้ เนื่องจากธุรกรรมทั่วไปจะต้องใช้เอาท์พุตที่ไม่ได้ใช้ของธุรกรรมที่มีอยู่ ซึ่งเรียกว่า UTXO ซึ่งเทียบได้กับ "เหรียญ" เหรียญเหล่านี้มีความแตกต่างกัน ดังนั้นธุรกรรมที่ใช้เหรียญเหล่านี้ก็ต้องแตกต่างกันด้วย หากเหรียญถูกใช้ไปในธุรกรรมสองครั้ง มันจะกลายเป็นสิ่งที่เรียกว่า "การใช้จ่ายซ้ำ" ซึ่ง BTC ห้ามโดยเด็ดขาด
อย่างไรก็ตาม มีข้อยกเว้นอยู่ นั่นคือการซื้อขายบน Coinbase ธุรกรรม Coinbase นั้นเป็นธุรกรรมการสร้างเหรียญ ดังนั้นแทนที่จะใช้เหรียญ UTXO สามารถสร้าง BTC ใหม่ขึ้นมาโดยตรงจากอากาศบางๆ เพื่อเป็นรางวัลให้กับนักขุดได้
หากนักขุดขุดหลายบล็อกติดต่อกันและใช้ข้อมูลเดียวกันเมื่อสร้างข้อมูลธุรกรรมของ Coinbase เช่น ที่อยู่ผู้รับและข้อมูลเพิ่มเติมอื่นๆ ก็เป็นไปได้ที่จะสร้างธุรกรรมที่เหมือนกันทุกประการสองรายการ สิ่งนี้สะท้อนให้เห็นในบล็อคเชนเป็นธุรกรรมสองรายการที่ใช้เหรียญซึ่งตั้งอยู่ในบล็อคที่แตกต่างกัน แต่มีข้อมูลธุรกรรมและค่าแฮชเหมือนกัน
นี่เป็นการทำธุรกรรม Coinbase ที่เกิดขึ้นซ้ำๆ
ข้อบกพร่องของ Bitcoin นี้มีอยู่จริง ต่อไปนี้เป็นตัวอย่างจริงสองตัวอย่าง คุณสามารถเปิดเบราว์เซอร์บล็อคเชน BTC เพื่อตรวจสอบ:
ความสูงของบล็อก 91812 และความสูงของบล็อก 91842 มีธุรกรรม coinbase สองรายการที่มีค่าแฮชเหมือนกันทุกประการ
ความสูงของบล็อก 91722 และความสูงของบล็อก 91880 มีธุรกรรม coinbase สองรายการที่มีค่าแฮชเหมือนกันทุกประการ
ข่าวดีก็คือไม่มีใครเคยใช้ธุรกรรม Coinbase ซ้ำซ้อนเพื่อใช้และสร้างธุรกรรมธรรมดาตามมาซึ่งเหมือนกันทุกประการ จึงทำให้พื้นที่ UTXO ทั้งหมดปนเปื้อน หลังจากที่ BIP-30 ได้ถูกนำไปใช้งานผ่านซอฟต์ฟอร์กเมื่อวันที่ 15 มีนาคม พ.ศ. 2555 ธุรกรรมซ้ำประเภทนี้ก็ไม่สามารถใช้ได้อีกต่อไป
นอกจากนี้ ในเดือนมีนาคม 2013 ซอฟต์ฟอร์ก BIP-34 ได้ถูกเปิดใช้งาน ซึ่งได้เพิ่มข้อมูลความสูงของบล็อกเป็น "หมายเลขเวอร์ชัน" ให้กับการสร้างธุรกรรม coinbase ทำให้ไม่สามารถทำซ้ำค่าแฮชของธุรกรรม coinbase ได้
โดยเฉพาะอย่างยิ่งจากมุมมองทางเทคนิค ความสูงของบล็อกจะถูกเพิ่มไปที่จุดเริ่มต้นของสคริปต์Sigของการทำธุรกรรม coinbase ไบต์แรกคือจำนวนไบต์ของค่าความสูงของบล็อก - ในปัจจุบันคือ 0x03 ซึ่งหมายความว่า 3 ไบต์ถัดไประบุความสูงของบล็อกของธุรกรรม coinbase สคริปต์Sig ในธุรกรรม coinbase เรียกอีกอย่างว่าสคริปต์ coinbase เป็นช่องที่นักขุดสามารถปรับแต่งได้อย่างอิสระ ในยุคแรกๆ มันอนุญาตให้เขียนข้อมูลตามต้องการได้ เช่น ซาโตชิ นากาโมโตะ เขียนชื่อหนังสือพิมพ์ The Times ในสาขานี้
การเปรียบเทียบแบบเข้าใจง่ายยิ่งขึ้น มาดู scriptSig ของธุรกรรม coinbase ของบล็อก #91812 ก่อน ซึ่งเป็นจุดที่เกิดปัญหาธุรกรรม coinbase ซ้ำกัน: 0456720e1b00 (OP_PUSHBYTES_4 56720e1b OP_0)
เมื่อฉันเขียนบทความนี้ สคริปต์ธุรกรรม coinbase ของบล็อก #889678 ซึ่งเพิ่งสร้างโดย Jiaolian คือ: 034e930d044260e5672f466f756e6472792055534120506f6f6c202364726f70676f6c642f23648154608b1500000000000 (OP_PUSHBYTES_3 4e930d OP_PUSHBYTES_4 4260e567 OP_PUSHBYTES_47)
เริ่มต้นด้วย 0x03 และสามไบต์ถัดไปคือ 43930d ซึ่งหมายความว่าความสูงของบล็อกคือ 0x0d934e ในเลขฐานสิบหกหรือ 889678 ในเลขฐานสิบ
ข่าวร้ายก็คือ ก่อนที่จะมีการแก้ไขในปี 2013 ธุรกรรม Coinbase บางรายการที่ถูกสร้างขึ้นนั้นเริ่มด้วย 0x03! ซึ่งจะทำให้ผู้ขุดในอนาคตสามารถใช้ประโยชน์จากสิ่งนี้เพื่อสร้างธุรกรรม coinbase ซ้ำโดยตั้งใจได้
ให้ฉันยกตัวอย่างเฉพาะเจาะจงให้คุณฟัง สคริปต์ coinbase ของบล็อก #164384 เริ่มต้นด้วย 0x03: 03d6441e014b0136 (OP_PUSHBYTES_3 d6441e OP_PUSHBYTES_1 4b OP_PUSHBYTES_1 36)
เราไม่ทราบว่าคนงานเหมืองมีเจตนาอะไรเมื่อเขาเขียนสคริปต์นี้ แต่สิ่งที่เรารู้คือเขามีโอกาสที่จะใช้ประโยชน์จากช่องโหว่นี้และพยายามสร้างธุรกรรม Coinbase ที่เหมือนกันทุกประการในอนาคต
เวลาที่แน่นอนคือกี่โมง? เราจะต้องทำการคำนวณแบบง่ายๆ
ตามคำจำกัดความของ BIP-34 ไบต์ 3 ตัวที่ตามหลัง 0x03 แสดงถึงความสูงของบล็อก สำหรับตัวอย่างข้างต้น นี่คือ d6441e ซึ่งคือ 0x1e44d6 ในเลขฐานสิบหก หรือ 1983702 ในเลขฐานสิบ
บล็อค #1983702 จะถูกผลิตเมื่อใด? เนื่องจาก BTC สร้างบล็อกทุกๆ ประมาณ 10 นาที ดังนั้นจึงสามารถอนุมานได้ง่ายๆ ว่าจากบล็อกปัจจุบัน #889678 ไปยังบล็อกในอนาคต #1983702 จะใช้เวลา (1983072 - 889678)/6/24/365 = 20.8 ปี ซึ่งอยู่ที่ประมาณปี 2046
ข่าวร้ายก็คือยังมีบล็อกประเภทนี้อยู่อีกมาก ตารางเต็มมีดังต่อไปนี้:
ความสูงบล็อก, ความสูงฐานเหรียญ, เท่ากัน
164384,1983702,จริง
169895,3708179,จริง
170307,3709183,จริง
171896,3712990,จริง
172069,3713413,จริง
172357,3714082,จริง
172428,3714265,จริง
174151,5208854,จริง
176684,490897,จริง
183669,3761471,จริง
196988,4275806,จริง
201577,5327833,จริง
206039,7299941,จริง
206354,7299941,จริง
209920,209921,จริง

ตามที่เห็นได้จากแผนภูมิแท่งด้านบน ประมาณปี 2078 ถือเป็นช่วงที่มีความเสี่ยงมากที่สุด
ตามที่เห็นได้จากแผนภูมิแท่งด้านบน ประมาณปี 2078 ถือเป็นช่วงที่มีความเสี่ยงมากที่สุด
ข่าวดีก็คือ ด้วยพลังการประมวลผลเครือข่ายที่ยิ่งใหญ่และยิ่งใหญ่กว่าในปัจจุบันและในอนาคต แม้ว่านักขุดในเวลานั้นจะมีความคิดดังกล่าว ก็ยังเป็นเรื่องยากที่พวกเขาจะคว้าสิทธิ์ในการบรรจุภัณฑ์ (สิทธิ์ในการผลิต สิทธิ์ในการขุด) ของบล็อกที่ความสูงขนาดนั้นได้
ยิ่งไปกว่านั้น นักขุดจะต้องเบื่อขนาดไหนที่ต้องพยายามอย่างหนักเพื่อแย่งชิงสิทธิ์ในการขุดและสร้างธุรกรรมที่ไม่สามารถใช้จ่ายได้อีก และเลียนแบบข้อมูลจากปีก่อนๆ จึงทำให้ตนเองต้องประสบกับความสูญเสียโดยเปล่าประโยชน์?
ดังนั้นข้อสรุปก็คือ ไม่สามารถพูดได้ว่าข้อบกพร่องของการทำธุรกรรมซ้ำของ Coinbase ได้รับการแก้ไขอย่างสมบูรณ์แบบ 100% แต่ไม่น่าจะก่อให้เกิดคลื่นใหญ่ใดๆ
ความคิดเห็นทั้งหมด