Cointime

Download App
iOS & Android

ข้อบกพร่องเล็กๆ น้อยๆ ของ Bitcoin: ธุรกรรม Coinbase ซ้ำซ้อน

ที่มา: หลิว เจียเหลียน

เมื่อวันพฤหัสบดี 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% แต่ไม่น่าจะก่อให้เกิดคลื่นใหญ่ใดๆ

ความคิดเห็น

ความคิดเห็นทั้งหมด

Recommended for you