关于Insufficient funds for gas * price + value异常的一个问题
发布于 1 个月前 作者 kazaff 44083 次浏览 来自 以太坊

大家都应该碰到过:Insufficient funds for gas * price + value这个异常,我就不多做解释了。 现在,我有一个疑问,不过查了一下geth的源码还是没有头绪。 这个异常是在调用eth_sendRawTransaction rpc服务时返回的,追源码可以知道,大概是在交易合法性校验的过程中抛出的:

     // Transactor should have enough funds to cover the costs
	// cost == V + GP * GL
	if b := currentState.GetBalance(from); b.Cmp(tx.Cost()) < 0 {
		return core.ErrInsufficientFunds
	}

我想确认的是,在这个校验中,currentState.GetBalance(from)查询的from地址的余额,是否包含pending状态的交易? 这一点从源码中我无法得到准确答案,求高手解答~

5 回复

应该是包括的,因为接下来发送的交易依赖之前pending 的交易。

@maiiz 我觉得不包括pending交易,因为pending可能失败。

@kazaff
应该是包括的,其实很好验证,先发一个交易但是不打包,看看currentState.GetBalance()的结果是否减少

回到顶部