不知怎的,我的汽油成本非常高?有人可以帮忙吗?
我有一个稳固的功能:
function setMessage(uint8[] _fMessage) public returns (uint256){
emit Message(_fMessage);
}
我的活动:
event Message(uint8[] message);
当我使用它来调用它时:EthProj.setMessage.sendTransaction([72, 193, 77], {from: my address})
其中EthProj是我的合同。这是如何耗尽25027
天然气的。当我使用我的交易的eth.getTransactionReceipt
运行transactionHash
时,它会显示:gasUsed: 25027
。根据这个:https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv
,更多的specefic,这部分LOG0 375 + 8 * (number of bytes in log data)
它应该只花费大约400气体,因为事件中只有3个字节。这笔巨额费用来自哪里?
答案 0 :(得分:2)
每笔交易都有21000固有的天然气成本。来自Ethereum documentation:
任何交易都会收取21000个燃气作为基本费用"。这包括椭圆曲线操作的成本,以从签名中恢复发件人地址以及存储事务的磁盘和带宽空间。
从那里开始,每个执行的操作码都消耗气体。这包括读取状态,返回值,发出事件等等。您所指的计算仅适用于将事件数据写入状态的部分。
要更全面地了解交易消耗多少气体,请查看opcode gas spreadsheet(此版本来自首次发布,但我还没有看到更新过的版本)。您还可以查看此write-up的交易费用。