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



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

  • 在以太坊中,我们使用日志进行大多数代币状态更改
  • NEP-21没有提到任何关于原木的内容

除了";调试"/返回用户信息?日志应该标准化吗?也许最好在其他地方进行讨论。。。?

接下来:事务参数是序列化的并且清晰可见。记录事务参数有意义吗?例如:在以太坊代币传输函数中,所有参数都会额外记录在一个事件中。原因很少:

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

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

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

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

最新更新