用 OpenZeppelin 和 Foundry 创建和部署可升级的 ERC20 代币
寻找代理合约真地址的一种方法
函数选择器冲突在代理模式中,如果方法不加以校验可能会出现安全漏洞.
Beacon Proxy Pattern
为了使用在 Layer1 和 Layer2 之间移动的 SUDT 通证,您需要部署 ERC20 代理合约来与它们交互。这个特殊的 solidity 智能合约是由 Nervos 团队准备的,允许 EVM 与 Nervos 上的 SUDT 通证交互。
在手把手教你实现Bank智能合约这篇文章中,我们认真拆解了需求,罗列了相关的知识点,已经实现了基于权限控制的存款和取款逻辑。这篇文章,我们会提升难度,不仅仅要实现功能,还要思考怎么合理的去设计一个合约。
代理的核心逻辑contractProxy{addresspublicimplement;constructor(addressimpl){implement=impl;}fallback()externalpayab
delegatecall是Solidity中的一种低级函数调用方法,它允许一个合约以调用者(caller)的上下文(context)执行另一个合约的代码。这意味着被调用的合约中的msg.sender、msg.value和存储都会是调用合约的上下文。
OpenZeppelinFoundryUpgradesupgradeProxy升级合约源码分析Upgrades.upgradeProxy源码分析Upgradesaproxytoanewimplementationcontract.Onlysupportedfor