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

What's the best practice for using env::log in smart-contracts?

在以太坊中,事件是明确定义的,每个事件都是一种数据结构,用于发出某种动作的信号。在 Near 中,env::log 是消息。 示例:

除“调试”/return 用户信息外,使用附近的日志有什么意义吗?日志应该标准化吗? 也许最好在其他地方进行讨论...?

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

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

我们还没有将以太坊事件的模拟添加到 NEAR 中。想要发出某些事件信号的合约需要 return 将其作为方法结果的一部分,例如 here。因此,我们的 env::log 目前仅供参考,可用于调试等。

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

为具有复杂跨合约调用和回调的复杂合约创建日志可能会很有用,这样它就可以通知用户它是如何到达特定结果的。