链资讯 链资讯
Ctrl+D收藏链资讯

1INCH:从代码角度上看懂DEX的聚合交易?_BeFaster Holder Token

作者:

时间:

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

BKEX Global将于今日16:30上线ADEL:据BKEX Global公告,BKEX Global将于2020年9月3日16:30(UTC+8)上线ADEL(Pearl),开放交易对:ADEL/USDT。

Akropolis是一个能够创建分布式金融网络的协议,该网络由成员所有的金融组织组成,旨在通过分布式网络提供基本金融服务(储蓄,投资,社会保险)而不依赖于传统金融机构。[2020/9/3]

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

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

授权交易所使用你的token

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

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

getExpectedReturn()

swap()

getExpectedReturn-估算最佳兑换方案

BKEX伯翰:手续费上涨和网络拥堵可能会迫使一部分投资者离场:2020年5月23日,由百团大战、节点咨询、金色财经主办,莱比特、算力360联合主办的百团大战矿业峰会·丰水期之战在成都开幕。

在会上,BKEX合伙人伯翰表示,2020年被誉为减产元年,对矿业生态和数字资产市场来说都注定是不平凡的一年。当减半遭遇疫情的时候,两个历史性机遇相互碰撞,过往市场经验不再具备参考性,尽管随着国内疫情的缓解。恐慌情绪逐渐被消化,市场再回暖,比特币还一度突破了1万,市场对减半行情期待有所回升。尽管5月20号减半后调整了挖矿难度,全网难度下调6%,单位算力收益较之前有所提高,手续费也有所增加,占到总奖励的比重由3个月前的1.22%,上涨到现在的26.75%,矿工的收益得到了一部分的提升,但手续费的上涨又会影响到交易体验,同时还意味着网络拥堵。双重因素可能会迫使一部分的投资者离场。

从长远来看,对币价的上涨是不利的,至于矿机,有45款老比特币矿机无法获利,面临淘汰,整个矿业市场在发生比较大的变化,市场规律会促使行业优胜劣汰。行业陷入了微型死亡螺旋:区块链奖励减半之后矿工会选择离场,离场之后算力会下降,出矿的间隔会增加,矿工获得的奖励会减少。[2020/5/23]

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

BKEX Global 将于3月7日上线UFO:据BKEX Global公告,BKEX Global 将于2020年3月7日20:30(UTC+8)上线UFO,开放交易对:UFO/USDT,并于3月7日15:00开放充值。

UFO属于匿名币项目,由一批隐私币爱好者创建,基于MW协议,使用的是X17算法。目前处于最早期CPU挖矿阶段,POW友好型矿币,UFO也是一个匿名的区块链协议,由世界各地开发人员透明地构建。[2020/3/7]

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

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

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

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

标签:1INCHTOKENKENINC1inch币为啥不涨BRTokenBeFaster Holder Token

币安app官方下载最新版热门资讯
XRP:2020年NFT成为流行语 有哪些突破值得关注?_The Midget’s Secret

2020的币圈不缺乏新闻热度,当比特币的牛市和DeFi热潮席卷各大新闻媒体的头条时,一场无声的革命正在加密货币领域的另一个角落产生化学反应:非可替代代币.

INE:关于支持QQBC更换合约并更名的公告_Xion Finance

亲爱的用户: 因QQBC需要更换智能合约并更名为DecentralizedGameMining(DDGM).

1INCH:除了空投代币 1inch还有即时治理新功能_UTC

北京时间12月25日,备受关注的DEX聚合平台1inch正式发布了它的代币1INCH,而作为对早期交易用户及流动性提供者的回馈,1inch分配了代币总量的6%作为空投奖励.

COIN:Filecoin挖矿与BTC挖矿的区别在哪?是否可以投资?_Filecoin

Filecoin主网上线后,filecoin的人气更高。业界内外人士对filecoin都有极大的热情.

WEB3.0:Web 3.0将给世界带来哪些改变?_DAP

当下的互联网处于信息互联阶段,Web2.0带来了信息交换方式的巨大变革。从前车马很慢,书信很远,信息的传递要经过漫长的等待,信息互联时代只需要一个应用程序就可以做到消息的及时传送.

:币圈小蝶:币圈散户投资者的八种致命心态_

?散户,顾名思义就是资金较小,独立在市场内随波逐流操作,不能够左右行情大局的客户。在任何一类的投资市场中,散户群体构成了市场的一个重要的组成部分.