Solidity 汇编编程与可升级智能合约全解析
1. Solidity 汇编编程基础
在 Solidity 中,汇编块支持 //
和 /* */
两种注释方式。 //
用于单行注释, /* */
用于多行注释。
2. 作用域和块
汇编块可以嵌套,每个块都定义了一个局部作用域。在作用域内声明的变量,一旦执行离开该块就会被释放。
- 变量可见性 :嵌套块内声明的变量在块外不可见,且父作用域中声明的变量不能在内部作用域重新定义。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract AssemblyScopes {
function getValues() public pure returns (uint256 retval) {
assembly {
let outerValue := 10
{
let innerValue := 20
{
innerValue := 30
}
}
{
// Variable name already