Was sollte der Gas- und Gaspreis für Ropsten Network in Truffle Config sein?

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 gasund gasPricein die Truffle-Konfiguration einfügen soll. Gedanken dazu?

ropsten: {
  provider: ropstenProvider,
  gas: 4600000,
  gasPrice: web3.toWei("50", "gwei"),
  network_id: "3"
}

Antworten (2)

Laut der Trüffeldokumentation stehen die beiden Argumente gasund gasPricefü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

Was ist die Einheit in der truffle.jsKonfigurationsdatei?
Das ist super hilfreich. Es wäre noch hilfreicher, wenn es ein Beispiel für eine aktualisierte Syntax mit web3.eth.Contract gäbe. Ich stecke fest und versuche herauszufinden, wie ich an die Vertragsdaten komme. Der neue Weg.
truffle migrate --reset --network mainnet --dry-run
Muss aktualisiert web3.eth.contractwerden, new web3.eth.Contractaber dann funktioniert es immer noch nicht mitCannot read property 'getData' of undefined

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.