概述
去中心化金融是一種創建于區塊鏈上的金融,它不依賴券商、交易所或銀行等金融機構提供金融工具,而是利用區塊鏈上的智能合約進行金融活動。在DeFi中存在了大量的套利機會,包括但不限于清算、差價套利。本文將分析部分去中心化交易所以及聚合器在合約代碼上可能存在的套利機會。
分析
Uniswap
Uniswap是一個采用了自動做市商模型的去中心化的加密貨幣交易平臺,目前有兩個流行的版本,分別是UniswapV2和UniswapV3,我們將分別分析其中可能存在的套利機會。
UniswapV2Router
在UniswapV2中,用戶一般是通過Router合約與Pair合約以及Factory合約進行交互。通常來說Router只是會在交易中中轉代幣,而不會存儲代幣,但由于種種原因,如空投、轉賬失誤導致Router合約中存儲了某些代幣。那么如何將這些代幣提取出來呢?
通過分析UniswapV2Router?02合約的代碼,發現存在removeLiquidityETHSupportingFeeOnTransferTokens函數:
該函數用于移除其中一個代幣為WETH的流動性,其內部調用removeLiquidity函數時傳入的to的地址為address(this),也就是會將兩種代幣先轉移到Router合約中,然后Router合約再將兩種代幣轉移到指定的地址。這里雖然轉移的WETH的數量是removeLiquidity返回的,無法修改,但是轉移的另一種Token的數量是balanceOf(address(this)),即Router合約中的該代幣的余額。
因此根據上述分析,我們能得到一個套利的流程:
美眾議院金融服務委員會通過代幣托管法案:金色財經報道,美國眾議院金融服務委員會表示《支付穩定幣透明度法案》(Clarityfor Payment Stablecoins Actof 2023)和《保存代幣法案》(Keep Your Coins Actof 2023)與其他五項金融相關法案一起獲得通過。這些法案分別旨在對支付穩定幣的發行提供監管,并確保允許加密貨幣用戶在自我托管錢包中保管其資產。
金色財經此前報道,美國眾議院金融服務委員會就《Clarityfor Payment Stablecoins Actof 2023》和《Keep Your Coins Actof 2023》進行審議投票。[2023/7/28 16:04:04]
監控到Router?02合約存在ERC?20代幣;
監控到Router?02合約存在ERC?20代幣;
調用addLiquidityETH添加該ERC?20代幣和WETH的流動性;
調用removeLiquidityETHSupportingFeeOnTransferTokens移除流動性。
局限性:
如果該代幣之前沒有和WETH組流動性,當第一次添加流動性時會損失一小部分流動性;
暫時未發現提取Router?02合約中的WETH和ETH的方法。
UniswapV2Pair
UniswapV2Pair合約,即所謂的流動性池,存儲著提供流動性的?2?種代幣,因為Pair合約中使用的是reserve來記錄余額而不是balanceOf(address(this)),因此有人直接誤轉流動性代幣到合約中時會出現balance和reserve出現差值,而Pair合約中存在平衡函數skim,我們可以調用該函數將這差值數量的代幣給提取出來:
BSC-WBNB-WOOF交易對通過代幣后門跑路,涉及金額約11.5萬美元:2月6日消息,據區塊鏈安全審計公司Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測顯示,BSC-WBNB-WOOF交易對被攻擊,交易哈希:0xea5cf9199d23a9108d84e9204cb13795a480b34a6e4ef448245a1452f69fe781。
據Beosin安全技術人員分析,該攻擊是由于WOOF代幣合約的后門代碼導致的,WOOF的address(jZKbvD)權限地址可以使用transferFrom函數0授權轉移任何地址的WOOF代幣。攻擊者通過transferFrom函數轉移走了BSC-WBNB-WOOF交易對內的WOOF代幣,并更新池子的儲備量,接著使用大量的WOOF代幣兌換交易對內的所有WBNB。
目前涉及資金約11.5萬美元,大部分通過攻擊者地址(0x9b07f0488390a2d9c7af9ae40e0e64f31489006d)分散到其他地址。[2023/2/6 11:50:18]
可以看到該函數會將流動性池中兩種流動性代幣的balance和reserve差值數量的代幣轉移到to地址。
流動性池中除了這兩種代幣外,也會因為誤轉、空投等原因存在其他的ERC?20代幣,如何提取這一部分的代幣呢?
對Pair合約的代碼分析后發現無法提取這一部分代幣,只有一種情況例外:當流動性池中存在該池的LP代幣時。
出現這種情況我們可以調用Pair合約的burn函數,移除流動性,取出相應的兩種流動性代幣:
UniswapV3SwapRouter
UniswapV3的SwapRouter合約中也會存在和UniswapV2Router一樣的情況,存在ERC?20代幣和ETH,但是幸運的是SwapRouter合約提供了幾個函數可以方便提取其中的代幣。
DeSo區塊鏈通過代幣銷售獲得2億美元融資,a16z等參投:9月21日消息,BitClout創始人(化名為Diamondhands)透露自己的身份是穩定幣初創公司Basis創始人Nader Al-Naji,Basis因監管限制于2018年關閉。Nader Al-Naji的新區塊鏈網絡Decentralized Social(DeSo)通過出售DESO代幣獲得2億美元融資,Andreessen Horowitz(a16z)、Sequoia、Social Capital、TQ Ventures、Coinbase Ventures、Winklevoss Capital、Polychain Capital、Pantera Capital、Arrington Capital、Blockchange Ventures、Distributed Global、Blockchain.com Ventures、Hack Ventures、Reddit聯合創始人Alexis Ohanian等參投。
DeSo區塊鏈支持傳統社交媒體功能(如創建個人資料和帖子)以及區塊鏈原生功能(如社交代幣、小費和NFT),這些功能可以讓創作者賺錢。Al-Naji表示,所有想要使用DeSo區塊鏈或基于該區塊鏈構建的應用程序的人都必須持有DESO代幣。[2021/9/21 23:40:46]
提取ERC?20代幣我們可以使用sweepToken函數:
提取ETH我們可以使用refundETH函數:
也能夠直接調用unwrapWETH?9?函數將WETH還原成ETH并提取出來:
動態 | 阿里巴巴影業將通過代幣發行新的電影版權:據CoinTelegraph今日報道,阿里巴巴集團旗下的電影制作公司阿里巴巴影業計劃將其新片《迎風而上》的發行權代幣化。該公司已與紐約去中心化娛樂平臺Breaker(前身為SingularDTV)簽署了一項協議,將利用其區塊鏈平臺在海外發行該片。[2019/11/22]
以上是對UniswapV3SwapRouter合約的套利分析。
在對Uniswap?V3?Pool合約的代碼進行分析后,發現沒有辦法提取其合約中的其他代幣,也不存在如UniswapV2Pair合約中balance和reserve有差值的情況。
SushiSwap
SushiSwap最初是一個Uniswap的分叉項目,后來發展成為一個獨立的生態系統,提供了許多不同的金融服務和產品。
因為SushiSwap和UniswapV2一樣,因此上述的針對UniswapV2的套利手段對與SushiSwap也同樣適用。
SushiXSwap
SushiXSwap是SushiSwap推出的基于LayerZero的全鏈交易協議,支持的網絡包括Optimism、Arbitrum、Fantom、BNBChain、Polygon和Avalanche。用戶可以在支持的網絡以及資產之間進行跨鏈交易。
如何提取SushiXSwap合約中的代幣呢?
SushiXSwap中主要的功能都通過cook函數實現,該函數提供了一系列的操作,支持操作列表如下:
其中有一個操作ACTION_DST_WITHDRAW_TOKEN,其代碼實現如下:
動態 | 門羅幣網站錢包通過代碼審計 安全漏洞已修復:據Cointelegraph報道,門羅幣網站錢包XMRWallet宣布,已通過區塊鏈策略和科技顧問集團New Alchemy對其進行的代碼審計,“一些潛在的漏洞”現已得到修復,其風險得到緩解。
據悉,審計對象包括其網站流量和用戶界面等。[2018/7/25]
首先將傳入cook函數的data進行解碼,然后判斷amount是否等于?0?,等于?0?則將amount的值設為該合約的ERC?20代幣的余額或者ETH的余額。最后調用_transferTokens將代幣轉移到指定的地址:
因此我們只需要構造傳入cook函數的actions和datas,即將actions設置為ACTION_DST_WITHDRAW_TOKEN,在data中構造想要轉移的代幣、接收地址、數量,即可轉移出SushiXSwap合約中的代幣。
SushiBentoBox
SushiBentoBox是SushiSwap生態系統中的一個組件。BentoBox是一個高度靈活的去中心化金融利率優化產品。簡單來說,它是一個允許用戶存儲、借用和賺取利息的智能合約平臺。BentoBox的主要目的是優化用戶在DeFi領域中的收益。
以太坊上的BentoBox合約中存儲了大量了代幣,那么該合約是否存在套利的空間呢?
在BentoBox合約中用戶可以通過deposit函數進行存款操作,函數的實現如下:
可以看到用戶傳入指定的代幣地址,扣款地址,接收地址,數量,股份數量,函數首先做了一系列校驗,然后將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
DODO是一個去中心化交易平臺,使用獨創的主動做市商算法為Web3資產提供高效的鏈上流動性。DODO既自己提供流動性,也聚合其它交易所的流動性。
DODO有一系列合約,其中用戶會通過DODO?V2?Proxy?02合約進行代幣的兌換。和UniswapRouter合約類似,該合約也會因為各種原因存在一些代幣,我們應當如何提取這些代幣?
DODO?V2?Proxy?02?
在DODO?V2?Proxy?02合約中存在externalSwap函數,用來調用DODO聚合的外部平臺進行兌換,如0x,1inch,代碼實現如下:
1719-1721?行在對傳入的參數做校驗,然后?1724?行校驗fromToken是否為ETH,不是的話則會將調用者的代幣轉移到合約中,然后進行授權,在分析了DODOAPPROVE?合約的代碼后發現只需要將fromTokenAmount設置為?0?即可繞過:
然后會對調用的外部合約做校驗,是白名單內的才能夠調用,這里的swapTarget,calldataConcat都是由用戶可控的,因此可以將swapTarget設置為0x或者1inch的合約地址,然后calldataConcat設置為其合約的view函數的編碼,從而讓返回的值為true,也能通過后面的require校驗:
接下來會將合約中的toToken,全部轉移給調用者,這里的toToken可以是ERC?20代幣,也可以是ETH,發送完后會進行最小的預期數量校驗,我們將minReturnAmount的值設置為非常小的值即可通過。最后兩個函數調用無關緊要。
通過以上的步驟我們就能夠提取出DODO?V2?Proxy?02合約中的ERC?20代幣以及ETH。
1inch
1inch是一個去中心化交易所聚合器,它從多個DEX中匯集流動性,以便為用戶提供最佳的代幣兌換價格。通過整合來自不同來源的流動性,1inch幫助用戶優化交易并在各個平臺之間找到最優惠的價格。1inch的智能合約自動在各個去中心化交易所之間進行交易,使用戶能夠輕松地在不同交易所之間獲取最佳價格和最低滑點。此外,1inch還提供了其他功能,如流動性挖礦和治理代幣。
1inch的主要合約是AggregationRouter,現在使用較多的是V?4和V?5版本,這兩個合約也會因為各種原因存在一些代幣,我們可以通過構造的傳入函數中的參數,提取合約中的代幣。
AggregationRouterV?5?
AggregationRouterV?5合約存在swap函數,其實現如下:
校驗了desc中的minReturnAmount后,從desc中獲取srcToken和dstToken,接下來986-997?行可以通過構造desc結構體中的flags和srcToken進行繞過:
然后執行函數_execute,這里會進行call調用,并會校驗執行狀態,由于executor由用戶傳入,因此這里我們可以使用?0?地址進行繞過:
然后獲取合約中dstToken的余額。1007-1018?行我們可以構造desc中flags以及minReturnAmount進行繞過:
最后會將合約中的dstToken余額都轉到dstReceiver地址中,該地址也由用戶控制:
通過以上的步驟,我們能構造傳入swap函數的參數從而將AggregationRouterV?5合約中的代幣提走。
AggregationRouterV?4?
AggregationRouterV?4與AggregationRouterV?5差別不大,AggregationRouterV?4中也存在swap函數,實現如下:
可以發現跟AggregationRouterV?5的swap函數的實現是一樣的,只是AggregationRouterV?5對call進行了優化,因此使用和AggregationRouterV?5一樣的方法即可提取出存在AggregationRouterV?4合約中的代幣。
總結
本文簡單介紹了部分去中心化交易所以及聚合器,并探討了其中可能存在的套利,從合約代碼層面分析了套利的原理,但在實際中能否成功還和諸多因素相關,如GAS,節點速度等。
Tags:SWAPTEROUTROUTELimoCoin SwapPterosaur FinanceSPROUT價格route幣今日價格
不知是美國證交會近來一系列加密監管舉措引發了行業眾怒,還是中國香港等地區在這一領域奮起直追讓“老大哥”感受到了壓力,美國立法者在加密監管方面終于有了一些實質性的新進展.
1900/1/1 0:00:00作者:Flowslikeosmo,DeFiKOL;翻譯:金色財經0x25在Arbitrum空投后,像AndrewKang這樣的加密巨鯨已經購買了數百萬美元的ARB代幣.
1900/1/1 0:00:00投資邏輯 完整的收益策略工具包 在傳統金融市場中,利率衍生品的日交易量高達數萬億,市場參與者利用這一金融產品可以進行投機或對沖利率的波動。隨著去中心化金融的不斷成熟,這類收益的機會也將逐步增加.
1900/1/1 0:00:00元宇宙的初期、中期和長期?我們認為,元宇宙初期是多維共創互信網,是以區塊鏈為基礎,虛實融合的,由創作者驅動的,共創、共治、共享的數字新世界.
1900/1/1 0:00:002023年4月20日根據官方推特消息公告,公鏈項目Sui已經敲定將在5月3日上線主網,而事先通過加密貨幣交易所發售的原生代幣SUI也將在主網啟動期間被解鎖.
1900/1/1 0:00:00DeFi數據 1、DeFi代幣總市值:524.1億美元 DeFi總市值及前十代幣數據來源:coingecko2、過去24小時去中心化交易所的交易量24.
1900/1/1 0:00:00