为什么(startingBalance - endBalance)> (gasUsed * gasPrice)用于以太坊交易?

时间:2018-03-12 03:58:19

标签: ethereum truffle

我正在尝试在松露框架中编写javascript测试,以便在移动资金的交易后验证人口平衡变化。

我想排除燃气费用,以便我可以确切地说明余额变化。

以下是我如何确定用于天然气的eth的数量:

let startingBalance = await web3.eth.getBalance(me);
let tx = await contract.method.sendTransaction({from: me, gasPrice: 1});
let endBalance = await web3.eth.getBalance(me);
let receipt = await web3.eth.getTransactionReceipt(tx);
await (startingBalance - endBalance).should.be.equal(receipt.gasUsed);

我的理由是,因为:

  • 交易不会改变资金
  • 我明确将事务gasPrice设置为1

receipt.gasUsed应该等于余额变化。

但是针对testrpc,测试抱怨说,余额比gasUsed * gasPrice稍微减少了大约2000个。

是否有其他因素可能导致人口平衡变化?

谢谢!

2 个答案:

答案 0 :(得分:1)

<div class="card"> <div class="card-header"> <span>Self Managed</span> <img src="app/assets/images/star.png" alt=""> </div> <div class="card-content"> <img class="card-icon" src="app/assets/images/self.png" alt="Smiley face"> <span>1%</span> </div> </div>startingBalanceendBalance个对象。将测试更改为

BigNumber

答案 1 :(得分:0)

我不相信testrpc。尝试在testnet上运行代码