Goerli网络部署哈利波特NFT遇Gas估算失败执行回滚错误
问题解决:调用createCollectible时出现Gas估算失败/交易回滚错误
核心错误原因
最直接的触发点是Python脚本与合约函数的参数不匹配:
- 合约
AdvancedCollectible.sol中的createCollectible函数仅接收1个参数:string memory tokenURI - 但
create_collectible.py调用时传入了2个参数(STATIC_SEED和"None"),导致合约执行直接回滚,触发Gas估算失败。
修复步骤
1. 修正Python调用参数
修改create_collectible.py中的调用代码,删除多余的STATIC_SEED参数:
transaction = advanced_collectible.createCollectible( "None", {"from": dev} )
2. 检查LINK资金充足性
合约内定义的fee为0.1 LINK,但brownie-config.yaml中Goerli网络的fee设置为2.5 LINK,需确保fund_with_link函数给合约转入的LINK数量不低于配置的fee值,否则调用requestRandomness时会因LINK不足回滚。
3. 对齐事件名称
脚本中读取的事件为RequestedCollectible,但合约内定义的事件是requestedCollectible(首字母小写),需修改脚本中的事件名称:
requestId = transaction.events["requestedCollectible"]["requestId"]
调试补充
如果上述修改后仍有问题,可手动设置Gas上限强制广播交易(仅用于调试):
transaction = advanced_collectible.createCollectible( "None", {"from": dev, "gas_limit": 300000} )
内容的提问来源于stack exchange,提问作者PIER FRANCESCO
相关产品推荐
相关产品推荐

