Solidity.

帖子

分享您的知识。

0x914b...756b.
Feb 16, 2024
讨论

关于汽油退款的澄清以及智能合约中 “要求” 和 “还原” 之间的比较

嘿大家,

我正在努力加深对智能合约开发中某些条件的理解,我有一个关于特定场景的问题.

假设智能合约中有一个 “要求” 条件必须得到满足. 如果此条件失效,合同需要恢复所有更改,并退还交易中使用的任何汽油. 我的问题是,考虑到在计算过程中总是消耗汽油,汽油退款流程是如何运作的?

此外,我听说过 “还原” 条件,但如果能澄清一下它与智能合约开发中的 “要求” 有何不同,我将不胜感激.

  • Smart Contract
  • Solidity
2
1
分享
评论
.

答案

1
Sergey Ilin.
Feb 16 2024, 15:27

requireSolidity 中有 3 个用于验证的函数:revert``assert、和.

需要 -在函数的开头使用 -针对非法输入进行验证 -在执行之前验证状态条件 -退还剩余的汽油

示例:

require(msg.sender == owner, "Only. owner can execute this action");

还原 -与要求相同 -适用于更复杂的逻辑流门(即复杂的 if-then 块) -退还剩余的汽油

示例:

revert("Something funky has occured");

断言 -在函数末尾使用 -验证不可能的事情 -对于静态代码分析工具至关重要 -不退还剩余的汽油

示例:

assert(num >= 0);

请注意requirerevert仅退还剩余的汽油. 在该声明之前使用的任何气体都将被消耗. 这两个函数在后台使用相同的操作码 REVERT.

assert之所以不同,是因为它不退还任何汽油,而是使用所有可用于交易的汽油. 预计其使用频率会降低,应用于检查异常且预计不会发生的情况.

1
评论
.

你知道答案吗?

请登录并分享。

我们使用 cookie 确保您在我们的网站上获得最佳体验。
更多信息