1. 首页
  2. 新闻

以太坊智能合约的 Gas 优化十大最佳实践

撰文:Certik

以太坊主网的 Gas 费用一直是老大难问题,尤其是在网络拥堵时更为显著。在高峰期,用户往往需要支付极高的交易费用。因此,在智能合约开发阶段进行 Gas 费用优化尤为重要。优化 Gas 消耗不仅能有效降低交易成本,还能提升交易效率,为用户带来更加经济、高效的区块链使用体验。

本文将概述以太坊虚拟机(EVM)的 Gas 费机制、Gas 费优化的相关核心概念,以及开发智能合约时进行 Gas 费优化的最佳实践。希望通过这些内容,能为开发者提供启发和实用帮助,同时也助力普通用户更好地理解 EVM 的 Gas 费用运作方式,共同应对区块链生态中的挑战。

EVM 的 Gas 费机制简介

在兼容 EVM 的网络中,「Gas」是指用于测量执行特定操作所需计算能力的单位。

下图说明了 EVM 的结构布局。图中,Gas 消耗分为三个部分:操作执行、外部消息调用以及内存和存储的读写。

来源:以太坊官网[1]

由于每笔交易的执行都需要计算资源,因此会收取一定费用以防止无限循环和拒绝服务(DoS)攻击。完成一笔交易所需的费用被称为「Gas 费」。

自 EIP-1559(伦敦硬分叉)生效以来,Gas 费通过以下公式计算:

Gas fee = units of gas used * (base fee + priority fee)

基础费会被销毁,优先费用则作为激励,鼓励验证者将交易添加到区块链中。在发送交易时设置更高的优先费用,可以提高交易被包含在下一个区块中的可能性。这类似于用户向验证者支付的一种「小费」。

1. 理解 EVM 中的 Gas 优化

当用 Solidity 编译智能合约时,合约会被转换为一系列「操作码」,即 opcodes。

任何一段操作码(例如创建合约、进行消息调用、访问账户存储以及在虚拟机上执行操作)都有一个公认的 Gas 消耗成本,这些成本记录在以太坊黄皮书[2]中。

经过多次 EIP 的修改,其中一些操作码的 Gas 成本已被调整,可能与黄皮书中有所偏差。有关操作码最新成本的详细信息,请参考此处[3]。

2. Gas 优化的基本概念

Gas 优化的核心理念是在 EVM 区块链上优先选择成本效率高的操作,避免 Gas 成本昂贵的操作。

在 EVM 中,以下操作成本较低:

  • 读写内存变量

  • 读取常量和不可变变量

  • 读写本地变量

  • 读取 calldata 变量,例如 calldata 数组和结构体

  • 内部函数调用

成本较高的操作包括:

- 申链财经
免责声明:投资有风险,入市须谨慎。本资讯不作为投资建议。

相关推荐