登录 后可观看高清视频
在 Yul 中使用数组
22次播放
2025-04-16
该视频主要讲解了YUL(YORL)语言中如何处理和存储数组,特别是固定大小数组、动态数组以及较小数据类型(uint8)的动态数组。
核心内容/主要观点:
YUL处理不同类型的数组的方式不同,理解这些差异对于优化智能合约的存储和gas消耗至关重要。
关键论据/关键信息:
- 固定大小数组: 元素按顺序存储在连续的存储槽中,每个元素占用一个完整的32字节的存储槽(slot)。访问元素时,通过数组的起始存储槽加上索引偏移量来定位。
- 动态数组: 数组的长度存储在数组变量对应的存储槽中。数组的实际数据存储在一个通过对数组变量的存储槽进行keccak256哈希运算得到的新的存储位置开始的连续区域中。这样做是为了避免与合约中其他变量的数据发生冲突。
- uint8动态数组: 由于uint8类型小于32字节,YUL会将多个uint8元素紧密地打包到一个存储槽中,以节省存储空间。一个存储槽可以容纳32个uint8元素。