เมื่อเวลา 02:16 น. ของวันที่ 16 พฤศจิกายน BCH มีการ hard fork ที่บล็อก 556767 สงคราม fork สิ้นสุดลงและแบ่งออกเป็นสองค่าย: BCH ABC และ BCH SV
ในการฮาร์ดฟอร์กนี้ ทั้ง BCH ABC และ BCH SV ไม่ได้ใช้ "การป้องกันการเล่นซ้ำ" กล่าวคือ หลังจากการแยกนี้ ในทางทฤษฎี การโจมตีแบบเล่นซ้ำอาจนำไปสู่การล่มสลายของความเห็นพ้องต้องกันและพลังการประมวลผลเป็นศูนย์ของฝ่ายใดฝ่ายหนึ่ง
"การโจมตีซ้ำ" คืออะไร
ในคำศัพท์คอมพิวเตอร์แบบดั้งเดิม การโจมตีซ้ำ หรือที่เรียกว่าการโจมตีซ้ำหรือการโจมตีซ้ำ หมายถึงผู้โจมตีที่ส่งแพ็กเก็ตข้อมูลที่โฮสต์ปลายทางได้รับเพื่อให้บรรลุวัตถุประสงค์ในการหลอกลวงระบบ การโจมตีซ้ำสามารถเกิดขึ้นได้ในกระบวนการสื่อสารเครือข่ายใดๆ และเป็นหนึ่งในวิธีโจมตีทั่วไปที่แฮ็กเกอร์ใช้ในโลกคอมพิวเตอร์ ใช้เป็นหลักในกระบวนการตรวจสอบสิทธิ์
ในด้านของบล็อกเชน การโจมตีซ้ำ (Replay Attacks) มักจะปรากฏขึ้นเมื่อบล็อกเชนถูกฮาร์ดฟอร์ก โดยอ้างถึง "ธุรกรรมในเชนหนึ่งมักจะถูกกฎหมายในอีกเชนหนึ่ง"
มีตัวอย่างที่สามารถอธิบายง่ายๆ ว่า "การโจมตีซ้ำ" ในบล็อกเชนคืออะไร:
Little A ซื้อเบียร์จากโรงเบียร์ที่ไม่สามารถระบุการชำระเงินได้อย่างมีประสิทธิภาพ (ที่นี่ ไม่สามารถระบุได้ว่าเป็นการชำระเงินใด) เมื่อเขาแสดงข้อมูลการชำระเงินของการชำระเงินที่สำเร็จด้วย Alipay แก่พนักงานขาย พนักงานขายก็ยื่นเบียร์ให้เขา จากนั้นเสี่ยวเอแสดงข้อมูลการชำระเงินครั้งล่าสุดแก่พนักงานขายอีกคน และพนักงานขายก็ยื่นเบียร์ให้เขาอีกแก้ว ตราบใดที่ Little A แสดงข้อมูลการชำระเงินซ้ำ ๆ เขาก็สามารถโกงเบียร์ได้เรื่อย ๆ สำหรับโรงเบียร์มันเป็นการโจมตีซ้ำและสูญเสียเบียร์ไปนับไม่ถ้วน
เท่าที่เกี่ยวข้องกับการฮาร์ดฟอร์ก BCH นี้ BCH ได้เปลี่ยนจากเชนหนึ่งเป็นสองเชน เมื่อทั้ง 2 เชนได้รับการสนับสนุนและดำเนินการต่อไป เชนที่แยกอีกอันหนึ่งได้ผลิตสินทรัพย์ BSV นั่นคือมีทั้ง BCH ABC และ BCH SV อยู่ . เนื่องจากไม่มีการป้องกันการเล่นซ้ำ หากคุณปล่อยไว้ตามลำพังหลังจากการแยกและปล่อยให้มันเติบโตตามธรรมชาติ สิ่งนี้จะเกิดขึ้นในเวลานี้: เมื่อคุณซื้อขายในเชน SV เนื่องจากที่อยู่ อัลกอริทึม และรูปแบบธุรกรรมเดียวกัน คุณจะได้รับหาก การออกอากาศซ้ำของ ABC chain อาจได้รับการยอมรับว่าถูกต้องโดย ABC chain เพื่อให้สามารถดำเนินการธุรกรรมเดียวกันได้ เมื่อผู้โจมตีใช้ประโยชน์จากช่องโหว่นี้และทำการฝากและถอน (BCH SV) อย่างต่อเนื่องบนการแลกเปลี่ยน เขาสามารถรับ BCH ABC เพิ่มเติมได้
ซึ่งหมายความว่าสินทรัพย์ของผู้ใช้ BCH ที่ไม่มีการป้องกันการเล่นซ้ำจะมีความเสี่ยง และที่ร้ายแรงกว่านั้น มันจะนำไปสู่การล่มสลายของความเห็นพ้องต้องกันและพลังในการประมวลผลเป็นศูนย์
ที่มาของ "การโจมตีซ้ำ": Ethereum hard fork
ในตอนเย็นของวันที่ 20 กรกฎาคม 2016 Ethereum มีการฮาร์ดฟอร์กที่บล็อก 1.92 ล้าน ส่งผลให้เกิดสองเชนที่เรียกว่า ETH chain และ ETH Classic chain และโทเค็นด้านบนเรียกว่า ETH และ ETC
ที่อยู่และอัลกอริทึมคีย์ส่วนตัวในสองเชนนี้เหมือนกัน และรูปแบบธุรกรรมก็เหมือนกันทุกประการ ดังนั้นธุรกรรมในเชนใดเชนหนึ่งจึงมีแนวโน้มที่จะถูกกฎหมายโดยสมบูรณ์ในอีกเชนหนึ่ง ดังนั้น หากคุณเริ่มต้นธุรกรรมในเครือข่ายใดเครือข่ายหนึ่งและแพร่ภาพซ้ำในเครือข่ายอื่น ก็อาจได้รับการยืนยันเช่นกัน
เนื่องจากไม่มีการวางแผนล่วงหน้า ผู้คนจำนวนมากจึงใช้ประโยชน์จากช่องโหว่นี้ในการฝากและถอน ETH ในการแลกเปลี่ยนอย่างต่อเนื่องเพื่อรับ ETC เพิ่มเติม "การโจมตีซ้ำ" ได้รับการกำหนดใหม่ในโลกของ blockchain
ได้รับผลกระทบจากการโจมตีซ้ำ ปัญหาปัจจุบันของ Ethereum มีอยู่สำหรับผู้ใช้ เนื่องจากทั้ง ETH และ ETC มีปริมาณทางเศรษฐกิจที่ดี และหากผู้ใช้ไม่สามารถแก้ไขความเป็นไปได้ที่การดำเนินการของเขาจะถูกเล่นซ้ำ เขาต้องการขายสินทรัพย์อย่างใดอย่างหนึ่งในขณะที่รักษาสินทรัพย์อื่นไว้ หรือเขาต้องแยกมันเอง หรือเขาสามารถทำได้เท่านั้น ทำใน มันสามารถรับรู้ได้ด้วยความช่วยเหลือของการแลกเปลี่ยนเท่านั้น
การตอบสนอง: แยกก่อนซื้อขาย
เนื่องจาก BCH ถูก Fork โดยไม่มีการป้องกันการเล่นซ้ำ จึงไม่สามารถหลีกเลี่ยงการเล่นซ้ำได้ เพื่อหลีกเลี่ยงการสูญเสีย การแลกเปลี่ยนและผู้ใช้จำเป็นต้องตรวจสอบ BCH ABC/ BCH SV เพื่อแยกออกจากกัน
ย้อนกลับไปดู BCH เวอร์ชันอัปเกรดสองเวอร์ชัน: bitcoin abc 0.18.2 และ bitcoin sv 0.1
การแก้ไขหลักของเวอร์ชันโปรโตคอล Abc0.18.2 คือการเพิ่ม OPcode สองรหัส OP_CHECKDATASIG (CDS) และ OP_CHECKDATASIGVERIFY (DSV) เปลี่ยนกฎการสั่งซื้อของธุรกรรมในบล็อกจากการเรียงลำดับทอพอโลยี (TTOR) เป็นการเรียงลำดับตามรูปแบบบัญญัติ (CTOR)
การแก้ไขหลักของเวอร์ชันโปรโตคอล SV0.1 คือการคืนค่า opcodes ของ Bitcoin รุ่นแรกทั้งสี่ OPCode, OP_MUL, OP_LSHIFT, OP_RSHIFT, OP_INVERT ลบขีดจำกัด 201 opcodes สำหรับแต่ละสคริปต์ เพิ่มขีดจำกัดสูงสุดของขนาดบล็อกเป็น 128MB
เนื่องจากทั้งสองเวอร์ชันได้อัปเดตรหัสการดำเนินการแล้ว สำหรับผู้ใช้ที่มี BCH อยู่แล้ว การใช้รหัส OP ใหม่สำหรับการทำธุรกรรมจึงปลอดภัยกว่า จึงควรแยกรหัสออกก่อนใช้งานบัญชี
วิธีที่ง่ายและมีประสิทธิภาพที่สุดในการแยกคือการซื้อ UTXO เล็กน้อยของธุรกรรม coinbase จากกลุ่มการขุด 100 บล็อกหลังจากจุดแยก ส่งไปยังกระเป๋าเงิน BCH ของคุณ จากนั้นโอนยอดคงเหลือทั้งหมดไปยังที่อยู่ใหม่พร้อมกัน คุณต้องทำสิ่งนี้เพียงครั้งเดียวบนโซ่ และคุณสามารถแยกมันออกจากกันโดยสิ้นเชิง
หลังจากแยกสินทรัพย์ทั้งสองแล้ว คุณสามารถใช้ OPCode ใหม่ได้ และจะไม่มีอันตรายด้านความปลอดภัยใน OPCode ใหม่บนห่วงโซ่ BCH เนื่องจากถูกเล่นซ้ำ
ที่นี่ SECBIT Lab แจ้งเตือนผู้ถือ BCH และการแลกเปลี่ยนที่รองรับ ABC/BSV ให้ใช้ OPCode ใหม่อย่างระมัดระวังในการทำธุรกรรมก่อนที่จะแยก BSV ของคุณ/ผู้ใช้ของคุณเพื่อหลีกเลี่ยงการสูญเสียที่เกิดจากการเล่นซ้ำ
