当我指定确切的气体限制时,为什么会出现超出气体限制的错误?
Why am I getting exceeds gas limit error when I specify the exact gas limit?
我正在使用 truffle 部署合约,当我将 gas limit 指定为我想用于交易的 gas 时,我总是会收到超出 gas limit 的错误。为什么会这样?
编辑
我想做的是将加密猫 KittyCore.sol 合同部署到我的本地开发网络。我正在使用松露来部署它。
从另一个页面,,我发现由于存在合约层次结构,我需要按顺序部署我的合约。我使用了这种技术,我能够部署 7 个合约中的 4 个,第五个 KittyAuction,出现以下错误:无法存储合约代码,请检查你的 gas 数量
下面发布的是我的松露部署脚本
var KittyCore = artifacts.require("KittyCore");
var KittyMinting = artifacts.require("KittyMinting");
var KittyAuction = artifacts.require("KittyAuction");
var KittyBreeding = artifacts.require("KittyBreeding");
var KittyOwnership = artifacts.require("KittyOwnership");
var KittyBase = artifacts.require("KittyBase");
var KittyAccessControl = artifacts.require("KittyAccessControl");
var SaleClockAuction = artifacts.require("SaleClockAuction");
module.exports = function (deployer) {
deployer.deploy(KittyAccessControl).then(function () {
return deployer.deploy(KittyBase).then(function () {
return deployer.deploy(KittyOwnership).then(function () {
return deployer.deploy(KittyBreeding).then(function () {
return deployer.deploy(KittyAuction, {
gas: 400000
}).then(function () {
return deployer.deploy(KittyMinting).then(function () {
return deployer.deploy(KittyCore);
})
})
})
})
})
});
};
我的 gas limit 设置为 18000000000。此 gas 数是由 运行 实际部署失败的合约上的以下函数产生的
var gasPrice;
KittyAuction.web3.eth.getGasPrice(function (error, result) {
gasPrice = Number(result);
console.log(gasPrice);
})
我一直在摆弄这个数字,但似乎没有任何效果。
所以我能够部署它。我所做的是重置我的区块链,并将 gasLimit 设置为 0x8000000 并为每个有问题的合约提供 0x7000000 的 gas 值,然后部署。有趣的是,它不会再次部署。我猜 gasLimit 在开采了几个区块后进行了调整,因为我收到一条错误消息说我超过了限制
我正在使用 truffle 部署合约,当我将 gas limit 指定为我想用于交易的 gas 时,我总是会收到超出 gas limit 的错误。为什么会这样?
编辑 我想做的是将加密猫 KittyCore.sol 合同部署到我的本地开发网络。我正在使用松露来部署它。
从另一个页面,
下面发布的是我的松露部署脚本
var KittyCore = artifacts.require("KittyCore");
var KittyMinting = artifacts.require("KittyMinting");
var KittyAuction = artifacts.require("KittyAuction");
var KittyBreeding = artifacts.require("KittyBreeding");
var KittyOwnership = artifacts.require("KittyOwnership");
var KittyBase = artifacts.require("KittyBase");
var KittyAccessControl = artifacts.require("KittyAccessControl");
var SaleClockAuction = artifacts.require("SaleClockAuction");
module.exports = function (deployer) {
deployer.deploy(KittyAccessControl).then(function () {
return deployer.deploy(KittyBase).then(function () {
return deployer.deploy(KittyOwnership).then(function () {
return deployer.deploy(KittyBreeding).then(function () {
return deployer.deploy(KittyAuction, {
gas: 400000
}).then(function () {
return deployer.deploy(KittyMinting).then(function () {
return deployer.deploy(KittyCore);
})
})
})
})
})
});
};
我的 gas limit 设置为 18000000000。此 gas 数是由 运行 实际部署失败的合约上的以下函数产生的
var gasPrice;
KittyAuction.web3.eth.getGasPrice(function (error, result) {
gasPrice = Number(result);
console.log(gasPrice);
})
我一直在摆弄这个数字,但似乎没有任何效果。
所以我能够部署它。我所做的是重置我的区块链,并将 gasLimit 设置为 0x8000000 并为每个有问题的合约提供 0x7000000 的 gas 值,然后部署。有趣的是,它不会再次部署。我猜 gasLimit 在开采了几个区块后进行了调整,因为我收到一条错误消息说我超过了限制