以太坊主网部署ERC-721 NFT合约报错insufficient funds for gas * price + value
控制台报错原文
Brownie v1.16.2 - Python development framework for Ethereum NftProject is the active project. Running 'scripts/simple_collectible/deploy_simple.py::main'... mainnet File "/usr/local/lib/python3.8/dist-packages/brownie/_cli/run.py", line 49, in main return_value, frame = run( File "/usr/local/lib/python3.8/dist-packages/brownie/project/scripts.py", line 103, in run return_value = f_locals[method_name](*args, **kwargs) File "./scripts/simple_collectible/deploy_simple.py", line 10, in main SimpleCollectible.deploy({"from": dev}, publish_source=publish_source) File "/usr/local/lib/python3.8/dist-packages/brownie/network/contract.py", line 599, in __call__ return tx["from"].deploy( File "/usr/local/lib/python3.8/dist-packages/brownie/network/account.py", line 508, in deploy receipt, exc = self._make_transaction( File "/usr/local/lib/python3.8/dist-packages/brownie/network/account.py", line 743, in _make_transaction exc = VirtualMachineError(e) File "/usr/local/lib/python3.8/dist-packages/brownie/exceptions.py", line 85, in __init__ raise ValueError(exc["message"]) from None ValueError: insufficient funds for gas * price + value
错误原因
ValueError: insufficient funds for gas * price + value错误本质是:部署合约使用的钱包地址内的以太坊主网ETH余额,不足以支付本次部署交易的总成本。交易总成本计算公式为:gas上限 × 单位gas价格 + 交易附带发送的ETH金额。
解决方案
- 核对部署钱包余额:首先查询你代码中
dev对应的主网钱包地址的ETH余额,当前以太坊主网部署标准ERC-721合约通常需要至少0.002~0.01ETH的gas成本,具体数值随实时主网gas价格波动,余额不足直接转入足够的ETH即可。 - 手动调整Brownie部署的gas参数:你可以在部署合约时手动指定合理的gas参数,避免Brownie默认配置的gas上限/价格过高导致成本超出余额,参考写法:
# 注意gas_limit和gas_price数值可根据当前主网情况、测试网部署消耗的gas值调整 SimpleCollectible.deploy( {"from": dev, "gas_limit": 2000000, "gas_price": "30 gwei"}, publish_source=publish_source )
- 检查是否有多余的ETH发送配置:确认你的部署参数中是否设置了不必要的
value字段,若不需要在部署时向合约转入ETH,直接删除该字段即可减少额外支出。 - 核对网络与钱包匹配性:确认你当前Brownie确实连接的是以太坊主网,且
dev对应的是主网钱包地址,避免误拿测试网空余额地址部署主网的情况。
内容的提问来源于stack exchange,提问作者Lamerest
相关产品推荐
相关产品推荐

