Solidity Event是如何实现的
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一个Solidity Event的定义如下: event Deposit( address indexed _from, bytes32 indexed _id, uint _value ); 最多 3 indexed参数. 如果一个 indexed 参数的类型是大于32 bytes (比如 string 和 bytes), 就不存实际数据, 而是存数据的KECCAK256摘要(Digest). EVM Log Primitives 先来看log0 , log1 , ..., log4 EVM 指令. EVM 日志功能使用不同的术语: “topics”: 最多 4 个topics. 每个topic 32 bytes. “data”: 数据是event的Payload. 可以是任意长度的bytes. 一个Solidity event 如何映射到一个log 原语? 所有“non-indexed 参数” 被存为data. 每个“indexed 参数” 被存为一个32 bytes的topic. The log0 Primitive Log0生成一个只有data的日志项目, 没有topic. data可以任意长度的 bytes. 下面看一个例子 pragma solidity ^0.4.18; contract