月亮链 月亮链
Ctrl+D收藏月亮链
首页 > ADA > 正文

KEN:从代码角度上看懂DEX的聚合交易?_mytoken币可以换人民币吗

作者:

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

19789枚ETH从未知钱包地址转入Coinbase:金色财经报道,据Whale Alert监测,北京时间17:17左右,19,789枚ETH(37,041,351美元)从未知钱包地址转移至Coinbase。[2023/7/29 16:06:08]

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

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

授权交易所使用你的token

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

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

getExpectedReturn()

swap()

getExpectedReturn-估算最佳兑换方案

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

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

上海市经信委:上海已有264家区块链备案企业 数量位居全国第二:金色财经报道,上海市经信委软件和信息服务业处处长裘薇今日在2023世界人工智能大会区块链+WEB3新发展论坛上表示,上海市已有264家区块链备案企业,数量位居全国第二;主导国际标准10余项,投资海外区块链企业和开源项目超过500个。她同时透露,上海还将于近期发布推动本市区块链产业创新发展的“上海方案”,一是以城市链重点工程重塑产业基础;二是以关键技术布局引领产业未来;三是以重大场景建设带动产业发展;四是以创新生态培育激发产业活力。[2023/7/8 22:25:29]

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

币安计划今年年中在哈萨克斯坦开设分支机构:金色财经报道,Binance计划到2023年年中在哈萨克斯坦开设分支机构。该公司区域主管vladimirsmerkis介绍称,该交易所将能够提供兑换和转换服务、法定货币的存取款、加密货币资产的存储和交易所交易。

2022年9月,币安在哈萨克斯坦获得了运营数字资产平台并在AIFC从事托管活动的许可证。[2023/4/28 14:33:09]

这个方法接收5个参数:

fromToken:当前拥有的token的地址

toToken:要交换的token的地址

amount:想要交换的token数量

parts:卖出数量拆分成多少份进行最优分布的估算。查看distribution?可以了解更多细节,默认是100

disableFlags:标记位,用于调整1inch的算法,例如可设置禁用某个特定的DEX

这个方法有2个返回值:

DeFi隐私桥Aztec聚合器ZK.Money总存储量已超1500ETH:7月13日消息,据Dune Analytics的数据显示,DeFi隐私桥Aztec聚合器ZK.Money总存储量已超1500枚ETH,已有6873单一用户地址使用,平均存储0.19ETH,最大单笔存储为32.01ETH。[2022/7/13 2:09:49]

returnAmount:执行交易后将收到的token数量。

distribution:一个uint256类型的数组,代表交易在不同DEX中的分布情况。例如,parts设置为100,成交额度的25%在Kyber的,成交额度的75%在Uniswap,那么?distribution?看起来是这样的:。

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

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

NFTScan发布Arbitrum网络NFT浏览器:5月31日消息,NFT基础设施NFTScan对外发布了Arbitrum NFTScan(arbitrum.nftscan.com)浏览器,为Arbitrum生态的NFT开发者和用户提供NFT相关数据的搜索查询服务。

据悉,Arbitrum网络是继Ethereum、BSC、Moonbeam、Polygon 之后,NFTScan浏览器支持的第5条区块链网络。[2022/5/31 3:52:12]

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

标签:KENTOKETOKTOKENmytoken币可以换人民币吗itoken钱包可靠吗TourismX TokenTomatoToken

ADA热门资讯
APE:关于LBank上线1NCH交易的公告_franklin币最新消息

尊敬的LBank用户:LBank将于2020年12月25日11:30(UTC8)上线1NCH,具体如下:开启交易对:1NCH/USDT开启充值时间:2020.12.2511:30(UTC8)开启.

1900/1/1 0:00:00
SEC:SEC诉讼:Tierion将从其2500万美元的代币销售中退还投资者_rio币最新消息

美国证券交易委员会已针对加密货币领域的另一家初创公司出售未注册证券采取了行动。Tierion通过代币销售筹集了2500万美元,该公司已同意“向投资者返还资金”并禁止其代币交易.

1900/1/1 0:00:00
INC:1inch 开启新流动性挖矿,未来两周将给 6 个池分配代币总供应量的 0.5%_uni币最新消息及前景

链闻消息,DEX聚合器1inch已开启新流动性挖矿计划,未来两周内会将1INCH代币总供应量的0.5%分配给6个池的流动性提供者.

1900/1/1 0:00:00
以太坊:V神2020年总结:如何重新评估世界的运转模式?_COIN

原文标题:《Endnoteson2020:CryptoandBeyond》在写这篇文章时,我正旅居新加坡.

1900/1/1 0:00:00
BIG:BigONE 关于「EOS 大丰收机池」收益发放完毕的公告(2020/12/25)_dragon币种

亲爱的用户:BigONE「EOS大丰收机池」的本周收益已全部发放完毕,请登陆您的BigONE账户进行查看.

1900/1/1 0:00:00
GAT:Gate.io 关于上线BasisCash项目BAS挖矿DeFi理财的公告(年化收益率高达1000%)_wesendit币gate

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

1900/1/1 0:00:00