以太坊 DeFi 的 Gas 消耗是否还有有改进空间?

所谓的 Gas 优化,指的就是用尽可能少的数据写入和外部调用,来完成业务逻辑。

如今 DeFi 的价值被发现了,人们的交易活跃度大大提高,Gas 价格也水涨船高。每个项目方都有义务,以最少的读写操作完成业务,为以太坊生态省出宝贵的区块空间。另外,每个项目方也都有义务,为用户寻找一个便宜且安全的 L2 解决方案。

撰文:雷明达,DODO 创始人

我在这里系统介绍下 Gas 问题。

Gas 的使用机制

首先,以太坊的 Gas 是一种预付机制。在 DEX 的使用过程中,你会看到三个 Gas 数值

A. DEZ 前端展示的 Gas

B. 钱包签名时看到的 Gas limit

C. 在 Etherscan 看到的真实 Gas 消耗

打个比方,你去住酒店:

A. 携程上看到的酒店价格预估 1000

B. 酒店要刷你预付款 3000

C. 走的时候结账,住宿加酒水真实花掉 1200

下面我们先着重讨论真实消耗,再讨论如何让这个数字尽可能真实地展示给用户。

什么叫 Gas 贵?

我们所讲的一笔交易用了 100 美金 Gas,指的是:

「Gas * GasPrice * ethPrice」

这里面,GasPrice 由用户决定,要快速成交就多花点,不着急就少花点。ethPrice 由市场决定。

真正受产品影响的,是 Gas 消耗本身。所以要真的深入了解 Gas,我们讨论的基础,就要从美元,变成 Gas 数量。

数量级概念

那么 Gas 主要消耗在什么地方了呢?

两大部分: 1. 数据写入 2. 外部调用

所谓的 Gas 优化,指的就是用尽可能少的数据写入和外部调用,来完成业务逻辑。

写入数据花费大约 20,000~5,000 Gas,合约调用花费大约 3,000 Gas,这是最大头的部分,由于计算执行环境的复杂,在生产环境中,下面所有提到的 Gas 消耗都是会小范围浮动的。

  • 一笔 ERC 20 转账涉及两次写入,大约花费 60,000 Gas

  • 一笔 ERC 20 Approve 涉及一次写入,大约花费 45,000 Gas

  • 一笔 Uniswap 单跳交易,大约花费 110,000 Gas (e.g. USDT→ETH)

  • 一笔 Uniswap 两跳交易,大约花费 170,000 Gas (e.g. USDT→ETH→UNI)

  • 一笔 Uniswap 三跳交易,大约花费 230,000 Gas (e.g. USDT→ETH→WBTC→LINK)

由此可见,同样在 Uniswap,一次 Swap 也可能 Gas 消耗差距很大!

这还是在路由策略非常简单的情况下。如果路由策略开始变得复杂,例如 1inch 或 Matcha,一笔交易的 Gas 可以在 150,000 到 1,000,000 之间浮动。

因此,不能简单地讲某个平台的 Gas 贵。

看起来聚合器的 Gas 比 Uniswap 贵很多,是不是应该抛弃聚合器?

并不是这样的。

聚合器虽然 Gas 贵,但这不是傻贵。贵是因为有额外逻辑要执行,而这些额外逻辑会带来很大的利润。如果利润能覆盖 Gas 的额外开销,那就应该使用聚合器。

在过去聚合器可能不太在意 Gas,但现在 Gasprice 和以太坊价格的提高,使得 Gas 的美元开销增长了 100 倍。所以在 DODOV2,我们会综合比较 Gas 和报价,给出平均成本最低的解决方案。

DODO 贵不贵

贵,也不贵。

DODO 在执行路由时,会在原始流动性外包一层函数调用,会比流动性源头贵 40,000 gas 左右。

但是:

  1. 经过 gas 补贴后,DODO 的 Gas 消耗可以做到和流动性源一样甚至更便宜。
  2. 考虑到报价的优势,虽然 Gas 的开销大,但平均成本在 DODO 最低。

如何合理地展示 Gas

回想之前酒店的例子。

如果你是携程,你的目的是尽可能真实地展示用户实际花销 。

普通用户都已经被教育好了,去住酒店,刷的预授权肯定比消费的多,也不会太在意。

A. DEX 前端展示的 Gas

B. 钱包签名时看到的 Gas Limit

C. 在 Etherscan 看到的真实 Gas 消耗

但是以太坊用户还远远没有理解这些机制,他们不知道钱包弹出的是预授权。如果你在网页上直接显示数字 C,但钱包弹出的数字 B 很大,用户会感到非常困惑。

所以在 DODO 的网页上会先显示数字 B,以保证和钱包端的统一。再显示数字 C,以保证没有让用户望而却步。

这里 0.084 是数字 A,即钱包预授权。0.084-0.042 是数字 C,即 DODO 预估你真正的花销。在此场景下,你真正的花销和 Uniswap 单跳是差不多的。

以太坊 DeFi 的 Gas 消耗是否还有有改进空间?

DODO 的 Gas 还有改进空间吗?

有的,在 DODOV2 主要体现在以下几方面:

  • 综合比较 Gas 和报价,避免出现报价优势,却因 Gas 过贵而使用户利益受损的情况;
  • 路由的改进,减少上层计算开销;
  • V2 池子的 Gas 优化,减少下层计算开销;
  • 更准确的 Gas Price 估算,让用户精准插队(这一点要感谢星火矿池的 Gasnow 服务);
  • 支持 BSC,L2 平行迁移。

总结

Gas 是所有项目躲不开的痛,这是一种幸福的烦恼。我经历过以太坊 1 gwei 打包交易的惨淡时光,那时链上交易和不要钱似的,但是生活却非常难捱。

如今 DeFi 的价值被发现了,人们的交易活跃度大大提高,Gas 价格也水涨船高。每个项目方都有义务,以最少的读写操作完成业务,为以太坊生态省出宝贵的区块空间。

另外,每个项目方也都有义务,为用户寻找一个便宜且安全的 L2 解决方案。

DODO 一直将 Gas 问题当作一个科研项目,并走在科研的第一梯队里。我们期待用户可以尽早体验到 V2 带来的 Gas 优化,并欢迎任何关于 gas 优化的提议。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2021年2月25日 上午10:50
下一篇 2021年2月25日 上午10:50

相关推荐

以太坊 DeFi 的 Gas 消耗是否还有有改进空间?

星期四 2021-02-25 10:50:52

如今 DeFi 的价值被发现了,人们的交易活跃度大大提高,Gas 价格也水涨船高。每个项目方都有义务,以最少的读写操作完成业务,为以太坊生态省出宝贵的区块空间。另外,每个项目方也都有义务,为用户寻找一个便宜且安全的 L2 解决方案。

撰文:雷明达,DODO 创始人

我在这里系统介绍下 Gas 问题。

Gas 的使用机制

首先,以太坊的 Gas 是一种预付机制。在 DEX 的使用过程中,你会看到三个 Gas 数值

A. DEZ 前端展示的 Gas

B. 钱包签名时看到的 Gas limit

C. 在 Etherscan 看到的真实 Gas 消耗

打个比方,你去住酒店:

A. 携程上看到的酒店价格预估 1000

B. 酒店要刷你预付款 3000

C. 走的时候结账,住宿加酒水真实花掉 1200

下面我们先着重讨论真实消耗,再讨论如何让这个数字尽可能真实地展示给用户。

什么叫 Gas 贵?

我们所讲的一笔交易用了 100 美金 Gas,指的是:

「Gas * GasPrice * ethPrice」

这里面,GasPrice 由用户决定,要快速成交就多花点,不着急就少花点。ethPrice 由市场决定。

真正受产品影响的,是 Gas 消耗本身。所以要真的深入了解 Gas,我们讨论的基础,就要从美元,变成 Gas 数量。

数量级概念

那么 Gas 主要消耗在什么地方了呢?

两大部分: 1. 数据写入 2. 外部调用

所谓的 Gas 优化,指的就是用尽可能少的数据写入和外部调用,来完成业务逻辑。

写入数据花费大约 20,000~5,000 Gas,合约调用花费大约 3,000 Gas,这是最大头的部分,由于计算执行环境的复杂,在生产环境中,下面所有提到的 Gas 消耗都是会小范围浮动的。

  • 一笔 ERC 20 转账涉及两次写入,大约花费 60,000 Gas

  • 一笔 ERC 20 Approve 涉及一次写入,大约花费 45,000 Gas

  • 一笔 Uniswap 单跳交易,大约花费 110,000 Gas (e.g. USDT→ETH)

  • 一笔 Uniswap 两跳交易,大约花费 170,000 Gas (e.g. USDT→ETH→UNI)

  • 一笔 Uniswap 三跳交易,大约花费 230,000 Gas (e.g. USDT→ETH→WBTC→LINK)

由此可见,同样在 Uniswap,一次 Swap 也可能 Gas 消耗差距很大!

这还是在路由策略非常简单的情况下。如果路由策略开始变得复杂,例如 1inch 或 Matcha,一笔交易的 Gas 可以在 150,000 到 1,000,000 之间浮动。

因此,不能简单地讲某个平台的 Gas 贵。

看起来聚合器的 Gas 比 Uniswap 贵很多,是不是应该抛弃聚合器?

并不是这样的。

聚合器虽然 Gas 贵,但这不是傻贵。贵是因为有额外逻辑要执行,而这些额外逻辑会带来很大的利润。如果利润能覆盖 Gas 的额外开销,那就应该使用聚合器。

在过去聚合器可能不太在意 Gas,但现在 Gasprice 和以太坊价格的提高,使得 Gas 的美元开销增长了 100 倍。所以在 DODOV2,我们会综合比较 Gas 和报价,给出平均成本最低的解决方案。

DODO 贵不贵

贵,也不贵。

DODO 在执行路由时,会在原始流动性外包一层函数调用,会比流动性源头贵 40,000 gas 左右。

但是:

  1. 经过 gas 补贴后,DODO 的 Gas 消耗可以做到和流动性源一样甚至更便宜。
  2. 考虑到报价的优势,虽然 Gas 的开销大,但平均成本在 DODO 最低。

如何合理地展示 Gas

回想之前酒店的例子。

如果你是携程,你的目的是尽可能真实地展示用户实际花销 。

普通用户都已经被教育好了,去住酒店,刷的预授权肯定比消费的多,也不会太在意。

A. DEX 前端展示的 Gas

B. 钱包签名时看到的 Gas Limit

C. 在 Etherscan 看到的真实 Gas 消耗

但是以太坊用户还远远没有理解这些机制,他们不知道钱包弹出的是预授权。如果你在网页上直接显示数字 C,但钱包弹出的数字 B 很大,用户会感到非常困惑。

所以在 DODO 的网页上会先显示数字 B,以保证和钱包端的统一。再显示数字 C,以保证没有让用户望而却步。

这里 0.084 是数字 A,即钱包预授权。0.084-0.042 是数字 C,即 DODO 预估你真正的花销。在此场景下,你真正的花销和 Uniswap 单跳是差不多的。

以太坊 DeFi 的 Gas 消耗是否还有有改进空间?

DODO 的 Gas 还有改进空间吗?

有的,在 DODOV2 主要体现在以下几方面:

  • 综合比较 Gas 和报价,避免出现报价优势,却因 Gas 过贵而使用户利益受损的情况;
  • 路由的改进,减少上层计算开销;
  • V2 池子的 Gas 优化,减少下层计算开销;
  • 更准确的 Gas Price 估算,让用户精准插队(这一点要感谢星火矿池的 Gasnow 服务);
  • 支持 BSC,L2 平行迁移。

总结

Gas 是所有项目躲不开的痛,这是一种幸福的烦恼。我经历过以太坊 1 gwei 打包交易的惨淡时光,那时链上交易和不要钱似的,但是生活却非常难捱。

如今 DeFi 的价值被发现了,人们的交易活跃度大大提高,Gas 价格也水涨船高。每个项目方都有义务,以最少的读写操作完成业务,为以太坊生态省出宝贵的区块空间。

另外,每个项目方也都有义务,为用户寻找一个便宜且安全的 L2 解决方案。

DODO 一直将 Gas 问题当作一个科研项目,并走在科研的第一梯队里。我们期待用户可以尽早体验到 V2 带来的 Gas 优化,并欢迎任何关于 gas 优化的提议。