ERC721Consecutive: Fixed a bug when _mintConsecutive is used for batches of size 1 that could lead to balance overflow. Refer to the breaking changes section in the changelog for a note on the behavior of ERC721._beforeTokenTransfer.
Breaking changes
ERC721: The internal function _beforeTokenTransfer no longer updates balances, which it previously did when batchSize was greater than 1. This change has no consequence unless a custom ERC721 extension is explicitly invoking _beforeTokenTransfer. Balance updates in extensions must now be done explicitly using __unsafe_increaseBalance, with a name that indicates that there is an invariant that has to be manually verified.
v4.8.1
ERC4626: Use staticcall instead of call when fetching underlying ERC-20 decimals. (#3943)
v4.8.0
Note
Don't miss the section on Breaking changes at the end.
TimelockController: Added a new admin constructor parameter that is assigned the admin role instead of the deployer account. (#3722)
Initializable: add internal functions _getInitializedVersion and _isInitializing (#3598)
ERC165Checker: add supportsERC165InterfaceUnchecked for consulting individual interfaces without the full ERC165 protocol. (#3339)
Address: optimize functionCall by calling functionCallWithValue directly. (#3468)
Address: optimize functionCall functions by checking contract size only if there is no returned data. (#3469)
Governor: make the relay function payable, and add support for EOA payments. (#3730)
GovernorCompatibilityBravo: remove unused using statements. (#3506)
ERC20: optimize _transfer, _mint and _burn by using unchecked arithmetic when possible. (#3513)
ERC20Votes, ERC721Votes: optimize getPastVotes for looking up recent checkpoints. (#3673)
ERC20FlashMint: add an internal _flashFee function for overriding. (#3551)
ERC4626: use the same decimals() as the underlying asset by default (if available). (#3639)
ERC4626: add internal _initialConvertToShares and _initialConvertToAssets functions to customize empty vaults behavior. (#3639)
ERC721: optimize transfers by making approval clearing implicit instead of emitting an event. (#3481)
ERC721: optimize burn by making approval clearing implicit instead of emitting an event. (#3538)
ERC721: Fix balance accounting when a custom _beforeTokenTransfer hook results in a transfer of the token under consideration. (#3611)
ERC721: use unchecked arithmetic for balance updates. (#3524)
ERC721Consecutive: Implementation of EIP-2309 that allows batch minting of ERC721 tokens during construction. (#3311)
ReentrancyGuard: Reduce code size impact of the modifier by using internal functions. (#3515)
SafeCast: optimize downcasting of signed integers. (#3565)
ECDSA: Remove redundant check on the v value. (#3591)
Create2: optimize address computation by using assembly instead of abi.encodePacked. (#3600)
Clones: optimized the assembly to use only the scratch space during deployments, and optimized predictDeterministicAddress to use fewer operations. (#3640)
Checkpoints: Use procedural generation to support multiple key/value lengths. (#3589)
ERC721Consecutive: Fixed a bug when _mintConsecutive is used for batches of size 1 that could lead to balance overflow. Refer to the breaking changes section in the changelog for a note on the behavior of ERC721._beforeTokenTransfer.
Breaking changes
ERC721: The internal function _beforeTokenTransfer no longer updates balances, which it previously did when batchSize was greater than 1. This change has no consequence unless a custom ERC721 extension is explicitly invoking _beforeTokenTransfer. Balance updates in extensions must now be done explicitly using __unsafe_increaseBalance, with a name that indicates that there is an invariant that has to be manually verified.
4.8.1 (2023-01-12)
ERC4626: Use staticcall instead of call when fetching underlying ERC-20 decimals. (#3943)
4.8.0 (2022-11-08)
TimelockController: Added a new admin constructor parameter that is assigned the admin role instead of the deployer account. (#3722)
Initializable: add internal functions _getInitializedVersion and _isInitializing (#3598)
ERC165Checker: add supportsERC165InterfaceUnchecked for consulting individual interfaces without the full ERC165 protocol. (#3339)
Address: optimize functionCall by calling functionCallWithValue directly. (#3468)
Address: optimize functionCall functions by checking contract size only if there is no returned data. (#3469)
Governor: make the relay function payable, and add support for EOA payments. (#3730)
GovernorCompatibilityBravo: remove unused using statements. (#3506)
ERC20: optimize _transfer, _mint and _burn by using unchecked arithmetic when possible. (#3513)
ERC20Votes, ERC721Votes: optimize getPastVotes for looking up recent checkpoints. (#3673)
ERC20FlashMint: add an internal _flashFee function for overriding. (#3551)
ERC4626: use the same decimals() as the underlying asset by default (if available). (#3639)
ERC4626: add internal _initialConvertToShares and _initialConvertToAssets functions to customize empty vaults behavior. (#3639)
ERC721: optimize transfers by making approval clearing implicit instead of emitting an event. (#3481)
ERC721: optimize burn by making approval clearing implicit instead of emitting an event. (#3538)
ERC721: Fix balance accounting when a custom _beforeTokenTransfer hook results in a transfer of the token under consideration. (#3611)
ERC721: use unchecked arithmetic for balance updates. (#3524)
ERC721Consecutive: Implementation of EIP-2309 that allows batch minting of ERC721 tokens during construction. (#3311)
ReentrancyGuard: Reduce code size impact of the modifier by using internal functions. (#3515)
SafeCast: optimize downcasting of signed integers. (#3565)
ECDSA: Remove redundant check on the v value. (#3591)
Create2: optimize address computation by using assembly instead of abi.encodePacked. (#3600)
Clones: optimized the assembly to use only the scratch space during deployments, and optimized predictDeterministicAddress to use fewer operations. (#3640)
Checkpoints: Use procedural generation to support multiple key/value lengths. (#3589)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps @openzeppelin/contracts from 3.4.1 to 4.8.2.
Release notes
Sourced from
@openzeppelin/contracts
's releases.... (truncated)
Changelog
Sourced from
@openzeppelin/contracts
's changelog.... (truncated)
Commits
d00acef
4.8.2ab9cc4c
Ignore reentrancy inexecuteBatch
and update Slither config (#3955)43aa7ff
Updateforge-std
submodule tov1.2.0
(#3885)167bf67
Fix ERC721Consecutive balance update on batch size 182d47ca
Add Subgraphs to docs sidebar357022c
Update Tally screenshots (#4030)9b610d3
Add warning forsupportsERC165InterfaceUnchecked
edge case (#4017)c018c9c
Remove outdated note about virtual view functions (#4014)d13316e
AddERC*Pausable
warning for public pausing mechanism (#4007)3ab2e11
Show if event parameter is indexed in docs (#3958)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)