加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

從代碼角度上看懂DEX的聚合交易?_TOKE:Swipe Token

Author:

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

1inch發幣了,不知道各位老鐵有沒有領到。有的人暗中竊喜,有人還不了解1inch,這篇文件就介紹了1inch的核心功能。

文章的主要步驟如下:

獲得最大的收益兌換方案

授權1inch合約操作你的代幣

利用第一步獲得的兌換方案進行交易

什么是去中心化交易所聚合器?

去中心化交易所聚合器,即DEX,以下都用DEX表示。DEX聚合器是一個平臺,它將搜索一組DEX,以尋找在給定時間和數量下執行交易的最佳價格。

1inchDEX聚合器

1inch的一大特色就是聚合交易,它會在很多個DEX找到收益最大的成交方式。比如100000dai想買x個eth,在uniswap成交77%,在Bancor成交23%,是最合算的,買到的eth最多。

1inch是由AntonBukov和SergejKunz開發的DEX聚合器,通過一次交易將訂單在多個DEX之間拆分,給用戶提供最好的兌換匯率。1inch的智能合約是開源的。

數字資產做市商Fasanara Digital在去中心化借貸市場Clearpool上啟動借款人池:3月31日消息,數字資產做市商Fasanara Digital在Clearpool的DeFi 協議上推出了一個新的借款人池。Fasanara Digital 于 2019 年成立,完全致力于數字資產的投資和開發,屬倫敦對沖基金Fasanara Capital旗下。Fasanara Capital成立于 2011 年,專門從事另類信貸和金融科技戰略,管理資產規模近40億美元。[2023/3/31 13:37:29]

在1inch執行交易,過程其實很簡單:

根據輸入的token或ETH數量,獲得預期可兌換的token數量

授權交易所使用你的token

使用第一步的獲取的token數量進行交易

我們首先仔細了解一下1inch的智能合約,讓我們感興趣的是這兩個方法:

getExpectedReturn()

派盾:又一套利者通過購入BAYC以獲取其質押的APE并出售:12月6日,據派盾檢測數據顯示,套利者(0x8237開頭地址)從DYDX平臺利用閃電貸借出90枚ETH,并購入BAYC#1633,同時獲得了該NFT下質押的10,000枚ApeCoin;套利者后又將所得ApeCoin兌換為約32.68枚ETH,并將BAYC#1633以65ETH價格出售。

注:如果用戶將APE質押在NFT池中,一旦出售該NFT,用戶將同時失去質押的APE所有權。[2022/12/6 21:26:06]

swap()

getExpectedReturn-估算最佳兌換方案

getExpectedReturn?可以隨意調用,不需要消耗任何gas。

這個函數需要傳入兌換參數,返回兌換的期望結果,以及交易在各個dex之間的兌換比例。

function?getExpectedReturn(????IERC20?fromToken,????IERC20?toToken,????uint256?amount,????uint256?parts,????uint256?disableFlags)?public?viewreturns(????uint256?returnAmount,????uint256?memory?distribution);

NFT永續合約交易平臺nftperp完成170萬美元融資:11月27日消息,NFT永續合約交易平臺nftperp以1700萬美元的估值完成170萬美元融資,Dialectic、Maven11、Flow Ventures、DCV Capital、Gagra Ventures、AscendEX Ventures、Perridon Ventures、Caballeros Capital、Cogitent Ventures、Nothing Research、Apollo Capital、Tykhe Block Ventures、OP Crypto等機構參投。據悉,nftperp跟蹤NFT集合的最低價格,允許用戶做多和做空NFT。[2022/11/27 20:55:15]

這個方法接收5個參數:

fromToken:當前擁有的token的地址

toToken:要交換的token的地址

amount:想要交換的token數量

BNB Chain 與藝術NFT平臺LiveArt推出世界杯主題黑客馬拉松“The LiveArt Championship”:金色財經報道,BNB Chain 宣布與藝術NFT平臺LiveArt推出世界杯主題黑客馬拉松“The LiveArt Championship”,所有提交的作品會經過審核,LiveArt 將向 BNB 鏈上的藝術社區分發 冠軍通行證,通行證持有者可以投票選出他們最喜歡的藝術品,獲得冠軍通行證票數最多的前 20 件藝術品將在BNB Chain上鑄造,參與度最高的選民將有機會獲得 BNB Chain 世界杯主題生態系統的Glory Pass以及 LiveArt 合作伙伴提供的其他福利。(prnewswire)[2022/10/23 16:35:40]

parts:賣出數量拆分成多少份進行最優分布的估算。查看distribution?可以了解更多細節,默認是100

disableFlags:標記位,用于調整1inch的算法,例如可設置禁用某個特定的DEX

Circle將推出專注于USDC支付的橋接協議:9月29日消息,加密支付公司Circle宣布即將推出支持USDC互操作性的跨鏈傳輸協議。Circle于周三在舊金山舉行的加密貨幣大會上宣布了這款產品,預計該產品將于今年晚些時候上線以太坊和Avalanche主網。新產品無需許可,支持USDC跨生態系統傳輸,以提高流動性,減少橋接資產的碎片化。與此同時,Circle還宣布,計劃在未來幾個月在Arbitrum、Cosmos、NEAR、optimistic和Polkadot等五個區塊鏈生態系統提供USDC。(The Block)[2022/9/29 22:38:58]

這個方法有2個返回值:

returnAmount:執行交易后將收到的token數量。

distribution:一個uint256類型的數組,代表交易在不同DEX中的分布情況。例如,parts設置為100,成交額度的25%在Kyber的,成交額度的75%在Uniswap,那么?distribution?看起來是這樣的:。

目前1inch支持的交易所和排序如下:

注意:如果你想交易Eth而不是ERC20token,fromToken需要設置為特殊的值?0x0或?0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE。

getExpectedReturn函數的返回值非常重要,因為接下來需要利用它來執行實際的鏈上兌換操作。

swap-執行多DEX兌換交易

要執行鏈上token兌換交易,就需要使用合約提供的另一個函數swap。調用swap時,需要傳入我們之前從getExpectedReturn返回的數據,這個操作需要花費gas。如果要賣出的是ERC20token,那么還需要先授權1inch合約可以操作你持有的待賣出token。swap函數的定義如下:

function?swap(????IERC20?fromToken,????IERC20?toToken,????uint256?amount,????uint256?minReturn,????uint256?memory?distribution,????uint256?disableFlags?)?public?payable;

swap函數接收6個參數:

fromToken:待賣出token的地址

toToken:待買入token的地址

amount:待賣出token的數量

minReturn:期望得到的待買入token的最少數量

distribution:兌換交易拆分分布數組

parts:執行估算時的拆分數量,默認值是100

disableFlags:標記位,例如可設置禁用某個特定的DEX

開發環境搭建

我們將使用?ganache-cli分叉(fork)當前的區塊鏈狀態,并提前在1個地址上充值了很多DAI。在示例中,地址是?0x78bc49be7bae5e0eec08780c86f0e8278b8b035b。我們還將gaslimit設置的非常高,因此在測試過程中不至于出現outofgas的問題,也不需要在每次交易前估算gas。啟動命令是:

ganache-cli?-f?https://mainnet

async?function?waitTransaction(txHash)?{????let?tx?=?null;????while?(tx?==?null)?{????????tx?=?await?web3

我們在之前已經獲得了兌換比率,現在把代碼變的更可讀,定義1個getQuote函數,返回一個包含所有參數的對象。

async?function?getQuote(fromToken,?toToken,?amount,?callback)?{????let?quote?=?null;????try?{????????quote?=?await?onesplitContract

一旦我們得到了兌換token的比率,接下來需要授權1inch可以操作我們持有的token,ERC20token標準不允許在一次交易中向合約發送token并觸發下一個操作。我們寫了一個簡單的函數,調用approval函數,并使用?waitTransaction?等待交易確認。

function?approveToken(tokenInstance,?receiver,?amount,?callback)?{????tokenInstance

);

最后的執行結果看起來是下面這樣的:

我們用1000DAI換回來5.85ETH。

在這個過程中,你可能會遇到的這樣一個錯誤提示:“VMExceptionwhileprocessingtransaction:revertOneSplit:actualreturnamountislessthanminReturn”。這表示鏈上的報價已經更新。如果想避免這種情況發生,你可以在代碼中引入一個滑點,根據交易金額,將minReturn參數減小1%或3%。

總結

1inch提供了出色的鏈上DEX聚合實現,可以在一個交易內利用多個DEX實現最優的兌換策略。1inch的API使用也很簡單,只需要用getExpectedReturn估算兌換方案,然后使用swap執行兌換方案,就可以得到最好的兌換結果。你不必總是用eth交易,也可以交換2個ERC20token,甚至可以用weth交易。

Tags:TOKEKENTOKENTOKCryowar TokenToken of FireDavincij15 TokenSwipe Token

幣安app下載
關于WBF對已上線幣種的隱藏、下線調整公告(三十三)_USD:SDTK

尊敬的用戶: 為了營造健康的數字資產環境,給用戶提供良好的交易體驗,根據《WBF交易分區及轉板試行管理辦法‘退市規則’》規定,WBF審核團隊將平臺已上線項目進行了全面的市場監測和進展跟蹤.

1900/1/1 0:00:00
幣虎2020年12月28日18:00上線1INCH現貨&永續合約

尊敬的用戶: 幣虎創新區于2020年12月28日18:00上線1INCH/USDT交易對。同時,幣虎合約交易區上線1INCHUSDT永續合約,并開通逐倉/全倉1-50倍杠桿,邀您體驗!截止目前,

1900/1/1 0:00:00
Huobi Global調整部分ETP產品持倉限額_Huobi:Huobi BSV

尊敬的用戶: 為了提升交易體驗,降低市場風險,HuobiGlobal已于2020年12月27日對ETP(ExchangeTradeProduct)的以下產品進行持倉限額調整.

1900/1/1 0:00:00
比特幣繼續新高,不要恐高癥_比特幣:WASABI價格

買入并持有,非常簡單,但其實是非常煎熬的,除非你完全不看它。在這個過程中,你買的幣上漲會忍不住想賣,因為怕它跌下來.

1900/1/1 0:00:00
FIL挖礦能不能參與?Filecoin幣價為何一直橫盤不動?_FIL:filecoin幣價格今日

Filecoin為何不上漲?這才是需要思考的一個問題,Filecoin不僅是不上漲,而且還不下跌.

1900/1/1 0:00:00
老山說幣:比特幣沖刺3萬大關受阻,后市如何操作?_USD:pohcoin

各位朋友們,你們好,我是老山說幣。在這個市場,如果你處于一直虧損的狀態,不如換個環境。也許正是你的一次改變,會給你帶來不一樣的結果.

1900/1/1 0:00:00
ads