以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

通過代碼識別DeFi中的套利機會_SWAP

Author:

Time:1900/1/1 0:00:00

概述

去中心化金融是一種創建于區塊鏈上的金融,它不依賴券商、交易所或銀行等金融機構提供金融工具,而是利用區塊鏈上的智能合約進行金融活動。在DeFi中存在了大量的套利機會,包括但不限于清算、差價套利。本文將分析部分去中心化交易所以及聚合器在合約代碼上可能存在的套利機會。分析

Uniswap

Uniswap是一個采用了自動做市商模型的去中心化的加密貨幣交易平臺,目前有兩個流行的版本,分別是UniswapV2和UniswapV3,我們將分別分析其中可能存在的套利機會。UniswapV2Router在UniswapV2中,用戶一般是通過Router合約與Pair合約以及Factory合約進行交互。通常來說Router只是會在交易中中轉代幣,而不會存儲代幣,但由于種種原因,如空投、轉賬失誤導致Router合約中存儲了某些代幣。那么如何將這些代幣提取出來呢?通過分析UniswapV2Router02合約的代碼,發現存在removeLiquidityETHSupportingFeeOnTransferTokens函數:

該函數用于移除其中一個代幣為WETH的流動性,其內部調用removeLiquidity函數時傳入的to的地址為address(this),也就是會將兩種代幣先轉移到Router合約中,然后Router合約再將兩種代幣轉移到指定的地址。這里雖然轉移的WETH的數量是removeLiquidity返回的,無法修改,但是轉移的另一種Token的數量是balanceOf(address(this)),即Router合約中的該代幣的余額。因此根據上述分析,我們能得到一個套利的流程:監控到Router02合約存在ERC20代幣;監控到Router02合約存在ERC20代幣;調用addLiquidityETH添加該ERC20代幣和WETH的流動性;調用removeLiquidityETHSupportingFeeOnTransferTokens移除流動性。局限性:如果該代幣之前沒有和WETH組流動性,當第一次添加流動性時會損失一小部分流動性;暫時未發現提取Router02合約中的WETH和ETH的方法。UniswapV2PairUniswapV2Pair合約,即所謂的流動性池,存儲著提供流動性的2種代幣,因為Pair合約中使用的是reserve來記錄余額而不是balanceOf(address(this)),因此有人直接誤轉流動性代幣到合約中時會出現balance和reserve出現差值,而Pair合約中存在平衡函數skim,我們可以調用該函數將這差值數量的代幣給提取出來:

Islander通過代幣銷售獲得143萬美元融資,將于明日開啟測試網:11月19日消息,去中心化Learn-to-Earn平臺Islander宣布通過代幣銷售獲得超143萬美元融資,包括Spark Digital Capital、ICON Plus Capital、Lancer Capital、Kyros Ventures、Maven11,Muhabbit Capital、VBC Ventures、Basics Capital、ZBS Capital、Avalanche Asia Star Fund、VB Ventures、XT Labs、MEXC和Panony等逾60個機構和合作伙伴投資,官方將為每位參與者空投5000枚$ISA。

同時,Islander還宣布將于11月20日開啟測試網,參與者可瓜分共2萬美元的空投獎金。據了解,Islander是一個去中心化Learn-to-Earn平臺,加密項目、加密狂熱者、意見領袖和內容創作者將以創新的方式管理和營銷自己的項目。[2021/11/20 7:00:33]

可以看到該函數會將流動性池中兩種流動性代幣的balance和reserve差值數量的代幣轉移到to地址。流動性池中除了這兩種代幣外,也會因為誤轉、空投等原因存在其他的ERC20代幣,如何提取這一部分的代幣呢?對Pair合約的代碼分析后發現無法提取這一部分代幣,只有一種情況例外:當流動性池中存在該池的LP代幣時。出現這種情況我們可以調用Pair合約的burn函數,移除流動性,取出相應的兩種流動性代幣:

UniswapV3SwapRouterUniswapV3的SwapRouter合約中也會存在和UniswapV2Router一樣的情況,存在ERC20代幣和ETH,但是幸運的是SwapRouter合約提供了幾個函數可以方便提取其中的代幣。提取ERC20代幣我們可以使用sweepToken函數:

Transient Network通過代幣銷售完成120萬美元融資:10月27日消息,智能合約市場Transient Network宣布已通過在兩個平臺Genesis Pool和Lemonade的IDO完成120萬美元融資。Transient正在構建“智能合約亞馬遜”——一個全球去中心化應用程序 (DApp) 市場,旨在幫助非編碼人員為特定用例和行業創建智能合約。在IDO公開發售之前,Transient在種子輪融資中籌集了27.5萬美元,風投公司Exit Forward等參與。 (Cointelegraph)[2021/10/27 6:15:48]

提取ETH我們可以使用refundETH函數:

也能夠直接調用unwrapWETH9函數將WETH還原成ETH并提取出來:

以上是對UniswapV3SwapRouter合約的套利分析。在對UniswapV3Pool合約的代碼進行分析后,發現沒有辦法提取其合約中的其他代幣,也不存在如UniswapV2Pair合約中balance和reserve有差值的情況。SushiSwap

SushiSwap最初是一個Uniswap的分叉項目,后來發展成為一個獨立的生態系統,提供了許多不同的金融服務和產品。因為SushiSwap和UniswapV2一樣,因此上述的針對UniswapV2的套利手段對與SushiSwap也同樣適用。SushiXSwapSushiXSwap是SushiSwap推出的基于LayerZero的全鏈交易協議,支持的網絡包括Optimism、Arbitrum、Fantom、BNBChain、Polygon和Avalanche。用戶可以在支持的網絡以及資產之間進行跨鏈交易。如何提取SushiXSwap合約中的代幣呢?SushiXSwap中主要的功能都通過cook函數實現,該函數提供了一系列的操作,支持操作列表如下:

Tokenise Stock Exchange與GMEX合作,通過代幣化證券實現融資:合規數字證券交易所Tokenise Stock Exchange已與GMEX Group的全資子公司GMEX Technologies(GMEX)達成合作。

GMEX提供多資產數字和傳統交易以及交易后業務和技術解決方案。此次合作的目標是利用區塊鏈技術,通過代幣化證券實現融資,使發行方能夠代幣化其股本、債務和收入流。(The Paypers)[2020/6/2]

其中有一個操作ACTION_DST_WITHDRAW_TOKEN,其代碼實現如下:

首先將傳入cook函數的data進行解碼,然后判斷amount是否等于0,等于0則將amount的值設為該合約的ERC20代幣的余額或者ETH的余額。最后調用_transferTokens將代幣轉移到指定的地址:

因此我們只需要構造傳入cook函數的actions和datas,即將actions設置為ACTION_DST_WITHDRAW_TOKEN,在data中構造想要轉移的代幣、接收地址、數量,即可轉移出SushiXSwap合約中的代幣。SushiBentoBoxSushiBentoBox是SushiSwap生態系統中的一個組件。BentoBox是一個高度靈活的去中心化金融利率優化產品。簡單來說,它是一個允許用戶存儲、借用和賺取利息的智能合約平臺。BentoBox的主要目的是優化用戶在DeFi領域中的收益。以太坊上的BentoBox合約中存儲了大量了代幣,那么該合約是否存在套利的空間呢?在BentoBox合約中用戶可以通過deposit函數進行存款操作,函數的實現如下:

王純:對于MEV可能存在的問題可通過代碼的方式來應對:F2Pool聯合創始人、stakefish創始人王純在DeFi Discussions線上峰會探討MEV(礦工可提取價值)話題時指出,以代碼即法律的觀點來講,就要看代碼是否允許提前交易重拍交易等礦工獲取MEV的行為。這有些像探討51%攻擊一樣,它是比特幣的特點而不是bug。在2016年的The DAO事件時有許多關于分叉的爭議,當時F2Pool可能是唯一不支持任何人為因素致使分叉的主流礦池,因為我們相信“代碼即法律”。我們可能并不應該去限制自己這樣的能力,而是在如果獲取MEV成為問題或者對網絡造成威脅,我們可以考慮創建一個API讓每個人都能做到提前交易或者重排交易,依次來應對這個問題。這類似于Push Tx或者交易加速這種功能,目前已經有參與者詢問我們是否可以提供在以太坊上類似的服務,我們可以看看這類服務如何影響網絡。[2020/5/4]

可以看到用戶傳入指定的代幣地址,扣款地址,接收地址,數量,股份數量,函數首先做了一系列校驗,然后將amount或者share進行轉換,關鍵點在195-198行,這里做了一個校驗:amount<=_tokenBalanceOf(token).sub(total.elastic)。在BentoBox合約中某種代幣的余額使用的是total.elastic來記錄,類似UniswapPair合約中的reserve,某些情況下會和_tokenBalanceOf(token)產生差值,我們可以利用deposit函數這里的特性,將差值部分真實轉換成自己在BentoBox合約中的余額。因此我們傳入參數時將token設置為存在差值的代幣地址,將amount的值設置為差值,然后將from設置為BentoBox合約的地址,將to設置為自己的地址,在207行時由于地址為BentoBox合約地址,因此不會進行轉賬,只是平衡了total.elastic和_tokenBalanceOf(token)的值,將其轉換為to地址在合約內的余額。DODO

動態 | Kik對抗SEC或將促使監管機構對通過代幣銷售發行的加密貨幣分類進行明確裁決:據Cointelegraph消息,雖然很難對加密貨幣Kin的創造者Kik和SEC之間將發生的事情做出決定性預測,Kobre&Kim律師Benjamin J. Sauter表示,“目前尚不清楚Kik是否會對SEC提出積極主張。大多數情況下公司會等著看SEC是否采取強制行動。不管怎樣,到目前為止,Kik已經提出一些可信的論點,因此,如果SEC決定采取執法行動,它將承擔合法的風險。” Kobre&Kim的David H. McGill稱,“如果目標是推翻豪伊測試或使其廣泛不適用于代幣,我認為這不太現實。但如果目標是讓法院同意,在爭議的特定事實和情況下,KIN代幣不構成證券,我認為Kik有合理的機會實現這一結果,然后可以作為其他代幣發行者反擊SEC的立足點。” 然而不管輸贏,Kik在公開對抗SEC方面邁出重要的一步:針對主管部門花很長時間才達成執法決定,以及SEC缺乏透明度而對美國加密行業造成損害,Kik表達了不滿。這可能會促使監管機構最終就如何對通過代幣銷售發行的加密貨幣進行分類做出一些明確裁決。如果該公司確實貫徹其倡議并起訴SEC,那么無論結果如何,美國法院很可能會做出這樣的裁決。[2019/6/2]

DODO是一個去中心化交易平臺,使用獨創的主動做市商算法為Web3資產提供高效的鏈上流動性。DODO既自己提供流動性,也聚合其它交易所的流動性。DODO有一系列合約,其中用戶會通過DODOV2Proxy02合約進行代幣的兌換。和UniswapRouter合約類似,該合約也會因為各種原因存在一些代幣,我們應當如何提取這些代幣?DODOV2Proxy02在DODOV2Proxy02合約中存在externalSwap函數,用來調用DODO聚合的外部平臺進行兌換,如0x,1inch,代碼實現如下:

1719-1721行在對傳入的參數做校驗,然后1724行校驗fromToken是否為ETH,不是的話則會將調用者的代幣轉移到合約中,然后進行授權,在分析了DODOAPPROVE合約的代碼后發現只需要將fromTokenAmount設置為0即可繞過:

然后會對調用的外部合約做校驗,是白名單內的才能夠調用,這里的swapTarget,calldataConcat都是由用戶可控的,因此可以將swapTarget設置為0x或者1inch的合約地址,然后calldataConcat設置為其合約的view函數的編碼,從而讓返回的值為true,也能通過后面的require校驗:

接下來會將合約中的toToken,全部轉移給調用者,這里的toToken可以是ERC20代幣,也可以是ETH,發送完后會進行最小的預期數量校驗,我們將minReturnAmount的值設置為非常小的值即可通過。最后兩個函數調用無關緊要。

通過以上的步驟我們就能夠提取出DODOV2Proxy02合約中的ERC20代幣以及ETH。1inch

1inch是一個去中心化交易所聚合器,它從多個DEX中匯集流動性,以便為用戶提供最佳的代幣兌換價格。通過整合來自不同來源的流動性,1inch幫助用戶優化交易并在各個平臺之間找到最優惠的價格。1inch的智能合約自動在各個去中心化交易所之間進行交易,使用戶能夠輕松地在不同交易所之間獲取最佳價格和最低滑點。此外,1inch還提供了其他功能,如流動性挖礦和治理代幣。1inch的主要合約是AggregationRouter,現在使用較多的是V4和V5版本,這兩個合約也會因為各種原因存在一些代幣,我們可以通過構造的傳入函數中的參數,提取合約中的代幣。AggregationRouterV5AggregationRouterV5合約存在swap函數,其實現如下:

校驗了desc中的minReturnAmount后,從desc中獲取srcToken和dstToken,接下來986-997行可以通過構造desc結構體中的flags和srcToken進行繞過:

然后執行函數_execute,這里會進行call調用,并會校驗執行狀態,由于executor由用戶傳入,因此這里我們可以使用0地址進行繞過:

然后獲取合約中dstToken的余額。1007-1018行我們可以構造desc中flags以及minReturnAmount進行繞過:

最后會將合約中的dstToken余額都轉到dstReceiver地址中,該地址也由用戶控制:

通過以上的步驟,我們能構造傳入swap函數的參數從而將AggregationRouterV5合約中的代幣提走。AggregationRouterV4AggregationRouterV4與AggregationRouterV5差別不大,AggregationRouterV4中也存在swap函數,實現如下:

可以發現跟AggregationRouterV5的swap函數的實現是一樣的,只是AggregationRouterV5對call進行了優化,因此使用和AggregationRouterV5一樣的方法即可提取出存在AggregationRouterV4合約中的代幣。總結

本文簡單介紹了部分去中心化交易所以及聚合器,并探討了其中可能存在的套利,從合約代碼層面分析了套利的原理,但在實際中能否成功還和諸多因素相關,如GAS,節點速度等。參考Reference

如何從defi中撿錢WhatIsUniswapSUshiAcademyAboutDODO1inchaggregationprotocol關于我們

AtEoceneResearch,weprovidetheinsightsofintentionsandsecuritybehindeverythingyouknowordon'tknowofblockchain,andempowereveryindividualandorganizationtoanswercomplexquestionswehadn'tevendreamedofbackthen.了解更多:Website|Medium|Twitter

Tags:SWAPTEROUTROUTECSWAP幣Terra ClassicOUT價格Router Protocol

歐易交易所app官網下載
淺談STO的未來機遇:Web3淘金熱中賣鏟子?_STO

在香港Web3嘉年華的閉幕式中,萬向區塊鏈董事長、HashKeyGroup董事長肖風發表了壓軸演講《Web3應用的三代幣模式》,結論是「Web3創業項目應該選擇STO」.

1900/1/1 0:00:00
一文速覽Sui第二輪開發者資助獲獎項目_ENT

4月25日,Sui基金會宣布向為Sui生態系統做出貢獻的項目提供第二輪開發者資助,本輪資助從1.5萬美元至5萬美元不等,總計23萬美元.

1900/1/1 0:00:00
BRC-20、ORC-20之后,BRC-21又是什么?_BRC

隨著BRC-20的爆火,一些圍繞著比特幣網絡構建的其他資產標準也開始相繼出現。5月7日,跨鏈互操作性項目Interlay的創始人AlexeiZamyatin提議推出BRC-21標準,以向比特幣網.

1900/1/1 0:00:00
歐洲議會批準MiCA法規,全球加密監管模板來了?_ICA

當地時間4月20日,歐盟立法者投票通過了加密資產市場(MiCA:MarketsinCrypto-Assets)法案,這使歐盟成為世界上第一個引入全面加密法的主要司法管轄區.

1900/1/1 0:00:00
SignalPlus:這算是紓困嗎?_SIG

各位朋友,歡迎來到SignalPlus宏觀點評。SignalPlus宏觀點評每天為各位更新宏觀市場信息,并分享我們對宏觀趨勢的觀察和看法。歡迎追蹤訂閱,與我們一起關注最新的市場動態.

1900/1/1 0:00:00
與L2一樣重要的應用鏈,誰能成為領跑者?_應用鏈

Web3近年來發展迅速,對可擴展解決方案的需求變得更加迫切。“應用鏈”敘事漸起:專注于特定用例、可互操作的區塊鏈網絡,可以為dApp提供更具可擴展性、高效和靈活的基礎設施.

1900/1/1 0:00:00
ads