Ich möchte nur meinen Smart Contract testen, der im Ropsten-Netzwerk bereitgestellt werden soll, und bin immer noch verwirrt darüber, was ich für gas
und gasPrice
in die Truffle-Konfiguration einfügen soll. Gedanken dazu?
ropsten: {
provider: ropstenProvider,
gas: 4600000,
gasPrice: web3.toWei("50", "gwei"),
network_id: "3"
}
Laut der Trüffeldokumentation stehen die beiden Argumente gas
und gasPrice
für:
gas : Für Einsätze verwendetes Gaslimit. Standard ist 4712388.
gasPrice : Gaspreis, der für Deployments verwendet wird. Der Standardwert ist 100000000000 (100 Shannon).
Für den Gaspreis : Es ist einfach, je höher der Preis, desto schneller wird Ihre Transaktion abgebaut. Da der Ether im Testnet (Ropsten) nichts wert ist, können Sie wahrscheinlich einen großen Wert übergeben (z. B. 100 Gwei).
Im Mainnet jedoch : Ich empfehle, EthGasStation zu überprüfen , um die Zeit für das Mining einer Transaktion in Abhängigkeit vom übergebenen Gaspreis abzuschätzen.
Über das Gas : Sie müssen die maximale Gaseinheit überschreiten, die durch die Transaktion verbraucht werden kann.
Ich habe ein einfaches JavaScript-Skript (unter Verwendung des Truffle Metacoin-Vertrags) erstellt, das Ihnen helfen kann, das Gas für eine Vertragsbereitstellung abzuschätzen.
a. Erstellen Sie im Truffle-Projektverzeichnis eine Datei schätzt_deployment.js
var MetaCoin = artifacts.require("./MetaCoin.sol");
var solc = require('solc')
module.exports = function(callback) {
MetaCoin.web3.eth.getGasPrice(function(error, result){
var gasPrice = Number(result);
console.log("Gas Price is " + gasPrice + " wei"); // "10000000000000"
var MetaCoinContract = web3.eth.contract(MetaCoin._json.abi);
var contractData = MetaCoinContract.new.getData({data: MetaCoin._json.bytecode});
var gas = Number(web3.eth.estimateGas({data: contractData}))
console.log("gas estimation = " + gas + " units");
console.log("gas cost estimation = " + (gas * gasPrice) + " wei");
console.log("gas cost estimation = " + MetaCoin.web3.fromWei((gas * gasPrice), 'ether') + " ether");
});
};
Beim Ausführen des Skripts
$ truffle exec estimate_deployment.js
Using network 'development'.
Gas Price is 20000000000 wei
gas estimation = 266000 units
gas cost estimation = 5320000000000000 wei
gas cost estimation = 0.00532 ether
In Ihrem Fall sieht die truffle.js -Datei also so aus:
ropsten: {
provider: ropstenProvider,
gas: 266000,
gasPrice: web3.toWei("50", "gwei"),
network_id: "3"
}
CODE HIER VERFÜGBAR
Gas ist eine Einheit für die Schrittausführung, die in EVM definiert ist. Die Vertragserstellung ist eine Transaktion, die Benzin kostet. gasCost gibt an, wie viel Sie bereit sind, für jeden Schritt zu zahlen.
Wenn Sie zu Ihrer Ropsten-Konfiguration kommen, geben Sie an, wie viele Gaseinheiten EVM für die Bereitstellung im Ropsten-Netzwerk aufnehmen kann.
Gesamttransaktionswert = Gas*GasPreis.
Nehmen wir an, Ihre Vertragsbereitstellung kostet insgesamt 100 Wei, Sie haben aber 200 GWI angegeben. EVM wird Ihnen das verbleibende Gas zurückgeben. Wenn Sie weniger als den erforderlichen Wert übergeben haben, wird der Betrag von Ihrem Konto abgezogen und die Transaktion ist fehlgeschlagen. dh es wird Ihren Smart Contract nicht im Netzwerk bereitstellen.
0xgoku
truffle.js
Konfigurationsdatei?Kirby
Kirby
truffle migrate --reset --network mainnet --dry-run
Philipp Rego
web3.eth.contract
werden,new web3.eth.Contract
aber dann funktioniert es immer noch nicht mitCannot read property 'getData' of undefined