首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Uniswap等流动性池合同(稳健性)计算适当的报酬

为Uniswap等流动性池合同(稳健性)计算适当的报酬
EN

Stack Overflow用户
提问于 2021-12-16 01:32:33
回答 1查看 392关注 0票数 1

我试图计算流动性提供者的回报,我发现Uniswap显然使用了这样的公式:Basic Formula (L = liquidity): (L_you / L_others) * (24h_swap_volume * pool_fee_rate)和我试图在我的智能契约中实现这一点,但我似乎无法做到这一点,因为其他人持有的流动性总是大于您持有的流动性,而流动性需要一个十进制值,所以我的问题是:如何在不陷入浮点地狱的情况下,在可靠的智能合同中使用这个等式?

EN

Stack Overflow用户

回答已采纳

发布于 2021-12-19 04:39:00

在做了更多的研究之后,我发现您可以使用ABDKMath来实现这一点,您可以使用以下链接找到更多信息:库:https://github.com/abdk-consulting/abdk-libraries-solidity文章:https://www.bitcoininsider.org/article/68630/10x-better-fixed-point-math-solidity作为一个代码示例,这里是我如何实现这一点的一个快速片段:

代码语言:javascript
运行
复制
uint256 fee = ABDKMath64x64.mulu(
        ABDKMath64x64.divu(
          tokensProvided,
          others
        ),
        taxableValue
      );

这可能不是最好的解决办法,但它对我有效。此外,看看https://github.com/paulrberg/prb-math获得更高精度的定点数学库。关于气体效率,这里引用了PRB数学库中的一句话:

对于abs、exp、exp2、gm、inv、ln、log2来说,无类型PRBMath库比ABDKMath更快。反之,对于avg、div、mul、powu和sqrt,则比ABDKMath慢。PRBMath落后于ABDKMath的mul和div函数有两个技术原因

因此,对于这个用例,我认为使用ABDK数学而不是PRB数学是一个更好的主意,除非您计划将2以上转移到Wei.的128次幂中。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70372291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档