ผู้เขียน: Daii แหล่งที่มา: mirrorเมื่อวันพุธที่แล้ว (12 มีนาคม) มีผู้ค้าสกุลเงินดิจิทัลคนหนึ่งสูญเสียเงินไป 215,000 ดอลลาร์จากการถูกโจมตี MEV ในครั้งเดียว! [d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png](https://img.gateio.im/social/moments-67bc615c4079508b573b8382caadd1b7 "7357319")กล่าวง่ายๆ ว่าผู้ใช้คนนี้ต้องการที่จะแลกเปลี่ยน USDC มูลค่า 220,800 ดอลลาร์สหรัฐในพูลการซื้อขาย Uniswap v3 ให้เป็น USDT ที่มีมูลค่าเท่ากัน แต่กลับได้รับเพียง 5,272 USDT เท่านั้น ทรัพย์สินของเขาหายไปทันที 215,700 ดอลลาร์ในเวลาเพียงไม่กี่วินาที ดูจากภาพด้านล่าง.! [yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png](https://img.gateio.im/social/moments-dda25a4ab2d2a6c1bf47d35f3cabff4c "7357320")ภาพด้านบนคือภาพหน้าจอของบันทึกการทำธุรกรรมบนบล็อกเชน สาเหตุที่ทำให้เกิดโศกนาฏกรรมนี้คือการเผชิญหน้ากับ "การโจมตีแบบแซนด์วิช" (Sandwich Attack) ที่มีชื่อเสียงในโลกบล็อกเชน.! [kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png](https://img.gateio.im/social/moments-9d703cdb16c19d6642b87cfb65cf2377 "7357321")ผู้ที่เปิดเผยการโจมตี MEV ครั้งนี้เป็นคนแรกคือ Michael (ดูจากภาพด้านบน) เขาอธิบายว่า:> *บอท MEV ได้ทำการนำหน้าธุรกรรมโดยการถอนสภาพคล่องทั้งหมดของ USDC ออกไป หลังจากที่ธุรกรรมดำเนินการเสร็จสิ้น พวกเขาก็นำสภาพคล่องกลับเข้าไป ผู้โจมตีได้ให้ทิปกับบล็อคบิลเดอร์ (bobTheBuilder) $200k และทำกำไรได้ $8k จากธุรกรรมนี้.*> > *แปล: MEV หุ่นยนต์ใช้การแลกเปลี่ยนสภาพคล่อง USDC ทั้งหมดเพื่อทำการ tx ก่อน การทำธุรกรรมเสร็จสิ้น พวกเขาใส่สภาพคล่องกลับเข้าไป ผู้โจมตีได้ให้รางวัลแก่ผู้สร้างบล็อก (bobTheBuilder) เป็นเงิน 200,000 ดอลลาร์ และทำกำไรจากธุรกรรมนี้เป็นเงิน 8,000 ดอลลาร์.*> > เนื้อหาข้างต้นมีการพิมพ์ผิด โดยหุ่นยนต์โจมตี MEV แลกเปลี่ยนเป็น USDT จำนวนมาก ไม่ใช่ USDC.อย่างไรก็ตาม หลังจากที่ได้อ่านคำอธิบายและข่าวรายงานของเขา คุณอาจยังรู้สึกงุนงง เพราะมีคำศัพท์ใหม่มากมาย เช่น การโจมตีแบบแซนด์วิช (Sandwich Attack), การทำธุรกรรมก่อน (front-ran the tx), การนำสภาพคล่องกลับ (put back the liquidity), การให้ทิปกับผู้สร้างบล็อก (tipped a block builder) เป็นต้น.วันนี้เราจะใช้การโจมตี MEV นี้เป็นตัวอย่างเพื่อวิเคราะห์กระบวนการทั้งหมดและพาคุณไปสำรวจโลกมืดของ MEVก่อนอื่นเราต้องอธิบายว่า MEV คืออะไร# 1. MEV คืออะไร?MEV เดิมถูกเรียกว่า มูลค่าเพิ่มเติมที่สามารถดึงออกมาได้จากการขุด (Miner Extractable Value) ซึ่งหมายถึงกำไรเพิ่มเติมที่ขุดสามารถได้รับจากการจัดเรียงใหม่ แทรก หรือยกเลิกการทำธุรกรรมในบล็อกเชนบล็อก ซึ่งการกระทำนี้อาจทำให้ผู้ใช้ทั่วไปต้องจ่ายค่าใช้จ่ายที่สูงขึ้น หรือได้รับราคาทำธุรกรรมที่ไม่เอื้ออำนวยมากขึ้น.เมื่อเครือข่ายบล็อกเชนเช่น Ethereum เปลี่ยนจากกลไกฉันทามติแบบการพิสูจน์การทำงาน (Proof-of-Work, PoW) ไปสู่กลไกฉันทามติแบบการพิสูจน์การถือครอง (Proof-of-Stake, PoS) อำนาจในการควบคุมลำดับการทำธุรกรรมได้ถูกโอนไปยังผู้ตรวจสอบแทนที่จะเป็นนักขุด ดังนั้นคำศัพท์จึงเปลี่ยนจาก "ค่าที่นักขุดสามารถดึงออกมาได้" (Miner Extractable Value) เป็น "ค่าที่สามารถดึงออกมาได้สูงสุด" (Maximal Extractable Value).แม้ว่าชื่อจะเปลี่ยนไป แต่แนวคิดหลักในการดึงมูลค่าผ่านการจัดการลำดับการซื้อขายยังคงเหมือนเดิมเนื้อหาข้างบนยังค่อนข้างเฉพาะทาง คุณเพียงแค่ต้องจำไว้ว่า: MEV มีอยู่เพราะว่าอดีตนักขุดและปัจจุบันผู้ตรวจสอบมีสิทธิ์ในการจัดลำดับการทำธุรกรรมในหน่วยความจำ (mempool) การจัดลำดับนี้เกิดขึ้นภายในบล็อกหนึ่ง โดยตอนนี้ Ethereum ประมาณ 11 วินาทีจะสร้างบล็อกหนึ่ง ดังนั้นหมายความว่า ทุก ๆ 11 วินาทีจะมีการใช้สิทธินี้เช่นกัน เช่นเดียวกับการโจมตี MEV ในครั้งนี้ก็เกิดขึ้นจากการจัดลำดับของผู้ตรวจสอบเช่นกัน.คลิกที่ลิงก์นี้ คุณจะเห็นเนื้อหาของการทำธุรกรรมที่รวมอยู่ในบล็อกหมายเลข 22029771 ซึ่งเกี่ยวข้องกับการโจมตีครั้งนี้ ตามภาพด้านล่าง.! [gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png](https://img.gateio.im/social/moments-d403f38c9e9df2a773d06e8a256852fa "7357322")โปรดทราบว่าการซื้อขายในภาพที่ 1, 2, 3 คือการโจมตี MEV ที่กล่าวถึงในตอนต้นของบทความนี้ ซึ่งลำดับนี้ถูกจัดเรียงโดยผู้ตรวจสอบ (bobTheBuilder) ทำไมถึงเป็นเช่นนี้?# 2. หลักการของ MEVในการเข้าใจการทำงานของ MEV เราจำเป็นต้องเข้าใจว่าบล็อกเชนบันทึกและอัปเดตข้อมูลอย่างไร### 2.1 กลไกการอัปเดตสถานะบล็อกเชนบล็อกเชนสามารถมองว่าเป็นบันทึกที่เติบโตอย่างต่อเนื่อง ซึ่งบันทึกทุกการทำธุรกรรมที่เกิดขึ้น สถานะของบันทึกนี้ เช่น ยอดเงินในแต่ละบัญชี ปริมาณสำรองของโทเค็นต่างๆ ในพูลการซื้อขาย Uniswap เป็นต้น จะถูกกำหนดโดยการทำธุรกรรมก่อนหน้าเมื่อบล็อกใหม่ถูกเพิ่มลงในบล็อกเชน การทำธุรกรรมทั้งหมดที่รวมอยู่ในบล็อกนี้จะถูกดำเนินการตามลำดับที่ปรากฏในบล็อกทีละรายการ ทุกครั้งที่ทำธุรกรรมหนึ่ง ธุรกิจทั้งหมดในบล็อกเชนจะมีการเปลี่ยนแปลงตามที่เกี่ยวข้อง.นั่นหมายความว่า ไม่เพียงแต่ลำดับของบล็อกจะสำคัญ แต่ลำดับของการทำธุรกรรมในบล็อกก็สำคัญเช่นกัน แล้วลำดับของการทำธุรกรรมในบล็อกถูกกำหนดอย่างไร?### 2.2 ผู้ตรวจสอบตัดสินใจเรียงลำดับการทำธุรกรรมเมื่อผู้ใช้ทำธุรกรรมบนเครือข่ายบล็อกเชน เช่น ธุรกรรมนี้ที่แปลง USDC เป็น USDT ผ่าน Uniswap ธุรกรรมจะถูกส่งไปยังโหนดในเครือข่ายก่อน หลังจากการตรวจสอบเบื้องต้น ธุรกรรมนี้จะเข้าสู่พื้นที่ที่เรียกว่า "หน่วยความจำพูล" (mempool) หน่วยความจำพูลเปรียบเสมือนพื้นที่รอ ซึ่งธุรกรรมในนั้นยังไม่ได้รับการยืนยันและเพิ่มลงในบล็อกถัดไปในบล็อกเชน.อดีตคนขุดเหมือง (ในระบบ PoW) ปัจจุบันเป็นผู้ตรวจสอบ (ในระบบ PoS) มีสิทธิ์ในการเลือกธุรกรรมจากหน่วยความจำและตัดสินใจลำดับการเรียงธุรกรรมเหล่านี้ในบล็อกถัดไป.ลำดับของธุรกรรมในบล็อกมีความสำคัญอย่างยิ่ง ก่อนที่บล็อกจะได้รับการยืนยันสุดท้ายและถูกเพิ่มลงในบล็อกเชน ธุรกรรมในบล็อกนี้จะถูกดำเนินการตามลำดับที่ผู้ตรวจสอบ (เช่น bobTheBuilder) กำหนด นั่นหมายความว่า หากบล็อกหนึ่งมีธุรกรรมหลายรายการที่มีปฏิสัมพันธ์กับพูลธุรกรรมเดียวกัน ลำดับการดำเนินการของธุรกรรมเหล่านี้จะส่งผลโดยตรงต่อผลลัพธ์ของธุรกรรมแต่ละรายการ.ความสามารถนี้ทำให้ผู้ตรวจสอบสามารถจัดการธุรกรรมเฉพาะได้ก่อน, เลื่อนหรือยกเว้นธุรกรรมอื่น ๆ, หรือแม้แต่แทรกธุรกรรมของตนเองเพื่อเพิ่มผลกำไรสูงสุด.การสั่งซื้อธุรกรรมนี้มีความสําคัญเท่าเทียมกันและเป็นไปไม่ได้ที่จะโจมตีได้สําเร็จหากมีความแตกต่างเล็กน้อยในพูล### 2.3 การจัดลําดับธุรกรรมในการโจมตี MEV นี้เรามาทำความเข้าใจกันอย่างง่าย ๆ เกี่ยวกับการทำธุรกรรม 3 รายการที่เกี่ยวข้องกับการโจมตี MEV ครั้งนี้:! [dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png](https://img.gateio.im/social/moments-47012b5816d982faf857ee158069180b "7357323")* การทำธุรกรรม 1 (ธุรกรรมแรกของผู้โจมตี): ดำเนินการก่อนการทำธุรกรรมของเหยื่อ ธุรกรรมนี้มักมีวัตถุประสงค์เพื่อเพิ่มราคาของโทเค็นที่เหยื่อต้องการทำธุรกรรม.* การทำธุรกรรม 2 (ธุรกรรมของเหยื่อ): ดำเนินการหลังจากการทำธุรกรรมครั้งแรกของผู้โจมตี เนื่องจากการกระทำก่อนหน้านี้ของผู้โจมตี ทำให้ราคาที่อยู่ในพูลธุรกรรมในขณะนี้ไม่เป็นประโยชน์ต่อเหยื่อ เขาจำเป็นต้องจ่าย USDC มากขึ้นเพื่อแลกกับ USDT ที่มีมูลค่าเท่ากัน หรือเขาอาจจะได้ USDT น้อยลง.* การทำธุรกรรม 3 (ธุรกรรมที่สองของผู้โจมตี): จะดำเนินการหลังจากธุรกรรมของเหยื่อ ธุรกรรมนี้มีวัตถุประสงค์เพื่อใช้ประโยชน์จากการเปลี่ยนแปลงราคาใหม่ที่เกิดจากธุรกรรมของเหยื่อเพื่อทำกำไร.ผู้ตรวจสอบการโจมตี MEV ครั้งนี้คือ bob-The-Builder.eth ซึ่งเป็นผู้รับผิดชอบในการจัดเรียงธุรกรรมให้เป็นลำดับ 1, 2, 3 แน่นอนว่า bobTheBuilder ไม่ได้ทำงานฟรี ๆ เขามีส่วนร่วมในการจัดเรียงครั้งนี้เพื่อรับรายได้มากกว่า 100 ETH ในขณะที่ผู้โจมตี MEV กลับมีรายได้เพียง 8000 ดอลลาร์ โดยรายได้ของพวกเขามาจากธุรกรรมที่สองของเหยื่อ.ในประโยคเดียว ผู้โจมตี (MEV bot) และผู้ตรวจสอบ (bobTheBuilder) สมรู้ร่วมคิดทำให้เหยื่อของการทำธุรกรรมครั้งที่สองเสียเงิน 215,000 ดอลลาร์ โดยที่ผู้โจมตีได้รับ 8,000 ดอลลาร์ และผู้ตรวจสอบได้รับ 200,000 ดอลลาร์ (มากกว่า 100 ETH)วิธีการโจมตีที่พวกเขาใช้มีชื่อที่สมจริงว่า — การโจมตีแบบแซนด์วิช ด้านล่างนี้ เราจะอธิบายทีละธุรกรรม เพื่อให้คุณเข้าใจอย่างถ่องแท้ว่า MEV การโจมตีแบบแซนด์วิชที่ค่อนข้างซับซ้อนนั้นเป็นอย่างไร?# 3. การวิเคราะห์การโจมตีแบบแซนวิชทั้งหมดเหตุผลที่เรียกว่า การโจมตีแบบแซนวิช (Sandwich Attack) ก็เพราะว่าการทำธุรกรรมสองรายการของผู้โจมตี (ธุรกรรม 1 และ ธุรกรรม 3) ถูกวางไว้ก่อนและหลังธุรกรรมของเหยื่อ (ธุรกรรม 2) ทำให้ลำดับธุรกรรมทั้งหมดมีลักษณะคล้ายกับโครงสร้างของแซนวิช (ดูจากภาพด้านบน).การทำธุรกรรม 1 และการทำธุรกรรม 3 มีหน้าที่ที่แตกต่างกัน โดยทั่วไปแล้ว การทำธุรกรรม 1 จะรับผิดชอบในการกระทำความผิด และการทำธุรกรรม 3 จะรับผิดชอบในการแบ่งปันผลประโยชน์ โดยเฉพาะอย่างยิ่ง ขั้นตอนทั้งหมดเป็นดังนี้:### 3.1 การซื้อขาย 1 ,รับผิดชอบในการเพิ่มราคา USDTคลิกที่ลิงค์ของธุรกรรมหมายเลข 1 ในรูปด้านบนคุณจะเห็นรายละเอียดของธุรกรรมหมายเลข 1 และผู้โจมตีได้ขึ้นราคาของ USDT โดยตรงนั่นคือเขาใช้ 18.65 ล้าน USDC เพื่อแลกเปลี่ยน 17.58 ล้าน USDT ทั้งหมดในนั้นดูรูปด้านล่าง! [vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png](https://img.gateio.im/social/moments-e7c72d47bc43222d558fddb6f32879b0 "7357324")ในขณะนี้ สภาพคล่องในพูลที่เหลืออยู่คือ USDC จำนวนมากและ USDT จำนวนเล็กน้อย หากตามรายงานข่าวกล่าวว่า ก่อนการโจมตี สภาพคล่องของ Uniswap มี USDC ประมาณ 19.8 ล้านและ USDT จำนวนประมาณ 19.8 ล้าน เมื่อตรวจสอบการทำธุรกรรม 1 ครั้ง จะเหลือ USDT เพียง 2.22 ล้าน (=1980-1758) ขณะที่ยอดคงเหลือของ USDC เพิ่มขึ้นเป็นประมาณ 38.45 ล้าน (=1980+1865)ในขณะนี้อัตราการแลกเปลี่ยนระหว่าง USDC และ USDT ในพูลนี้ไม่ใช่ 1:1 อีกต่อไป แต่เป็น 1:17 นั่นหมายความว่าตอนนี้ต้องใช้ USDC จำนวน 17 ถึงจะแลกได้ 1 USDT แต่สัดส่วนนี้เป็นเพียงประมาณการ เพราะพูลนี้เป็น V3 ซึ่งมีสภาพคล่องที่ไม่กระจายอย่างสม่ำเสมอ.อีกสิ่งหนึ่งฉันจะบอกคุณ ในความเป็นจริงผู้โจมตีไม่ได้ใช้ 18.65 ล้าน USDC ในคราวเดียวและ USDC ที่ใช้จริงคือ 1.09 ล้านซึ่งน้อยกว่า 6% เขาทําได้อย่างไร? เราจะพูดถึงรายละเอียดเพิ่มเติมเมื่อเราโจมตีเสร็จแล้ว### 3.2 การค้า 2, ดำเนินการ 22 หมื่น USDC แลกเปลี่ยน USDTคลิกที่ลิงก์การซื้อขาย 2 ในภาพด้านบนเพื่อดูภาพด้านล่าง.! [x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png](https://img.gateio.im/social/moments-14d096e86860638a4cc3d9e4d5e49bf5 "7357325")ตามภาพด้านบน การทำธุรกรรม 2 ของเหยื่อได้รับผลกระทบจากธุรกรรม 1 ทำให้ 220,000 USDC ได้รับเพียง 5,272 USDT โดยไม่รู้ตัวสูญเสีย 170,000 USDT ทำไมถึงบอกว่าไม่รู้ตัว? เพราะถ้าเหยื่อทำการเทรดผ่าน Uniswap ขณะที่เขาส่งคำสั่งซื้อ เขาจะเห็นหน้าจอที่เป็นดังนี้.! [rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png](https://img.gateio.im/social/moments-7b6b317d7d79f6f0c8895dafe0943718 "7357326")จากภาพด้านบนคุณจะเห็นว่าผู้เสียหายควรจะได้รับการรับประกันอย่างน้อย 220,000 บาท แต่ผู้เสียหายสุดท้ายได้รับเพียง 5,000 กว่า USDT เท่านั้น เนื่องจากเกิดการลื่นไถลอย่างมากถึงมากกว่า 90% อย่างไรก็ตาม Uniswap มีการจำกัดการลื่นไถลสูงสุดเป็นค่าเริ่มต้นที่ 5.5% ดูจากภาพด้านล่าง.! [Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png](https://img.gateio.im/social/moments-df949660ad6d798cd34325db11a299c8 "7357328")กล่าวอีกนัยหนึ่ง หากผู้เสียหายทำการซื้อขายผ่านหน้าจอ Uniswap เขาจะต้องได้รับ USDT อย่างน้อย 208381 ( = 220510 \* 94.5% ) คุณอาจสงสัยว่าทำไมบันทึกใน blockchain ข้างต้นถึงแสดงว่าการทำธุรกรรมนี้เกิดขึ้นที่ "Uniswap V3"เนื่องจาก ฟรอนต์เอนด์และแบ็คเอนด์ของการทำธุรกรรมบล็อกเชนแยกจากกัน ส่วนที่กล่าวถึงข้างต้น "Uniswap V3" หมายถึงพูลของ Uniswap ระหว่าง USDC-USDT ซึ่งพูลนี้เป็นสาธารณะ ทุกฟรอนต์เอนด์ในการทำธุรกรรมสามารถทำการซื้อขายผ่านพูลนี้ได้.ก็เพราะเหตุนี้ มีคนสงสัยว่าผู้เสียหายไม่ธรรมดา ไม่ใช่คนทั่วไป มิฉะนั้นจะไม่เกิดการลื่นไถลขนาดนี้ อาจจะใช้การโจมตี MEV ในการฟอกเงิน เรื่องนี้เราจะพูดถึงในภายหลัง.### 3.3 การซื้อขาย 3, เก็บเกี่ยว + แบ่งปัน! [hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png](https://img.gateio.im/social/moments-81fc07388c7d7d5ced7aad26be228a6e "7357332")คลิกที่ลิงก์เพื่อดูรายละเอียดของการซื้อขายที่ 3 ตามที่แสดงในภาพด้านบน เราจะพูดถึงการซื้อขาย A, B และ C ทีละอย่าง.การซื้อขาย A ทำให้สภาพคล่องในสระกลับสู่ปกติ โดยใช้ USDT จำนวน 17.32 ล้าน เพื่อแลกคืน USDC จำนวน 18.6 ล้านการทำธุรกรรม B, การเตรียมการแบ่งปันผลกำไร, แปลงรายได้บางส่วน——20.4 แสน USDC เป็น 105 ETH;ทำธุรกรรม C, แบ่งผลประโยชน์, ชำระ 100.558 ETH ให้กับผู้ตรวจสอบ bob-The-Builder.eth.จนถึงตอนนี้ การโจมตีแบบแซนด์วิชสิ้นสุดลงแล้วตอนนี้มาตอบคำถามที่สำคัญที่กล่าวถึงข้างต้น: ผู้โจมตีใช้ 1,090,000 USDC อย่างไรในการโจมตี 18,000,000.# 4. ผู้โจมตีทำการโจมตีบ่อมูลค่า 1800 ล้าน USDC ได้อย่างไรเหตุผลที่ผู้โจมตีสามารถใช้เพียง 1.09 ล้าน USDC เพื่อให้บรรลุการโจมตี 18 ล้านดอลลาร์เป็นเพราะมีกลไกพิเศษและมหัศจรรย์ในโลกบล็อกเชน - Flash Swap ของ Uniswap V3### 4.1 Flash Swap คืออะไร?พูดง่ายๆ ก็คือ:> การแลกเปลี่ยนแบบทันทีช่วยให้ผู้ใช้สามารถถอนสินทรัพย์จากพูล Uniswap ในการทำธุรกรรมเดียวกันก่อน จากนั้นจึงใช้สินทรัพย์อื่น (หรือสินทรัพย์เดียวกันพร้อมค่าธรรมเนียม) เพื่อชำระคืน.> > เพียงแค่การดำเนินการทั้งหมดเสร็จสิ้นในธุรกรรมเดียว Uniswap ก็อนุญาตให้มีพฤติกรรม "รับของก่อน จ่ายทีหลัง" ได้ โปรดทราบว่าต้องเสร็จสิ้นในธุรกรรมเดียว การออกแบบเช่นนี้เป็นการรับรองความปลอดภัยของแพลตฟอร์ม Uniswap เอง:* การกู้ยืมที่ไม่มีความเสี่ยง: Uniswap อนุญาตให้ผู้ใช้ถอนเงินจากพูลชั่วคราวโดยไม่มีหลักประกัน (คล้ายกับการกู้ยืม) แต่ต้องชำระคืนทันทีเมื่อการซื้อขายเสร็จสิ้น.* ความเป็นอะตอม (Atomicity): การดำเนินการทั้งหมดต้องเป็นอะตอม ต้องสำเร็จทั้งหมด (เงินคืน) หรือไม่ก็ล้มเหลวโดยสิ้นเชิง (การทำธุรกรรมย้อนกลับ)การออกแบบการแลกเปลี่ยนแบบทันทีมีจุดมุ่งหมายเพื่อให้สามารถทำการเก็งกำไรบนเครือข่ายได้อย่างมีประสิทธิภาพมากขึ้น (Arbitrage) แต่กลับโชคร้ายที่ถูกผู้โจมตี MEV ใช้ประโยชน์ กลายเป็นเครื่องมือในการควบคุมตลาด.### 4.2 การแลกเปลี่ยนฟ้าผ่า ช่วยสนับสนุนได้อย่างไร?เรามาดูภาพกันทีละขั้นตอนเพื่อทำความเข้าใจว่าการแลกเปลี่ยนฟ้าผ่าครั้งนี้เกิดขึ้นได้อย่างไร ดูภาพด้านล่าง.! [S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png](https://img.gateio.im/social/moments-c4ee247a0c290ba883ac8523d6d1d353 "7357333")* F1 ผู้โจมตียืม 1,090,000 USDC จาก AAVE โดยใช้ 701 WETH ของตนเอง;* F2 ผู้โจมตีเริ่มต้นการขอแลกเปลี่ยนแบบฟ้าผ่า โดยดึง USDT จำนวน 17,580,000 ออกจากสระ Uniswap (ในขณะนี้ไม่จำเป็นต้องชำระเงินล่วงหน้า) บัญชีของผู้โจมตีเพิ่มขึ้นชั่วคราวเป็น 17,580,000 USDT;* F3 ผู้โจมตีได้รวบรวม USDT จำนวน 17,580,000 รายการไปยัง Curve Pool อย่างรวดเร็ว และแลกเปลี่ยนกลับเป็น USDC จำนวน 17,550,000 บัญชีผู้โจมตีมี USDT ลดลง 17,580,000 และ USDC เพิ่มขึ้น 17,550,000 จากภาพด้านล่างคุณจะเห็นว่าผู้โจมตีเลือก Curve เนื่องจากมีสภาพคล่องที่เพียงพอ USDT มีมากกว่า 70,540,000 และ USDC มี 50,710,000 การลื่นไถลค่อนข้างต่ำ.! [o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png](https://img.gateio.im/social/moments-62dd860bfa0a293669a8f2811178afa7 "7357334")* ผู้โจมตี F4 จะนำ USDC จำนวน 17.55 ล้านที่แลกเปลี่ยนมาจาก Curve รวมกับ USDC จำนวน 1.09 ล้านที่เตรียมไว้เอง (จากการกู้ยืม Aave) รวมเป็น 18.64 ล้าน USDC และชำระคืนให้ Uniswap ในครั้งเดียว เสร็จสิ้นการแลกเปลี่ยนแบบฟ้าผ่า;หลังจากการทำธุรกรรมนี้ (ธุรกรรม 1) ยอดเงินในบัญชีของผู้โจมตีลดลง 1,090,000 USDC เนื่องจากจาก 18,640,000 USDC ที่คืนให้กับ Uniswap มีเพียง 17,550,000 USDC เท่านั้นที่แลกมาจาก Curve ส่วนที่เหลืออีก 1,090,000 USDC เป็นเงินทุนส่วนตัวของผู้โจมตี.คุณน่าจะสังเกตเห็นว่า การทำธุรกรรมนี้ทำให้ผู้โจมตีสูญเสียไป 1,090,000 บาท แต่ธุรกรรมที่ 3 หลังจากนั้น ซึ่งใช้วิธีการแลกเปลี่ยนที่รวดเร็ว ไม่เพียงแต่ได้เงินคืน 1,090,000 USDC เท่านั้น แต่ยังทำกำไรได้อีกกว่า 200,000 บาท ด้วย.! [oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png](https://img.gateio.im/social/moments-4d8ba888da24827255042f82bc4e3e90 "7357335")ต่อไปเราจะวิเคราะห์ข้อมูลจากการซื้อขาย 3 ทีละขั้นตอน.* K1 ผู้โจมตี ถอน USDC 18.6 ล้านเหรียญจาก Uniswap โดยใช้การแลกเปลี่ยนแบบ Lightning;+ K2 ผู้โจมตีได้แลกเปลี่ยน USDC จำนวน 17.3 ล้านเหรียญซึ่งเพิ่งถอนจาก Uniswap โดยใช้ส่วนหนึ่งเพื่อแลกกลับเป็น USDT จำนวน 17.32 ล้านเหรียญ;* K1 ผู้โจมตีได้คืน USDT จำนวน 17,320,000 ที่แลกกลับมาจาก Curve ให้กับ Uniswap การแลกเปลี่ยนแบบทันทีเสร็จสมบูรณ์ คุณต้องระวังว่า ผู้โจมตีได้ใช้เงินเพียง 17,300,000 USDC ผ่าน K2 เพื่อให้ได้ USDT จำนวน 17,320,000 ที่เหลืออีก 1,300,000 (= 1,860 - 1,730) USDC มีเงินทุนของตนเอง 1,090,000 ส่วนที่เหลืออีก 210,000 USDC คือกำไรจากการโจมตีครั้งนี้.* ผู้โจมตี K3 ส่งคืนเงินต้นให้กับ AAVE เอา 701 WETH แลกเปลี่ยน 200,000 USDC เป็น 105 ETH และส่ง 100.558 ETH ไปยังผู้ตรวจสอบความถูกต้องเป็นทิป (ประมาณ 200,000 ดอลลาร์) เหลือรายได้น้อยกว่า 10,000 ดอลลาร์คุณอาจจะประหลาดใจว่าทำไมผู้โจมตีถึงยอมมอบผลกำไรสูงถึง 200,000 ดอลลาร์ให้กับผู้ตรวจสอบ?### 4.3 ทำไมต้องให้ "ทิป" 200,000 ดอลลาร์?จริงๆ แล้ว นี่ไม่ใช่ความเอื้อเฟื้อ แต่เป็นเงื่อนไขที่จำเป็นสำหรับการโจมตี MEV ประเภทการโจมตีแซนด์วิชที่ประสบความสำเร็จ:* หัวใจของการโจมตีที่ประสบความสำเร็จคือการควบคุมลำดับการทำธุรกรรมอย่างแม่นยำ ซึ่งผู้ควบคุมลำดับการทำธุรกรรมก็คือผู้ตรวจสอบ (bobTheBuilder)。* ผู้ตรวจสอบไม่เพียงแต่ช่วยให้ผู้โจมตีมั่นใจได้ว่าธุรกรรมของเหยื่ออยู่ระหว่างการโจมตี แต่สิ่งที่สำคัญกว่าคือผู้ตรวจสอบสามารถมั่นใจได้ว่าหุ่นยนต์ MEV ที่แข่งขันกันอื่น ๆ จะไม่สามารถแซงคิวหรือรบกวนการโจมตีได้อย่างราบรื่น.ดังนั้นผู้โจมตีจึงยอมสละกำไรส่วนใหญ่เพื่อให้แน่ใจว่าการโจมตีประสบความสำเร็จและเก็บกำไรบางส่วนไว้ให้กับตัวเองต้องชี้แจงเป็นพิเศษว่า การโจมตี MEV ก็มีค่าใช้จ่ายเช่นกัน ในการแลกเปลี่ยนทันทีของ Uniswap มีค่าใช้จ่าย ในการซื้อขาย Curve ก็มีค่าใช้จ่ายเช่นกัน เพียงแต่เนื่องจากอัตราค่าธรรมเนียมค่อนข้างต่ำประมาณ 0.01~0.05% ทำให้ดูเหมือนไม่คุ้มกับสิ่งที่ได้จากการโจมตี.สุดท้ายขอเตือนอีกครั้งว่าการป้องกันการโจมตี MEV นั้นจริงๆ แล้วง่ายมาก เพียงแค่: ตั้งค่าความอดทนต่อการลื่นไถล ไม่ให้เกิน 1%; แบ่งการซื้อขายขนาดใหญ่เป็นหลายๆ ครั้ง ดังนั้นคุณจึงไม่จำเป็นต้องกลัวจนไม่敢ทำการซื้อขายใน DEX (การแลกเปลี่ยนแบบกระจายศูนย์) อีกต่อไป.# บทสรุป: คำเตือนและแรงบันดาลใจจากป่าแห่งความมืดเหตุการณ์การโจมตี MEV จำนวน 215,000 ดอลลาร์นี้ เป็นการแสดงออกที่โหดร้ายอีกครั้งของกฎ "ป่าแห่งความมืด" ในโลกของบล็อกเชน โดยมันได้เปิดเผยอย่างชัดเจนถึงการต่อสู้ที่ซับซ้อนในการใช้ช่องโหว่ของกลไกเพื่อแสวงหาผลประโยชน์ในสภาพแวดล้อมที่ไร้ศูนย์กลางและไม่ต้องขออนุญาต.จากมุมมองที่สูงขึ้น การเกิดขึ้นของ MEV เป็นการสะท้อนถึงผลกระทบด้านสองด้านของความโปร่งใสและความสามารถในการเขียนโปรแกรมของบล็อกเชน.* ในด้านหนึ่ง รายการธุรกรรมทั้งหมดสามารถตรวจสอบได้อย่างเปิดเผย ทำให้สามารถติดตามและวิเคราะห์พฤติกรรมการโจมตีได้;* ในทางกลับกัน ความซับซ้อนของตรรกะในสัญญาอัจฉริยะและความแน่นอนในการดำเนินการทางการค้าก็เป็นโอกาสที่ให้แก่ผู้เข้าร่วมที่ฉลาด.นี่ไม่ใช่เพียงการกระทำของแฮกเกอร์ทั่วไป แต่เป็นความเข้าใจและการใช้ประโยชน์จากกลไกพื้นฐานของบล็อกเชนอย่างลึกซึ้ง ซึ่งทดสอบความแข็งแกร่งของการออกแบบโปรโตคอล และท้าทายความตระหนักรู้เกี่ยวกับความเสี่ยงของผู้เข้าร่วม.เข้าใจ MEV และรู้จักความเสี่ยงของมัน เพื่อที่จะสามารถเดินเรือในโลกดิจิทัลที่เต็มไปด้วยโอกาสแต่ก็แฝงไปด้วยอันตรายได้ดียิ่งขึ้น จำไว้ว่าภายใน "ป่ามืด" ของบล็อกเชน มีเพียงการเคารพกฎและการยกระดับการรับรู้เท่านั้นที่จะทำให้หลีกเลี่ยงการกลายเป็นเหยื่อที่ถูกกลืนกินต่อไปได้.นี่คือสิ่งที่ฉันต้องการให้บทความนี้ประสบความสำเร็จ
การวิเคราะห์การโจมตีแบบ MEV Sandwich: จากการจัดลำดับถึงสายโซ่ที่อันตรายของการแลกเปลี่ยนทันที
ผู้เขียน: Daii แหล่งที่มา: mirror
เมื่อวันพุธที่แล้ว (12 มีนาคม) มีผู้ค้าสกุลเงินดิจิทัลคนหนึ่งสูญเสียเงินไป 215,000 ดอลลาร์จากการถูกโจมตี MEV ในครั้งเดียว
! d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png
กล่าวง่ายๆ ว่าผู้ใช้คนนี้ต้องการที่จะแลกเปลี่ยน USDC มูลค่า 220,800 ดอลลาร์สหรัฐในพูลการซื้อขาย Uniswap v3 ให้เป็น USDT ที่มีมูลค่าเท่ากัน แต่กลับได้รับเพียง 5,272 USDT เท่านั้น ทรัพย์สินของเขาหายไปทันที 215,700 ดอลลาร์ในเวลาเพียงไม่กี่วินาที ดูจากภาพด้านล่าง.
! yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png
ภาพด้านบนคือภาพหน้าจอของบันทึกการทำธุรกรรมบนบล็อกเชน สาเหตุที่ทำให้เกิดโศกนาฏกรรมนี้คือการเผชิญหน้ากับ "การโจมตีแบบแซนด์วิช" (Sandwich Attack) ที่มีชื่อเสียงในโลกบล็อกเชน.
! kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png
ผู้ที่เปิดเผยการโจมตี MEV ครั้งนี้เป็นคนแรกคือ Michael (ดูจากภาพด้านบน) เขาอธิบายว่า:
เนื้อหาข้างต้นมีการพิมพ์ผิด โดยหุ่นยนต์โจมตี MEV แลกเปลี่ยนเป็น USDT จำนวนมาก ไม่ใช่ USDC.
อย่างไรก็ตาม หลังจากที่ได้อ่านคำอธิบายและข่าวรายงานของเขา คุณอาจยังรู้สึกงุนงง เพราะมีคำศัพท์ใหม่มากมาย เช่น การโจมตีแบบแซนด์วิช (Sandwich Attack), การทำธุรกรรมก่อน (front-ran the tx), การนำสภาพคล่องกลับ (put back the liquidity), การให้ทิปกับผู้สร้างบล็อก (tipped a block builder) เป็นต้น.
วันนี้เราจะใช้การโจมตี MEV นี้เป็นตัวอย่างเพื่อวิเคราะห์กระบวนการทั้งหมดและพาคุณไปสำรวจโลกมืดของ MEV
ก่อนอื่นเราต้องอธิบายว่า MEV คืออะไร
1. MEV คืออะไร?
MEV เดิมถูกเรียกว่า มูลค่าเพิ่มเติมที่สามารถดึงออกมาได้จากการขุด (Miner Extractable Value) ซึ่งหมายถึงกำไรเพิ่มเติมที่ขุดสามารถได้รับจากการจัดเรียงใหม่ แทรก หรือยกเลิกการทำธุรกรรมในบล็อกเชนบล็อก ซึ่งการกระทำนี้อาจทำให้ผู้ใช้ทั่วไปต้องจ่ายค่าใช้จ่ายที่สูงขึ้น หรือได้รับราคาทำธุรกรรมที่ไม่เอื้ออำนวยมากขึ้น.
เมื่อเครือข่ายบล็อกเชนเช่น Ethereum เปลี่ยนจากกลไกฉันทามติแบบการพิสูจน์การทำงาน (Proof-of-Work, PoW) ไปสู่กลไกฉันทามติแบบการพิสูจน์การถือครอง (Proof-of-Stake, PoS) อำนาจในการควบคุมลำดับการทำธุรกรรมได้ถูกโอนไปยังผู้ตรวจสอบแทนที่จะเป็นนักขุด ดังนั้นคำศัพท์จึงเปลี่ยนจาก "ค่าที่นักขุดสามารถดึงออกมาได้" (Miner Extractable Value) เป็น "ค่าที่สามารถดึงออกมาได้สูงสุด" (Maximal Extractable Value).
แม้ว่าชื่อจะเปลี่ยนไป แต่แนวคิดหลักในการดึงมูลค่าผ่านการจัดการลำดับการซื้อขายยังคงเหมือนเดิม
เนื้อหาข้างบนยังค่อนข้างเฉพาะทาง คุณเพียงแค่ต้องจำไว้ว่า: MEV มีอยู่เพราะว่าอดีตนักขุดและปัจจุบันผู้ตรวจสอบมีสิทธิ์ในการจัดลำดับการทำธุรกรรมในหน่วยความจำ (mempool) การจัดลำดับนี้เกิดขึ้นภายในบล็อกหนึ่ง โดยตอนนี้ Ethereum ประมาณ 11 วินาทีจะสร้างบล็อกหนึ่ง ดังนั้นหมายความว่า ทุก ๆ 11 วินาทีจะมีการใช้สิทธินี้เช่นกัน เช่นเดียวกับการโจมตี MEV ในครั้งนี้ก็เกิดขึ้นจากการจัดลำดับของผู้ตรวจสอบเช่นกัน.
คลิกที่ลิงก์นี้ คุณจะเห็นเนื้อหาของการทำธุรกรรมที่รวมอยู่ในบล็อกหมายเลข 22029771 ซึ่งเกี่ยวข้องกับการโจมตีครั้งนี้ ตามภาพด้านล่าง.
! gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png
โปรดทราบว่าการซื้อขายในภาพที่ 1, 2, 3 คือการโจมตี MEV ที่กล่าวถึงในตอนต้นของบทความนี้ ซึ่งลำดับนี้ถูกจัดเรียงโดยผู้ตรวจสอบ (bobTheBuilder) ทำไมถึงเป็นเช่นนี้?
2. หลักการของ MEV
ในการเข้าใจการทำงานของ MEV เราจำเป็นต้องเข้าใจว่าบล็อกเชนบันทึกและอัปเดตข้อมูลอย่างไร
2.1 กลไกการอัปเดตสถานะบล็อกเชน
บล็อกเชนสามารถมองว่าเป็นบันทึกที่เติบโตอย่างต่อเนื่อง ซึ่งบันทึกทุกการทำธุรกรรมที่เกิดขึ้น สถานะของบันทึกนี้ เช่น ยอดเงินในแต่ละบัญชี ปริมาณสำรองของโทเค็นต่างๆ ในพูลการซื้อขาย Uniswap เป็นต้น จะถูกกำหนดโดยการทำธุรกรรมก่อนหน้า
เมื่อบล็อกใหม่ถูกเพิ่มลงในบล็อกเชน การทำธุรกรรมทั้งหมดที่รวมอยู่ในบล็อกนี้จะถูกดำเนินการตามลำดับที่ปรากฏในบล็อกทีละรายการ ทุกครั้งที่ทำธุรกรรมหนึ่ง ธุรกิจทั้งหมดในบล็อกเชนจะมีการเปลี่ยนแปลงตามที่เกี่ยวข้อง.
นั่นหมายความว่า ไม่เพียงแต่ลำดับของบล็อกจะสำคัญ แต่ลำดับของการทำธุรกรรมในบล็อกก็สำคัญเช่นกัน แล้วลำดับของการทำธุรกรรมในบล็อกถูกกำหนดอย่างไร?
2.2 ผู้ตรวจสอบตัดสินใจเรียงลำดับการทำธุรกรรม
เมื่อผู้ใช้ทำธุรกรรมบนเครือข่ายบล็อกเชน เช่น ธุรกรรมนี้ที่แปลง USDC เป็น USDT ผ่าน Uniswap ธุรกรรมจะถูกส่งไปยังโหนดในเครือข่ายก่อน หลังจากการตรวจสอบเบื้องต้น ธุรกรรมนี้จะเข้าสู่พื้นที่ที่เรียกว่า "หน่วยความจำพูล" (mempool) หน่วยความจำพูลเปรียบเสมือนพื้นที่รอ ซึ่งธุรกรรมในนั้นยังไม่ได้รับการยืนยันและเพิ่มลงในบล็อกถัดไปในบล็อกเชน.
อดีตคนขุดเหมือง (ในระบบ PoW) ปัจจุบันเป็นผู้ตรวจสอบ (ในระบบ PoS) มีสิทธิ์ในการเลือกธุรกรรมจากหน่วยความจำและตัดสินใจลำดับการเรียงธุรกรรมเหล่านี้ในบล็อกถัดไป.
ลำดับของธุรกรรมในบล็อกมีความสำคัญอย่างยิ่ง ก่อนที่บล็อกจะได้รับการยืนยันสุดท้ายและถูกเพิ่มลงในบล็อกเชน ธุรกรรมในบล็อกนี้จะถูกดำเนินการตามลำดับที่ผู้ตรวจสอบ (เช่น bobTheBuilder) กำหนด นั่นหมายความว่า หากบล็อกหนึ่งมีธุรกรรมหลายรายการที่มีปฏิสัมพันธ์กับพูลธุรกรรมเดียวกัน ลำดับการดำเนินการของธุรกรรมเหล่านี้จะส่งผลโดยตรงต่อผลลัพธ์ของธุรกรรมแต่ละรายการ.
ความสามารถนี้ทำให้ผู้ตรวจสอบสามารถจัดการธุรกรรมเฉพาะได้ก่อน, เลื่อนหรือยกเว้นธุรกรรมอื่น ๆ, หรือแม้แต่แทรกธุรกรรมของตนเองเพื่อเพิ่มผลกำไรสูงสุด.
การสั่งซื้อธุรกรรมนี้มีความสําคัญเท่าเทียมกันและเป็นไปไม่ได้ที่จะโจมตีได้สําเร็จหากมีความแตกต่างเล็กน้อยในพูล
2.3 การจัดลําดับธุรกรรมในการโจมตี MEV นี้
เรามาทำความเข้าใจกันอย่างง่าย ๆ เกี่ยวกับการทำธุรกรรม 3 รายการที่เกี่ยวข้องกับการโจมตี MEV ครั้งนี้:
! dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png
ผู้ตรวจสอบการโจมตี MEV ครั้งนี้คือ bob-The-Builder.eth ซึ่งเป็นผู้รับผิดชอบในการจัดเรียงธุรกรรมให้เป็นลำดับ 1, 2, 3 แน่นอนว่า bobTheBuilder ไม่ได้ทำงานฟรี ๆ เขามีส่วนร่วมในการจัดเรียงครั้งนี้เพื่อรับรายได้มากกว่า 100 ETH ในขณะที่ผู้โจมตี MEV กลับมีรายได้เพียง 8000 ดอลลาร์ โดยรายได้ของพวกเขามาจากธุรกรรมที่สองของเหยื่อ.
ในประโยคเดียว ผู้โจมตี (MEV bot) และผู้ตรวจสอบ (bobTheBuilder) สมรู้ร่วมคิดทำให้เหยื่อของการทำธุรกรรมครั้งที่สองเสียเงิน 215,000 ดอลลาร์ โดยที่ผู้โจมตีได้รับ 8,000 ดอลลาร์ และผู้ตรวจสอบได้รับ 200,000 ดอลลาร์ (มากกว่า 100 ETH)
วิธีการโจมตีที่พวกเขาใช้มีชื่อที่สมจริงว่า — การโจมตีแบบแซนด์วิช ด้านล่างนี้ เราจะอธิบายทีละธุรกรรม เพื่อให้คุณเข้าใจอย่างถ่องแท้ว่า MEV การโจมตีแบบแซนด์วิชที่ค่อนข้างซับซ้อนนั้นเป็นอย่างไร?
3. การวิเคราะห์การโจมตีแบบแซนวิชทั้งหมด
เหตุผลที่เรียกว่า การโจมตีแบบแซนวิช (Sandwich Attack) ก็เพราะว่าการทำธุรกรรมสองรายการของผู้โจมตี (ธุรกรรม 1 และ ธุรกรรม 3) ถูกวางไว้ก่อนและหลังธุรกรรมของเหยื่อ (ธุรกรรม 2) ทำให้ลำดับธุรกรรมทั้งหมดมีลักษณะคล้ายกับโครงสร้างของแซนวิช (ดูจากภาพด้านบน).
การทำธุรกรรม 1 และการทำธุรกรรม 3 มีหน้าที่ที่แตกต่างกัน โดยทั่วไปแล้ว การทำธุรกรรม 1 จะรับผิดชอบในการกระทำความผิด และการทำธุรกรรม 3 จะรับผิดชอบในการแบ่งปันผลประโยชน์ โดยเฉพาะอย่างยิ่ง ขั้นตอนทั้งหมดเป็นดังนี้:
3.1 การซื้อขาย 1 ,รับผิดชอบในการเพิ่มราคา USDT
คลิกที่ลิงค์ของธุรกรรมหมายเลข 1 ในรูปด้านบนคุณจะเห็นรายละเอียดของธุรกรรมหมายเลข 1 และผู้โจมตีได้ขึ้นราคาของ USDT โดยตรงนั่นคือเขาใช้ 18.65 ล้าน USDC เพื่อแลกเปลี่ยน 17.58 ล้าน USDT ทั้งหมดในนั้นดูรูปด้านล่าง
! vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png
ในขณะนี้ สภาพคล่องในพูลที่เหลืออยู่คือ USDC จำนวนมากและ USDT จำนวนเล็กน้อย หากตามรายงานข่าวกล่าวว่า ก่อนการโจมตี สภาพคล่องของ Uniswap มี USDC ประมาณ 19.8 ล้านและ USDT จำนวนประมาณ 19.8 ล้าน เมื่อตรวจสอบการทำธุรกรรม 1 ครั้ง จะเหลือ USDT เพียง 2.22 ล้าน (=1980-1758) ขณะที่ยอดคงเหลือของ USDC เพิ่มขึ้นเป็นประมาณ 38.45 ล้าน (=1980+1865)
ในขณะนี้อัตราการแลกเปลี่ยนระหว่าง USDC และ USDT ในพูลนี้ไม่ใช่ 1:1 อีกต่อไป แต่เป็น 1:17 นั่นหมายความว่าตอนนี้ต้องใช้ USDC จำนวน 17 ถึงจะแลกได้ 1 USDT แต่สัดส่วนนี้เป็นเพียงประมาณการ เพราะพูลนี้เป็น V3 ซึ่งมีสภาพคล่องที่ไม่กระจายอย่างสม่ำเสมอ.
อีกสิ่งหนึ่งฉันจะบอกคุณ ในความเป็นจริงผู้โจมตีไม่ได้ใช้ 18.65 ล้าน USDC ในคราวเดียวและ USDC ที่ใช้จริงคือ 1.09 ล้านซึ่งน้อยกว่า 6% เขาทําได้อย่างไร? เราจะพูดถึงรายละเอียดเพิ่มเติมเมื่อเราโจมตีเสร็จแล้ว
3.2 การค้า 2, ดำเนินการ 22 หมื่น USDC แลกเปลี่ยน USDT
คลิกที่ลิงก์การซื้อขาย 2 ในภาพด้านบนเพื่อดูภาพด้านล่าง.
! x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png
ตามภาพด้านบน การทำธุรกรรม 2 ของเหยื่อได้รับผลกระทบจากธุรกรรม 1 ทำให้ 220,000 USDC ได้รับเพียง 5,272 USDT โดยไม่รู้ตัวสูญเสีย 170,000 USDT ทำไมถึงบอกว่าไม่รู้ตัว? เพราะถ้าเหยื่อทำการเทรดผ่าน Uniswap ขณะที่เขาส่งคำสั่งซื้อ เขาจะเห็นหน้าจอที่เป็นดังนี้.
! rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png
จากภาพด้านบนคุณจะเห็นว่าผู้เสียหายควรจะได้รับการรับประกันอย่างน้อย 220,000 บาท แต่ผู้เสียหายสุดท้ายได้รับเพียง 5,000 กว่า USDT เท่านั้น เนื่องจากเกิดการลื่นไถลอย่างมากถึงมากกว่า 90% อย่างไรก็ตาม Uniswap มีการจำกัดการลื่นไถลสูงสุดเป็นค่าเริ่มต้นที่ 5.5% ดูจากภาพด้านล่าง.
! Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png
กล่าวอีกนัยหนึ่ง หากผู้เสียหายทำการซื้อขายผ่านหน้าจอ Uniswap เขาจะต้องได้รับ USDT อย่างน้อย 208381 ( = 220510 * 94.5% ) คุณอาจสงสัยว่าทำไมบันทึกใน blockchain ข้างต้นถึงแสดงว่าการทำธุรกรรมนี้เกิดขึ้นที่ "Uniswap V3"
เนื่องจาก ฟรอนต์เอนด์และแบ็คเอนด์ของการทำธุรกรรมบล็อกเชนแยกจากกัน ส่วนที่กล่าวถึงข้างต้น "Uniswap V3" หมายถึงพูลของ Uniswap ระหว่าง USDC-USDT ซึ่งพูลนี้เป็นสาธารณะ ทุกฟรอนต์เอนด์ในการทำธุรกรรมสามารถทำการซื้อขายผ่านพูลนี้ได้.
ก็เพราะเหตุนี้ มีคนสงสัยว่าผู้เสียหายไม่ธรรมดา ไม่ใช่คนทั่วไป มิฉะนั้นจะไม่เกิดการลื่นไถลขนาดนี้ อาจจะใช้การโจมตี MEV ในการฟอกเงิน เรื่องนี้เราจะพูดถึงในภายหลัง.
3.3 การซื้อขาย 3, เก็บเกี่ยว + แบ่งปัน
! hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png
คลิกที่ลิงก์เพื่อดูรายละเอียดของการซื้อขายที่ 3 ตามที่แสดงในภาพด้านบน เราจะพูดถึงการซื้อขาย A, B และ C ทีละอย่าง.
การซื้อขาย A ทำให้สภาพคล่องในสระกลับสู่ปกติ โดยใช้ USDT จำนวน 17.32 ล้าน เพื่อแลกคืน USDC จำนวน 18.6 ล้าน
การทำธุรกรรม B, การเตรียมการแบ่งปันผลกำไร, แปลงรายได้บางส่วน——20.4 แสน USDC เป็น 105 ETH;
ทำธุรกรรม C, แบ่งผลประโยชน์, ชำระ 100.558 ETH ให้กับผู้ตรวจสอบ bob-The-Builder.eth.
จนถึงตอนนี้ การโจมตีแบบแซนด์วิชสิ้นสุดลงแล้ว
ตอนนี้มาตอบคำถามที่สำคัญที่กล่าวถึงข้างต้น: ผู้โจมตีใช้ 1,090,000 USDC อย่างไรในการโจมตี 18,000,000.
4. ผู้โจมตีทำการโจมตีบ่อมูลค่า 1800 ล้าน USDC ได้อย่างไร
เหตุผลที่ผู้โจมตีสามารถใช้เพียง 1.09 ล้าน USDC เพื่อให้บรรลุการโจมตี 18 ล้านดอลลาร์เป็นเพราะมีกลไกพิเศษและมหัศจรรย์ในโลกบล็อกเชน - Flash Swap ของ Uniswap V3
4.1 Flash Swap คืออะไร?
พูดง่ายๆ ก็คือ:
เพียงแค่การดำเนินการทั้งหมดเสร็จสิ้นในธุรกรรมเดียว Uniswap ก็อนุญาตให้มีพฤติกรรม "รับของก่อน จ่ายทีหลัง" ได้ โปรดทราบว่าต้องเสร็จสิ้นในธุรกรรมเดียว การออกแบบเช่นนี้เป็นการรับรองความปลอดภัยของแพลตฟอร์ม Uniswap เอง:
การออกแบบการแลกเปลี่ยนแบบทันทีมีจุดมุ่งหมายเพื่อให้สามารถทำการเก็งกำไรบนเครือข่ายได้อย่างมีประสิทธิภาพมากขึ้น (Arbitrage) แต่กลับโชคร้ายที่ถูกผู้โจมตี MEV ใช้ประโยชน์ กลายเป็นเครื่องมือในการควบคุมตลาด.
4.2 การแลกเปลี่ยนฟ้าผ่า ช่วยสนับสนุนได้อย่างไร?
เรามาดูภาพกันทีละขั้นตอนเพื่อทำความเข้าใจว่าการแลกเปลี่ยนฟ้าผ่าครั้งนี้เกิดขึ้นได้อย่างไร ดูภาพด้านล่าง.
! S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png
! o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png
หลังจากการทำธุรกรรมนี้ (ธุรกรรม 1) ยอดเงินในบัญชีของผู้โจมตีลดลง 1,090,000 USDC เนื่องจากจาก 18,640,000 USDC ที่คืนให้กับ Uniswap มีเพียง 17,550,000 USDC เท่านั้นที่แลกมาจาก Curve ส่วนที่เหลืออีก 1,090,000 USDC เป็นเงินทุนส่วนตัวของผู้โจมตี.
คุณน่าจะสังเกตเห็นว่า การทำธุรกรรมนี้ทำให้ผู้โจมตีสูญเสียไป 1,090,000 บาท แต่ธุรกรรมที่ 3 หลังจากนั้น ซึ่งใช้วิธีการแลกเปลี่ยนที่รวดเร็ว ไม่เพียงแต่ได้เงินคืน 1,090,000 USDC เท่านั้น แต่ยังทำกำไรได้อีกกว่า 200,000 บาท ด้วย.
! oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png
ต่อไปเราจะวิเคราะห์ข้อมูลจากการซื้อขาย 3 ทีละขั้นตอน.
คุณอาจจะประหลาดใจว่าทำไมผู้โจมตีถึงยอมมอบผลกำไรสูงถึง 200,000 ดอลลาร์ให้กับผู้ตรวจสอบ?
4.3 ทำไมต้องให้ "ทิป" 200,000 ดอลลาร์?
จริงๆ แล้ว นี่ไม่ใช่ความเอื้อเฟื้อ แต่เป็นเงื่อนไขที่จำเป็นสำหรับการโจมตี MEV ประเภทการโจมตีแซนด์วิชที่ประสบความสำเร็จ:
ดังนั้นผู้โจมตีจึงยอมสละกำไรส่วนใหญ่เพื่อให้แน่ใจว่าการโจมตีประสบความสำเร็จและเก็บกำไรบางส่วนไว้ให้กับตัวเอง
ต้องชี้แจงเป็นพิเศษว่า การโจมตี MEV ก็มีค่าใช้จ่ายเช่นกัน ในการแลกเปลี่ยนทันทีของ Uniswap มีค่าใช้จ่าย ในการซื้อขาย Curve ก็มีค่าใช้จ่ายเช่นกัน เพียงแต่เนื่องจากอัตราค่าธรรมเนียมค่อนข้างต่ำประมาณ 0.01~0.05% ทำให้ดูเหมือนไม่คุ้มกับสิ่งที่ได้จากการโจมตี.
สุดท้ายขอเตือนอีกครั้งว่าการป้องกันการโจมตี MEV นั้นจริงๆ แล้วง่ายมาก เพียงแค่: ตั้งค่าความอดทนต่อการลื่นไถล ไม่ให้เกิน 1%; แบ่งการซื้อขายขนาดใหญ่เป็นหลายๆ ครั้ง ดังนั้นคุณจึงไม่จำเป็นต้องกลัวจนไม่敢ทำการซื้อขายใน DEX (การแลกเปลี่ยนแบบกระจายศูนย์) อีกต่อไป.
บทสรุป: คำเตือนและแรงบันดาลใจจากป่าแห่งความมืด
เหตุการณ์การโจมตี MEV จำนวน 215,000 ดอลลาร์นี้ เป็นการแสดงออกที่โหดร้ายอีกครั้งของกฎ "ป่าแห่งความมืด" ในโลกของบล็อกเชน โดยมันได้เปิดเผยอย่างชัดเจนถึงการต่อสู้ที่ซับซ้อนในการใช้ช่องโหว่ของกลไกเพื่อแสวงหาผลประโยชน์ในสภาพแวดล้อมที่ไร้ศูนย์กลางและไม่ต้องขออนุญาต.
จากมุมมองที่สูงขึ้น การเกิดขึ้นของ MEV เป็นการสะท้อนถึงผลกระทบด้านสองด้านของความโปร่งใสและความสามารถในการเขียนโปรแกรมของบล็อกเชน.
นี่ไม่ใช่เพียงการกระทำของแฮกเกอร์ทั่วไป แต่เป็นความเข้าใจและการใช้ประโยชน์จากกลไกพื้นฐานของบล็อกเชนอย่างลึกซึ้ง ซึ่งทดสอบความแข็งแกร่งของการออกแบบโปรโตคอล และท้าทายความตระหนักรู้เกี่ยวกับความเสี่ยงของผู้เข้าร่วม.
เข้าใจ MEV และรู้จักความเสี่ยงของมัน เพื่อที่จะสามารถเดินเรือในโลกดิจิทัลที่เต็มไปด้วยโอกาสแต่ก็แฝงไปด้วยอันตรายได้ดียิ่งขึ้น จำไว้ว่าภายใน "ป่ามืด" ของบล็อกเชน มีเพียงการเคารพกฎและการยกระดับการรับรู้เท่านั้นที่จะทำให้หลีกเลี่ยงการกลายเป็นเหยื่อที่ถูกกลืนกินต่อไปได้.
นี่คือสิ่งที่ฉันต้องการให้บทความนี้ประสบความสำเร็จ