织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊 Gas 面面观(3)

时间:2021-02-24 14:27来源:未知 作者:admin 点击:
5. 案例 xDeFiLabs 如何优化 gas 考虑到上百万美金的 zksnarks layer2 方案审计成本,xDeFiLabs 团队暂时选择了先验证产品逻辑。 在产品优化过程中,用户的交易已

5. 案例 xDeFiLabs 如何优化 gas

考虑到上百万美金的 zksnarks layer2 方案审计成本,xDeFiLabs 团队暂时选择了先验证产品逻辑。

在产品优化过程中,用户的交易已经涉及了 a**b 的逻辑,其中 b 是用 uint256 表示的 decimal 变相承担小数的作用。在金融产品设计过程中,对池的平衡性设计可以将 b 的取值 [1,49] 之间任意的小数,迅速的缩减到{1,2,3,4,6,8,12}等一组正整数上,节省数千到数万 gas 成本。在调用数学库时,Balancer 数学库 bpow 的小数部分并没有被真正调用,而只有 bpowi 被调用了。

在 XDEX 的代币发行的过程中,xDeFiLabs 根据 Chapter3 提到的方式,确保了自己 0x00 地址的竞争力(计算出 12 个 0 是现在唯一可行的方案,超过了 TokenLon 使用的 11 个 0,ETH2.0 打款地址的 8 个 0,以及 GST2 的 6 个 0,和 1inch CHI 的 12 个 0 保持一致)。

在设计 xHalfLife 的设计过程中,为了确认用户可以提取多少 vesting 账户中的收益,原始版本使用了循环计算的方式,循环的数量在极端情况下涉及到块高度差。我们可以知道一周的时间覆盖了数千到数万个块高度差,如果每个循环体都是上百的 gas 消耗,那么在某个用户提款时,单笔合约调用千万级 gas 的消耗显然是不可接受的(大概是转账成本的数百倍)。因此从 fundStream,BalanceOf,Withdraw 三个函数里,把循环去掉,继续采用了一种 a**b 的化简方式。此时,我们为了保留更清楚的逻辑,把简化掉的循环代码留在了 github 代码注释里。在调用时,考虑到用户的体验(Sushi 的收益每个块都在跳,而 xHalfLife 初版代码未必能做到这一点),保留了 b 是小数的可能性。

更多 xDeFiLabs 官方动态

请关注

官网:https://xdefi.com

项目白皮书

https://docs.xdefi.com/en/whitepaper

您可关注 Discord 官方频道

https://discord.gg/E5Y8 hpb

您可关注 Medium 官方频道

https://medium.com/@xdefilab

在 Twitter 上关注 @xdefilab,跟踪最新动态。

如果对项目代码感兴趣可访问:

https://github.com/xdefilab

Telegram 电报群:

中文 https://t.me/xdeficn

英文 https://t.me/xdefilab

欢迎添加 xDeFi 小助手微信 xdefilab。小助手可以随时为您提供有关 xDeFi 帮助,还可以邀请您进入 xDeFi 官方微信群,一起交流 xDeFi 项目最新进展!

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容