比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

從代碼角度上看懂DEX的聚合交易?_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的智能合約是開源的。

以太坊Gas費飆升至357gwei:金色財經報道,據Etherscan最新數據顯示,以太坊Gas費目前已飆升至357gwei。[2023/3/11 12:56:38]

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

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

授權交易所使用你的token

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

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

getExpectedReturn()

swap()

getExpectedReturn-估算最佳兌換方案

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

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

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

彭博社:Celsius已收到美國大陪審團傳票:金色財經報道,破產的加密貨幣借貸服務提供商Celsius已收到美國大陪審團傳票,這意味著美國檢察官和幾家聯邦監管機構將從Celsius Network Ltd那里尋求更多證據信息,傳票內容顯示,SEC、CFTC 和 FTC 也向Celsiu公司發出了詢問。

據悉,大陪審團可以使用法院的權力傳喚證據,盡管他們也可以邀請(而不是指揮)證人作證。如果收到傳票,但認為不應該出庭作證,或者認為傳票的要求是“無理或壓制”,那么可以提出一個動議來消除這種聲音。Celsius表示,他們正在配合所有監管調查。[2022/10/17 17:28:14]

這個方法接收5個參數:

fromToken:當前擁有的token的地址

toToken:要交換的token的地址

amount:想要交換的token數量

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

Bitfinex即將上架Shimmer代幣SMR:10月1日消息,Bitfinex即將上架Shimmer代幣$SMR。據悉,Shimmer是IOTA計劃推出首個臨時網絡。在Shimmer網絡中,IOTA代幣持有者可以質押其IOTA代幣以獲得Shimmer代幣SMR作為獎勵。[2022/10/1 22:43:26]

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

這個方法有2個返回值:

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

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

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

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

泰國央行:計劃設定央行數字貨幣的零售試驗階段:8月5日消息,泰國央行(BOT)宣布將零售CBDC的開發范圍擴大到試驗階段,在有限規模內與私營部門合作進行零售CBDC的實際應用。BOT將評估試點的收益和相關風險,以便制定相關政策,完善未來CBDC設計。[2022/8/5 12:03:54]

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;

Zipmex將于19:00為交易錢包重啟存提服務:金色財經報道,加密貨幣交易所Zipmex表示,它正在探索所有可用的選項,并計劃在凍結客戶資金的第二天恢復從一些錢包中的提款。Zipmex正在探索所有可用的渠道,包括籌款、法律訴訟和重組,此外,該公司表示,它計劃在北京時間19點恢復其Trade Wallets的取款和存款,盡管從Z Wallets到Trade Wallets的轉賬將不可用,ZipUp帳戶也仍然被暫停。Zipmex已經收回了我們歷史上存放在我們的部署合作伙伴處的大部分資金和資產,并一直在積極努力解決剩余未償資產的情況。

Zipmex表示,它擁有4800萬美元的Babel Finance敞口和500萬美元的Celsius敞口。[2022/7/21 2:28:37]

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:TOKENTOKTOKEKENGet Money TokenGameStop tokenized stock FTXTrias Token (new)SellToken

狗狗幣最新價格
Gate.io 關于上線ESD算法穩定幣DeFi挖礦理財的公告(年化收益率高達1000%)_GATE

Gate.io上線ESD算法穩定幣DeFi挖礦理財,當前年化收益率約為500-3000%。收益率來自算法穩定幣項目智能合約價格穩定機制的代幣釋放,只有算法穩定幣出現溢價需要釋放的時候才會出現較高.

1900/1/1 0:00:00
Web3 社區項目 Friends With Benefits 啟動第一季,持有最低代幣數量為 55FWB_FWB

鏈聞消息,Web3社區項目FriendsWithBenefits(FWB)宣布啟動第一季活動,每一「季」都將包括獨家優惠、增加最低代幣持有量和變更的賺取FWB代幣的方式.

1900/1/1 0:00:00
Hotbit 定于2020年12月29日上線BSDS (Basis Dollar Share)_TBI

尊敬的用戶: Hotbit即將在開啟BSDS(BasisDollarShare)數字資產服務,并開放BSDS理財產品。預計年化收益:10%;計息:T1.

1900/1/1 0:00:00
每周市場觀察:XRP遭起訴下跌近50% 圣誕仍是牛市 | TokenInsight_TOK

要點總結 本周市場的主題是“平穩”。在假期到來之際,數字資產市場上并沒有什么波瀾。比特幣在上周突破20,000美元關口后,本周穩定在23,000美元附近;而以太坊的價格也穩定在600美元上下.

1900/1/1 0:00:00
Filecoin挖礦為什么會有初始質押?為什么會有扇區最短生命周期?_Filecoin

Filecoin網絡將通過激勵其經濟的持續增長及發展以實現這一使命,總得來說,Filecoin網絡是相對復雜的,并不是那么容易被理解,今天,我們先來了解Filecoin網絡相關名詞的定義.

1900/1/1 0:00:00
關于XWC恢復充提幣的公告_ATOM

公告編號2020122604各位關心ZBG的投資者們和項目方:ZBG平臺現已恢復XWC的充提幣.

1900/1/1 0:00:00
ads