可编程交易块和入口函数

另一种重要的函数类型是入口函数。在旧的 Move 语言中,有两种入口函数—— public entryentry

在 Sui 网络上,可编程交易块(PTB)允许用户指定一系列动作(交易), 将其作为单个交易发送到网络。动作将按顺序执行,并且是原子的, 即:如果其中任何一个动作失败,整个 PTB 将失败,所有更改会自动回滚。

PTB 是一个强大的概念,会在后续课程中详细介绍。目前,我们将 PTB 视为用户发送到 Sui 区块链的交易。 PTB 可以调用任何用 Move 模块编写的公共函数、公共入口函数和私有入口函数。 因此,在 Sui 中,公共函数和公共入口函数实际上没有区别,尽管这些概念仍然继承自经典 Move。

我们需要学习唯一的新函数类型是私有入口函数(简称入口函数),它只能直接从交易中调用,不能从其他 Move 代码中调用。

私有入口函数对于开发者希望直接向用户提供的功能非常有用,这些功能只能作为交易的一部分调用, 而不能在其他模块中调用。一个例子是剪票——我们希望用户必须显式地将其作为交易的一部分来调用, 不希望其他模块代表用户剪票。后者对于用户来说更难检测,他们可能不会期望在发送交易时会发生这种情况。

entry fun clip_ticket(ticket: Ticket) {
    let Ticket {
          id,
          expiration_time: _,
      } = ticket;
      object::delete(id);
}