假设以下合同已部署到Ethereum。如果我想运行它,我必须支付任何费用吗?
contract NameRegistry {
mapping(bytes32 => address) public registryTable;
function claimName(bytes32 name) {
if (msg.value < 10) {
throw;
}
if (registryTable[name] == 0) {
registryTable[name] = msg.sender;
} } }发布于 2018-08-09 17:43:20
每一个改变契约状态的函数(写/更改可变数据)都消耗气体(ETH)。由于函数中的registryTable[name] = msg.sender;将数据分配给映射,因此它将消耗气体。仅当您从外部源或其他view契约调用view函数时,即合同中的数据未被更改时,气体才不会被消耗。
https://ethereum.stackexchange.com/questions/56208
复制相似问题