คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
การระบุโอกาสในการเก็งกำไรใน DeFi ผ่านรหัส
Eocene
特邀专栏作者
2023-04-20 07:00
บทความนี้มีประมาณ 3018 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
บทความนี้จะวิเคราะห์โอกาสในการเก็งกำไรที่การแลกเปลี่ยนแบบกระจายศูนย์และผู้รวบรวมอาจม

ภาพรวม

การเงินแบบกระจายอำนาจ (อังกฤษ: Decentralized Finance หรือที่เรียกกันทั่วไปว่า DeFi) คือการเงินประเภทหนึ่งที่สร้างขึ้นบนบล็อกเชน โดยไม่ได้พึ่งพาสถาบันการเงิน เช่น นายหน้าซื้อขายแลกเปลี่ยน หรือธนาคาร ในการจัดหาเครื่องมือทางการเงิน แต่ใช้ข้อมูลอัจฉริยะบนบล็อกเชนเพื่อ สัญญาเพื่อดำเนินกิจกรรมทางการเงิน มีโอกาสเก็งกำไรจำนวนมากใน DeFi ซึ่งรวมถึงแต่ไม่จำกัดเพียงการชำระบัญชีและการเก็งกำไรแบบกระจาย บทความนี้จะวิเคราะห์โอกาสในการเก็งกำไรที่การแลกเปลี่ยนแบบกระจายศูนย์ (DEX) และผู้รวบรวม (Aggregators) อาจมีในรหัสสัญญา

วิเคราะห์

Uniswap

วิเคราะห์

Uniswap V2 Router

Uniswap เป็นแพลตฟอร์มการซื้อขายสกุลเงินดิจิทัลแบบกระจายศูนย์ที่ใช้โมเดล Automated Market Maker (AMM) ปัจจุบันมีเวอร์ชันยอดนิยมสองเวอร์ชัน ได้แก่ Uniswap V2 และ Uniswap V3 เราจะวิเคราะห์โอกาสในการเก็งกำไรที่เป็นไปได้ตามลำดับ

ใน Uniswap V2 โดยทั่วไป ผู้ใช้จะโต้ตอบกับสัญญาจับคู่และสัญญาโรงงานผ่านสัญญาเราเตอร์ โดยทั่วไป เราเตอร์จะถ่ายโอนโทเค็นในการทำธุรกรรมเท่านั้นแต่ไม่เก็บโทเค็นไว้ อย่างไรก็ตาม เนื่องจากเหตุผลหลายประการ เช่น การลดลงของอากาศและข้อผิดพลาดในการถ่ายโอน โทเค็นบางอย่างจะถูกจัดเก็บไว้ในสัญญาเราเตอร์ แล้วจะถอนโทเค็นเหล่านี้ได้อย่างไร?

จากการวิเคราะห์โค้ดของสัญญา Uniswap V2 Router 02 พบว่ามีฟังก์ชัน removeLiquidityETHSupportingFeeOnTransferTokens:

ฟังก์ชันนี้ใช้เพื่อลบสภาพคล่องโดยที่โทเค็นตัวใดตัวหนึ่งคือ WETH ที่อยู่ของการส่งผ่านเมื่อฟังก์ชัน จากนั้นสัญญาเราเตอร์จะโอนโทเค็นทั้งสองไปยังที่อยู่ที่ระบุ แม้ว่าจำนวน WETH ที่โอนที่นี่จะถูกส่งกลับโดย removeLiquidity และไม่สามารถแก้ไขได้ แต่จำนวนโทเค็นอื่นที่โอนคือ balanceOf(address(this)) ซึ่งเป็นยอดคงเหลือของโทเค็นในสัญญาเราเตอร์

ดังนั้น จากการวิเคราะห์ข้างต้น เราจะได้รับกระบวนการเก็งกำไร:

  • มีการตรวจสอบว่ามีโทเค็น ERC 20 ในสัญญาเราเตอร์ 02

  • มีการตรวจสอบว่ามีโทเค็น ERC 20 ในสัญญาเราเตอร์ 02

  • โทร addLiquidityETH เพื่อเพิ่มสภาพคล่องของโทเค็น ERC 20 และ WETH

โทร removeLiquidityETHSupportingFeeOnTransferTokens เพื่อลบสภาพคล่อง

  • ข้อจำกัด:

  • หากโทเค็นไม่มีสภาพคล่องกับ WETH มาก่อน โทเค็นจะสูญเสียสภาพคล่องเล็กน้อย (MINIMUM_LIQUIDITY) เมื่อเพิ่มสภาพคล่องในครั้งแรก

Uniswap V2 Pair

ไม่พบวิธีการแยก WETH และ ETH ในสัญญา Router 02

สัญญา Uniswap V2 Pair หรือที่เรียกว่ากลุ่มสภาพคล่อง (liquidity pool) จัดเก็บโทเค็น 2 ประเภทที่ให้สภาพคล่อง เนื่องจากสัญญา Pair ใช้ทุนสำรองในการบันทึกยอดคงเหลือแทนที่จะเป็น balanceOf(address(นี้)) จึงมีคนโอนสภาพคล่องโดยตรงโดยไม่ได้ตั้งใจ จะมีความแตกต่างระหว่างยอดคงเหลือและเงินสำรองเมื่อใส่โทเค็นถาวรลงในสัญญา และมีฟังก์ชันบาลานซ์ skim ในสัญญาจับคู่ เราสามารถเรียกใช้ฟังก์ชันนี้เพื่อแยกโทเค็นของส่วนต่าง:

จะเห็นได้ว่าฟังก์ชันนี้จะโอนโทเค็นของส่วนต่างระหว่างยอดคงเหลือและสำรองของโทเค็นสภาพคล่องสองรายการในกลุ่มสภาพคล่องไปยังที่อยู่ปลายทาง

นอกจากโทเค็นทั้งสองนี้ในแหล่งรวมสภาพคล่องแล้ว ยังมีโทเค็น ERC 20 อื่นๆ เนื่องจากการโอนผิด การลดลงของอากาศ ฯลฯ จะถอนโทเค็นเหล่านี้ได้อย่างไร

หลังจากวิเคราะห์รหัสของสัญญา Pair พบว่าโทเค็นส่วนนี้ไม่สามารถถอนออกได้ ยกเว้นกรณีเดียว: เมื่อมีโทเค็น LP ของพูลอยู่ในกลุ่มสภาพคล่อง

Uniswap V3 SwapRouter

เมื่อสิ่งนี้เกิดขึ้น เราสามารถเรียกใช้ฟังก์ชันการเผาไหม้ของสัญญาซื้อขายคู่เพื่อลบสภาพคล่องและนำโทเค็นสภาพคล่องสองรายการที่สอดคล้องกันออก:

สัญญา SwapRouter ของ Uniswap V3 จะมีสถานการณ์เช่นเดียวกับเราเตอร์ Uniswap V2 โดยมีโทเค็น ERC 20 และ ETH แต่โชคดีที่สัญญา SwapRouter มีฟังก์ชันหลายอย่างเพื่ออำนวยความสะดวกในการแยกโทเค็น

ในการถอนโทเค็น ERC 20 เราสามารถใช้ฟังก์ชันการกวาดโทเค็น:

ในการถอน ETH เราสามารถใช้ฟังก์ชัน refundETH:

คุณยังสามารถเรียกใช้ฟังก์ชัน unwrapWETH 9 ได้โดยตรงเพื่อคืนค่า WETH เป็น ETH และแตกไฟล์:

ข้างต้นคือการวิเคราะห์การเก็งกำไรของสัญญา Uniswap V3 SwapRouter

SushiSwap

หลังจากวิเคราะห์รหัสของสัญญา Uniswap V3 Pool แล้วพบว่าไม่มีวิธีการแยกโทเค็นอื่นๆ ในสัญญา และไม่มีความแตกต่างระหว่างยอดคงเหลือและเงินสำรองในสัญญา Uniswap V2 Pair

SushiSwap เริ่มต้นจากจุดแยกของ Uniswap และพัฒนาต่อมาเป็นระบบนิเวศอิสระที่ให้บริการและผลิตภัณฑ์ทางการเงินที่แตกต่างกันมากมาย

SushiXSwap

เนื่องจาก SushiSwap เหมือนกับ Uniswap V2 วิธีการเก็งกำไรที่กล่าวถึงข้างต้นสำหรับ Uniswap V2 จึงใช้กับ SushiSwap ได้เช่นกัน

SushiXSwap เป็นโปรโตคอลธุรกรรมเต็มรูปแบบบน LayerZero ที่เปิดตัวโดย SushiSwap เครือข่ายที่รองรับ ได้แก่ Optimism, Arbitrum, Fantom, BNB Chain, Polygon และ Avalanche ผู้ใช้สามารถทำธุรกรรมข้ามสายโซ่ระหว่างเครือข่ายและทรัพย์สินที่รองรับ

จะถอนโทเค็นในสัญญา SushiXSwap ได้อย่างไร?

ฟังก์ชันหลักใน SushiXSwap ใช้งานผ่านฟังก์ชันปรุงอาหาร ซึ่งมีชุดของการดำเนินการ และรายการของการดำเนินการที่รองรับมีดังนี้:

ในหมู่พวกเขาคือการดำเนินการ ACTION_DST_WITHDRAW_TOKEN ซึ่งมีการใช้งานโค้ดดังนี้:

ขั้นแรก ถอดรหัสข้อมูลที่ส่งผ่านไปยังฟังก์ชันปรุงอาหาร จากนั้นตัดสินว่าจำนวนเงินเท่ากับ 0 หรือไม่ หากเท่ากับ 0 ให้ตั้งค่าของจำนวนเงินเป็นยอดคงเหลือของโทเค็น ERC 20 ของสัญญาหรือยอดคงเหลือของ ETH สุดท้ายเรียก _transferTokens เพื่อโอนโทเค็นไปยังที่อยู่ที่ระบุ:

Sushi BentoBox

ดังนั้น เราจำเป็นต้องสร้างการดำเนินการและข้อมูลที่ส่งผ่านไปยังฟังก์ชันการปรุงอาหาร นั่นคือ ตั้งค่าการดำเนินการเป็น ACTION_DST_WITHDRAW_TOKEN สร้างโทเค็นที่จะถ่ายโอน ที่อยู่ผู้รับ และปริมาณในข้อมูล จากนั้นจึงถ่ายโอนโทเค็นใน สัญญา SushiXSwap

Sushi BentoBox เป็นส่วนประกอบในระบบนิเวศของ SushiSwap BentoBox เป็นผลิตภัณฑ์การเพิ่มประสิทธิภาพอัตราการเงินแบบกระจายอำนาจ (DeFi) ที่มีความยืดหยุ่นสูง พูดง่ายๆ ก็คือเป็นแพลตฟอร์มสัญญาอัจฉริยะที่ให้ผู้ใช้จัดเก็บ ยืม และรับดอกเบี้ย จุดประสงค์หลักของ BentoBox คือการเพิ่มรายได้ของผู้ใช้ในด้าน DeFi

โทเค็นจำนวนมากถูกเก็บไว้ในสัญญา BentoBox บน Ethereum ดังนั้นจึงมีพื้นที่สำหรับการเก็งกำไรในสัญญานี้หรือไม่?

ในสัญญา BentoBox ผู้ใช้สามารถดำเนินการฝากเงินผ่านฟังก์ชันการฝากเงิน และการใช้งานฟังก์ชันมีดังนี้:<= _tokenBalanceOf(token).sub(total.elastic)。

คุณจะเห็นว่าผู้ใช้ส่งผ่านโทเค็นแอดเดรส ที่อยู่เดบิต ที่อยู่รับสินค้า ปริมาณ และจำนวนหุ้น ขั้นแรก ฟังก์ชันจะดำเนินการตรวจสอบชุดหนึ่ง แล้วจึงแปลง จำนวนเงินหรือส่วนแบ่ง ประเด็นสำคัญอยู่ในบรรทัด 195-198 ที่นี่ ทำเช็ค: จำนวนเงิน

ยอดคงเหลือของโทเค็นบางรายการในสัญญา BentoBox จะถูกบันทึกโดยใช้ total.elastic ซึ่งคล้ายกับการสำรองในสัญญา Uniswap Pair ในบางกรณีจะมีความแตกต่างกับ _tokenBalanceOf(โทเค็น) เราสามารถใช้คุณลักษณะของฟังก์ชันการฝาก ที่นี่ และแปลงส่วนต่างเป็นยอดคงเหลือของคุณเองในสัญญา BentoBox

DODO

ดังนั้นเมื่อเราส่งพารามิเตอร์ เราตั้งค่า token เป็นที่อยู่โทเค็นโดยมีค่าส่วนต่าง ตั้งค่าของจำนวนเงินเป็นผลต่าง จากนั้นตั้งค่าจากเป็นที่อยู่ของสัญญา BentoBox และตั้งเป็นที่อยู่ของเราเอง ที่บรรทัด 207 เนื่องจากที่อยู่เป็นที่อยู่ของสัญญา BentoBox ดังนั้นจะไม่มีการโอน แต่มูลค่าของ total.elastic และ _tokenBalanceOf(โทเค็น) จะสมดุลและแปลงเป็นยอดคงเหลือของที่อยู่ในสัญญา

DODO เป็นแพลตฟอร์มการซื้อขายแบบกระจายอำนาจที่ใช้อัลกอริทึม Proactive Market Maker (PMM) ดั้งเดิมเพื่อให้สภาพคล่องบนเครือข่ายที่มีประสิทธิภาพสำหรับสินทรัพย์ Web3 DODO ไม่เพียงแต่ให้สภาพคล่องเท่านั้น แต่ยังรวบรวมสภาพคล่องจากการแลกเปลี่ยนอื่นๆ

DODO V2 Proxy 02 

DODO มีสัญญาหลายชุด ซึ่งผู้ใช้จะแลกเปลี่ยนโทเค็นผ่านสัญญา DODO V2 Proxy 02 เช่นเดียวกับสัญญา Uniswap Router สัญญานี้ยังมีโทเค็นบางส่วนด้วยเหตุผลต่างๆ กัน เราควรถอนโทเค็นเหล่านี้อย่างไร

มีฟังก์ชัน externalSwap ในสัญญา DODO V2 Proxy 02 ซึ่งใช้เพื่อเรียกแพลตฟอร์มภายนอกที่รวมโดย DODO สำหรับการแลกเปลี่ยน เช่น 0x, 1 นิ้ว และรหัสจะถูกนำไปใช้ดังนี้:

บรรทัดที่ 1719-1721 กำลังตรวจสอบพารามิเตอร์ขาเข้า จากนั้นบรรทัดที่ 1724 กำลังตรวจสอบว่า fromToken เป็น ETH หรือไม่ หากไม่ใช่ โทเค็นของผู้โทรจะถูกโอนไปยังสัญญา และอนุญาต หลังจากวิเคราะห์รหัสของสัญญา DODOAPPROVE ในภายหลัง พบว่าต้องตั้งค่า fromTokenAmount เป็น 0 เท่านั้นจึงจะเลี่ยงผ่านได้:

จากนั้นสัญญาภายนอกที่จะเรียกใช้จะได้รับการยืนยันและเฉพาะสัญญาที่อยู่ในรายการที่อนุญาตเท่านั้นที่สามารถเรียกได้ swapTarget และ calldataConcat ที่นี่ ผู้ใช้สามารถควบคุมได้ ดังนั้น คุณสามารถตั้งค่า swapTarget เป็นที่อยู่สัญญาเป็น 0x หรือ 1 นิ้ว จากนั้นตั้งค่า calldataConcat ไปที่การเข้ารหัสของฟังก์ชันการดูสัญญา เพื่อให้ค่าที่ส่งคืนเป็นจริง นอกจากนี้ยังสามารถผ่านการตรวจสอบความต้องการที่ตามมา:

ด้วยขั้นตอนข้างต้น เราสามารถแยกโทเค็น ERC 20 และ ETH ในสัญญา DODO V2 Proxy 02

1inch

ชื่อเรื่องรอง

1inch เป็นตัวรวบรวมการแลกเปลี่ยนแบบกระจายอำนาจ (DEX) ที่รวมสภาพคล่องจาก DEX หลายตัวเพื่อให้ผู้ใช้ได้รับราคาแลกเปลี่ยนโทเค็นที่ดีที่สุด ด้วยการรวมสภาพคล่องจากแหล่งต่างๆ 1inch ช่วยให้ผู้ใช้เพิ่มประสิทธิภาพการทำธุรกรรมและค้นหาราคาที่ดีที่สุดจากทุกแพลตฟอร์ม สัญญาอัจฉริยะของ 1inch จะทำการซื้อขายโดยอัตโนมัติระหว่างการแลกเปลี่ยนแบบกระจายศูนย์ต่างๆ ทำให้ผู้ใช้สามารถรับราคาที่ดีที่สุดและค่าคลาดเคลื่อนต่ำสุดระหว่างการแลกเปลี่ยนต่างๆ ได้อย่างง่ายดาย นอกจากนี้ 1inch ยังมีฟังก์ชันอื่นๆ เช่น การขุดสภาพคล่องและโทเค็นการกำกับดูแล

AggregationRouterV 5 

สัญญาหลักขนาด 1 นิ้วคือ AggregationRouter และเวอร์ชัน V 4 และ V 5 ถูกนำมาใช้มากขึ้นในปัจจุบัน สัญญาทั้ง 2 ฉบับนี้ยังมีโทเค็นบางส่วนด้วยเหตุผลต่างๆ กัน เราสามารถแยกพารามิเตอร์ในสัญญาได้โดยสร้างพารามิเตอร์ในโทเค็นฟังก์ชันขาเข้า

มีฟังก์ชัน swap ในสัญญา AggregationRouterV 5 และการใช้งานมีดังนี้:

หลังจากตรวจสอบ minReturnAmount ใน desc แล้ว ให้รับ srcToken และ dstToken จาก desc และสามารถข้ามบรรทัดถัดไป 986-997 ได้โดยสร้างแฟล็กและ srcToken ในโครงสร้าง desc:

จากนั้นเรียกใช้ฟังก์ชัน _execute ซึ่งจะมีการเรียกและสถานะการดำเนินการจะถูกตรวจสอบ เนื่องจาก executor ถูกส่งผ่านโดยผู้ใช้ เราจึงใช้ที่อยู่ 0 เพื่อข้ามที่นี่:

จากนั้นรับยอดคงเหลือของ dstToken ในสัญญา บรรทัด 1007-1018 เราสามารถสร้างแฟล็กและ minReturnAmount ใน desc เพื่อบายพาส:

สุดท้าย ยอดคงเหลือ dstToken ในสัญญาจะถูกโอนไปยังที่อยู่ dstReceiver ซึ่งผู้ใช้ควบคุมด้วย:

AggregationRouterV 4 

ด้วยขั้นตอนข้างต้น เราสามารถสร้างพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชัน swap เพื่อถอนโทเค็นในสัญญา AggregationRouterV 5

ชื่อเรื่องรอง

สรุป

สรุป

บทความนี้แนะนำการแลกเปลี่ยนและตัวรวบรวมแบบกระจายอำนาจโดยสังเขป และกล่าวถึงการเก็งกำไรที่เป็นไปได้ในหมู่พวกเขา และวิเคราะห์หลักการของการเก็งกำไรจากระดับรหัสสัญญา แต่ความสำเร็จในทางปฏิบัติยังเกี่ยวข้องกับปัจจัยหลายอย่าง เช่น GAS ความเร็วของโหนด เป็นต้น

เกี่ยวกับเรา

At Eocene Research, we provide the insights of intentions and security behind everything you know or don't know of blockchain, and empower every individual and organization to answer complex questions we hadn't even dreamed of back then.

เรียนรู้เพิ่มเติม:Website | Medium | Twitter

แลกเปลี่ยน
ETH
สัญญาที่ชาญฉลาด
การเงิน
DeFi
DEX
Uniswap
1inch
DODO
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
บทความนี้จะวิเคราะห์โอกาสในการเก็งกำไรที่การแลกเปลี่ยนแบบกระจายศูนย์และผู้รวบรวมอาจม
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android