火星链 火星链
Ctrl+D收藏火星链
首页 > 币安下载 > 正文

SWAP:MultiSwap:如何用 Solidity 在多个 DEX 中套利

作者:

时间:1900/1/1 0:00:00

译者:翻译小组

校对:Tiny熊

如果你想获得最大的套利,可以需要在一次交易里在DEX(去中心化交易所)之间兑换代币。或者你想定期进行的某些兑换中节省Gas。或者你有在多个DEX之间进行定制的兑换场景,当然,也许你也可以仅仅是学习。

无论你是什么原因,我们试着做一个MultiSwap,MultiSwap将结合多个交易所到一个合约中的进行交易。它看起来像这样:

在Bancor上用ETH购买BNT。

在SushiSwap上卖出BNT换取INJ。

在Uniswap3上卖出INJ换取DAI。

那么,我们如何才能实现这一目标?

套利备忘录

先手动操作

首先,我们想手动尝试所有的交易。由于是测试阶段,我们将在一个测试网上进行,这个测试网需要满足我们想要使用的每个协议部署了合约。在我们的案例中,这刚好是在Ropsten网络。

如果你想交易的代币在测试网上不存在,可以通过Remix自己部署一个。

如果DEX上的代币流动池在测试网上还不存在,那就自己创建一下。

1

function_getPathForBancor()privatepurereturns(addressmemory){addressmemorypath=newaddress(3"]memorypath=newaddress=BANCOR_ETH_ADDRESS;path=BANCOR_ETHBNT_POOL;path=BNT;returnpath;}

Multicoin Capital管理合伙人:ZK不是DeFi隐私的实用解决方案:金色财经报道,Multicoin Capital管理合伙人Kyle Samani表示,零知识证明(ZK)有其用武之地,只是不在 DeFi 中,ZK Rollup不是链上隐私的正确答案。Samani解释称,抵押品管理、是否有偿付能力、健康因素,当每个人都向链上提交一堆私人证明时,这些概念就不起作用了,DeFi 需要自上而下的视角才能发挥作用,这从根本上来说并不映射到一堆加密的ZK交易。

Samani 建议,在 DeFi 中实现隐私的正确方法是通过 FHE,即完全同态加密。合约将被端到端加密,状态转换由验证器应用,该系统的优点在于保留了系统的核心逻辑,这才是解决问题的正确方法。[2023/8/4 16:17:39]

我们在Banchor上交易的功能简单明了。从前面例子交易中获得了交易路径和Bancor网络的地址。

2.在Sushi上交易

IUniswapV2Router02privateconstantsushiRouter=IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);addressprivateconstantINJ=0x9108Ab1bb7D054a3C1Cd62329668536f925397e5;function_tradeOnSushi(uint256amountIn,uint256amountOutMin,uint256deadline)private{addressrecipient=address(this);sushiRouter

Multichain与Cardano生态DEX WingRiders达成合作:11月26日,据官方消息,跨链路由协议Multichain与Cardano生态去中心化交易所WingRiders达成合作。用户将可以通过app.multichain.org桥接资产,进行兑换、质押、向资金池提供流动性以及存入Yield Farm。[2022/11/26 20:47:47]

function_getPathForSushiSwap()privatepurereturns(addressmemory){addressmemorypath=newaddress(2"]memorypath=newaddress=BNT;path=INJ;returnpath;}

然后我们使用swapExactTokensForTokens将BNT兑换到INJ。兑换路径由代币组成。相关的地址可以从前面的交易例子中获得。

3.在Uniswap上交易

IUniswapRouterprivateconstantuniswapRouter=IUniswapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564);addressprivateconstantDAI=0xaD6D458402F60fD3Bd25163575031ACDce07538D;function_tradeOnUniswap(uint256amountIn,uint256amountOutMin,uint256deadline)private{addresstokenIn=INJ;addresstokenOut=DAI;uint24fee=3000;addressrecipient=msg

Avalanche基金会推出2.9亿美元的“Avalanche Multiverse”计划:3月8日消息,Avalanche基金会周二宣布推出“Avalanche Multiverse”计划,以激励Avalanche区块链上的新型开发。Avalanche基金会将为该计划提供400万枚AVAX代币(按当前价格计算价值约2.9亿美元)作为资助,旨在鼓励其网络上子网(subnets)的增长。

这些子网是链接到Avalanche的区块链,它们共享类似的工具和功能,但可以根据特定应用的需求进行定制。其速度和成本不会受到Avalanche区块链上其他事件的影响——例如一次热门NFT drop。子网也可以使用自己设计的代币,而非AVAX。

在其最新的公告中,Avalanche基金会强调了两个已经在进行的子网项目:DeFi Kingdoms和一个机构级DeFi倡议,其中包括6个加密领域的大公司。

具体而言,NFT游戏项目DeFi Kingdoms是第一个通过Avalanche Multiverse计划获得资助的子网,该项目已获得1500万美元的拨款。这些奖励将以AVAX和CRYSTAL(DeFi Kingdoms的新原生代币)分发。(The Block)[2022/3/9 13:45:16]

4.集合在一个交易里

我们还需要批准SushiSwap合约来使用BNT,批准Uniswap合约来使用INJ。在部署时只做一次会更省力,所以可以把它放在构造函数中:

constructor(){IERC20(BNT)

Plasm Network首席工程师已修复Cumulus,Polkadot测试网已可制作跨链用例:Plasm Network发推表示,Plasm Network的首席工程师akru已修复Cumulus,其请求已被合并。从现在开始,XCM应该可以工作,可以在Polkadot测试网上制作第一个真正的跨链用例了。此前消息,Basic XCM代码已合并,允许中继链把消息向下传递到平行链。[2021/2/6 19:02:56]

现在我们有了需要的一切,创建一个multiSwap函数:

functionmultiSwap(uint256deadline,uint256amountOutMinUniswap)externalpayable{uint256amountOutMinBancor=1;uint256amountOutMinSushiSwap=1;_tradeOnBancor(msg

如你所见,现在兑换代币很容易。对于Bancor和SushiSwap,我们不关心我们收到多少代币,所以我们把最小值设为1。唯一重要的是我们在最后一次兑换中收到多少DAI代币。这个值从外部传来,作为UNIX时间戳的最后交易期限也是类似。如果你不关心交易何时执行,可以传递一个很高的截止时间戳。

但是如何获得一个合理的amountOutMinUniswap值呢?为了获得它,我们可以创建第二个函数,只作为视图函数来调用。

//meanttobecalledasviewfunctionfunctionmultiSwapPreview()externalpayablereturns(uint256){uint256daiBalanceUserBeforeTrade=IERC20(DAI)

Multicoin Capital联合创始人:未来24个月DeFi使用量将加速增长:金色财经报道,加密对冲基金Multicoin Capital联合创始人Kyle Samani表示,随着支持去中心化金融(DeFi)的技术基础设施持续改善,该领域可能会从中心化借贷和交易场所中获取份额。Samani表示,预计在未来24个月内,DeFi平台的增长率将出现“阶梯函数式增长”。Samani承认目前的DeFi技术仍在几个关键方面落后于CeFi,包括其运行速度较慢和可用的交易杠杆较低,但他表示该领域仍存在大量机会。[2020/6/6]

但是请注意,我们没有把它声明为视图函数,因为它使用非视图函数来计算结果,所以不可能将它本身声明为一个视图函数。

我们没有在链上调用这个函数。它仍然是作为一个视图函数来调用的,例如在前端使用Web3的call()功能来读取结果。

现在可以在我们的前端调用multiSwapPreview,为了增加交易不被退回的机会,可以将收到的DAI的估计金额减少一点。

constestimatedDAI=(awaitmyContract.multiSwapPreview({value:ethAmount}).call());constamountOutMinUniswap=estimatedDAI*0.96;

现在我们只需要一笔交易就可以完成整个兑换。

多重兑换ethscan

你可以在这里找到一个完全可行的交易代码。如果你在测试网掌握了它,就可以在主网上重复这个过程。如果你不想花额外的ETH进行手工交易,你可以在提交任何东西之前检查交易数据和合约地址,因为你需要改变的就是合约地址。

本翻译由CellETF赞助支持。

来源:https://github.com/lbc-team/Pioneer

参考资料

翻译小组:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

BNT:https://etherscan.io/token/0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c

INJ:https://etherscan.io/token/0xe28b3b32b6c345a34ff64674606124dd5aceca30

DAI:https://etherscan.io/token/0x6b175474e89094c44da98b954eedeac495271d0f

Banchor:https://app.bancor.network/eth/swap?from=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&to;=0xF35cCfbcE1228014F66809EDaFCDB836BFE388f5

Etherscan交易:https://ropsten.etherscan.io/tx/0x21b95960b1a7c832c91e705390420edf3faa35b18469a8bc517056d88af9634e

文档:https://docs.bancor.network/developer-quick-start/trading-with-bancor#trading-from-your-smart-contract

SushiSwap:https://app.sushi.com/swap?inputCurrency=0x9108Ab1bb7D054a3C1Cd62329668536f925397e5&outputCurrency;=0xF35cCfbcE1228014F66809EDaFCDB836BFE388f5

Etherscan交易:https://ropsten.etherscan.io/tx/0x727301c32fcdbb29e14203610b26c7ab7f44f5d940057c2c39ecc0ae9e919c0f

这里:https://learnblockchain.cn/article/2580

Uniswap:https://app.uniswap.org/#/swap

Etherscan:https://ropsten.etherscan.io/tx/0xc23e6efa4c95747cb1421b582b1d29ce1ae1a529f84c28a94f74536997358262

交易:https://ropsten.etherscan.io/tx/0x727301c32fcdbb29e14203610b26c7ab7f44f5d940057c2c39ecc0ae9e919c0f

这里:https://learnblockchain.cn/article/2580

swapExactTokensForTokens:https://docs.uniswap.org/protocol/V2/reference/smart-contracts/router-02#swapexacttokensfortokens

视图函数:https://learnblockchain.cn/docs/solidity/contracts.html#view

call():https://web3js.readthedocs.io/en/v1.3.4/web3-eth-contract.html#methods-mymethod-call

一笔交易:https://ropsten.etherscan.io/tx/0xba44787781aac57b462ff7d4a9781506553a4a57e7339070e76eb5ba544394f0

这里:https://gist.github.com/gorgos/14fa5f932fc697fd8aa3c223856fce7b

CellETF:https://celletf.io/?utm_souce=learnblockchain

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/10318791.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

每周编辑精选WeeklyEditors'Picks

标签:SWAPANCTPSHTTMacaronSwapBinance USDhttps://etherscan.iohttps://etherscan.io

币安下载热门资讯
EXT:XT关于延迟上线MBC的公告

尊敬的XT用户:应项目方通知,MBC将延迟上线,具体时间平台将另行公告通知。给您带来的不变,请您谅解!如有问题,请及时联系在线客服。感谢您对XT.COM的支持与信任.

1900/1/1 0:00:00
NFT:观点:苹果同意放宽App Store对区块链行业小型开发者的限制

CoinDesk今日发文称,上周有消息称,苹果公司将针对开发者在2019年提起的集体诉讼达成和解,苹果同意放宽AppStore对区块链行业小型开发者的限制,此举可能会影响NFT市场.

1900/1/1 0:00:00
OBI:关于正式上线C98、AR和ALICE品种USDT本位永续合约的公告

尊敬的用户:您好!HuobiFutures将于新加坡时间2021年9月7日14点上线C98、AR和ALICE品种USDT本位永续合约.

1900/1/1 0:00:00
HTT:Gate.io【乐享星期一红包计划】联动【周二知识抢答活动】好礼大放送,即将开始!

是Gate.io为回馈用户特举办的福利活动,自2021年3月8日起,每周一在聊天室发放红包雨福利,欢迎一起来参与,让红包开启全新的一周!新用户注册即可参与活动.

1900/1/1 0:00:00
AAA:Moon Rabbit(月兔)掀起MEME狂潮 理性背后仍具有百倍升值空间

9月3日星期五下午16:00,由?MoonRabbit发起,焦点区块链主办,行业对话AMA在焦点社区拉开帷幕,本期邀请?MoonRabbit创始人?AngelVersetti?出席嘉宾.

1900/1/1 0:00:00
KAR:XT关于即将上线EKARTINU的公告

尊敬的XT用户:XT即将上线EKARTINU,并在创新区开放EKARTINU/USDT交易对。具体开通时间,请关注后续公告。Ekart让网上购物和加密货币的意义发生改变与革新.

1900/1/1 0:00:00