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) |