Tổng quan
Tài chính phi tập trung (tiếng Anh: Decentralized Finance, thường được gọi là DeFi ) là một loại hình tài chính được tạo ra trên chuỗi khối, không dựa vào các tổ chức tài chính như công ty môi giới, sàn giao dịch hay ngân hàng để cung cấp các công cụ tài chính mà sử dụng trí thông minh trên chuỗi khối để hợp đồng thực hiện các hoạt động tài chính. Có rất nhiều cơ hội chênh lệch giá trong DeFi, bao gồm nhưng không giới hạn ở thanh lý và chênh lệch giá chênh lệch. Bài viết này sẽ phân tích các cơ hội chênh lệch giá mà một số sàn giao dịch phi tập trung ( DEX ) và bộ tổng hợp (Aggregators) có thể có đối với mã hợp đồng.
phân tích
Uniswap
Uniswap là một nền tảng giao dịch tiền điện tử phi tập trung áp dụng mô hình tạo lập thị trường tự động (AMM). Hiện tại có hai phiên bản phổ biến là Uniswap V2 và Uniswap V3. Chúng tôi sẽ lần lượt phân tích các cơ hội chênh lệch giá có thể có trong các phiên bản đó.
Bộ định tuyến Uniswap V2
Trong Uniswap V2, người dùng thường tương tác với hợp đồng Pair và hợp đồng Factory thông qua hợp đồng Bộ định tuyến. Nói chung, Bộ định tuyến chỉ chuyển mã thông báo trong các giao dịch chứ không lưu trữ mã thông báo, tuy nhiên, do nhiều lý do, chẳng hạn như AirDrop và lỗi chuyển, một số mã thông báo nhất định được lưu trữ trong hợp đồng Bộ định tuyến. Vậy làm thế nào để rút các token này?
Bằng cách phân tích mã của hợp đồng Uniswap V2 Router 02, người ta thấy rằng có một hàm removeLiquidityETHSupportingFeeOnTransferTokens :

Chức năng này được sử dụng để loại bỏ Thanh khoản trong đó một trong các mã thông báo là WETH. Địa chỉ được chuyển vào khi hàm removeLiquidity được gọi nội bộ là address(this) , nghĩa là hai mã thông báo sẽ được chuyển đến hợp đồng Bộ định tuyến trước, và sau đó Hợp đồng bộ định tuyến sau đó chuyển hai mã thông báo đến địa chỉ đã chỉ định. Mặc dù lượng WETH được chuyển ở đây được trả về bởi removeLiquidity và không thể sửa đổi, lượng của một Token khác được chuyển là balanceOf(address(this)) , là số dư của token trong hợp đồng Bộ định tuyến.
Do đó, theo phân tích ở trên, chúng ta có thể có được một quy trình chênh lệch giá:
Người ta theo dõi rằng có các mã thông báo ERC 20 trong hợp đồng Bộ định tuyến 02;
Người ta theo dõi rằng có các mã thông báo ERC 20 trong hợp đồng Bộ định tuyến 02;
Gọi addLiquidityETH để thêm Thanh khoản của mã thông báo ERC 20 và WETH;
Gọi removeLiquidityETHSupportingFeeOnTransferTokens để xóa Thanh khoản.
giới hạn:
Nếu mã thông báo chưa có Thanh khoản với WETH trước đó, nó sẽ mất một lượng nhỏ Thanh khoản (MINIMUM_LIQUIDITY) khi thêm Thanh khoản lần đầu tiên;
Chưa tìm thấy phương pháp trích xuất WETH và ETH trong hợp đồng Bộ định tuyến 02.
Cặp Uniswap V2
Hợp đồng Uniswap V2 Pair, hay còn gọi là pool Thanh khoản, lưu trữ hai loại mã thông báo cung cấp Thanh khoản Vì hợp đồng Pair sử dụng dự trữ để ghi lại số dư thay vì balanceOf(address(this)), ai đó đã trực tiếp chuyển thanh khoản do nhầm lẫn . Sẽ có sự khác biệt giữa số dư và dự trữ khi các mã thông báo Thanh khoản được đưa vào hợp đồng và có một chức năng cân bằng lướt qua trong hợp đồng Cặp , chúng ta có thể gọi chức năng này để trích xuất các mã thông báo chênh lệch:

Có thể thấy rằng chức năng này sẽ chuyển các mã thông báo chênh lệch giữa số dư và dự trữ của hai mã thông báo Thanh khoản trong nhóm Thanh khoản đến địa chỉ cần gửi.
Ngoài hai mã thông báo này trong nhóm Thanh khoản, cũng sẽ có các mã thông báo ERC 20 khác do chuyển nhầm, AirDrop, v.v. Làm cách nào để rút các mã thông báo này?
Sau khi phân tích mã của hợp đồng Cặp, người ta thấy rằng phần mã thông báo này không thể rút được, ngoại trừ một trường hợp: khi mã thông báo LP của nhóm tồn tại trong nhóm Thanh khoản.
Trong trường hợp này, chúng ta có thể gọi chức năng ghi của hợp đồng Cặp để loại bỏ Thanh khoản và lấy ra hai mã thông báo Thanh khoản tương ứng:

Uniswap V3 SwapRouter
Hợp đồng SwapRouter của Uniswap V3 cũng sẽ có tình huống tương tự như Bộ định tuyến Uniswap V2, có mã thông báo ERC 20 và ETH, nhưng may mắn thay, hợp đồng SwapRouter cung cấp một số chức năng để tạo điều kiện khai thác mã thông báo.
Để rút mã thông báo ERC 20, chúng ta có thể sử dụng hàm wipeToken :

Để rút ETH, chúng ta có thể sử dụng chức năng hoàn lạiETH :

Bạn cũng có thể gọi trực tiếp hàm unwrapWETH 9 để khôi phục WETH thành ETH và giải nén nó:

Trên đây là phân tích chênh lệch giá của hợp đồng Uniswap V3 SwapRouter.
Sau khi phân tích mã của hợp đồng Nhóm Uniswap V3, người ta thấy rằng không có cách nào để trích xuất các mã thông báo khác trong hợp đồng và không có sự khác biệt giữa số dư và dự trữ trong hợp đồng Cặp Uniswap V2.
hoán đổi sushi
SushiSwap khởi đầu là một nhánh của Uniswap và sau đó phát triển thành một hệ sinh thái độc lập cung cấp nhiều sản phẩm và dịch vụ tài chính khác nhau.
Vì SushiSwap giống với Uniswap V2 nên phương thức chênh lệch giá nêu trên cho Uniswap V2 cũng có thể áp dụng cho SushiSwap.
SushiXSwap
SushiXSwap là một giao thức giao dịch toàn chuỗi dựa trên LayerZero do SushiSwap khởi chạy. Các mạng được hỗ trợ bao gồm Optimism , Arbitrum , Fantom , BNB Chain, Polygon và Avalanche . Người dùng có thể thực hiện các giao dịch Chuỗi chéo giữa các mạng và tài sản được hỗ trợ.
Làm cách nào để rút mã thông báo trong hợp đồng SushiXSwap?
Các chức năng chính trong SushiXSwap được triển khai thông qua chức năng cook , cung cấp một loạt các thao tác và danh sách các thao tác được hỗ trợ như sau:

Trong số đó có một hoạt động ACTION_DST_WITHDRAW_TOKEN , có mã được triển khai như sau:

Đầu tiên, giải mã dữ liệu được truyền vào chức năng cook , sau đó đánh giá xem số tiền có bằng 0 hay không. Nếu nó bằng 0, hãy đặt giá trị của số tiền thành số dư của mã thông báo ERC 20 của hợp đồng hoặc số dư của ETH . Cuối cùng gọi _transferTokens để chuyển token đến địa chỉ đã chỉ định:

Do đó, chúng ta chỉ cần xây dựng các hành động và dữ liệu được truyền vào chức năng nấu ăn , nghĩa là đặt các hành động thành ACTION_DST_WITHDRAW_TOKEN , xây dựng mã thông báo sẽ được chuyển, địa chỉ nhận và số lượng trong dữ liệu, sau đó chuyển mã thông báo vào hợp đồng SushiXSwap.
Cơm hộp Sushi
Sushi BentoBox là một thành phần trong hệ sinh thái SushiSwap. BentoBox là một sản phẩm tối ưu hóa tỷ lệ tài chính phi tập trung (DeFi) rất linh hoạt. Nói một cách đơn giản, nó là một nền tảng hợp đồng thông minh cho phép người dùng lưu trữ, vay và kiếm lãi. Mục đích chính của BentoBox là tối ưu hóa thu nhập của người dùng trong lĩnh vực DeFi.
Một số lượng lớn mã thông báo được lưu trữ trong hợp đồng BentoBox trên Ethereum, vậy có chỗ cho chênh lệch giá trong hợp đồng này không?
Trong hợp đồng BentoBox, người dùng có thể thực hiện thao tác đặt cọc thông qua chức năng đặt cọc , cách thực hiện chức năng như sau:

Bạn có thể thấy rằng người dùng chuyển vào địa chỉ mã thông báo được chỉ định, địa chỉ ghi nợ, địa chỉ nhận, số lượng và số lượt chia sẻ. Trước tiên, hàm thực hiện một loạt kiểm tra, sau đó chuyển đổi số tiền hoặc lượt chia sẻ. Các điểm chính nằm trong các dòng 195-198, tại đây Đã thực hiện kiểm tra: số tiền <= _tokenBalanceOf(token).sub(total.elastic) .
Số dư của một mã thông báo nhất định trong hợp đồng BentoBox được ghi lại bằng cách sử dụng total.elastic , tương tự như dự trữ trong hợp đồng Uniswap Pair, trong một số trường hợp sẽ có sự khác biệt với _tokenBalanceOf(token) , chúng ta có thể sử dụng các đặc điểm của chức năng gửi tiền tại đây, Chuyển đổi phần chênh lệch thành số dư của chính bạn trong hợp đồng BentoBox.
Do đó, khi chúng tôi chuyển tham số, chúng tôi đặt mã thông báo làm địa chỉ mã thông báo có chênh lệch, đặt giá trị của số tiền làm chênh lệch, sau đó đặt from làm địa chỉ của hợp đồng BentoBox và đặt thành địa chỉ của chính chúng tôi. , do Địa chỉ là địa chỉ của hợp đồng BentoBox nên sẽ không có chuyển nhượng, nhưng giá trị của total.elastic và _tokenBalanceOf(token) sẽ được cân bằng và chuyển thành số dư của địa chỉ trong hợp đồng.
DODO
DODO là một nền tảng giao dịch phi tập trung sử dụng thuật toán Nhà tạo lập thị trường chủ động (PMM) ban đầu để cung cấp Thanh khoản trên chuỗi hiệu quả cho các tài sản Web3. DODO không chỉ tự cung cấp Thanh khoản mà còn tổng hợp Thanh khoản từ các sàn giao dịch khác.
DODO có một loạt hợp đồng, trong đó người dùng sẽ trao đổi mã thông báo thông qua hợp đồng DODO V2 Proxy 02. Tương tự như hợp đồng Bộ định tuyến Uniswap, hợp đồng này cũng có một số mã thông báo vì nhiều lý do, chúng tôi nên rút các mã thông báo này như thế nào?
DODO V2 Proxy 02
Có một chức năng hoán đổi bên ngoài trong hợp đồng DODO V2 Proxy 02 , được sử dụng để gọi nền tảng bên ngoài do DODO tổng hợp để trao đổi, chẳng hạn như 0x , 1INCH và mã được triển khai như sau:

Các dòng 1719-1721 đang kiểm tra các tham số đến và sau đó dòng 1724 đang kiểm tra xem fromToken có phải là ETH không. Nếu không, mã thông báo của người gọi sẽ được chuyển sang hợp đồng và sau đó được ủy quyền. Sau khi phân tích mã của hợp đồng DODOAPPROVE Sau đó, nó đã phát hiện ra rằng chỉ cần đặt fromTokenAmount thành 0 để bỏ qua:

Sau đó, hợp đồng bên ngoài được gọi sẽ được xác minh và chỉ những người trong whitelists có thể được gọi. Người dùng có thể kiểm soát cả swapTarget và calldataConcat ở đây, vì vậy bạn có thể đặt swapTarget thành địa chỉ hợp đồng là 0x hoặc 1INCH và sau đó đặt calldataConcat để Mã hóa chức năng xem của hợp đồng, để giá trị được trả về là đúng, cũng có thể vượt qua xác minh yêu cầu tiếp theo:

Tiếp theo, tất cả toToken trong hợp đồng sẽ được chuyển đến người gọi. ToToken ở đây có thể là ERC 20 token hoặc ETH. Sau khi gửi, số tiền dự kiến tối thiểu sẽ được kiểm tra. Chúng tôi sẽ đặt giá trị của minReturnAmount thành giá trị rất Nhỏ sẽ vượt qua. Hai cuộc gọi chức năng cuối cùng là không liên quan.

Thông qua các bước trên, chúng tôi có thể trích xuất mã thông báo ERC 20 và ETH trong hợp đồng DODO V2 Proxy 02.
1INCH
1INCH là một công cụ tổng hợp trao đổi phi tập trung (DEX), tập hợp Thanh khoản từ nhiều DEX để cung cấp cho người dùng giá trao đổi mã thông báo tốt nhất. Bằng cách tích hợp Thanh khoản từ các nguồn khác nhau, 1INCH giúp người dùng tối ưu hóa giao dịch và tìm giá tốt nhất trên các nền tảng. Hợp đồng thông minh của 1INCH tự động giao dịch giữa các sàn giao dịch phi tập trung khác nhau, cho phép người dùng dễ dàng nhận được mức giá tốt nhất và mức trượt giá thấp nhất giữa các sàn giao dịch khác nhau. Ngoài ra, 1INCH cũng cung cấp các chức năng khác như Yield Farming và mã thông báo quản trị.
Hợp đồng chính của 1INCH là AggregationRouter, phiên bản V 4 và V 5 hiện được sử dụng nhiều nhất, hai hợp đồng này cũng có một số mã thông báo vì nhiều lý do, chúng ta có thể trích xuất các tham số trong hợp đồng bằng cách xây dựng các tham số trong hàm gửi đến. .
tập hợpRouterV 5
Có một hàm hoán đổi trong hợp đồng AggregationRouterV 5 và cách triển khai của nó như sau:

Sau khi xác minh minReturnAmount trong desc, lấy srcToken và dstToken từ desc và có thể bỏ qua các dòng tiếp theo 986-997 bằng cách xây dựng các cờ và srcToken trong cấu trúc desc:

Sau đó thực thi hàm _execute , nơi lệnh gọi sẽ được thực hiện và trạng thái thực thi sẽ được xác minh Vì người thực thi được chuyển vào bởi người dùng, chúng ta có thể sử dụng địa chỉ 0 để bỏ qua nó tại đây:

Sau đó lấy số dư của dstToken trong hợp đồng. Các dòng 1007-1018 chúng ta có thể tạo cờ và minReturnAmount trong desc để bỏ qua:

Cuối cùng, số dư dstToken trong hợp đồng sẽ được chuyển đến địa chỉ dstReceiver, địa chỉ này cũng do người dùng kiểm soát:

Thông qua các bước trên, chúng ta có thể xây dựng các tham số được truyền cho chức năng hoán đổi để rút mã thông báo trong hợp đồng AggregationRouterV 5.
tập hợpRouterV 4
Không có nhiều khác biệt giữa AggregationRouterV 4 và AggregationRouterV 5. Ngoài ra còn có chức năng hoán đổi trong AggregationRouterV 4 , được thực hiện như sau:

Có thể thấy rằng việc triển khai chức năng hoán đổi giống như AggregationRouterV 5, ngoại trừ việc AggregationRouterV 5 tối ưu hóa cuộc gọi, do đó, mã thông báo được lưu trữ trong hợp đồng AggregationRouterV 4 có thể được trích xuất bằng phương pháp tương tự như AggregationRouterV 5.
tóm tắt
Bài viết này giới thiệu ngắn gọn về một số sàn giao dịch và công cụ tổng hợp phi tập trung, đồng thời thảo luận về chênh lệch giá có thể có giữa chúng và phân tích nguyên tắc chênh lệch giá từ cấp mã hợp đồng, nhưng thành công trong thực tế cũng liên quan đến nhiều yếu tố, chẳng hạn như GAS, tốc độ nút, v.v.
Thẩm quyền giải quyết
về chúng tôi
Tại Eocene Research, chúng tôi cung cấp thông tin chi tiết về ý định và bảo mật đằng sau mọi thứ bạn biết hoặc không biết về chuỗi khối, đồng thời trao quyền cho mọi cá nhân và tổ chức trả lời những câu hỏi phức tạp mà chúng tôi thậm chí còn chưa từng mơ tới.
Tìm hiểu thêm: Trang web | Trung bình | Twitter




