openzeppelin-contracts
openzeppelin-contracts copied to clipboard
OpenZeppelin Contracts is a library for secure smart contract development.
**🧐 Motivation** There is an opinion that ERC777 is over-engineered and is a bad practice to follow. Moreover it introduces bad abstractions to rely on and requires very important checks...
### Motivation Make the `permit` method compatible with smart-contract wallets that implement EIP1271, and make smart-contract wallets compatible with dapp flows that leverage the `permit` method (e.g. via WalletConnect). ###...
Let's discuss this opportunity to minimize ERC20 source code. #### PR Checklist - [ ] Tests - [ ] Documentation - [ ] Changelog entry
- Remember to credit @ZumZoom for #3468 (not in changelog) - Remember to credit @DanielVF for #3506 (not in changelog)
When compiling a contract, the devdoc doesn't extends from the parent. For example when compiling the ERC20 contract, the devdoc of method `balanceOf` is ``` See {IERC20-balanceOf}. ``` Instead of...
**🧐 Motivation** On-chain sorting is a risky design choice, but for small data sizes it could be useful for some algorithms. I'm proposing sorting of `memory` arrays, NOT `storage` arrays,...
As per the discussion https://forum.openzeppelin.com/t/erc4626-vault-implementation-for-totalassets-in-base-contract/29474 and https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3497#issuecomment-1162864795 , requesting "ERC4626 Tracker" contract as part of release. cc @Amxx
- EIP712 include a `DOMAIN_SEPARATOR` getter by default - A `Nonces` contract is dedicated to nonce management to avoid conflicts when inheriting Votes and ERC20Permit - ERC20Votes is now built...
Use the custom errors introduced in 0.8.4 to reduce gas cost and improve clarity of revert reasons. Next steps: - [ ] Identify which reasons to replace - [ ]...
We are looking into removing mock contracts to make maintainability easier. The [hardhat-exposed](https://github.com/frangio/hardhat-exposed) plugin I built automatically creates "mock" contracts that 1) expose internal functions as external functions, and 2)...