分享百科

non-indexed data

该视频主要讲解了在YUL中如何处理日志(logging),特别是如何手动生成和发出事件(events),以及如何区分索引(indexed)和非索引(non-indexed)数据。 **核心内容/主要观点:** * YUL需要手动处理事件的生成和发出,包括生成事件签名的哈希值(keccak256)。 * YUL使用`log`系列操作码(opcode)来发出事件,`log3`用于有三个topic的情况,`log2`用于有两个topic的情况。 * 索引数据存储在交易收据(transaction receipt)的topics中,而非索引数据存储在data中。 **关键论据/关键信息:** * **Solidity vs. YUL:** Solidity会自动处理事件签名哈希的生成,而YUL需要手动生成。 * **事件签名哈希:** 事件签名哈希是事件接口(interface)的keccak256哈希值,用于唯一标识事件类型。 * **`log`操作码:** `log`操作码的参数包括: * `P` 和 `S`: 指向内存中非索引数据的指针和大小。 * `T1`, `T2`, `T3`...: 事件的topics,第一个topic通常是事件签名哈希,后续topics是索引数据。 * **索引 vs. 非索引数据:** 索引数据可以被快速搜索,而非索引数据不能。非索引数据需要先存储在内存中,然后通过`log`操作码指定内存地址和大小。 * **交易收据分析:** 通过分析交易收据的topics和data字段,可以区分事件中的索引和非索引数据。
28
0
0
4天前
登链社区