上篇文章中我们学习了合约中数据的存储方式以及如何读取合约中的各种数据。这次我们将带大家了解 delegatecall 函数。
Delegatecall: 详细且生动的指南
在这篇文章中,我们将详细分析现有的智能合约升级策略,描述我们在实践中观察到的弱点,并为需要升级的合约提供建议。
上篇文章中我们了解了什么是 delegatecall 函数以及一个基础的漏洞,这篇文章的目的是加深一下大家对 delegatecall 的印象并带大家一起去玩点刺激的,拿下一个进阶版的漏洞合约。
本文详细介绍了可升级智能合约的概念、工作原理及其在以太坊区块链中的应用。通过代理模式,开发者可以在不牺牲安全性和去中心化的情况下,修改已部署的智能合约功能。文章还讨论了使用可升级合约的原因,如修复漏洞和产品改进,并介绍了如何实现可升级智能合约,包括透明代理模式和通用升级代理标准。
这篇文章深入探讨了Solidity中的delegatecall方法,阐明了其工作原理、操作的安全性以及如何有效管理合约状态变量布局。
文章详细介绍了ERC-2535钻石模式(Diamond Pattern),这是一种代理模式,代理合约可以同时使用多个实现合约。文章深入讨论了钻石模式的实现原理、优势、以及与透明可升级代理(Transparent Upgradeable Proxy)和UUPS的区别。还介绍了钻石模式的应用场景和最佳实践,包括如何实现不可变钻石和可升级钻石,并提供了相关代码示例。
本文介绍了DelegateCall,一个运行在Loom DAppChain上的区块链问答网站。用户通过回答问题和获得点赞来赚取积分,这些积分可以兑换为可交易的ERC-20代币。文章详细描述了DelegateCall的架构、运行机制及其与Ethereum的关联,展示了DAppChain在性能和去中心化方面的优势。
本文详细介绍了代理合约的概念及其在智能合约中的重要性,特别是如何通过代理合约实现智能合约的升级性和降低部署成本。文章通过示例代码和图解,深入解析了代理合约的工作原理和实现方法,并探讨了存储冲突问题及其解决方案。
本文详细介绍了EVM中的delegatecall操作码,解释了其工作原理、使用场景及潜在问题,并提供了多个代码示例帮助理解。
《代理模式与 Delegatecall 书籍》深入探讨了 Solidity 开发中的代理模式及其背后的原理,针对开发者和审计师的需求,系统性地呈现了有关 EVM 及 Solidity 编译器的知识。这本书清晰地组织了多个章节,从存储槽、ABI 编码到代理模式的不同实现,提供了丰富的有用信息,是希望深入了解这一复杂主题的开发者的重要资源。
文章详细解释了透明可升级代理模式,该模式旨在升级代理时消除函数选择器冲突的可能性。文章介绍了代理合约的基本需求、函数选择器冲突问题及其解决方案,并通过代码示例和图表深入探讨了OpenZeppelin的实现细节。
本文介绍了Solidity中的nodelegatecall修饰符,用于防止合约使用delegatecall来调用函数,并通过代码示例详细展示了其实现和测试方法,同时讨论了Uniswap V3使用该技术的动机。
nodelegatecall
delegatecall
Solidity delegatecall (委托调用)是一个低级别的函数,其强大但棘手,如果使用得当,可以帮助我们创建 可扩展 的智能合约,帮助我们修复漏洞,并为现有的智能合约增加新的功能
可扩展
从foundry工程化的角度详细解读Openzeppelin中的Address库及对应测试。