อะไรคือ Double Spend Attack?
Double Spend Attack คือเมื่อมีคนพยายามใช้เหรียญเดิมสองครั้งโดยหลอกให้เครือข่ายยอมรับการชำระเงินหนึ่งรายการ จากนั้นค่อยๆ แทนที่ด้วยอันอื่น ลองนึกถึงการชำระเงินสำหรับรองเท้าผ้าใบ แล้วเดินออกจากร้าน จากนั้นย้อนกลับใบเสร็จเพื่อให้เงินกลับคืน มันคือเกมเรื่องจังหวะและการเห็นพ้องต้องกัน ไม่ใช่เวทมนตร์。
“มันไม่เกิดขึ้นถ้าการชำระเงินแสดงขึ้นมาเพียงครั้งเดียว” ผิดจนกว่าจะมีการยืนยันเพียงพอ Double Spend Attack ยังสามารถพลิกสคริปต์ได้ การเห็นก่อนหน้าไม่ได้หมายถึงข้อสรุปสุดท้าย
How Double Spend Attack works
จินตนาการถึงผู้บุกรุกที่จ่ายเงินให้ผู้ค้าในขณะที่ลับๆ เตรียมการชำระเงินที่ขัดแย้งกันซึ่งส่งเหรียญเดียวกันกลับไปยังตัวเอง หากเวอร์ชันของพวกเขาชนะการแข่งขันในการยอมรับ ผู้ค้าจะไม่ได้อะไรเลย
- Setup: ผู้โจมตีออกแบบธุรกรรมสองรายการที่ใช้เหรียญเดียวกัน
- Send: หนึ่งรายการไปยังผู้ค้า ซึ่งเห็นว่าแพร่กระจายและอาจแสดงว่า “ชำระเงินได้รับแล้ว”
- Compete: ผู้โจมตีผลักดันธุรกรรมที่สองเพื่อชิงความได้เปรียบในการรวมบล็อก
- Confirm: ไมน์นิ่งเพิ่มบล็อกผ่าน proof of work (PoW), และเถ้าแหล่งที่เติบโตเร็วกว่ามองว่าเป็นความจริง
- Reorg: หากเวอร์ชันของผู้โจมตีมีการยืนยันลึกกว่า การยืนยันก่อนหน้าจะกลายเป็นออฟชัน (orphaned) ซึ่งย้อนกลับการชำระเงินของผู้ค้า
ใช่ เวลากับแรงจูงใจก็ทำงานหนักในเรื่องนี้
Why Double Spend Attack Matters
แล้วถ้าใครพยายามแล้วล่ะ? คุณควรรู้เพราะมันทดสอบแบบจำลองความเชื่อมั่นของเงินที่เปิดกว้าง
- Benefit: การรู้ว่ามันทำงานอย่างไรช่วยให้คุณเลือกนโยบายการยืนยันที่ปลอดภัยและหลีกเลี่ยงความเสียใจแบบ instant regret
- Perspective: ระบบเปิดดำเนินการบนแรงจูงใจมากขึ้น มีแฮชเรตมากขึ้นและผู้เข้าร่วมที่ซื่อสัตย์ทำให้การโจมตียากขึ้นในเครือข่าย Decentralized
- Relevance: คุณจะเห็นสิ่งนี้ในการชำระเงินคริปโต, แลกเปลี่ยน, และแอปใดๆ ที่รับเหรียญก่อนการยืนยันลึก
สำหรับการชำระเงินจำนวนมาก รอการยืนยันหลายรายการ สำหรับการชำระเงินเล็ก ให้ใช้กฎความเสี่ยงอัจฉริยะเช่นข้อจำกัด การตรวจสอบชื่อเสียง หรือช่องทางชำระเงิน คุณในอนาคตจะขอบคุณตัวคุณเอง
Key Characteristics of Double Spend Attack
นี่คือสิ่งที่ทำให้มันต่างจากความล้มเหลวในการชำระเงินทั่วไป:
- Timing: มุ่งเป้าไปที่หน้าต่างสั้นๆ ก่อนที่ธุรกรรมจะได้รับการยืนยันอย่างลึก
- Reorg: นับไปที่ห่วงโซ่ที่ reorganize เพื่อให้เวอร์ชันของผู้โจมตีเป็นที่เห็นว่าเป็นจริง
- Incentive: ลวงล่อแรงจูงใจของ miner และเครือข่ายเพื่อชิงความได้เปรียบจากธุรกรรมที่ซื่อสัตย์
- Scope: เป้าหมายสุดท้ายคือการ double spending ด้วยชุดเหรียญเดียว
Variations
คุณจะได้ยินหลากหลายรูปแบบที่พูดถึงในแชทคริปโตและเธรดนักพัฒนา:
- Race: การแพร่ข่าวทันทีกันสองธุรกรรม ซึ่งมักเรียกว่า Race Attack.
- Finney: นักขุด pre-mines บล็อกที่มีธุรกรรมขัดแย้ง จากนั้นจ่ายกับเหยื่อก่อนปล่อยออกมา ซึ่งเรียกว่า Finney Attack.
- Majority: ด้วย hashrate เพียงพอ ผู้โจมตีสามารถเขียนประวัติศาสตร์ล่าสุดใหม่ได้ คลาสสิก 51% Attack.
Zero conf หมายถึงไม่ใช่การยืนยัน ในกรณีที่คุณรับชำระเงินทันที คุณกำลังเลือกความเร็วมากกว่าความปลอดภัย การ trade-off นั้นขึ้นอยู่กับคุณเอง
Example
ผู้โกงซื้อแล็ปท็อปในร้านค้า พนักงานอนุมัติธุรกรรมที่สดใหม่ และไม่กี่นาทีต่อมา เถ้าแหล่งที่เติบโตกลับมาช่วยผู้โจมตี ธุรกรรมขัดแย้ง ทำให้ผู้ค้เสียเหรียญและแล็ปท็อปไป
Fun Fact
Satoshi พูดถึงกลยุทธ์ double spend ในฟอรัมเมื่อเริ่มต้น บอกให้รอและการยืนยันชนะการทดลองส่วนใหญ่ก่อนที่เทค glam ใดๆ จะเข้ามา คำแนะนำเก่าที่ยังคงใช้ได้
Wrap-Up
ในหนึ่งประโยค: Double Spend Attack คือเกมจังหวะบน consensus และการป้องกันที่ดีที่สุดของคุณคือการยืนยันที่มีระเบียบบวกกับสติปัญญาเฉพาะทาง