Solidity中的’emit’关键字

尽管正在开发更多的语言,但是Solidity一直是智能合约开发的开发人员的首选。 以太坊社区正在不断努力以缓解和改善Solidity的发展。

在最新版本(2018年3月8日v0.4.21)中,引入了`emit`关键字来发出事件。 这将有助于区分功能和事件,这是TheDAO Hack导致以太坊硬分叉并诞生以太坊经典的原因之一。

根据solidity发行说明:

常规:支持并建议使用emit EventName(); 显式调用事件。

为了使事件在常规函数调用方面脱颖而出,现在应该使用emit EventName()而不是EventName()来“调用”事件。

您可以在此处了解此版本中的其他实现。

现在,发出事件的新示例代码如下所示:

 实用可靠度^ 0.4.21;合同ClientReceipt { 
活动存款(
索引为_from的地址,
bytes32索引_id,
uint _value
);功能存款(bytes32 _id)公共应付款项{
//事件是使用`emit`发出的,后面跟着
//事件名称和参数
//(如果有的话)放在括号中。 任何此类调用
//(甚至嵌套很深)可以从
//通过过滤“存款”来获取JavaScript API。
发出存款(msg.sender,_id,msg.value);
}
}

确保您的编译器版本为0.4.21或更高版本,对于较低的版本,它将引发编译错误。

您可以在此处进行讨论以引入`emit`关键字。

谢谢阅读。

任何意见,更多欢迎。