BitMaps库开发了一种存储更紧凑且高效的mapping(uint256=>bool)。传统的mapping(uint256=>bool)中一个slot只能存储一个键值对的bool值信息,而改用了BitMaps.BitMap数据结构后,一个slot理论上最多可以存256个键值对的bool值信息。
本文介绍了如何在Hardhat项目中使用@openzeppelin/hardhat-upgrades插件来部署和升级代理合约以及信标代理合约。文章提供了安装插件、在脚本和测试中使用的示例代码,以及升级代理合约和信标合约的步骤,并提及了完整的API文档。
@openzeppelin/hardhat-upgrades
本文档介绍了OpenZeppelin Code Inspector,它是一个与Github集成的代码分析工具,通过机器学习和安全专家开发的工具自动进行代码分析,识别潜在漏洞并提出改进建议。
本文档介绍了 OpenZeppelin Contracts Wizard,一个交互式工具,可以帮助用户快速生成智能合约样板代码,并学习 OpenZeppelin Contracts 提供的组件。Wizard 允许用户自定义合约的名称、符号、功能(如 Mintable、Burnable、Pausable 等),并提供 AI 助手解答智能合约开发相关问题。
本文介绍了如何使用@openzeppelin/truffle-upgrades 插件在 Truffle 迁移和测试中部署和升级合约的代理。 包括使用 deployProxy 和 upgradeProxy 函数部署和升级普通代理,以及使用 deployBeacon、deployBeaconProxy 和 upgradeBeacon 函数来部署和升级信标代理。
deployProxy
upgradeProxy
deployBeacon
deployBeaconProxy
upgradeBeacon
Openzeppelin中的ERC20库只提供了mint接口,而具体的发行逻辑需要开发者在其子合约中使用_mint()自行编写。该库同样遵循了OpenZeppelin的合约设计思路:当函数因产生错误返回false时,直接revert掉。这种设计思路与ERC20的期望标准并不冲突。
_mint()
本文档介绍了OpenZeppelin Contracts库的使用,它是一个用于安全智能合约开发的库,提供了如ERC20和ERC721等标准的实现,以及灵活的基于角色的权限控制方案和可重用的Solidity组件。文档涵盖了安装、使用方法、安全注意事项以及学习资源。
EnumerableSet库提供了Bytes32Set、AddressSet和UintSet三种类型的set,分别适用于bytes32、address和uint256类型的元素。 每种set都提供了对应的增添元素、删除元素、查询当前set中元素个数等操作。几乎所有操作的时间复杂度均为O(1)。
本文档介绍了如何使用 OpenZeppelin 的 Governor 合约搭建链上治理系统。包括 Governor 合约的工作原理、设置方法,以及如何使用 Ethers.js 和 Tally 创建、投票和执行提案。同时,还讨论了与 Compound 的 GovernorAlpha 和 GovernorBravo 系统的兼容性,并介绍了基于时间戳的治理方式。
本文介绍了如何使用 OpenZeppelin 框架创建 ERC-20 代币。首先,设置开发环境,包括安装 Hardhat 和 OpenZeppelin 依赖。然后,编写 ERC-20 代币合约,并使用 Hardhat 部署到以太坊测试网络。最后,配置并部署到以太坊主网络。使用 OpenZeppelin 可以安全高效地创建 ERC-20 代币。
本文档介绍了与ERC-721非同质化代币标准相关的一系列接口、合约和实用程序,包括核心功能接口IERC721、元数据扩展接口IERC721Metadata、枚举扩展接口IERC721Enumerable和接收器接口IERC721Receiver。
本文介绍了使用 OpenZeppelin Upgrades Plugins 升级智能合约的方法,包括升级的重要性、如何使用插件升级合约、升级的工作原理以及编写可升级合约的注意事项。通过代理合约和实现合约的分离,实现了在保持合约地址、状态和余额不变的情况下修改合约代码。
本文介绍了OpenZeppelin Test Helpers,这是一个用于以太坊智能合约测试的断言库。它提供了诸如检查交易是否因正确的原因而revert、验证事件是否以正确的值发出、跟踪余额变化、处理大数以及模拟时间流逝等功能。文章还提供了安装和使用示例,以及进一步学习的链接。
本文档是 OpenZeppelin Test Helpers 的 API 参考,介绍了用于测试以太坊智能合约的各种辅助函数。主要包括:用于检查账户余额的 balance,用于处理大数的 BN,常用的常量 constants,以及用于模拟时间和快照的 time 和 snapshot 等辅助函数,expectEvent 和 expectRevert 用于测试事件和异常。
balance
BN
constants
time
snapshot
EnumerableMap库提供了Bytes32ToBytes32Map、UintToUintMap、UintToAddressMap、AddressToUintMap和Bytes32ToUintMap五种可迭代的map。每种map都提供了增添/更新键值及查询等操作且所有操作的时间复杂度为O(1)。