NEAR调用museum.testnet合约触发Exceeded the prepaid gas错误如何解决?
问题原因
- 参数混淆:
--amount参数的作用是指定调用合约时附带转账的NEAR代币数量,和交易的gas额度完全无关,调整该参数对gas不足的报错没有任何改善效果。 - 报错逻辑无矛盾:日志显示的2.4T左右的gas值是
add_meme方法执行到失败节点时已经消耗的gas量。NEAR合约如果内部包含跨合约调用逻辑,需要在执行过程中提前为后续跨合约步骤预分配gas,若预分配额度不足,哪怕交易整体附加的gas未用完,也会触发Exceeded the prepaid gas报错。你当前用的是near CLI默认的30Tgas附加额度,不足以覆盖该方法的完整执行需求。
解决方法
调用合约时手动指定更高的gas额度即可,NEAR测试网单交易最高支持附加300Tgas,你可以先尝试设置为100Tgas,调整后的命令如下:
near call museum.testnet add_meme \ '{"meme" : "bob", "title" : "god", "data" : "https://9gag.com/gag/ad8K0vj", "category" : 4}' \ --accountId YOUR_ACCOUNT_NAME.testnet --amount 3 --gas 100000000000000
如果执行仍报相同错误,可以逐步上调--gas的参数值,最高不超过300000000000000即可。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

