帖子
分享您的知识。
Feb 16, 2024
讨论
关于汽油退款的澄清以及智能合约中 “要求” 和 “还原” 之间的比较
嘿大家,
我正在努力加深对智能合约开发中某些条件的理解,我有一个关于特定场景的问题.
假设智能合约中有一个 “要求” 条件必须得到满足. 如果此条件失效,合同需要恢复所有更改,并退还交易中使用的任何汽油. 我的问题是,考虑到在计算过程中总是消耗汽油,汽油退款流程是如何运作的?
此外,我听说过 “还原” 条件,但如果能澄清一下它与智能合约开发中的 “要求” 有何不同,我将不胜感激.
- Smart Contract
- Solidity
2
1
分享
评论
答案
1Feb 16 2024, 15:27
require
Solidity 中有 3 个用于验证的函数:revert``assert
、和.
需要 -在函数的开头使用 -针对非法输入进行验证 -在执行之前验证状态条件 -退还剩余的汽油
示例:
require(msg.sender == owner, "Only. owner can execute this action");
还原 -与要求相同 -适用于更复杂的逻辑流门(即复杂的 if-then 块) -退还剩余的汽油
示例:
revert("Something funky has occured");
断言 -在函数末尾使用 -验证不可能的事情 -对于静态代码分析工具至关重要 -不退还剩余的汽油
示例:
assert(num >= 0);
请注意require
,revert
仅退还剩余的汽油. 在该声明之前使用的任何气体都将被消耗. 这两个函数在后台使用相同的操作码 REVERT.
assert
之所以不同,是因为它不退还任何汽油,而是使用所有可用于交易的汽油. 预计其使用频率会降低,应用于检查异常且预计不会发生的情况.
1
评论
你知道答案吗?
请登录并分享。
Solidity is an object-oriented, high-level language for implementing smart contracts. It is a curly-bracket language designed to target the Ethereum Virtual Machine (EVM).
35帖子43答案
热门帖子