【Solidity Yul Assembly】2.5 | Logs and Events

  • 0xE
  • 发布于 2024-08-27 10:54
  • 阅读 871

关于 log 的指令。

以下是Yul 文档中摘出来的部分。 指令 解释
log0(p, s) log data mem[p…(p+s))
log1(p, s, t1) log data mem[p…(p+s)) with topic t1
log2(p, s, t1, t2) log data mem[p…(p+s)) with topics t1, t2
log3(p, s, t1, t2, t3) log data mem[p…(p+s)) with topics t1, t2, t3
log4(p, s, t1, t2, t3, t4) log data mem[p…(p+s)) with topics t1, t2, t3, t4

总体来说,事件的哈希值通常作为第一个 topic (topics[0]),而所有用 indexed 修饰的字段会分别作为其他 topics(如 topics[1], topics[2], 等)存储在日志中。这些 topics 用于有效地过滤和检索特定事件。而未被 indexed 修饰的字段的数据则会被存储在日志的 data 部分,这些数据在内存中指定的范围内取出。
这么说可能有些看不懂,看以下两个例子就明白了。

完全使用 indexed 修饰的事件


event SomeLog(uint256 indexed a, uint256 indexed b);

function emitLog() exter...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
0xE
0xE
0x59f6...a17e
17年进入币圈,Web3 开发者。刨根问底探链上真相,品味坎坷悟 Web3 人生。有工作机会可加v:__0xE__