交易及functionCall动作的gas限额相关问题咨询
交易Gas规则相关问题解答
1. 单条交易的Gas限额
你提到的单条交易gas上限为300Tgas的说法是准确的,这是区块链协议层设定的硬编码阈值,所有用户提交的单条交易可消耗的总gas不得超过该数值。
2. 单条functionCall动作的单独Gas限额
单条functionCall动作存在单独的gas限额,协议规定的上限为200Tgas。即便整条交易预付的总gas超过200Tgas,分配给单个functionCall动作的gas额度也不能超出该限制。
3. 多functionCall交易报Exceeded the prepaid gas的定位方法
包含多个functionCall的交易报Exceeded the prepaid gas错误时,可以定位到具体出问题的动作:
- 交易内的动作按照构造时的排列顺序串行执行,只有前一个动作完整执行完成后,才会触发下一个动作的执行
- 交易执行返回的trace日志会明确记录每个动作的实际gas消耗量,以及触发执行中断的具体动作序号,直接查看即可定位
- 没有trace日志的情况下,也可以结合动作执行结果判断:如果前一个
functionCall已经返回了成功的执行结果,即可判定是第二个functionCall的gas不足,也可以结合你给每个动作分配的gas额度、总预付gas数值做辅助判断
内容的提问来源于stack exchange,提问作者Marcin Bodnar
相关产品推荐
相关产品推荐

