Ich benutze das Trüffel-Test-Framework (v4.0.1) für Ethereum. Ich kann nicht herausfinden, warum die Transaktionsgebühren nicht zu gasPrice*gasUsed
für den folgenden einfachen Vertrag Aufsummierung sind: Ich bin mitAccounting für Transaktionsgebühren in Ethereum Vertrag mit Truffle
contract MinTest {
function run() public returns(bool) {
return true;
}
}
Der Mokka-Test:
contract('Minimum Test', function (accounts) {
it("min test", function() {
var initial = web3.eth.getBalance(accounts[1]);
var final;
return MinTest.deployed().then(function(instance) {
return instance.run({from: accounts[1]});
}).then(function(result) {
final = web3.eth.getBalance(accounts[1]);
var gasPrice = new BigNumber(web3.eth.gasPrice);
var gasUsed = new BigNumber(result.receipt.gasUsed);
var gasCost = gasPrice.times(gasUsed);
console.log("gasPrice : " + gasPrice);
console.log("gasUsed : " + gasUsed);
console.log("gasCost : " + gasCost);
console.log("initial : " + initial);
console.log("initial-gasCost: " + initial.minus(gasCost));
console.log("final : " + final);
console.log("unaccounted : " + initial.minus(gasCost).minus(final));
});
});
});
Der Test oben erzeugt die folgende Ausgabe:
gasPrice : 20000000000
gasUsed : 21478
gasCost : 429560000000000
initial : 100000000000000000000
initial-gasCost: 99999570440000000000
final : 99997852200000000000
unaccounted : 1718240000000000
ich erwartete, dass der Anruf an die MinTest.run
Funktion des Vertrages accounts[1]
zu veranlassen, eine Menge genau gleichzu belastender, aber das ist in diesem Beispiel nicht der Fall. Es gibt eine zusätzliche 1718240000000000
wei belastet, dass ich nicht erklären kann. Warum wird hier ein zusätzliches 1718240000000000
wei belastet?