// emit the `ExampleEventAsm` event with 2 topics log2( freeMemoryPointer, // `p` = starting offset in memory 64, // `s` = number of bytes in memory from `p` to include in the event data topicHash, // topic for filtering the event itself tokenId // 1st indexed parameter ) } }
事件的 gas 成本
所有记录操作码(LOG0、LOG1、LOG2、LOG3、LOG4)都需要消耗 gas。它们具有的参数(主题)越多,它们消耗的 gas 就越多。
这种潜在的漏洞也在 Trail of Bits 对 Liquity[11] 智能合约的审计中发现并报告。
何时应该触发事件?
在你的合约中可能有几种情况下触发事件可能很重要和有用。
当受限制的用户和地址执行某些操作时(例如:所有者或合约管理员)。这包括例如受欢迎的 transfer ownership (address) 函数,该函数只能由所有者调用以更改合约的所有者。
更改一些关键变量或算术参数,这些变量负责合约的核心逻辑。在 DeFi 协议的背景下尤其重要。
Slither 检测器文档[12]中描述了更多关于这些情况的信息。
这也在 Trail 对 LooksRare 的审计报告中描述了。
监视在生产中部署的合约以检测异常。
查看 0xprotocol[13] 的详细信息,了解有关事件的安全相关问题。
参考
匿名事件使用目的的缺失文档(知其所以然)[14]
[匿名事件的优势]
Preview
Dapatkan pemahaman yang lebih luas tentang industri kripto melalui laporan informatif, dan terlibat dalam diskusi mendalam dengan penulis dan pembaca yang berpikiran sama. Anda dipersilakan untuk bergabung dengan kami di komunitas Coinlive kami yang sedang berkembang:https://t.me/CoinliveSG
Tambahkan komentar
Gabunguntuk meninggalkan komentar Anda yang luar biasa…