在智能合约中使用env :: log的最佳实践是什么?

时间:2020-09-29 20:58:19

标签: nearprotocol

在以太坊中明确定义了事件,每个事件都是一种用于表示某些动作的数据结构。在附近,env::log是消息。 示例:

  • 在以太坊中,我们将日志用于大多数令牌状态更改
  • NEP-21没说日志。

除了“调试” /返回用户信息以外,是否还有其他地方可以使用日志?是否应该对日志进行标准化处理? 也许最好在其他地方进行讨论...?

下面是: 事务参数已序列化并且清晰可见。记录事务参数是否有意义? 例如:在以太坊令牌传递函数中,所有自变量在事件中另外记录。这样做的原因很少:

  1. 通过事件,我们应该能够重新创建合同状态; <​​/ li>
  2. 在浏览区块链时更具可读性。 但是在转移的情况下,我认为没有任何附加值,因为除了函数参数外,我们不记录其他任何东西。

1 个答案:

答案 0 :(得分:4)

我们还没有将Ethereum事件的类似物添加到NEAR中。想要发信号通知某个事件的合同需要将其作为方法结果的一部分返回,例如here。因此,我们的env::log当前仅用于提供信息,可用于调试等。

通常,我们的合同可以选择如何对参数进行序列化,因此合同记录自己的参数可能很有用,因为它可能使用了复杂的序列化机制。

对于具有复杂的交叉合同调用和回调的复杂合同,拥有日志可能会很有用,这样它可以通知用户如何到达特定结果。