无法使用 Solidity IDE 将计算出的 "gas used" 值匹配到 etherscan 浏览器 "Gas Used By Transaction"
Unable to match calculated "gas used" value using Solidity IDE to the etherscan explorer "Gas Used By Transaction"
我正在尝试查找在 remix solidity IDE 中单击方法时交易使用的气体。我的代码如下。我在 gasUsed 变量中获得的值与 etherscan 浏览器上显示的此交易的值不同。如果有人帮助我更正我的代码,那将会很有帮助。
pragma solidity ^0.4.22;
contract id{
uint public id;
uint public senderValue;
uint256 public gasUsed;
constructor() public {
senderValue= msg.sender;
}
function setId(uint _id) public {
uint256 gasInitial = gasleft();
id= _id;
setGasUsed(gasInitial - gasleft());
}
function setGasUsed(uint256 _gasUsed) private {
gasUsed = _gasUsed;
}
}
remix IDE 中“gas used”的值是Execution Cost,而“交易使用的气体”在etherscan中是“交易成本”。
执行成本基于作为交易结果执行的计算操作的成本。
交易成本 始终基于您将发送到区块链的数据类型的成本。这取决于,
- 基本交易成本(21000 gas)
- 合约部署的成本(32000 gas)
- 交易中数据或代码的每个零字节的成本。
- 交易中每个非零字节数据或代码的成本。
这张图你可以很容易理解
希望这个回答能解开你的疑惑。
我正在尝试查找在 remix solidity IDE 中单击方法时交易使用的气体。我的代码如下。我在 gasUsed 变量中获得的值与 etherscan 浏览器上显示的此交易的值不同。如果有人帮助我更正我的代码,那将会很有帮助。
pragma solidity ^0.4.22;
contract id{
uint public id;
uint public senderValue;
uint256 public gasUsed;
constructor() public {
senderValue= msg.sender;
}
function setId(uint _id) public {
uint256 gasInitial = gasleft();
id= _id;
setGasUsed(gasInitial - gasleft());
}
function setGasUsed(uint256 _gasUsed) private {
gasUsed = _gasUsed;
}
}
remix IDE 中“gas used”的值是Execution Cost,而“交易使用的气体”在etherscan中是“交易成本”。
执行成本基于作为交易结果执行的计算操作的成本。
交易成本 始终基于您将发送到区块链的数据类型的成本。这取决于,
- 基本交易成本(21000 gas)
- 合约部署的成本(32000 gas)
- 交易中数据或代码的每个零字节的成本。
- 交易中每个非零字节数据或代码的成本。
这张图你可以很容易理解
希望这个回答能解开你的疑惑。