solidity系列教程<四>事件

2019-04-18  本文已影响0人  addin_gao

事件是与以太坊虚拟机日志工具的方便接口,我们先明确事件,日志这两个概念。事件发生后被记录到区块链上成为了日志。总的来说,事件强调功能,一种行为;日志强调存储,内容。

事件是以太坊EVM提供的一种日志基础设施。事件可以用来做操作记录,存储为日志。也可以用来实现一些交互功能,比如通知UI,返回函数调用结果等

事件

当定义的事件触发时,我们可以将事件存储到EVM的交易日志中,日志是区块链中的一种特殊数据结构。日志与合约关联,与合约的存储合并存入区块链中。只要某个区块可以访问,其相关的日志就可以访问。但在合约中,我们不能直接访问日志和事件数据(即便是创建日志的合约)。事件是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。下面我们来看看,如何在Solidity中实现一个事件:

pragma solidity ^0.4.14;
contract Transfer{
// 这里建立事件
 event IntegersAdded(uint x, uint y, uint result);
 function add(uint _x, uint _y) public {
   uint result = _x + _y;
   //触发事件,通知app
   emit IntegersAdded(_x, _y, result);
   return result;
  }
}

你的 app 前端可以监听这个事件。JavaScript 实现如下:

YourContract.IntegersAdded(function(error, result) { 
  // 干些事
}
上一篇下一篇

猜你喜欢

热点阅读