本文介绍了如何使用 OpenZeppelin 的库(如 Network JS 和 hot-loader)构建 DApp,包括连接到以太坊网络、热加载合约,以及使用 Starter Kits 快速启动 DApp 的方法。文章还提供了一些快速开始的示例代码,并引导开发者进行下一步的测试和网络连接。
本文档是OpenZeppelin Monitor项目的贡献指南,详细介绍了如何参与该项目的开发。
本文档介绍了 OpenZeppelin Contracts 库中与 ERC721 非同质化代币标准相关的接口、合约和实用程序。
Ownable库提供了一种基本的访问控制机制——设置一个owner具有对某些函数特殊的访问权限。通常owner就是本合约的deployer。合约部署后可通过函数transferOwnership()进行owner的修改。本库还提供了modifier onlyOwner,用于为函数限定访问权限。
ERC165Checker库是用来查询已实现IERC165的目标合约自身实现了哪些interface的工具库。在使用时需要注意:利用ERC165Checker提供的查询方法进行查询的过程不会因为目标合约没有实现待查询interface而发生revert。
ERC165Storage合约是ERC165的一种拓展。IERC165的supportsInterface(bytes4)函数的标准实现方式是静态地将已实现接口的interface id硬编码到bytecode中,而ERC165Storage则可在合约部署后动态地添加支持的interface id。
Ownable2Step库是Ownable库的拓展版本。其提供的访问权限机制同Ownable完全一致,只是owner的更换机制从由原owner直接指定(一次交互)变成原owner指定 + 新owner确认(两次交互)。Ownable2Step库具有Ownable库所有的功能函数。
本文详细介绍了 ERC4626 标准,它为 token vaults 提供了一个标准化的接口,并探讨了 Vault 的概念及 Yearn Vaults 的实际应用。此外,文章还深入分析了 Openzeppelin 的 ERC4626 实现,包括构造函数、公共/外部函数、私有/内部函数和 getter 函数,最后强调了 ERC4626 Vault 的安全问题,如通货膨胀攻击,并提出了相应的防御措施。
IERC1820Registry.sol是global ERC1820 Registry的接口文件。ERC1820 Registry旨在创建一个全网唯一的interface与对应implementer的查询中心。所有地址都可以在其中注册interface与对应implementer的关联关系。
ERC1820Implementer合约是对IERC1820Implementer interface的实现。该合约往往与ERC1820Registry合约配合使用。如果想要合约成为ERC1820Registry记录在案的implementer,需要目标合约继承ERC1820Implementer。
本文详细介绍了如何创建和部署ERC-20代币,包括ERC-20标准的历史、功能和使用案例,以及如何使用Remix.IDE和OpenZeppelin库来编写和部署智能合约。
本文详细介绍了Solidity中的gasleft()函数的作用及其应用场景,包括防止交易耗光Gas、代码执行成本基准测试、转发所有Gas到实现合约以及防止中继器拒绝服务攻击等。
gasleft()
Escrow合约是Openzeppelin中所有escrow拓展库的基础合约,用于为指定地址锁存eth和提取eth的托管场景。该合约中存入和取出eth的方法都被virtual修饰,开发者可以通过继承重写的方式来做相关修改。
AccessControl库用于管理函数的调用权限,所有继承了AccessControl的子合约均可为自己的业务函数设置调用权限。AccessControl是一个轻量级的基础库且各个role不支持在编成员的迭代导出,所以授权和撤销role成员的操作会抛出event。
从foundry工程化的角度详细解读Openzeppelin中的Base64库及对应测试。