ต้นฉบับ - โอเดลี่
ผู้เขียน - หนาน จื้อ

การแนะนำ
เมื่อวันที่ 20 ตุลาคม ผู้พัฒนาหลัก Bitcoin Core /dev/fd0 ได้ประกาศบนแพลตฟอร์ม Xจะยุติการมีส่วนร่วมในการพัฒนา Lightning Network และการใช้งาน รวมถึงการประสานงานการจัดการปัญหาด้านความปลอดภัยระดับโปรโตคอล。
/dev/fd0 หมายความว่าแต่ละโหนด Bitcoin มีพูลหน่วยความจำของตัวเอง ธุรกรรมจะถูกส่งต่อโดยโหนดเพียร์ หากใช้โหนด Lightning Network เพื่อเปิดช่องสัญญาณและยอมรับการส่งต่อ HTLC โหนดนั้นจะมีความเสี่ยงการโจมตีวงจรทดแทน(Replacement Cycling Attacks)。
การโจมตีแบบลูปทดแทน ที่นักพัฒนาอ้างถึงคืออะไรและใช้งานอย่างไร Odaily จะเปิดเผยในบทความนี้
เครือข่ายสายฟ้า
TPS ของเครือข่าย Bitcoin อยู่ที่ประมาณ 7 เท่านั้น และค่าธรรมเนียมการจัดการสูง Lightning Network จึงเกิดขึ้นเพื่อแก้ปัญหาความต้องการในการชำระเงินจำนวนเล็กน้อย
Lightning Network เป็นโซลูชันการปรับขนาดชั้นที่สองสำหรับ Bitcoin และสกุลเงินดิจิทัลอื่น ๆ ที่ออกแบบมาเพื่อแก้ปัญหาความสามารถในการปรับขนาดและความเร็วในการทำธุรกรรมของเครือข่ายสกุลเงินดิจิทัล
หลักการดำเนินการสามารถทำให้ง่ายขึ้นดังนี้:
ฝ่ายธุรกรรม A และ B ได้จัดตั้ง ช่องทางการทำธุรกรรม (จริงๆ แล้วเป็นกระเป๋าเงินหลายลายเซ็น)
A และ B เติมเงิน A1 และ B1 ตามลำดับ (ขั้นตอนนี้อยู่ในห่วงโซ่)
ธุรกรรมใดๆ ระหว่าง A และ B เกิดขึ้นนอกเครือข่าย และจำนวนเงินโอนสุทธิของ A คือ
อัปเดตธุรกรรมของ A1-X และ B1+X บนเชน
ด้วยกระบวนการข้างต้น ไม่ว่าธุรกรรม A และ B จะดำเนินการนอกเครือข่ายจำนวนเท่าใด พวกเขาจะต้องจ่ายค่าธรรมเนียมออนไลน์เพียงสองค่าธรรมเนียมเท่านั้น ซึ่งช่วยประหยัดเวลาได้มาก
สัญญาล็อคเวลาแฮช (HTLC)
แบบฟอร์มที่แนะนำข้างต้นจำกัดเฉพาะช่องทางการทำธุรกรรมโดยตรงระหว่าง A และ B และโหนดรีเลย์จะปรากฏสำหรับการชำระเงินข้ามช่องทางโหนดรีเลย์จะถ่ายทอดธุรกรรมระหว่างทั้งสองเพื่ออำนวยความสะดวกในการชำระเงินข้ามช่องทางและโหนดรีเลย์สามารถชาร์จทิปได้
แต่นี่กลับประสบปัญหา:จำเป็นต้องตรวจสอบให้แน่ใจว่าผู้เข้าร่วมทุกคนในแต่ละช่องทางมีความซื่อสัตย์และเชื่อถือได้มีความปลอดภัยผ่านลิงก์หลายช่องทาง
ดังนั้น HTLC (Hash Time-Lock Contract, Hash Time Lock Contract) จึงปรากฏขึ้น ธุรกรรมการชำระเงินด้วย HTLC สามารถทำให้ง่ายขึ้นเพื่อ:
A เตรียมรหัสลับ R และคำนวณค่าแฮชของมัน H
A กำหนดเวลา T
A ส่งธุรกรรมการชำระเงินด้วย HTLC ไปยัง B ในที่สุดธุรกรรมจะถูกสร้างขึ้นเมื่อตรงตามเงื่อนไขสองข้อต่อไปนี้เท่านั้น
B ตอบรหัสลับ R (ตรวจสอบโดย H)
เวลาตอบของ B อยู่ภายใน T (เช่น คำตอบให้ภายใน 10 บล็อก)
หาก B ไม่ทราบรหัสผ่าน หรือคำตอบหมดเวลา เงินจะถูกส่งคืนให้กับ A
ขั้นตอนการทำธุรกรรมปกติ
ผ่าน HTLC ข้างต้น กระบวนการชำระเงินที่เกี่ยวข้องกับโหนดรีเลย์มีดังนี้:
ผู้รับคนสุดท้าย C มอบรหัสลับให้กับผู้ส่ง A
A เริ่มต้นการชำระเงิน HTLC ด้วยค่าแฮช H (โปรดทราบว่าขณะนี้เงินยังไม่ถึงมือของบี)
B รับข้อมูลการชำระเงินและเริ่มการชำระเงิน HTLC ให้กับ C โดยใช้ค่าแฮช H
เพื่อรับเงิน C จะตอบรหัสและรับเงิน บีรู้รหัสผ่านแล้วในเวลานี้
B ใช้รหัสลับเพื่อรับการชำระเงินที่ริเริ่มโดย A รับเงิน และการทำธุรกรรมเสร็จสมบูรณ์

กระบวนการที่เกี่ยวข้องกับทั้งสามนั้นเป็นไปตามข้างต้น สามารถเพิ่ม Relay Node อีกหลายจุดตรงกลางได้ในขณะที่โหมดการชำระเงินยังคงไม่เปลี่ยนแปลงการชำระเงินจะถูกส่งไปยังผู้รับคนสุดท้ายผ่านลูกโซ่จากนั้นรหัสลับจะแพร่กระจายกลับไปยัง โหนดรีเลย์เริ่มต้น สุดท้าย ปิดผนึกข้อตกลง
หากโหนดรีเลย์ไม่ได้รับสัญญาณลับ R เป็นเวลานาน(ฉันจะไม่ให้คำตอบ กำหนดเวลาจะถูกกำหนดโดยโหนดรีเลย์เอง)จากนั้นโหนดรีเลย์สามารถเลือกปิดช่องได้หากอัพโหลดสำเร็จจากนั้นการชำระเงินที่ดำเนินการโดย B จะ ไม่ถูกต้อง และจะไม่มีการสูญเสียเงิน
การโจมตีทดแทนวงจร
กลับไปที่หลักการพื้นฐานของ HTLC นอกเหนือจากการตอบรหัสลับแล้ว โหนดรีเลย์ยังต้องตรงตามเงื่อนไขอื่น เวลาที่โหนดรีเลย์ตอบอยู่ภายใน T และผู้โจมตีที่เป็นอันตรายกำลังกำหนดเป้าหมายจุดนี้เพื่อโจมตี:
A และ C สมรู้ร่วมคิดกันอย่างมุ่งร้าย และเหยื่อคือรีเลย์โหนด B (B ต้องใช้โหนดถัดไปเพื่อตอบภายใน 3 บล็อก)
A เริ่มต้นการชำระเงินให้กับ B (สมมติว่าความสูงของบล็อกคือ 1,000 ในขณะนี้) และต้องตอบกลับก่อนบล็อก 1,020
B เริ่มต้นการชำระเงินให้กับ C (ความสูงของบล็อก 1,005)
เมื่อความสูงของบล็อกคือ 1008 B จะเห็นว่า C ยังไม่ได้ตอบ จึงตัดสินใจปิดช่องซึ่งจะมีผลในบล็อก 1009
C เริ่มต้นธุรกรรมที่มีก๊าซสูง 1 (บล็อก 1008) ป้องกันไม่ให้ธุรกรรมที่เริ่มต้นโดย B เข้าสู่พูลหน่วยความจำ
C เริ่มต้นธุรกรรมที่มีก๊าซสูง 2 (บล็อก 1009) แต่ B ยังคงไม่สามารถเข้าสู่พูลหน่วยความจำได้
C ดำเนินการในวงวนไม่สิ้นสุดจนถึงบล็อก 1,020 ให้รหัสผ่าน R และถอนเงิน
แม้ว่า B จะได้รับรหัสผ่าน แต่เขาไม่มีเวลาตอบสนองต่อการชำระเงินที่ริเริ่มโดย A อีกต่อไป เงินถูกส่งคืนให้กับ A และการชำระเงินให้กับ C ก็ถูกสร้างขึ้น ในที่สุด การโจมตีแบบทดแทนแบบวนรอบ ก็ตระหนักได้. นอกจากนี้ A และ C ยังสามารถบรรลุการใช้จ่ายสองเท่าโดยการสมรู้ร่วมคิดและโจมตีธุรกรรมที่ปิดของ B แบบวนรอบ
บทสรุป
แต่ก็ไม่ได้หมายความว่าผู้โจมตีสามารถทำทุกอย่างที่ต้องการและขโมยเงินใน Lightning Network ผู้เขียนยังได้เสนอวิธีแก้ปัญหาห้าประการในบทความต้นฉบับ เช่น พูลหน่วยความจำในตัวเครื่องและการตรวจสอบการรับส่งข้อมูลการถ่ายทอดธุรกรรม หน่วยความจำของผู้ขุด การตรวจสอบสระว่ายน้ำ ฯลฯ
อนาคตสดใส แต่เส้นทางคดเคี้ยว ในปีนี้ สิ่งใหม่ๆ มากมาย เช่น Ordinals, BRC-20 และ Taproot Asset ได้ถือกำเนิดขึ้นบนเครือข่าย Bitcoin แม้ว่าจะมีปัญหาอยู่ แต่การพัฒนาอย่างต่อเนื่องจะช่วยแก้ไขได้ในที่สุด
อ้างอิง
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf


