使用Foundry工具来探索实现可升级的合约,本文介绍了可升级的合约使用的 delegatecall 时遇到的变量冲撞的问题,以及应该如何应对。
本文通过字符串连接函数为例,来看看如何计算及对比 Solidity 函数的 gas 消耗
Try Catch 和 Solidity 可以回滚的所有方式
RoleController 权限控制
当我们发行了ERC20代币之后,因为某些特殊原因不得不放弃掉ERC20的智能合约,而改用新合约的时候,可以通过布署一个迁移合约的方法实现将旧合约的所有代币迁移到新合约的需求.
如果你持有一个ERC777代币,那么你就可以利用ERC777代币中的钩子函数方法,给自己布署一个账本合约来记录自己的账户每一次接收到的代币数量和对方账户等信息.
本文循序渐进实现了 3 个合约:1. 简单质押奖励,重点介绍如何计算奖励的? 2. 代币化质押奖励,提高质押流动性; 3. ERC4626 代币化金库, 将质押存入到金库中。
本文介绍以太坊智能合约开发语言 Solidity 中的位操作运算符,以及如何使用这些 Solidity 位操作符对合约数据执行位操作运算,例如与、或、非、异或等,同时也介绍如何实现 Soldity 不支持的取反、移位等操作。
理解智能合约字节码末尾的元数据
Chisel是随Foundry提供的高级SolidityREPL(交互式命令工具)。它可用于在本地或Fork网络上快速测试Solidity片段。
研究Solidity存储引用和智能合约存储布局
Solidity教程系列第二篇 - Solidity地址类型介绍. Solidity 系列完整的文章列表请查看分类-Solidity。
Solidity 优化 - 隐藏的 Gas 成本
Solidity 教程系列第11篇 - Solidity 视图函数、虚函数讲解。 Solidity 系列完整的文章列表请查看分类-Solidity。
你是否知道大端小端的概念,其定义了是高位数据先保存还是地位数据先保存,EVM 是用 大端格式存储数据,我们知道 EVM 使用 32 字节的字来处理数据,当数据不足 32 个字节时,如何填充数据呢?bytes 有哪些操作详见本文。