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

Mak*_*kyi 5 nearprotocol

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

  • 在以太坊中,我们对大多数令牌状态更改使用日志
  • NEP-21 没有提及日志。

除了“调试”/返回用户信息之外,在附近使用日志是否有任何意义?日志应该标准化吗?也许在其他地方进行这个讨论会更好......?

接下来:交易参数被序列化并且清晰可见。记录事务参数有什么意义吗?例如:在以太坊代币转移函数中,所有参数都额外记录在一个事件中。有几个原因:

  1. 有了事件,我们应该能够重新创建合约的状态;
  2. 它在浏览区块链时更具可读性。但是在转移的情况下,我认为没有任何附加价值,因为除了函数参数之外我们不记录任何其他内容。

Mak*_*kyi 5

我们还没有将以太坊事件的模拟添加到 NEAR 中。希望以通知有关的一些事件需要回到它像方法结果的一部分合同在这里。因此,我们env::log目前仅供参考,可用于调试等。

一般来说,我们的合约可以选择如何序列化参数,因此合约记录自己的参数可能很有用,因为它可能对它们使用复杂的序列化机制。

为具有复杂交叉合同调用和回调的复杂合同提供日志可能很有用,以便它可以通知用户它是如何到达特定结果的。