บอทซื้อขายแนวหน้า: สัตว์ประหลาดในป่าอันมืดมิดของ Ethereum
หมายเหตุบรรณาธิการ: บทความนี้มาจากข้อมูล Babbitt (รหัส: bitcoin8btc)หมายเหตุบรรณาธิการ: บทความนี้มาจาก
โดย Dan Robinson และ Georgios Konstantopoulos แปลโดย Free and Easy เผยแพร่โดยได้รับอนุญาต
ท้าทาย
นี่เป็นเรื่องจริงที่น่ากลัว
ชื่อเรื่องรอง
ท้าทาย
เช่นเดียวกับคนทั่วไป ฉันใช้เวลาส่วนใหญ่ซุ่มอยู่ในช่องสนับสนุน Uniswap Discord (การเปิดเผยข้อมูล: Uniswap เป็นบริษัทในเครือ Paradigm)ในบ่ายวันพุธ มีคนถามว่าเป็นไปได้ไหมที่จะกู้คืนโทเค็นสภาพคล่อง Uniswap ที่ถูกส่งไปยังสัญญาการจับคู่โดยไม่ตั้งใจความคิดแรกเริ่มของฉันคือโทเค็นจะถูกล็อคตลอดไป แต่ตอนดึกของคืนนั้น ฉันเริ่มคิดว่าถ้าโทเค็นยังอยู่ ใครๆ ก็สามารถไปเอากลับคืนมาได้
เมื่อใครก็ตามเรียกใช้ฟังก์ชันการเผาไหม้ในสัญญาหลัก Uniswap สัญญาจะวัดยอดคงเหลือของโทเค็นสภาพคล่องของตัวเองและเบิร์น โดยส่งโทเค็นที่ถอนออกไปยังที่อยู่ที่ระบุโดยผู้โทร นี่เป็นส่วนสำคัญของพฤติกรรมที่ตั้งใจไว้ของ Uniswap v2 (กลไกพื้นฐานอยู่ใน
เอกสารข้อมูล Uniswap v2
อธิบายไว้ในส่วนที่ 3.2 ของ )
ฉันพบสัญญาและโทเค็นสภาพคล่องยังคงอยู่และมีมูลค่าประมาณ 12,000 ดอลลาร์
มีนาฬิกาฟ้องและทุกคนสามารถถอนสภาพคล่องของตนเองได้ตลอดเวลาและรับโทเค็นเหล่านี้จากสัญญาโดยไม่ตั้งใจแม้ว่าจะไม่มีใครสังเกตเห็นเงินฟรีก็ตาม
ฉันสามารถสวมหมวกสีขาวของฉันและพยายามช่วยเจ้าของรับโทเค็นคืน มันง่ายมาก ฉันแค่ต้องเรียกฟังก์ชันเบิร์นของพูลและส่งที่อยู่ของฉันเอง
ก็แค่... ฉันรู้ว่ามันไม่ง่าย
ชื่อเรื่องรองDark Forestป่าที่มืด
ไม่มีความลับใดที่ Ethereum blockchain เป็นสภาพแวดล้อมที่ไม่เป็นมิตร หากสามารถใช้สัญญาที่ชาญฉลาดเพื่อหากำไร ในที่สุดมันจะถูกเอาเปรียบ การแฮ็กที่เกิดขึ้นบ่อยครั้งแสดงให้เห็นว่าคนฉลาดบางคนใช้เวลามากในการตรวจสอบหาช่องโหว่ในสัญญา แต่สภาพแวดล้อมที่ไม่น่าให้อภัยนี้ดูจืดชืดเมื่อเทียบกับ Mempool ซึ่งเป็นกลุ่มธุรกรรมที่รอดำเนินการและยังไม่ได้รับการยืนยัน ถ้าบล็อกเชนเป็นสนามรบ เมมพูลก็เป็นอะไรที่แย่กว่านั้น นั่นก็คือป่าอันมืดมิดFlash Boys 2.0The Dark Forest นิยายวิทยาศาสตร์เรื่องโปรดของฉัน นำเสนอแนวคิดของ "ป่ามืด" สภาพแวดล้อมที่การตรวจจับหมายถึงการตายของผู้ล่าขั้นสูงบางคน ในสภาพแวดล้อมเช่นนี้ การระบุตำแหน่งของใครบางคนต่อสาธารณะนั้นดีพอๆ กับการทำลายพวกเขาทันที (แนวคิดนี้อยู่ใน Ethereum testnet ด้วย
แหล่งที่มาของแรงบันดาลใจสำหรับเกม )
ใน Ethereum Mempool นักล่าชั้นนำเหล่านี้จะอยู่ในรูปแบบของ "บอทการเก็งกำไร" บอท Arbitrage ตรวจสอบการซื้อขายที่รอดำเนินการและพยายามใช้ประโยชน์จากพวกมันเพื่อสร้างโอกาสในการทำกำไร ไม่มีหมวกขาวคนใดรู้เกี่ยวกับบอทเหล่านี้มากไปกว่า Phil Daian ผู้เขียนร่วมกับเพื่อนร่วมงานของเขา "
ฟิลเคยเล่าให้ฉันฟังเกี่ยวกับหนังสยองขวัญที่เขาเรียกว่า บอทเก็งกำไรมักจะมองหาประเภทของการซื้อขายเฉพาะใน Mempool (เช่น การซื้อขาย DEX หรือการอัปเดตของออราเคิล) และพยายามที่จะดำเนินการซื้อขายล่วงหน้าตามอัลกอริทึมที่กำหนดไว้ล่วงหน้า ผู้นำทั่วไปมองหาธุรกรรมใด ๆ ที่ทำให้ผู้นำแนวหน้ามีกำไรโดยการคัดลอกและแทนที่ที่อยู่ด้วยที่อยู่ของตนเอง
นั่นเป็นสาเหตุที่การดำเนินการช่วยเหลือนี้ไม่ง่าย ทุกคนสามารถเรียกใช้ฟังก์ชันเบิร์น และถ้าฉันส่งธุรกรรมที่เรียกใช้ฟังก์ชันเบิร์น มันก็เหมือนกับสัญญาณ "เงินฟรี" ที่กะพริบซึ่งชี้ตรงไปยังโอกาสในการทำกำไรนี้ หากสัตว์ประหลาดเหล่านี้อยู่ใน mempool จริงๆ พวกมันจะเห็น คัดลอก และกลายพันธุ์ และครอบครองธุรกรรมของฉันก่อนที่จะได้รับการยอมรับ
โปรดทราบว่าสภาพแวดล้อมนี้โหดร้ายกว่าสถานะของ Ethereum blockchain เงินฟรีเหล่านี้นั่งอยู่บนบล็อกเชนเป็นเวลาประมาณ 8 ชั่วโมงโดยที่ยังไม่ถูกค้นพบ และรอให้ใครก็ตามที่เรียกใช้ฟังก์ชันเบิร์นถอนออกจากกลุ่ม แต่ความพยายามที่จะหยิบขึ้นมาถูกขัดขวางทันทีระหว่างเที่ยวบิน
ชื่อเรื่องรอง
ปฏิบัติการกู้ภัย
ในการถอนเงินโดยไม่แจ้งให้บอททราบ ฉันจำเป็นต้องทำให้ธุรกรรมยุ่งเหยิงเพื่อให้บอทไม่สามารถตรวจจับการเรียกของมันไปยังคู่ Uniswap ซึ่งจะเกี่ยวข้องกับการเขียนและปรับใช้สัญญาที่กำหนดเอง แม้ว่าฉันจะเป็นผู้นำทางความคิด DeFi มืออาชีพ แต่ฉันก็ไม่เคยปรับใช้สัญญากับ Ethereum มาก่อน
ฉันต้องการความช่วยเหลือและมันก็เลยเที่ยงคืนไปแล้ว โชคดีที่วิศวกรสัญญาอัจฉริยะที่ดีที่สุดบางคนที่ฉันรู้จักอาศัยอยู่ในเขตเวลายุโรป เพื่อนร่วมงานของฉัน Georgios Konstantopoulos ที่ Paradigm ตกลงที่จะช่วยปรับใช้สัญญาและส่งธุรกรรม Alberto Cuesta Cañada หัวหน้าวิศวกรของ Yield ซึ่งเป็นบริษัทในเครืออีกแห่งของเรา ได้ดำเนินการตามสัญญาด้วยความสมัครใจ
ปรับใช้สัญญา Getter ที่เมื่อเรียกโดยเจ้าของ จะออกการโทรเบิร์นเมื่อเปิดใช้งานเท่านั้น มิฉะนั้นจะกลับมาทำงานต่อ
ปรับใช้สัญญา Setter ที่จะเปิดใช้งานสัญญา Getter เมื่อเจ้าของเรียก
คำอธิบายภาพ
รูปภาพ: รหัสของสัญญาอัจฉริยะที่กำหนดเองของเรา
หากผู้โจมตีพยายามดำเนินการธุรกรรมแบบรับเท่านั้น ผู้โจมตีจะกู้คืนโดยไม่ต้องเรียกใช้ธุรกรรมที่ตั้งค่าไว้ เราต้องการให้ธุรกรรมของเรารวมอยู่ในบล็อกก่อนที่ผู้โจมตีจะดำเนินการธุรกรรมสองรายการตามลำดับ
คำอธิบายภาพ
รูปภาพ: สคริปต์ช่วยเหลือของเรา
และนี่กลายเป็นความผิดพลาดร้ายแรง!
ธุรกรรมการรับของเรารวมอยู่ด้วย แต่มีข้อผิดพลาด UniswapV2: INSUFICIENT_LIQUIDITY_BURNED ซึ่งหมายความว่าโทเค็นสภาพคล่องหายไป ผลลัพธ์คือภายในไม่กี่วินาทีที่เรารับธุรกรรมเข้าสู่ mempool มีคนดำเนินการเรียกและกวาดเงินไป
สัตว์ประหลาดเขมือบเรา
ชื่อเรื่องรอง
บทเรียน
บทที่ 1: สัตว์ประหลาดมีจริง! แม้ว่าในทางสติปัญญา เราทราบดีว่าบอทที่วิ่งนำหน้าเหล่านี้มีอยู่ทั่วไป แต่ก็มีโอกาสที่ดีที่คุณจะประเมินพวกมันต่ำไปจนกว่าคุณจะเห็นพวกมันทำงานจริงๆ
เราใช้โอกาสนี้และช่วยเหลือการโทรภายในผ่านสัญญาการอนุญาต ซึ่งเราคิดว่าจะปกป้องเราได้ แต่เปล่าเลย
หากคุณพบว่าตัวเองอยู่ในสถานการณ์นี้ เราขอแนะนำให้ติดต่อ Scott Bigelow นักวิจัยด้านความปลอดภัยที่ทำงานเกี่ยวกับหัวข้อนี้ และเขามีต้นแบบที่ดีกว่าสำหรับการทำให้งงงวย
บทเรียนที่ 2: อย่ารีบร้อน เราควรยึดมั่นในแผนเดิมแม้ว่าเวลาจะกระชั้นชิดก็ตาม หากเราใช้เวลากับสคริปต์มากขึ้น ปรับแต่งสัญญา (อาจเปลี่ยนสัญญา Getter ให้ไม่ทำอะไรเลยแทนที่จะโทรต่อก่อนเปิดใช้งาน) หรือแม้กระทั่งซิงค์โหนดของเราเองเพื่อหลีกเลี่ยงการใช้ Infura เราอาจแปลงธุรกรรมได้สองรายการคือ มาไว้ในบล๊อกเดียวกัน บทเรียนที่ 3: อย่าพึ่งพาโครงสร้างพื้นฐานทั่วไป ยิ่งคุณสร้างสิ่งแปลกๆ มากเท่าไหร่ คุณจะก้าวข้ามโครงสร้างพื้นฐานที่มีอยู่อย่าง Infura ได้ยากขึ้นเท่านั้น ในกรณีของเรา เราพยายามส่งธุรกรรมที่ดูเหมือนว่าจะล้มเหลวตามสถานะปัจจุบันของบล็อกเชน และ Infura มีมาตรการป้องกันที่สมเหตุสมผลสำหรับเรื่องนี้ การใช้โหนดของเราเองช่วยหลีกเลี่ยงปัญหานี้
หรือหากคุณรู้จักนักขุดรายใหญ่ (เราไม่รู้จัก) คุณสามารถให้พวกเขารวมธุรกรรมที่คุณกระทำโดยตรงในบล็อก ข้าม mempool และสัตว์ประหลาดโดยสิ้นเชิง
บทเรียนที่ 4: อนาคตมีแต่จะน่ากลัวขึ้น
นี่เป็นเพียงตัวอย่างหนึ่งของเหตุการณ์แนวหน้าที่เกิดขึ้นกับเรา และสิ่งที่คล้ายกันนี้เกิดขึ้นหลายครั้งต่อวัน ทุกวันนี้ เทรดเดอร์ที่วิ่งนำหน้าเป็นเพียงบอท และพรุ่งนี้อาจเป็นนักขุด
ปัจจุบัน นักขุดไม่ได้ใช้โอกาสเหล่านี้และทิ้งเงินไว้ที่เดิม แต่ไม่มีการรับประกันว่าพวกเขาจะจัดลำดับใหม่และส่งธุรกรรมของตนเองในอนาคตเพื่อผลประโยชน์ของตนเอง แย่กว่านั้น พวกเขาอาจสร้างบล็อกที่ขุดโดยนักขุดรายอื่นขึ้นมาใหม่เพื่อพยายามขโมย MEV ที่พวกเขาไม่ได้อ้างสิทธิ์ ซึ่งนำไปสู่ความไม่เสถียรของบล็อกเชน


