木星链 木星链
Ctrl+D收藏木星链
首页 > PEPE币 > 正文

TOK:从代码角度上看懂DEX的聚合交易?

作者:

时间: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的智能合约是开源的。

韩国央行确定济州岛、釜山与仁川为CBDC支付测试候选区:7月31日消息,韩国央行确定济州岛、釜山与仁川为 CBDC 支付测试候选区,目前正与商业银行协调意见。韩国央行计划最终确定其中一个测试地区,确保该地区的商户能够接受 CBDC 支付,并在公共层面试验 CBDC 支付和分配流程。该试点计划将于明年进行,韩国央行将综合考虑预期用户数量以及对当地经济的连锁反应来选择试点地点。[2023/7/31 16:08:42]

在1inch执行交易,过程其实很简单:

根据输入的token或ETH数量,获得预期可兑换的token数量

授权交易所使用你的token

使用第一步的获取的token数量进行交易

我们首先仔细了解一下1inch的智能合约,让我们感兴趣的是这两个方法:

getExpectedReturn()

swap()

getExpectedReturn-估算最佳兑换方案

Jump Trading今晨向币安等交易所存入总计2660万美元的比特币:金色财经报道,区块链情报公司Arkham Intelligence监测显示,今日凌晨2:00后的一个小时内,JumpTrading向各个交易所存款地址存入了总计2660万美元的比特币。其中Jump向币安地址发送了2370万美元的比特币,向OKX发送了218万美元的比特币,向Bybit发送了72万美元的比特币。[2023/4/27 14:29:38]

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

这个函数需要传入兑换参数,返回兑换的期望结果,以及交易在各个dex之间的兑换比例。

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

数据:持有10枚以上以太坊的地址数量创历史新高:9月10日消息,Glassnode数据显示,持有10枚以上ETH的地址达到318,273个,创历史新高。[2022/9/10 13:21:03]

这个方法接收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?看起来是这样的:。

ADAM与ETC展开合作并成为其生态首个预言机:据官方消息,2022年8月17日,数据加密计算网络ADAM正式官宣与ETC展开生态合作。ADAM以第一个预言机项目身份入驻ETC生态并将为其生态内优质项目提供安全、高效和精准的链上数据服务。

ADAM是基于Web3.0的数据加密计算网络,拥有批量化数据加密传输功能,不仅能够连接实现世界与区块链系统,还能够实现各大公链生态数据信息无障碍流转;

ETC(Ethereum Classic)是原始非分支以太坊链的延续,并存在以保留“代码就是法律”的原则。ETC坚信,区块链一旦开始运行,它的发展方向就不被任何中心团队所左右,而是按照参与整个网络人员的共识和全网算力的共识所决定。[2022/8/17 12:31:03]

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

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

数据:约6.8万地址曾于4月15日前交互Genie:6月22日消息,据Dune Analytics的数据显示,约6.8万地址曾于4月15日前交互过NFT聚合平台Genie,初步满足空投要求。早间消息,Uniswap Labs宣布收购NFT聚合平台Genie,并将向Genie历史用户发放USDC空投,Uniswap Labs表示将对4月15日之前多次使用过Genie的历史用户或持有Genie Genesis NFT的用户进行USDC空投。[2022/6/22 4:44:44]

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交易。

标签:TOKKENTOKETOKENBitcoin and Ethereum Standard TokenAppleB TokenXDEFI Governance Token3X Short Cosmos Token

PEPE币热门资讯
TOK:TOKOK关于上线LON的公告

尊敬的TOKOK用户:TOKOK将于2020年12月28日12:00正式上线LON,同时在开通LON/USDT交易对,欢迎用户前往交易体验.

1900/1/1 0:00:00
GAT:Gate.io 已经上线BasisCash项目BAS活期PoS理财的公告(首日年化率高达2300%)

Gate.io上线BasisCash项目治理代币BAS挖矿DeFi理财,抵押BAS挖BAC稳定代币。收益按七日平均持仓发放,当前年化收益率约为500-3000%.

1900/1/1 0:00:00
比特币:币圈罗浩天:12.25btc震荡区间,延续低多思路,圣诞节快乐

市场风云,变幻莫测,不如定其心,观其势,谋定而后动,取己所需,不贪婪,不好战,收放自如,方能稳操胜券!大家好我是罗浩天!实时快讯今天中午11点阿根廷比特币价格为370.6万阿根廷比索.

1900/1/1 0:00:00
FIL:Filecoin总共有几种质押?

Filecoin挖矿相对于BTC挖矿要复杂的多,其构建的是一个分布式存储市场,而不是功能单一的点对点支付系统。面对来自互联网用户的真实需求,Filecoin的分布式存储网络必须保证服务的质量.

1900/1/1 0:00:00
COI:老山说币:元旦即将来临,机构是否还会进入

各位朋友们,你们好,我是老山说币。在这个市场,如果你处于一直亏损的状态,不如换个环境。也许正是你的一次改变,会给你带来不一样的结果.

1900/1/1 0:00:00
比特币:加密衍生品周报 | 季度交割日前后持仓数据有何变化?

过去一周,衍生品交易所中比特币呈净流入状态,以太坊则净流出超36万枚。尽管以太坊期权持仓在季度交割日前持仓创下历史记录,但交割日后却骤减四成。比特币期货持仓不减反增,续刷历史记录.

1900/1/1 0:00:00