本文详细介绍了如何使用 OpenZeppelin 库和 Hardhat 框架创建和部署可升级智能合约。通过分步指南,读者了解了合同的创建、测试、部署及升级的过程,还涉及了环境设置、合约验证和资金管理等重要步骤,对于具备一定基础的开发者来说,非常实用。
本文详细介绍了Fireblocks的可升级ERC20代币合约的审计过程,涵盖了系统概述、权限角色及信任假设。总结中指出发现了一项低严重性问题,并提出了多个提高代码质量和文档的建议。最重要的是,该代币合约支持访问控制功能,符合ERC-20标准。
本文介绍了在使用 OpenZeppelin Upgrades 编写可升级合约时需要注意的关键事项,包括使用 initializer 代替 constructor,避免在字段声明中定义初始值,以及如何安全地修改合约存储结构。
本文档介绍了 OpenZeppelin Contracts 库中关于代理模式的各种实现,包括 Proxy、ERC1967Proxy、TransparentUpgradeableProxy、UUPSUpgradeable、BeaconProxy 和 Clones 等合约,以及它们的使用场景、升级机制和安全性考虑。
Proxy
ERC1967Proxy
TransparentUpgradeableProxy
UUPSUpgradeable
BeaconProxy
Clones
本文档介绍了 OpenZeppelin Foundry Upgrades API,涵盖了 Foundry artifact 和 Annotation 格式的合约名称规范,以及 deployUUPSProxy、deployTransparentProxy、upgradeProxy、deployBeacon 和 proposeUpgrade 等函数的详细用法和参数选项,旨在帮助开发者使用 Foundry 脚本或测试来部署和管理可升级的合约,以及与 OpenZeppelin Defender 集成。
本文介绍了如何使用 Foundry 库来部署和管理可升级合约,包括安装 OpenZeppelin Contracts v5 或 v4 的步骤、使用 NPM 或 Soldeer 进行替代安装的方法、Foundry 的要求、运行前的配置(如安装 Node.js、配置 foundry.toml)以及在 Windows 环境下的设置等。
本文介绍了使用 OpenZeppelin Upgrades Plugins 升级智能合约的方法,包括升级的重要性、如何使用插件升级合约、升级的工作原理以及编写可升级合约的注意事项。通过代理合约和实现合约的分离,实现了在保持合约地址、状态和余额不变的情况下修改合约代码。
本文探讨了在区块链上开发合约时,由于合约部署后难以更改的特性,Proxy-Implementation 架构应运而生。
本文档介绍了如何在使用OpenZeppelin升级插件等工具部署可升级合约时,使用@openzeppelin/contracts-upgradeable包。 该包通过使用initializer函数替换构造函数,并在小版本之间检查存储不兼容性,遵循可升级合约的编写规则,同时还讨论了多重继承和命名空间存储等问题。
@openzeppelin/contracts-upgradeable