今天在公司老环境besu私有网络(ibft2.0)部署合约时,一直报错:
Intrinsic gas exceeds gas limit
本以为是gasprice的问题,后经调试发现:模拟执行方法给出的gas明显要低于实际执行需要消耗的。
然后,在官方找了下,确实存在这个bug:https://github.com/hyperledger/besu/pull/971
解决方案:
- 升级节点版本,使用 May 26, 2020之后的。
- gaslimit设置成一个大的固定值。即,不使用模拟计算gas方法。
最后,我采用的方案2,成功的部署了合约。