web3js Gasschätzung

Ich habe mich gefragt, ob das folgende Muster korrekt ist, um eine Transaktion mit dem richtigen Gaslimit zu senden.

this.contracts.myContract.methods.myMethod.getEstimatedGas().then(gas => {
  this.contracts.myContract.methods.myMethod.cacheSend(
    ["prop1", "prop2"],
    {
      gas
    }
  );
});

Ich habe auch gelesen, dass es sinnvoll sein könnte, die Schätzung um 10 % zu erhöhen.

Oder sollte ich einfach die Preise verwenden, die Metamask beim Aufrufen der Methode eingibt?

Antworten (2)

Sie können die Gaskosten Ihrer Transaktion mit abschätzen web3.eth.estimateGas.

Beispiel:

var result = web3.eth.estimateGas({
to: "0xc4abd0339eb8d57087278718986382264244252f", 
data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
});
console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015

Ich würde diese Schätzung nehmen und sicherheitshalber mit dem Faktor 1,1 multiplizieren.

Weitere Informationen finden Sie unter https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethestimategas .

Ich verwende tatsächlich die Methode web3.eth.estimateGas, ich hätte in meiner ursprünglichen Frage und meinem Code klarer sein sollen. Ich habe die Frage jetzt aktualisiert :)

Ich folge diesem Muster, das nützlich sein sollte:

await contractInstance.methods.transfer(self.state.owner, self.state.value)
         .send({
            from: accounts[0],
            gas: '5000000'
          })

Mit Gas richten Sie das GasLimit ein.