1

不知何故,我的汽油成本高得离谱?有人可以帮忙吗?

我有一个坚固的功能:

function setMessage(uint8[] _fMessage) public returns (uint256){
    emit Message(_fMessage);
}

我的活动:

 event Message(uint8[] message);

当我使用它调用它时: EthProj.setMessage.sendTransaction([72, 193, 77], {from: my address})

EthProj 是我的合同。这怎么用完25027gas。当我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,更具体,这部分LOG0 375 + 8 * (number of bytes in log data)它应该只花费大约 400 gas,因为事件中只有 3 个字节。这么大的成本从何而来?

4

1 回答 1

3

每笔交易都有直接的 21000 内在气体成本。从以太坊文档

任何交易都会收取 21000 gas 作为“基本费用”。这涵盖了从签名中恢复发件人地址的椭圆曲线操作的成本,以及存储交易的磁盘和带宽空间。

从那里开始,执行的每个操作码都会消耗气体。这包括读取状态、返回值、发出事件等。您所指的计算仅适用于将事件数据写入状态的部分。

有关交易将消耗多少气体的更详尽解释,请查看操作码气体电子表格(此版本来自最初的发布,但我还没有看到更新的版本)。您还可以查看有关交易成本的这篇文章。

于 2018-06-13T17:08:24.783 回答