Solidity智能合约开发与测试全解析
1. Solidity与内联汇编基础
1.1 低级别特性概述
- 低级别函数可用于资金转移或与其他智能合约交互。其中,
transfer和send函数只能用于address payable类型的变量,而call、staticcall和delegatecall可用于所有地址类型。在伊斯坦布尔硬分叉后,建议使用call进行资金转移,并始终检查返回值是否成功。 - 内联汇编可嵌入到Solidity代码中。在Solidity 0.8.26版本中,使用瞬态存储的唯一方法是通过内联汇编,但要遵循可组合性原则。内联汇编可以访问局部变量和状态变量,访问状态变量需通过
.slot和.offset成员。
1.2 内联汇编风格与Yul
内联汇编有不同的编写风格,如函数式风格和指令式风格,但部分风格仅适用于旧合约。内联汇编基于Yul,Yul可独立使用,有时有助于优化燃气成本。
1.3 数据存储布局
- 存储的内部布局基于插槽,短数据类型可组合到一个插槽中,使用内联汇编时需考虑这些布局定义。
- 内存的前128字节保留用于临时空间、自由内存指针和零插槽。
- 调用数据始终以4字节的函数选择器开头,后跟填充
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



