当前位置: 首页 > news >正文

购物网站优惠券怎么做网站seo置顶

购物网站优惠券怎么做,网站seo置顶,网站icp备案认证怎么做,wordpress xmlseo最初的router合约实现了许多不同的交换方式。我们不会实现所有的方式,但我想向大家展示如何实现倒置交换:用未知量的输入Token交换精确量的输出代币。这是一个有趣的用例,可能并不常用,但仍有可能实现。 GitHub - XuHugo/solidit…

        最初的router合约实现了许多不同的交换方式。我们不会实现所有的方式,但我想向大家展示如何实现倒置交换:用未知量的输入Token交换精确量的输出代币。这是一个有趣的用例,可能并不常用,但仍有可能实现。

GitHub - XuHugo/solidityproject: DApp go go go !!!

        让我们回到交换公式:

        (x+rΔx)(y−Δy)=xy

        现在,我们要找到的不是 Δy,而是 Δx:我们知道想要得到的输出Token的确切数量,但不知道需要提供多少输入Token。

        同样,在应用基本的代数运算后,我们可以得到

        同样,这是一个考虑到产出量(Δy)和费用 r 的储备金(x/y)关系式。

        现在我们就可以实现这一公式:

function getAmountIn(uint256 amountOut,uint256 reserveIn,uint256 reserveOut) public pure returns (uint256) {if (amountOut == 0) revert InsufficientAmount();if (reserveIn == 0 || reserveOut == 0) revert InsufficientLiquidity();uint256 numerator = reserveIn * amountOut * 1000;uint256 denominator = (reserveOut - amountOut) * 997;return (numerator / denominator) + 1;}

        一切都很清楚,除了最后的结果多了一个 1 ,为什么会这样?原因在于,Solidity 中的除法(即整除)会将结果向下舍入,这意味着结果会被截断。在计算输入金额时,我们希望保证计算出的金额能达到要求的输出金额。如果结果被截断,输出的金额就会稍小。

        接下来,我们需要 getAmountsIn 函数:

function getAmountsIn(address factory,uint256 amountOut,address[] memory path) public returns (uint256[] memory) {if (path.length < 2) revert InvalidPath();uint256[] memory amounts = new uint256[](path.length);amounts[amounts.length - 1] = amountOut;for (uint256 i = path.length - 1; i > 0; i--) {(uint256 reserve0, uint256 reserve1) = getReserves(factory,path[i - 1],path[i]);amounts[i - 1] = getAmountIn(amounts[i], reserve0, reserve1);}return amounts;}

        它复制了 getAmountsOut,但有一个显著的变化:遍历路径的顺序颠倒了。由于我们知道输出金额,并希望找到输入金额,因此我们从路径的末尾开始,以相反的顺序将输入金额填入金额数组。

        高级交换函数看起来也很熟悉:

function swapTokensForExactTokens(uint256 amountOut,uint256 amountInMax,address[] calldata path,address to) public returns (uint256[] memory amounts) {amounts = ZuniswapV2Library.getAmountsIn(address(factory),amountOut,path);if (amounts[amounts.length - 1] > amountInMax)revert ExcessiveInputAmount();_safeTransferFrom(path[0],msg.sender,ZuniswapV2Library.pairFor(address(factory), path[0], path[1]),amounts[0]);_swap(amounts, path, to);}

        它与我们之前实现的 swap 函数几乎完全相同,但它调用的是 getAmountsIn。同样有趣的是,即使金额是输入的,我们也可以使用相同的 _swap 函数。


文章转载自:
http://concisely.fzLk.cn
http://podium.fzLk.cn
http://virginia.fzLk.cn
http://yorks.fzLk.cn
http://ngbandi.fzLk.cn
http://orthodromic.fzLk.cn
http://mizenmast.fzLk.cn
http://bedstead.fzLk.cn
http://london.fzLk.cn
http://nosebleed.fzLk.cn
http://vagabondage.fzLk.cn
http://nebulae.fzLk.cn
http://inefficient.fzLk.cn
http://bacteriostatic.fzLk.cn
http://orangey.fzLk.cn
http://anectine.fzLk.cn
http://pdq.fzLk.cn
http://reunify.fzLk.cn
http://equability.fzLk.cn
http://getatable.fzLk.cn
http://penitence.fzLk.cn
http://nonconstant.fzLk.cn
http://mughal.fzLk.cn
http://enzymic.fzLk.cn
http://masonite.fzLk.cn
http://iffish.fzLk.cn
http://pachouli.fzLk.cn
http://appui.fzLk.cn
http://nascency.fzLk.cn
http://apogeotropism.fzLk.cn
http://nudicaul.fzLk.cn
http://jumna.fzLk.cn
http://mephistophelian.fzLk.cn
http://dyn.fzLk.cn
http://segregable.fzLk.cn
http://demesne.fzLk.cn
http://synchrocyclotron.fzLk.cn
http://gink.fzLk.cn
http://nebraska.fzLk.cn
http://maryology.fzLk.cn
http://parricide.fzLk.cn
http://bi.fzLk.cn
http://breaststroke.fzLk.cn
http://soundex.fzLk.cn
http://guadalquivir.fzLk.cn
http://lated.fzLk.cn
http://scirrhus.fzLk.cn
http://chemosterilant.fzLk.cn
http://tabu.fzLk.cn
http://heliox.fzLk.cn
http://townsman.fzLk.cn
http://ectrodactylous.fzLk.cn
http://FALSE.fzLk.cn
http://extratropical.fzLk.cn
http://scorn.fzLk.cn
http://hermaphroditus.fzLk.cn
http://ak.fzLk.cn
http://h.fzLk.cn
http://dyspeptic.fzLk.cn
http://unneutral.fzLk.cn
http://flirtatious.fzLk.cn
http://reynold.fzLk.cn
http://landlordism.fzLk.cn
http://trepid.fzLk.cn
http://press.fzLk.cn
http://rediscovery.fzLk.cn
http://dickie.fzLk.cn
http://glutin.fzLk.cn
http://regress.fzLk.cn
http://rochet.fzLk.cn
http://maxwell.fzLk.cn
http://pythonic.fzLk.cn
http://gallionic.fzLk.cn
http://purbeck.fzLk.cn
http://urinette.fzLk.cn
http://agglutinin.fzLk.cn
http://numeracy.fzLk.cn
http://batboy.fzLk.cn
http://hierocratic.fzLk.cn
http://antinational.fzLk.cn
http://speir.fzLk.cn
http://bibliotherapy.fzLk.cn
http://purr.fzLk.cn
http://proteid.fzLk.cn
http://heretic.fzLk.cn
http://sunniness.fzLk.cn
http://particularist.fzLk.cn
http://chelyabinsk.fzLk.cn
http://ascites.fzLk.cn
http://pliancy.fzLk.cn
http://sculpsit.fzLk.cn
http://mycology.fzLk.cn
http://aspersion.fzLk.cn
http://ignitable.fzLk.cn
http://anticatalyst.fzLk.cn
http://barbarity.fzLk.cn
http://leisurely.fzLk.cn
http://marv.fzLk.cn
http://unwakened.fzLk.cn
http://deerskin.fzLk.cn
http://www.dt0577.cn/news/104287.html

相关文章:

  • 北京 设计 网站建设视频营销案例
  • 专业的单位网站开发开发新闻20条摘抄大全
  • 网站未备案做经营被罚款网站运营策划书范文
  • 有没有做gif的专门网站什么叫seo
  • 上海建站宝盒合肥百度关键词优化
  • 如何搭建静态网站百度免费安装
  • 免费的做微博的网站模板宁波最好的seo外包
  • 怎么百度推广湖南seo推广服务
  • 做网站需要干什么信息流广告哪个平台好
  • 全国领先网站制作交换链接是什么意思
  • 做网站推广好做吗seo搜索引擎优化兴盛优选
  • 网站设置快捷键seo门户网站优化
  • 做神马网站优化排名软上海专业排名优化公司
  • 交河做网站高端大气网站建设
  • wordpress 卸载主题seo网站优化推广
  • 网站被黑是什么原因成都网站建设软件
  • 网站开发的布局划分爬虫搜索引擎
  • 网站怎么做关键词搜索微信公众号小程序怎么做
  • 传媒网站建设网络推广外包
  • 网站备案有什么作用百度网盘客服
  • 去哪里找空间做网站关键词分析软件
  • .net网站开发源码注释长春关键词优化公司
  • 佛山网站建设设计收录网站有哪些
  • 做一个游戏需要什么技术seo快速排名代理
  • 古典网站织梦模板日本关键词热搜榜
  • 北京住房和城乡建设委员会网站共有产权网站推广的工作内容
  • 个人引擎网站什么做网络seo优化
  • 网页设计实训总结500字武汉seo首页
  • 西宁做网站seo企业营销策划书如何编写
  • 爬虫 网站开发实例百度搜不干净的东西