智能合约 | solidity必会的开发技巧-使用event事件调试

397 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

开发技巧-one

对于智能合约运行环境的特殊性和合约资产转移安全方面的考虑,智能合约需要一定的开发技巧。我们需要慎重的编写合约代码,一不小心就可能使用户或者企业的财产安全收到严重的威胁。

event调试

在大多数的语言在开发中都会使用分布调试和日志是程序检测的重要手段。但是由于智能合约的特殊性,很难做到分布调试,幸运的是,日志的问题是很好解决的。在智能合约中并不是直接使用打印日志的函数来实现日志功能的。智能合约给出的一种处理机制是使用event函数接口来代替打印的方式来实现日志。它可以检测智能合约运行中的一些运行问题。

  • event接口声明:
event name(paramlists····)
  • 代码示例:
//定义一个事件,修改年龄的时候触发
event yourAge(address _owner,uint _age)

上面说了,它是一个接口不需要实现,调用的时候和普通的调用类似。要触发事件的时候,只需要在前面加一个emit。

  • 代码示例
event yourAge(address _owner,uint _age)

function setAge(uint _age) public{
//值传递内容(省略)
············
//触发事件,对事件进行调用。
    emit yourAge(msg.sender,_age)
    }

当我们把合约部署以后,调用一下函数aetAge就能够在合约调用明细中看到logs的输出,在内部能够看到yourAge对应的参数信息。

其他作用

event的作用不仅仅是用来实现日志功能,event事件还可以被以太坊的DAPP订阅(这在普通app中也是非常常见的。),从而监控合约内的数据变化。