web3.js getGasPrice gibt null zurück

Ich ersetze das web3 meiner MetaMask durch web3.js 1.0.0-beta.34, und getGasPrice gibt unter jedem Netzwerk immer null zurück --

window.web3 = new Web3(web3.currentProvider);
console.log('web3.version = ' + web3.version);
web3.eth.getGasPrice(gasPrice => {
    console.log('gasPrice = ' + gasPrice);
});

dh vom Mainnet zu Ropsten zu meinem privaten Netzwerk ( ganache-cli ) log --

web3.version = 1.0.0-beta.34
gasPrice = null

Hat jemand die gleiche Erfahrung? Was könnte schief gelaufen sein?

Für andere Benutzer ist hier die Lösung stackoverflow.com/a/48837262/425648
@MaulikVora Der von Ihnen vorgeschlagene Link folgt der 0.2-API von web3.js, die web3 1.0-API finden Sie unter web3js.readthedocs.io/en/1.0/web3-eth.html#getgasprice

Antworten (2)

Es stellt sich heraus, dass die korrekte Syntax für web3 1.0 lauten sollte --

web3.eth.getGasPrice().then(gasPrice => {
   console.log('gasPrice = ' + gasPrice);
});

welche Protokolle --

gasPrice = 20000000000

Ein weiterer asynchroner Weg:

  let transaction = await any_function;
  let gasUsed = transaction.receipt.gasUsed;
  let txInfo = await web3.eth.getTransaction(transaction.tx);
  let gasPrice = txInfo.gasPrice;
  console.log(gasPrice);
Während es gut ist, etwas über den gasPrice für eine Transaktion zu erfahren, gibt web3.eth.getGasPrice() den durchschnittlichen Gaspreis zurück, ohne dass eine Transaktion erforderlich ist. Der Unterschied ist subtil, aber wichtig, da getGasPrice() häufig verwendet wird, um den Gaspreis zu messen, der für eine zukünftige Transaktion verwendet werden soll