本文主要介绍了直接在函数中 "引用" Storage;ERC-7201:命名空间存储布局,通过 assembly 在我们想要的 slot 位置定义状态变量
在本节中,我们将详细讲解官方文档中的 100% Yul 实现的 ERC20 合约。
一些内存使用的注意事项。
在这最后一节,我们将看一些 Yul 中相对较少使用的指令。
读取和修改同一个槽中的不同数据,往往需要使用位移和掩码操作。
数组与映射是如何存放在“存储槽”的?
从本章开始,我们来研究内存布局。
Solidity 是如何使用内存的?
SafeTransferLib的用处//这个库就是为了防止像usdt那样没有返回值的transfer,调用方式usingSafeTransferLibfortoken;token.safeTransferFrom
本章我们来看看 return(p, s) revert(p, s) keccak256(p, n) 这三条指令。
return(p, s)
revert(p, s)
keccak256(p, n)
关于 log 的指令。
log
在 Solidity 中关于 tx.data 有约定俗成的用法。
关于合约之间调用的指令 call、callcode、delegatecall 和 staticcall。
call
callcode
delegatecall
staticcall
可变长度的数据,ABI 采用了一种指针和数据分离的方式进行编码。
本文将介绍两种常见转账的实现方式,以及它们在 Yul 中的对应写法和 gas 费用的比较。