【问题标题】:What's the preferred way to stop execution in NEAR Rust smart contracts?在 NEAR Rust 智能合约中停止执行的首选方法是什么?
【发布时间】:2020-11-08 01:06:06
【问题描述】:

至少有3种方法可以停止程序执行

  1. panic!
  2. assert!(都是兄弟姐妹)
  3. env::panic

如何正确停止智能合约的执行?

有什么首选的方法吗?什么时候应该使用env::panic

【问题讨论】:

    标签: nearprotocol


    【解决方案1】:

    他们最终都会致电env::panic。来自文档Terminates the execution of the program with the UTF-8 encoded message.。它是导入合约的主机函数的包装器。

    至于其他两个,assert! 检查一个布尔值并调用 panic! 并发送一条消息。 它们都支持 fmt::Display 特征,这意味着您可以使用“{}”标记字符串插值,以标记传递的字符串将按其出现的顺序排列。

    例如

    assert!(b, "{}", "oops");
    /// is
    if (b) {
      panic!("{}", "oops");
    }
    /// is equivalent to 
    if (b) {
      env::panic(format!("{}", "oops"));
    }
    

    所以你可以使用任何你认为合适的。在near-sdk-rs/exampleslike the fungible token contract 中查看它们的示例的好地方。

    【讨论】:

    猜你喜欢
    • 2021-05-28
    • 2020-09-17
    • 2022-01-22
    • 2021-12-30
    • 2021-06-14
    • 2022-06-23
    • 1970-01-01
    • 2017-07-02
    • 2022-06-22
    相关资源
    最近更新 更多