SuperAPI AI 工具集

openzeppelin

安全与审计

查看项目

更新于 10-15 23:43

技能介绍

用途:OpenZeppelin Contracts 是安全智能合约开发的标准库,提供经审计、模块化的 Solidity 构建块,用于代币、访问控制、安全模式、可升级性与治理。Uniswap、Aave、Compound 等生产项目均在使用。

主要能力:支持 ERC-20、ERC-721、ERC-1155 代币标准及其扩展(Burnable、Permit、Votes、Enumerable、URIStorage);访问控制支持 Ownable、Ownable2Step、AccessControl 角色模型,以及 v5 新增的 AccessManager 集中式权限枢纽(配合 AccessManaged、restricted 修饰符);安全工具包括 ReentrancyGuard、SafeERC20(safeTransferFrom、forceApprove 等)、Pausable、Address.sendValue;可升级合约提供 UUPS 模式与 ERC1967Proxy。

使用方式:安装命令保持原样——Foundry 用 forge install OpenZeppelin/openzeppelin-contracts;Hardhat/npm 用 npm install @openzeppelin/contracts;可升级版本用 npm install @openzeppelin/contracts-upgradeable。Foundry 需在 remappings.txt 中配置 @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/。导入需使用完整规范路径,如 @openzeppelin/contracts/token/ERC20/ERC20.sol。

v5 重要变更与限制:Ownable 构造函数必须传入初始 owner 地址 Ownable(initialOwner);_setupRole 已移除,构造器改用 _grantRole(role, account);钩子函数 _beforeTokenTransfer/_afterTokenTransfer 已移除,改为重写 _update;ERC-721 Enumerable 需同时重写 _update 与 _increaseBalance;SafeMath 与 Counters 已删除;AccessControl.renounceRole 需要 callerConfirmation 第二参数。可升级合约须遵循:状态变量只能追加不可重排、构造器使用 _disableInitializers()、版本初始化用 reinitializer(n)、存储间隙由 ERC-7201 命名空间存储处理。Defender 相关资料在给定内容中仅开头出现,后续细节暂未提供。