Zur Berechnung der Transaktionsgebühr verwende web3js
ich den Gaspreis:
eth.getTransaction("txhash").gasPrice
multipliziert mit dem tatsächlich verbrauchten Gas:
eth.getTransactionReceipt("txhash").gasUsed
Ist es richtig? Gibt es einen einfacheren Weg?
Wenn Sie sich nicht sicher sind, was Gas ist, empfehle ich Ihnen, die Antworten auf die StackOverflow-Frage „Was ist Gas?“ zu lesen. bevor Sie weiter gehen.
Die Gesamtkosten einer Transaktion sind das Produkt aus Gaslimit und Gaspreis :
(gas limit x gas price) = transaction fee
Dabei web3js
stehen folgende Methoden zur Verfügung:
web3.eth.estimateGas
um die Gasgrenze abzuschätzenweb3.eth.getGasPrice
Gaspreis zu schätzenWenn Sie beispielsweise alle Ihre Ether übertragen möchten, müssen Sie zuerst die Transaktionsgebühr berechnen, diese vom Guthaben abziehen und dann die Überweisung durchführen:
var sender = web3.eth.accounts[0];
var receiver = web3.eth.accounts[1];
var balance = web3.eth.getBalance(sender);
var gasPrice = web3.eth.getGasPrice(); // estimate the gas price
var transactionObject = {
from: sender,
to: receiver,
gasPrice: gasPrice,
}
var gasLimit = web3.eth.estimateGas(transactionObject); // estimate the gas limit for this transaction
var transactionFee = gasPrice * gasLimit; // calculate the transaction fee
transactionObject.gas = gasLimit;
transactionObject.value = balance - transactionFee; // set the transaction value to the entire balance, less the transaction fee
web3.eth.sendTransaction(transactionObject, myCallbackFunction);
web3.eth.gasPrice
Aus den Dokumenten wird der mittlere Gaspreis der letzten Blöcke berechnet, es ist in Ordnung, wenn Sie es jetzt senden).Nehmen Sie zum Beispiel diese echte Transaktion, eine zufällige
https://etherscan.io/tx/0xcb1e3530950cf2c43a307bcb5645ae71a12c76a60831617badd04aea3efe68aa
Transaction Fee:
0.000284248 Ether ($0.05)
Gas Limit:
136,500
Gas Used by Transaction:
35,531 (26.03%)
Gas Price:
0.000000008 Ether (8 Gwei)
Hier sieht man das
Fee = Gas_Used * Gas_Price
= 35531 (unit) * 0.000000008 (eth)
= 0.000284248 (eth)
Vielleicht möchten Sie sich die web3-Dokumentation ansehen . Wie dort beschrieben, erhalten Sie den aktuellen Gaspreis wie folgt:
const gasPrice = web3.eth.getGasPrice();
Der Rest sieht gut aus.
Michail Wladimirow