私はEthereum用のTruffleテストフレームワーク(v4.0.1)を使用しています。Truffleを使用したEthereum契約における取引手数料の計算
contract MinTest {
function run() public returns(bool) {
return true;
}
}
私が使用しているモカテストは次のとおりです:
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));
});
});
});
テストは、上記の生成取引手数料は、次の簡単な契約のためgasPrice*gasUsed
まで追加されていない理由を私は理解できません次の出力:
gasPrice : 20000000000
gasUsed : 21478
gasCost : 429560000000000
initial : 100000000000000000000
initial-gasCost: 99999570440000000000
final : 99997852200000000000
unaccounted : 1718240000000000
私は契約のMinTest.run
関数の呼び出しがaccounts[1]
がに正確に等しい金額を引き落とされさせることが期待ですが、この例ではそうではありません。追加の1718240000000000
私は説明できないほど借方があります。ここで追加の1718240000000000
ウィジェットが引き落とされるのはなぜですか?