以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > 幣贏 > Info

從代碼角度上看懂DEX的聚合交易?_KEN

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的智能合約是開源的。

知情人士:馬斯克擬任命NBCUniversal廣告主管為推特新任CEO:金色財經報道,《華爾街日報》援引知情人士報道,埃隆-馬斯克正在與NBCUniversal的廣告主管Linda Yaccarino商談,擬任命她為推特的新任首席執行官。

早些時間報道,馬斯克為X和推特找到了一位新CEO,她將在6周后開始履新。馬斯克將轉任X和推特的執行董事長和首席技術官,負責產品、軟件和系統操作。[2023/5/12 14:59:57]

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

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

授權交易所使用你的token

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

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

getExpectedReturn()

swap()

getExpectedReturn-估算最佳兌換方案

OpenAI或將再次在意大利開放:金色財經報道,當地時間周三(4月12日),意大利數據保護局(Garante)提出了一系列聊天機器人ChatGPT在該國恢復使用的要求。在周三的聲明中,Garante對OpenAI提出了一系列需要在本月底前滿足的具體要求,并表示,在解決監管機構的擔憂后,意大利當局將暫停對OpenAI處理該國用戶數據的臨時限制令,OpenAI也將再次在意大利開放。大約兩周前,Garante以涉嫌違反數據收集規則為由,對ChatGPT的開放公司OpenAI展開調查,并宣布禁止使用ChatGPT,且暫時限制OpenAI處理意大利用戶數據。[2023/4/13 14:00:19]

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

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

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

近4900萬枚USDC從幣安轉至孫宇晨地址:金色財經報道,據PeckShieldAlert監測,北京時間15:03,近4900萬枚USDC已從幣安轉移到鏈上標記為Justin Sun(孫宇晨)的地址。[2023/3/8 12:49:42]

這個方法接收5個參數:

fromToken:當前擁有的token的地址

toToken:要交換的token的地址

amount:想要交換的token數量

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

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

這個方法有2個返回值:

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

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

PancakeSwap:Pottery系統出現問題,已重新安排時間:金色財經報道,據PancakeSwap在社交媒體披露,其Pottery系統出現了一個“小問題”,因此已經重新安排了Pottery日期和時間,時間調整不會影響隊列名單。此外,從2月2日開始的Pottery時間將恢復,即UTC時間每周五中午12點。[2023/1/14 11:12:05]

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

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

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

swap-執行多DEX兌換交易

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

Ripple前高管Devan Moorthy加入Algorand基金會:8月16日消息,Ripple前業務發展(APAC)高級經理Devan Moorthy已加入Algorand基金會。此前Cardano技術貢獻者John Alan Woods也已加入Algorand基金會,擔任其首席技術官。[2022/8/16 12:29:13]

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:KENTOKETOKTOKENkraken提款流程TRAMSV1 TokenUpload TokenLife Token V2

幣贏
巴德言幣:我跟A股的經歷!_300

各位老鐵大家好,我是你們的朋友巴德。跟著我的客戶都是做了很久的,不是我帶他們收獲了多少,而是我用心在指導,毫無保留的教技術,經常熬夜盯盤,深夜告知客戶出場或進單;我的長遠目標是有收獲的時候大家都.

1900/1/1 0:00:00
“與時共創”第二屆年度金色盛典圓滿舉辦_區塊鏈

2020年行至末尾,總有一些歷經時光的打磨,四散霓虹般的故事與意義,與時共創,成為時代之所向。翻開記憶的冊子,關于2020年的無數瞬間連綴.

1900/1/1 0:00:00
關于ZT創新板即將上線PHT(Phantom)的公告_AVE

尊敬的ZT用戶:PHT已達到點亮上幣條件。ZT創新板即將上線PHT(Phantom),并開啟PHT/USDT交易對.

1900/1/1 0:00:00
中幣關于開啟第十九期投票上幣的公告_AMA

尊敬的中幣用戶: 中幣將于香港時間2020年12月30日14:00正式開啟第十九期投票上幣,投票成功的項目將獲得中幣平臺上幣資格.

1900/1/1 0:00:00
Gate.io網格交易每日賽第9-10日獎勵已發,總獎池20,000美元火熱進行中_GAT

為慶祝比特幣突破2w美元,Gate.io于12月18日8:00—2021年1月1日8:00隆重上線網格交易每日賽贏20,000美金活動,連續14天單獨進行比賽和排名,每日獲獎名額30名.

1900/1/1 0:00:00
雷盾學堂:為什么說不要“預測”,而是要趨勢“跟隨”_LID

“預測”和“分析”不應該是一個成熟的交易者應該做的。預測那是分析師和交易愛好者該做的事情,交易者該做的就是用特定的定式來驗證行情,并且用行情來進行反驗證.

1900/1/1 0:00:00
ads