SuperAPI AI 工具集

gas

通用与其它

查看项目

更新于 10-15 23:24

技能介绍

用途:面向在 Monad 上提交交易、估算 gas 或展示 gas 成本的开发者,说明其 gas 定价与以太坊的关键差异。

主要能力与要点:

  1. 计费方式:Monad 按 gas_limit 而非实际 gas 消耗计费,公式为 gas_paid = gas_limit * price_per_gas。原因是异步执行,区块领导者在执行前构建区块,无法在打包时得知实际消耗,同时防止低价声明、高价消耗的 DOS 攻击。因此应设置紧凑准确的 gas limit;原生 MON 转账固定为 21,000,建议硬编码而非依赖 eth_estimateGas。
  2. EIP-1559 定价:使用 type 2 交易,price_per_gas = min(base_price_per_gas + priority_price_per_gas, max_price_per_gas)。用户签名时指定 priority_price_per_gas(小费)与 max_price_per_gas(上限),base_price_per_gas 由网络控制,同一区块内所有交易相同。
  3. 区块与交易限制:区块 gas 上限 200M,单笔交易 gas 上限 30M,最低基础费 100 MON-gwei(100 x 10^-9 MON)。
  4. 基础费控制器:与以太坊不同,上涨更慢、下降更快,避免区块空间利用不足导致定价过高。参数为 max_step_size = 1/28、target = 160M gas(区块容量 80%)、beta = 0.96、epsilon = 160M,每区块按区块相对目标的填充度做指数调整,并用指数平滑跟踪历史方差,费用过渡更平滑、尖峰后恢复更快。
  5. 交易排序:默认客户端采用优先 gas 拍卖,按总 gas 价格(基础费+优先费)降序排列。
  6. 开发者指引:对已知固定成本的操作显式设置 gas limit;部分钱包(如 MetaMask)用 eth_estimateGas 决定上限,若调用回滚可能回退到很高的上限,而 Monad 按上限收费,用户将为此付费。前端估算时估算值即用户实付,缓冲应尽量小(示例最多加 10%)。UI 展示应按 gas limit 计算 gasCost = gasLimit * gasPrice。合约应优化 gas 使用,并为可预测成本函数提供文档以便前端设置显式上限。
  7. 操作码定价:冷状态访问显著更贵——账户访问(冷)由 2,600 升至 10,100 gas,存储访问(冷)由 2,100 升至 8,100 gas;热访问不变(均 100 gas)。受影响操作码包括 BALANCE、EXTCODESIZE、EXTCODECOPY、EXTCODEHASH、CALL、CALLCODE、DELEGATECALL、STATICCALL、SELFDESTRUCT 以及 SLOAD、SSTORE。频繁冷读多槽位或调用多外部合约的合约成本更高。
  8. 预编译重新定价:ecRecover 0x01 由 3,000 升至 6,000(2x);ecAdd 0x06 由 150 升至 300(2x);ecMul 0x07 由 6,000 升至 30,000(5x);ecPairing 0x08 由 45,000 升至 225,000(5x);blake2f 0x09 按轮数 x2;point evaluation 0x0a 由 50,000 升至 200,000(4x)。依赖签名验证的合约相关操作 gas 翻倍,链上 ZK 证明验证相关操作贵 4-5 倍,以太坊估算值会明显偏低。

限制:资料未提供具体安装命令、代码仓库结构或版本信息;上述数值与参数以资料为准,实际使用前应核对官方最新文档。