美文网首页
solidity系列教程<四>事件

solidity系列教程<四>事件

作者: addin_gao | 来源:发表于2019-04-18 11:00 被阅读0次

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

    事件是以太坊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) { 
      // 干些事
    }
    

    相关文章

      网友评论

          本文标题:solidity系列教程<四>事件

          本文链接:https://www.haomeiwen.com/subject/qqediftx.html