Ich weiß, dass dieses Problem schon mehrmals diskutiert wurde, aber ich kann die Lösung für mein Problem aus keiner der Antworten entnehmen,
Mein Vertrag wurde gut bereitgestellt, bevor die folgende Funktion hinzugefügt wurde:
function setApproval(address addr, bool approved)payable returns(string, uint, uint) {
//some logical operations and assignments
}
Sobald ich die Funktion hinzufüge und versuche, den Vertrag bereitzustellen, erhalte ich diesen Fehler
Fehler aufgetreten, Bailing. Netzwerkstatus unbekannt. Überprüfen Sie erfolgreiche Transaktionen manuell. Fehler: Der Vertragscode konnte nicht gespeichert werden, bitte überprüfen Sie Ihre Gasmenge.
Test-RPC-Server zeigt folgende Protokolle
Transaction: 0xd5791ac0c6059cbd43e00a7fabe566ada3f0572966f12ff25da6e04215840f39 Contract created: 0x9062592c5dd06340401c1e750ddb025defabf5be Gas usage: 4712388 Block Number: 16 Block Time: Sat Jul 22 2017 03:30:30 GMT+0530 (India Standard Time) Runtime Error: out of gas
erneut nach dem Entfernen dieses Funktionsvertrags fehlerfrei bereitgestellt
was ist falsch an dieser funktion?
Mein Vertragscode umfasst etwa 250 Zeilen. Gibt es eine Begrenzung für die Größe des Vertragscodes?
Danke im Voraus
Ändern Sie in Ihrer 2_deploy_contracts.js
Datei das GasPreisstandardmäßig auf eine höhere Zahl, dh:
// 2_deploy_contracts.js
const MyContract = artifacts.require('./MyContract.sol')
module.exports = function (deployer) {
deployer.deploy(MyContract, { gas: 5000000 })
}
Ich hatte das gleiche Problem und das hat bei mir funktioniert.
Wenn ein Vertrag von der Schnittstelle erbt und keine Funktion implementiert, wird dieser Fehler ausgegeben.
Trüffel 4.0.4 solc 0.4.18
interface IF {
function doSomething() external view returns(uint);
}
contract Inherit is IF {
Inherit() public;
}
beim Einsatz. wird Fehler ausgeben:
Der Vertragscode konnte nicht gespeichert werden, bitte überprüfen Sie Ihre Gasmenge
Die Lösung besteht darin, die Funktion zu implementieren.
contract Inherit is IF {
doSomething() external view returns(uint) {
return 5;
}
}
Das Problem, das selten auftritt, aber genau dieselbe Fehlermeldung verursacht, ist das folgende:
Derzeit ist die Größe des Vertragscodes auf 24 KB begrenzt, und manchmal kann Ihr Bytecode größer sein, was genau das gleiche Problem verursacht.
Wechseln Sie zu Ihrer Vertragserstellungs-JSON-Datei und prüfen Sie, ob die Größe des bereitgestellten Bytecodes größer als 24 KB ist.
Lösung: Dies kann durch verschiedene Vertragsoptimierungen wie das Entfernen ausreichender Getter, öffentliche Deklarationen usw. gelöst werden.
Ich habe @rhlsthrm-Lösung mit zusätzlicher Modifikation verwendet, weil seine Lösung mir gegeben hat
Fehler: Sperrgasgrenze überschritten
Meine Lösung ist für Geth.
Holen Sie sich zuerst das Gaslimit aus dem letzten Block
verwenden
eth.getBlock("latest").gasLimit
Kopieren Sie das Gaslimit und fügen Sie es dann so ein
var Identity = artifacts.require("./Identity.sol");
module.exports = function(deployer) {
deployer.deploy(Identity, { gas: 794722 });
};
Erhöhen Sie den Gaswert in Ihrer Bereitstellungsdatei.
Wenn Sie den Bereitstellungsfehler protokollieren, können Sie die Gasdetails wie folgt sehen:
cumulativeGasUsed: 1217170,
effectiveGasPrice: 2500000011,
gasUsed: 1000000,
Bitte überprüfen Sie, ob 'gasUsed' kleiner als 'cumulativeGasUsed' ist, damit Sie den Gaswert in Ihrer Deployment-Code-Einstellung wie folgt erhöhen sollten:
const result = await new web3.eth.Contract(abi)
.deploy({
data: evm.bytecode.object,
})
.send({ from: accounts[0], gas: 1000000 });
Ändern Sie den Gaswert (1000000) in (2000000) wie folgt:
const result = await new web3.eth.Contract(abi)
.deploy({
data: evm.bytecode.object,
})
.send({ from: accounts[0], gas: 2000000 });
Jeff
gasLimit
Einstellung zu erhöhen, falls vorhanden.Ismael
eth.sendTransaction(params...., { gas: 10000000 })
.SwapnilKumbhar
SwapnilKumbhar
setApproval()
Funktion wird ohne Fehler bereitgestellt, und ich kann die Funktionen mit der von Ihnen vorgeschlagenen Methode aufrufen, aber sobald ich diese bestimmte Funktion hinzufüge und versuchen, den Vertrag erneut bereitzustellen, erhalte ich die Fehlermeldung, die ich in der Frage angegeben habeSwapnilKumbhar
truffle migrate --reset
Jeff
SwapnilKumbhar
retrurns
Ismael
deployer.deploy(MyContract, params.., {gas: 5000000});
bei Bedarf die Gasmenge erhöhen.pabloruiz55
SwapnilKumbhar