上篇文章中我们学习了合约中数据的存储方式以及如何读取合约中的各种数据。这次我们将带大家了解 delegatecall 函数。
Delegatecall: 详细且生动的指南
在这篇文章中,我们将详细分析现有的智能合约升级策略,描述我们在实践中观察到的弱点,并为需要升级的合约提供建议。
上篇文章中我们了解了什么是 delegatecall 函数以及一个基础的漏洞,这篇文章的目的是加深一下大家对 delegatecall 的印象并带大家一起去玩点刺激的,拿下一个进阶版的漏洞合约。
Solidity delegatecall (委托调用)是一个低级别的函数,其强大但棘手,如果使用得当,可以帮助我们创建 可扩展 的智能合约,帮助我们修复漏洞,并为现有的智能合约增加新的功能
可扩展
从foundry工程化的角度详细解读Openzeppelin中的Address库及对应测试。
本文通过编写有漏洞的合约,来了解如何攻击并理解如何预防漏洞的发生。
如何利用delegatecall进行以太坊智能合约升级
动态代理的更优实现和使用注意
delegatecall是Solidity中的一种低级函数调用方法,它允许一个合约以调用者(caller)的上下文(context)执行另一个合约的代码。这意味着被调用的合约中的msg.sender、msg.value和存储都会是调用合约的上下文。
可以清晰地了解,当作入门认识,因为深入的话会牵扯到很多底层的东西,这里提到的一点点这作为了解这两个方法的辅助