Compare commits

...

659 Commits

Author SHA1 Message Date
fa666ea94f Merge branch 'master' into renovate/npm-undici-vulnerability 2025-02-28 21:03:58 +01:00
a4b0d89900 MessageHashUtils: Add toDataWithIntendedValidatorHash(address, bytes32) (#5081)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2025-02-28 21:00:43 +01:00
a9b1f58b00 Add saturating (unsigned) math operations and optimize try operations (#5527) 2025-02-27 10:03:54 +01:00
506e1f827a Ensure cross-platform of coverage.sh (#5316) 2025-02-26 14:09:01 +01:00
f999ba42a1 Add 512bits add and mult operations (#5035) 2025-02-26 11:04:14 +01:00
2ed8956992 Add _initializableStorageSlot (#5337)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2025-02-24 15:40:42 +01:00
3bdc3a35c5 Add Arachnid's and Micah's deployer to the common contracts (#5519) 2025-02-21 22:54:43 +01:00
930598edfb Authority utils assembly (#5074) 2025-02-20 00:10:27 +08:00
9586aaf352 Support foundry v1.0 (#5511) 2025-02-15 20:54:49 +01:00
f281e98c94 Make TimelockController receive function virtual (#5506)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-14 09:28:26 +01:00
fa8bed68af Treat code-size warnings as errors (#5101)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-13 12:16:21 -05:00
dbd9805207 Test behavior of SignatureChecker against the identity precompile (0x4) (#5501) 2025-02-13 10:21:24 -05:00
7ccb79f6ce Update FUNDING.json hierarchy (#5500)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-12 15:17:17 +01:00
be2b016679 Update FUNDING.json (#5496)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-11 21:16:57 +01:00
f4237626c2 Make set-max-old-space-size.sh compatible with sh (#5493)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-10 12:24:02 -05:00
3658269505 Add clear function to Enumerable{Set,Map} (#5486)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-10 18:02:43 +01:00
6d18b3fb24 Update dependency undici to v7.2.3 [SECURITY] 2025-02-09 14:34:17 +00:00
441dc141ac Add Bytes32x2Set (#5442)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-02-04 14:30:53 -05:00
2141d3faf5 Rename ERC4337Utils ENTRYPOINT to ENTRYPOINT_V07 (#5472)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-02-04 12:39:24 -06:00
43b3319e5b Add ERC6909 Implementation along with extensions (#5394)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-02-04 13:47:21 +01:00
df878c87fc Use slither v0.10.4 (#5488) 2025-02-04 13:29:20 +01:00
b9dbfa7ceb Improve promise rejections handling in hardhat/async-test-sanity.js (#5429)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2025-02-04 10:55:06 +01:00
19c2f2f5a5 SafeERC20.trySafeTransfer{,from} (#5483) 2025-02-03 12:26:37 -06:00
c089efa8b5 Add forum badge correct link (#5481) 2025-02-03 17:30:49 +01:00
828dbc357c Add stake management function to ERC4337Utils (#5471) 2025-01-31 09:35:57 -06:00
840c974028 Use stable foundry version in CI (#5465) 2025-01-28 11:36:32 -05:00
0d0e4aabdb Update dependency halmos to v0.2.4 (#5461)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 10:02:52 +01:00
4ccfe380e0 Fix the CLI output of formal verification runs (#5445) 2025-01-27 10:02:03 +01:00
8c1b0ca82d Add a governor extension that implements a proposal guardian (#5303)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-01-27 09:56:35 +01:00
495a287e9a Fix interface docs ordering and add missing interface (#5460) 2025-01-24 15:11:39 -05:00
fd812ee954 Group typographical errors (#5443)
Co-authored-by: futreall <86553580+futreall@users.noreply.github.com>
Co-authored-by: Marco <wudmytrotest200@gmail.com>
Co-authored-by: Dmitry <98899785+mdqst@users.noreply.github.com>
Co-authored-by: Dmytrol <46675332+Dimitrolito@users.noreply.github.com>
Co-authored-by: Noisy <125606576+donatik27@users.noreply.github.com>
Co-authored-by: Danil <37103154+Danyylka@users.noreply.github.com>
Co-authored-by: CrazyFrog <anna.shuraeva13@gmail.com>
Co-authored-by: Bryer <0xbryer@gmail.com>
Co-authored-by: Viktor Pavlik <160131789+Vikt0rPavlik@users.noreply.github.com>
Co-authored-by: Skylar Ray <137945430+sky-coderay@users.noreply.github.com>
Co-authored-by: Brawn <nftdropped@gmail.com>
Co-authored-by: fuder.eth <139509124+vtjl10@users.noreply.github.com>
Co-authored-by: FT <140458077+zeevick10@users.noreply.github.com>
Co-authored-by: Ann Wagner <chant_77_swirly@icloud.com>
Co-authored-by: Hopium <135053852+Hopium21@users.noreply.github.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-01-24 18:18:59 +01:00
6e752dc169 Remove unused setBaseURI tests (#5456)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2025-01-24 10:47:06 -06:00
7ae222bf2f Update actions/upload-artifact action to v4 (#4826) 2025-01-24 16:31:05 +01:00
6dc9242937 Fix Broken Docs References (#5436) 2025-01-24 10:12:16 +01:00
a55fabc405 Remove Unnecessary Initialisation of _paused (#5448)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-01-23 12:20:07 -05:00
9e66e2f9f5 Replace overriden with overridden in GovernorCountingOverridable.sol (#5446)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2025-01-22 13:38:10 -06:00
332bcb5f4d Refactor EnumerableSet.behavior.js for reuse in the community repo (#5441) 2025-01-20 18:03:16 +01:00
ea736bd45b Update LICENSE (#5434) 2025-01-15 16:35:50 +01:00
96b40d02c3 Expose _isTrustedByTarget internally in ERC2771Forwarder (#5416) 2025-01-10 14:59:14 -06:00
13781c1f49 Add missing Calldata, Bytes, CAIP2 and CAIP10 API references (#5428) 2025-01-10 10:43:28 -06:00
2e27a0c74b Update governor docs (#5420) 2025-01-10 10:43:11 -06:00
352ab13687 Add a Calldata library with emptyBytes and emptyString functions (#5422)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-01-09 19:48:32 -06:00
7b74442c5e Merge release-v5.2 branch (#5424)
Signed-off-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Sam Bugs <101145325+0xsambugs@users.noreply.github.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: wizard <112275929+famouswizard@users.noreply.github.com>
Co-authored-by: leopardracer <136604165+leopardracer@users.noreply.github.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Simka <0xsimka@gmail.com>
Co-authored-by: Voronor <129545215+voronor@users.noreply.github.com>
2025-01-09 17:16:31 +01:00
a2a5dc26a1 Update _revokeRole documentation in AccessControl (#5321)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-01-06 18:43:40 -06:00
a99b31f990 Optimize MerkleTree for loops by using uint256 iterators (#5415)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2025-01-06 18:02:58 -06:00
45dd083602 Update ReentrancyGuardTransient documentation (#5417) 2025-01-06 17:53:34 -06:00
bf69b60146 Make IERC7579Execution payable (#5410) 2025-01-06 11:20:11 +01:00
4c3ef87cf5 Await .eventually test matchers (#5408) 2024-12-28 12:02:00 -06:00
dd04dfe75d Update links to the eth_sign JSON-RPC method in MessageHashUtils (#5407) 2024-12-26 19:26:15 -06:00
c3b3ae7e82 Fix inaccurate comment for the callGasLimit function in ERC4337Utils (#5397) 2024-12-23 12:39:10 -06:00
c73c23ffc9 Update outdated links in docs (#5380)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-12-23 11:12:33 -05:00
ba8b5cfd42 Remove unnecessary trailing / in prepare-docs.sh (#5323)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-20 13:23:30 -06:00
7526c8fe3b Add interface for ERC6909 (#5343)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-20 14:56:20 +01:00
d4ed5f9068 Automatically deploy entrypoint, and make it available in the hre (#5391) 2024-12-19 18:04:30 +01:00
482665495b Fix envvar setting for test and coverage (#5392) 2024-12-19 17:04:21 +01:00
03e06bf08c Add GovernorSequentialProposalId extension for sequential numbers on proposals (#5290)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-19 11:19:06 +01:00
3b240d7e6a Use the asset getter in totalAssets, _deposit and _withdraw in ERC4626 (#5322) 2024-12-19 11:15:56 +01:00
e8f24d6ba0 Set max old space size on coverage and test (#5382)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-12-19 11:13:55 +01:00
855c39cf58 Update dependency halmos to v0.2.3 (#5296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 23:18:48 +01:00
b50f22d153 Remove compile_force_framework: hardhat from slither config (#5390) 2024-12-18 13:51:08 -06:00
bf4d40d8c8 Fix pragma-consistency.js's comment (#5381) 2024-12-18 12:43:48 +01:00
73b46e3bd1 Bubble up revert data on failed Address.sendValue (#5379) 2024-12-17 12:48:40 +01:00
fad2b6e16b Update codecov/codecov-action action to v5 (#5298)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-12-16 10:43:34 +01:00
2655a89165 Update actions/setup-java action to v4 (#4770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-12-16 10:21:09 +01:00
f20c062ead Update dependency undici to v7 (#5327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 09:38:00 +01:00
535b54da59 Rename arrayLengthPointer to arrayLengthOffset and add changeset (#5371) 2024-12-13 12:46:04 -06:00
a71f79fbbc Remove relative path in solhint.config.js in favor of npm virtual package (#5368)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-13 10:54:45 -06:00
77d4a73c87 Add checks to ERC7579Utils.decodeBatch (#5353)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2024-12-12 14:53:52 -06:00
5df10703cd Vendor entrypoint bytecode (#5362) 2024-12-12 09:09:20 -06:00
ad906fe39b fix typo Update inheritance-ordering.js (#5354) 2024-12-12 12:35:10 +01:00
8939cb7835 Documentation: Fix README.adoc (#5361) 2024-12-12 12:34:22 +01:00
2875a0f782 Add v5.2 audit report (#5341) 2024-12-11 10:32:36 -06:00
a39556f475 Fix GovernorTimelockCompound and TESTING.md grammar (#5356) 2024-12-11 10:09:11 -06:00
ff3134197f Amend shouldSupportInterfaces refactor (#5359) 2024-12-10 22:31:26 +01:00
6dacc68c46 Refactor shouldSupportInterfaces helper (#5358) 2024-12-10 14:29:22 -06:00
1c1186af1c Allow pass in custom arguments to shouldSupportInterfaces test helper (#5350)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-12-10 11:47:32 -06:00
0643d17e8d Bump ws, ethers and hardhat-gas-reporter (#5345) 2024-12-06 18:47:26 +01:00
8829465a08 Run linter on commit instead of push (#5340)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-06 09:49:07 +01:00
063fbb3a1f Fix typo in ERC721 API reference docs (#5329)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-12-05 15:30:23 -06:00
779c27ad36 Cherry-pick "Fix v5.2 testing" from the release-v5.2 branch (#5342)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-12-05 13:48:49 -06:00
6e05b68bd9 Remove token value mention in ERC-1155 documentation (#5336) 2024-12-03 17:30:56 -06:00
a3a6db86d5 Fix typo in ERC4337Utils.paymasterData comments (#5333) 2024-12-02 14:48:25 +01:00
78be1b39aa Implement feedback for M-01, L-08, L-09 (#5324)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-11-29 10:53:54 -06:00
653963beb2 Various changes to code clarity (Fix N-07) (#5317)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-11-27 14:25:30 -06:00
fdf7012d3b Optimize log256's binary search (#5284) 2024-11-26 12:15:53 -06:00
4afd599329 Document canonicalization in CAIP2 and CAIP10 libraries (#5319) 2024-11-26 10:33:52 -06:00
0df841d2d7 Complete docstrings L-10 (#5315) 2024-11-25 14:31:30 -06:00
c3cb7a0295 Deduplicate logic in Votes.sol (#5314)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-11-25 11:47:55 -06:00
2562c11f25 Document VotesExtended assumptions (#5306)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-11-25 11:43:21 -06:00
e1d44e0342 Add factory(), factoryData() and paymasterData() helpers to ERC4337Utils (#5313)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-11-25 11:35:09 -06:00
0513853ca5 Rephrase VoteReduced event docs (#5318) 2024-11-25 11:28:59 -06:00
ed98138a78 Add missing docstrings (#5311)
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-11-25 12:15:23 -05:00
b3ce884628 Refactor parseUint, parseInt and parseHexUint to check bounds (#5304)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-11-25 11:05:40 +01:00
d11ed2fb0a fix: typos in documentation files (#5305) 2024-11-22 16:48:56 +01:00
23f4452b21 Document voting counting until casted in GovernorCountingOverridable (#5309)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-11-22 16:45:05 +01:00
ccb39d2765 Improve general documentation for 5.2 (#5310) 2024-11-21 16:43:13 +01:00
7105693e3c Change NoncesKeyed._useNonce to return a keyed value (#5312) 2024-11-21 16:34:00 +01:00
a277d472d6 Fix typo in GUIDELINES.md (#5297)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-11-21 15:20:14 +01:00
ccb5f2d8ca Fix 5.2 audit L-05, N-03, N-04, N-05 and N-06 issues (#5308) 2024-11-20 15:21:49 +07:00
ffca412299 Note native ERC20 behavior in VestingWallet (#5299)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-11-20 09:59:49 +07:00
dac63c4612 Fix docs in the extending-contracts section (#5300) 2024-11-18 15:40:14 +07:00
448efeea66 Optimize log2 with a lookup table (#5236)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-10-29 17:09:20 +01:00
3da7a869aa Update dependency p-limit to v6 (#5104)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-10-29 10:25:02 +01:00
f96237308f Update forge and change visibility in fuzz tests (#5103)
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-10-28 23:33:25 +07:00
bcdfa848a6 Remove unused import in SafeERC20 (#5278) 2024-10-25 17:26:35 +02:00
28aed34dc5 Merge account abstraction work into master (#5274)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Elias Rad <146735585+nnsW3@users.noreply.github.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-10-23 09:19:13 +02:00
2fa4d103fe Add NoncesKeyed variant (#5272) 2024-10-23 09:16:10 +02:00
205f59e9b6 Update dependency eslint to v9 (#4996)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-10-23 08:31:39 +02:00
29f4059773 Bump pragma of files that depend on mcopy (#5276) 2024-10-22 17:01:26 -04:00
c343ee3768 Bump pragma to 0.8.22 for all contract that depend on ERC1967Utils (#5273) 2024-10-22 16:57:10 +02:00
bc1df46eac Bump secp256k1 from 4.0.3 to 4.0.4 (#5275)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-22 09:31:20 +02:00
c12cf86e0d Fuzz tampered tests for ERC2771Forwarder (#5258)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-10-21 13:44:22 +02:00
a4dc928a93 ERC20: optimized gas costs in _spendAllowance (#5271) 2024-10-21 13:39:21 +02:00
5bb3f3e788 Simplify content in security documentation (#5233)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-10-19 14:16:09 +02:00
f989fff931 Remove missed changeset from 5.1-rc.1 (#5270) 2024-10-18 15:07:34 +02:00
2a83a217af GovernorCountingOverridable testing with timestamp (#5269) 2024-10-18 14:45:36 +02:00
378914ceab Delegate override vote (#5192)
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-10-18 14:17:20 +02:00
0034c30224 Merge release-v5.1 branch (#5266)
Signed-off-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: sudo rm -rf --no-preserve-root / <pcaversaccio@users.noreply.github.com>
Co-authored-by: danilo neves cruz <cruzdanilo@gmail.com>
Co-authored-by: omahs <73983677+omahs@users.noreply.github.com>
Co-authored-by: skyge <1506186404li@gmail.com>
Co-authored-by: PurrProof <149718167+PurrProof@users.noreply.github.com>
Co-authored-by: Eric Lau <ericglau@outlook.com>
Co-authored-by: plooten <sunxingzhecrypto@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Md Zartaj Afser <91191500+Zartaj0@users.noreply.github.com>
2024-10-17 17:41:15 +02:00
3291252c86 Document risk of SafeERC20 and ERC-7674 (#5262) 2024-10-17 13:33:22 +02:00
fe6249ec2c Bytes library and CAIP2/CAIP10 helpers (#5252)
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Arr00 <13561405+arr00@users.noreply.github.com>
2024-10-14 22:41:08 +02:00
bd588959ad Add toUint, toInt and hexToUint to Strings (#5166)
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-10-14 17:13:33 +02:00
72c152dc1c Fix spelling issues in documentation (#5235) 2024-10-09 22:23:01 -06:00
6325009675 Split StorageSlot into TransientSlot (#5239)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-10-08 13:39:53 -06:00
2bedb02bfc Fix typo in CHANGELOG.md (#5240) 2024-10-08 13:11:30 -06:00
8b591baef4 Add 5.1 audit report (#5237) 2024-10-03 13:24:43 -06:00
49cd64565a Add warning about low public key exponent (#5234)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-10-01 11:50:58 -06:00
b72e3da0ec Bump forge-std to v1.9.3 (#5230) 2024-09-30 14:38:42 -07:00
e3cfe1c5dd Fix P256 corner cases (#5218)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-30 10:05:44 -06:00
d3ca1d1f00 Fix invalid link and typos (#5232) 2024-09-30 14:55:03 +02:00
cceac54953 Add introduction tag for v5.1 contracts (#5228)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-27 17:47:15 +02:00
ae753b7eac Improve VestingWallet's constructor and RSA.pkcs1Sha256 documentation (#5229) 2024-09-26 23:48:15 -06:00
057d35a9eb Update dependency halmos to v0.2.0 (#5225)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-25 16:28:02 -06:00
414cb9e6fd Consistently name multiple returned values (#5177) 2024-09-25 16:23:31 -06:00
4c481d6584 Implement 5.1 Full Audit Naming Suggestions (#5215)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-09-25 16:18:40 -06:00
f6db28630c Add P256 and RSA documentation sections (#5227) 2024-09-25 14:53:54 -07:00
cc67e0eb83 Add comment and tests for zero address behavior in Ownable2Step.transferOwnership() (#5226)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-09-25 09:34:12 -06:00
2f0bc58946 Update and clarify documentation comments (#5206)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-23 09:17:10 -06:00
e866815c7d Fix typo in ERC4626 docs (#5222)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-09-23 09:16:54 -06:00
530179a71f Disallow empty CircularBuffer setup (#5214) 2024-09-19 11:20:04 -06:00
b1f6bbe69f Add note about memory manipulation in MerkleTree (#5213) 2024-09-19 17:08:52 +02:00
8a309ab5ec Update documentation of helper interface (#5179)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-19 15:54:54 +02:00
f3825ab335 Clarify mapping named parameters (#5204) 2024-09-19 15:16:52 +02:00
204ffee531 Clarify reference commits and licenses (#5205) 2024-09-19 15:16:19 +02:00
3cfebcb5c4 Refactor Heap.sol to remove index and lookup (#5190)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-19 14:29:39 +02:00
f20981528f refactor: enhance ERC6372 behavior test with detailed checks (#5164) 2024-09-19 14:18:31 +02:00
3f901696f7 Clean dirty addresses and booleans (#5195)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-09-18 18:21:17 +02:00
809ded806f Remove redundant modulo operation in P256 (#5200) 2024-09-17 14:42:06 -06:00
37c35a1eaa Update to match Solidity pragma (#5198) 2024-09-17 14:39:45 -06:00
6e224307b4 Fix typographical errors (#5194) 2024-09-13 19:26:46 +02:00
cae60c595b Tag memory safe assembly blocks (#5193) 2024-09-09 21:49:34 +02:00
c01a0fa27f Bump version of ERC20TemporaryApproval to transient minimum (#5191) 2024-09-08 12:32:56 +02:00
55d69573fc Clarify Governor events' lack of indexed parameters (#5175)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-09-05 20:39:42 +02:00
cb7faaf4db Add clone variant with per-instance immutable arguments (#5109)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-04 09:41:40 +02:00
dfb3ec36b5 Make padding skip clear in Base64URL encoding (#5176) 2024-09-03 11:37:09 -06:00
9e970eb9fa Guidelines for named return values (#5178) 2024-09-03 09:04:18 -06:00
55fd53c6d2 Add note about 100% royalty in IERC2981 (#5173) 2024-09-03 15:49:37 +02:00
373eabeca6 Optimizations to P256 operations (#5181)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-09-03 14:29:26 +02:00
29a953954d Revert "Remove double declaration of P in P256 (#5159)" (#5180) 2024-08-30 21:31:00 +02:00
83f954d8c4 Add memory side effects notes when using function pointers (#5174) 2024-08-30 13:44:05 +02:00
a9161aa93f Update dependency glob to v11 (#5107)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-29 21:16:27 -06:00
d8bbd34676 Update declaration of memory safe assembly blocks (#5172) 2024-08-29 15:07:17 -06:00
1e7ca3eea6 Remove redundant array access in Checkpoints (#5169) 2024-08-29 14:38:31 -06:00
37619479cd Remove unused import in IAccessManaged (#5170) 2024-08-29 13:45:16 -06:00
3547cdce21 Fix typographical errors (#5171) 2024-08-29 13:41:30 -06:00
48c67c7de0 Add missing docstrings (#5168)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-08-29 11:58:35 -06:00
1edc2ae004 Update dependency halmos to v0.1.14 and Python to 3.11 (#5147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-08-22 15:51:58 -07:00
5fc38baea2 Fix documentation typos (#5118)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-08-22 15:28:11 -07:00
eb4e8632f7 Bump axios from 1.6.8 to 1.7.4 (#5156)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-21 14:40:11 -06:00
db464dd23b Remove double declaration of P in P256 (#5159) 2024-08-21 14:35:52 -06:00
0b58a783b9 Update codespell-project/actions-codespell action to v2.1 (#5151)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-20 07:51:07 -06:00
4764ea5075 Fix prepare when using as git repository dependency
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-08-12 14:54:18 -04:00
c304b6710b Update MerkleProof note clarifying empty set definition (#5144)
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: sudo rm -rf --no-preserve-root / <pcaversaccio@users.noreply.github.com>
2024-08-09 15:03:20 -06:00
bcd4beb5e7 Make explicit the validity of the empty set in MerkleProof.sol (#5142) 2024-08-07 09:34:02 -06:00
24a641d9c9 Get leaves from memory in processMultiProofCalldata (#5140) 2024-08-03 00:00:26 +02:00
aec36ddd6a Create a ERC1363Utils helper similar to existing ERC721Utils and ERC1155Utils (#5133)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-08-02 13:06:42 -06:00
e3786e63e6 Fix natspec comment missing * (#5136) 2024-07-31 20:18:27 +02:00
c1d49a3259 Add note about opinionated design to ERC4626Fees (#5129) 2024-07-29 14:09:27 -06:00
9d6a0cc7e9 Fix documentation of private function _upperLookupBinary in Checkpoints.sol (#5128)
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-07-29 18:58:02 +02:00
659f3063f8 Fix typo in Heap.sol documentation (#5121) 2024-07-24 10:32:55 +02:00
231fae33f0 Add Binary heap structure (#5084)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-07-23 11:31:26 -06:00
9e73c4b581 Typographic error in Math.sol comment fix (#5115) 2024-07-22 22:09:13 -06:00
e30b390d84 Add ERC7674 (draft) (#5071)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-07-22 17:23:08 +02:00
19a657bef8 Protect Packing.pack and Packing.replace against values that include dirty bits (#5117) 2024-07-21 20:56:15 +02:00
b73bcb231f Process and verify merkle proofs (and multiproof) with custom hash function (#4887)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-07-15 18:08:58 +02:00
4b33d326fa Update dependency rimraf to v6 (#5108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-15 13:31:57 +02:00
05f218fb66 Implement P256 verification via RIP-7212 precompile with Solidity fallback (#4881)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: sudo rm -rf --no-preserve-root / <pcaversaccio@users.noreply.github.com>
2024-07-03 09:17:46 +02:00
ccc110360f Add Foundry tests to coverage (#5098)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-06-29 18:24:18 +02:00
9af280dc4b Bump braces from 3.0.2 to 3.0.3 (#5083)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-27 16:18:47 -06:00
01cae33130 Clarify hardhat and foundry configs and enable optimization by default (#5099) 2024-06-27 16:03:50 -06:00
483fc3f1f8 Update LICENSE (#5100) 2024-06-26 16:57:40 -06:00
5480641e5c Reduce memory leakage from returndata in SafeERC20 (#5090)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-06-25 09:32:54 -06:00
c3f8b760ad Fix docs links to ERC165 (#5096) 2024-06-21 16:02:42 -06:00
442886ed5f Fix repeated words in ERC2771Forwarder comments (#5088) 2024-06-17 12:49:25 -06:00
83c7e45092 Fix dirty bits in upper bits in implementation address in Clones.sol (#5069)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-06-14 10:29:05 -06:00
8a990e6d6a Avoid storing hashing function pointers in storage make MerkleTree structure upgrade-safe (#5080)
Co-authored-by: cairo <cairoeth@protonmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-06-13 14:50:10 +02:00
53b5d84212 Add bytes6 to the Packing library. (#5077) 2024-06-12 16:23:35 -06:00
dc62599257 Extended packing and extracting library for value types (#5056)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-06-11 12:07:00 -06:00
d8e799db98 Implement RSA verification (#4952)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
2024-06-11 11:16:30 -06:00
de4154710b Use Arrays.unsafeMemoryAccess in ERC1155Supply (#5068)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-06-07 14:41:40 -06:00
337bfd5ea4 Add utility function for converting an address to checksummed string (#5067) 2024-06-04 21:43:14 +02:00
8a890ffffa Update ERC1363 error signatures (#5010)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: cairo <101215230+cairoeth@users.noreply.github.com>
2024-06-04 12:42:20 +02:00
06449fe7bc Improve wording in _checkAuthorized's natspec (#5066) 2024-06-03 13:07:21 -06:00
c1d6ad5a30 Add GovernorCountingFractional (#5045)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2024-05-30 13:49:36 -06:00
dd1e8988ab Generate already lint code from procedural generation (#5060) 2024-05-30 09:16:12 -06:00
a241f09905 Use free memory pointer for returndatacopy (#5057) 2024-05-27 21:29:07 +02:00
faa6255b80 Fix typo in Governance docs (#5048)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-05-27 13:15:47 +02:00
984233dcad Bubble up returndata from reverted Create2 deployments (#5052)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-05-27 12:45:32 +02:00
52e0e3e783 Extend onlyAuthorized to support extra functions in AccessManager (#5014)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-05-27 11:09:42 +02:00
b64c90202a Fix Codespell (#5055) 2024-05-27 10:48:02 +02:00
1224d197c7 Update dependency halmos to v0.1.13 (#5054)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-23 12:49:26 -06:00
f1a69f164e Add Halmos support for formal verification (#5034)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-05-23 09:01:12 -06:00
9de916dd9c Update dependency solhint to v5 (#5038)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-05-23 15:09:37 +02:00
fe68c12f9c Fix spelling (#5049) 2024-05-23 15:06:42 +02:00
d947fb056d Fix typo in GovernorVotesQuorumFraction.test.js (#5041) 2024-05-17 15:24:06 +02:00
255e27e6d2 Update crytic/slither-action action to v0.4.0 (#5030)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-14 14:29:17 -06:00
ca2b85d786 Update actions/setup-python action to v5 (#4781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-05-13 18:52:30 -06:00
48ce444477 Fix Governor.t.sol's duplicate words (#5037) 2024-05-13 14:31:29 -06:00
05d4bf57ff Fix Typo in Math.sol (#5033) 2024-05-13 09:33:47 -06:00
52c36d412e Fix UPGRADE_INTERFACE_VERSION documentation in ProxyAdmin (#5031) 2024-05-03 15:27:03 +02:00
c80b675b8d Add CircularBuffer data structure (#4913)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-26 10:28:59 -06:00
60697cb09a Fix typo in Math.ternary (#5026)
Signed-off-by: snoppy <michaleli@foxmail.com>
2024-04-25 12:04:34 -06:00
4032b42694 Branchless ternary, min and max methods (#4976)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-04-23 14:08:08 +02:00
60afc99053 Update codecov/codecov-action action to v4 (#4978) 2024-04-23 13:59:56 +02:00
11dc5e3809 Expose an initializer function for non-abstract contracts in their upgradeable versions (#5008)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-04-09 12:03:02 +02:00
427b8bb028 Make Votes.sol _makeDelegateVotes internal (#5007) 2024-04-08 15:25:47 -06:00
df78791c96 Fix broken references in doc-site (#5004)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-08 15:25:19 -06:00
40cfb80e4b Update dependency undici to v6 (#4994)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-08 13:46:44 -06:00
5212e8eb18 Bump ERC1967Utils pragma to 0.8.21 and set Slither CI version to 0.10.1 (#5005)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-08 11:45:24 -06:00
f8c2e1035e Add Packing library (#4992)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-05 14:59:18 +02:00
90fd7cc7dd Bump undici from 5.26.2 to 5.28.4 (#4990)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 17:21:10 -06:00
bbc6ef90b7 Get ERC-1967 event from interface (#4987) 2024-04-04 17:18:15 -06:00
b6e07917eb Transient version of ReentrancyGuard (#4988)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-04 14:33:30 -06:00
8a7a9c5857 Update dependency hardhat-gas-reporter to v2 (#4986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-04 01:40:32 +02:00
d6ad9db0a0 Add transient storage slot support in StorageSlot.sol (#4980)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-04-04 01:15:30 +02:00
2d259ac346 Update dependency solhint to v4 (#4708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-03 22:49:22 +02:00
6f4ebf1190 Update dependency hardhat-gas-reporter to v2 (#4979)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-04-03 10:09:56 -06:00
db97666d0b Update crytic/slither-action action to v0.3.2 (#4984)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 19:29:27 -06:00
cb2aaaa04a Add slot derivation library (#4975) 2024-03-27 21:17:46 +00:00
5e3ba29b08 Procedurally generate Arrays.sol (#4859)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-27 13:17:19 +00:00
d1f39cd00b Update crytic/slither-action action to v0.3.1 (#4865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 13:01:14 +00:00
6d94d00b98 Update actions/github-script action to v7 (#4738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 13:00:00 +00:00
0a5fba7a7e Update ERC2771Forwarder assembly comment (#4972)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-03-26 12:03:56 +00:00
9558e546d9 Remove redundant memory usage in ERC2981 royaltyInfo (#4538)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-25 17:06:28 +01:00
d398d68944 Mask computed address in Create2 and Clones libraries (#4941)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-25 14:33:45 +00:00
ad27fb654a Optimize nested mapping access in ERC721Enumerable (#4545)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-25 12:14:16 +00:00
159fc11d81 Remove repetitive word from CHANGELOG.md (#4970)
Signed-off-by: majorteach <csgcgl@126.com>
2024-03-25 12:06:52 +00:00
9f123d6a84 Bump follow-redirects from 1.15.4 to 1.15.6 (#4960)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-25 11:28:15 +00:00
976a3d5362 Run linter before pushing to git (#4962)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-03-21 18:47:01 +01:00
e203e02523 Remove outdated comment in ERC-20 (#4968)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-03-21 16:42:56 +01:00
0c18fac08a Update Solidity files in docs (#4956)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-20 16:04:00 +00:00
6ae2c17bfe Remove outdated comment in ERC-20 (#4964) 2024-03-18 22:21:34 +00:00
e682c7e5b5 Fix typos in utilities and access control docs (#4920)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-03-14 20:40:07 +01:00
c03952acbe Remove async from describe blocks and add missing await in tests (#4942)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-14 17:35:08 +01:00
33ea1111b0 Avoid validating ECDSA signatures for addresses with code in SignatureChecker (#4951)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-03-14 16:27:15 +00:00
6b4ec6c6c6 Remove root from MerkleTree (#4949)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-12 10:30:54 -06:00
8cc7f2dcbf Remove repetitive words in the docs (#4944)
Signed-off-by: cuinix <915115094@qq.com>
2024-03-08 13:17:53 +01:00
92ff025622 Add a MerkleTree builder (#3617)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-03-07 16:27:38 +01:00
e83142944f Add ability to create clones with initial value in Clones.sol (#4936)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-03-06 13:44:42 -06:00
8b2f29ceb0 Optimize Clone.sol yul (#4927) 2024-03-06 09:37:20 +01:00
7417c5946f Remove redundant getVotes call in Governor (#4940)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-03-04 18:34:05 +01:00
0a3f880753 Update documentation in IAccessControl (#4924)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-04 16:17:51 +00:00
7a29f7df51 Improve MerkleProof tests (#4937)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-03-01 14:46:52 -06:00
c8369d483c Fix typo in ERC721Utils.sol (#4938) 2024-03-01 15:49:25 +00:00
105fa4e1b0 Merge release-v4.9 branch (#4932)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-29 20:04:20 +00:00
5705e8208b Merge release-v5.0 branch (#4930) 2024-02-29 13:48:02 -06:00
51b3e37d07 Update LICENSE (#4934) 2024-02-29 13:40:43 -06:00
92224533b1 Merge pull request from GHSA-9vx6-7xxf-x967
* add tests for the encode reads dirty data issue

* Fix the encode reads dirty data issue

* add changeset

* trigger the issue without assembly

* rename mock

* gas optimization

* Apply suggestions from code review

Co-authored-by: Ernesto García <ernestognw@gmail.com>

* alternative fix: cheaper

* update comment

* fix lint

---------

Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-02-29 10:03:32 -06:00
8b4b7b8d04 Simplify finance tests (#4912) 2024-02-22 15:15:26 +00:00
141c947921 Update chai matchers (#4899)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-19 19:27:39 +01:00
3def8f9d15 Rewrite comments using superscript for avoid confusion with xor operator (#4903) 2024-02-16 16:06:07 +00:00
140d66fad8 Improved integer square root (#4403)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-02-16 09:56:29 -06:00
96e5c0830a Deduplicate code in scripts/helpers and test/helpers/iterate (#4895)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-15 17:40:48 -06:00
4e7e6e54da Add bytes memory version of Math.modExp (#4893)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-02-14 10:06:34 +01:00
ae1bafcb48 Add VestingWalletWithCliff (#4870)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-02-13 10:01:45 +01:00
f8b1ddf591 Add variants of Array.sort for address[] and bytes32[] (#4883)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-02-12 16:34:07 +00:00
72c0da9ae0 Fix typo in AccessManaged.sol (#4890) 2024-02-12 10:13:11 -06:00
8b12f83a70 Remove gas optimization changeset entries (#4889) 2024-02-09 22:36:14 +01:00
17a8955cd8 Optimize Math operations using branchless bool to uint translation. (#4878)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-07 10:20:25 +01:00
0a757ec463 Add sort in memory to Arrays library (#4846)
Co-authored-by: RenanSouza2 <renan.rodrigues.souza1@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-02-06 20:49:12 +00:00
036c3cbef2 Replace custom errors with native panic codes in DoubleEndedQueue (#4872)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-06 21:02:01 +01:00
e73913c3c1 Update hardhat-exposed to remove mock/_import.sol (#4879) 2024-02-06 19:16:47 +00:00
9d3b9be04f Fix natspec comments in ERC-1155 (#4876) 2024-02-06 15:58:00 +00:00
192e873fcb Add Math.modExp and a Panic library (#3298)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-02-02 18:40:00 +01:00
cc431f53e0 Remove deprecated Truffle code (#4868) 2024-02-01 21:36:31 +00:00
7eba10dd1e Move ERC721 and ERC1155 receiver checks to dedicate libraries (#4845)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-01-30 12:58:35 -06:00
61117c4db8 Bound lookup in arrays with duplicate (#4842)
Co-authored-by: RenanSouza2 <renan.rodrigues.souza1@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-29 20:44:33 +01:00
7439664490 Remove note about event access in ERC1967Utils.sol (#4861) 2024-01-29 11:42:53 -06:00
b5a7f977d8 Improve ERC-1363 documentation (#4854)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Vittorio Minacori <vittoriominacori@gmail.com>
2024-01-24 16:27:04 +01:00
6b30d2d8de Fuzz Base64 and Base64URL (#4853)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-01-24 09:09:41 -06:00
e86bb45477 Add a Math.inv function that inverse a number in Z/nZ (#4839)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-24 09:57:24 +01:00
e5f02bc608 Add ERC1363 implementation (#4631)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-24 08:38:25 +00:00
a51f1e1354 List every contract in each API doc section (#4848)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-01-23 09:55:09 -06:00
a5c4cd8182 Add new EnumerableMap types (#4843)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-22 19:25:01 +00:00
e5c63635e3 Remove documented requirement in IERC1155's balanceOf (#4847) 2024-01-19 10:52:32 +01:00
dfae50fa5b Refactor abs without logical branching (#4497)
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-18 20:22:47 +00:00
72c642e13e Lower fuzz runs to 5000 (#4835) 2024-01-18 10:03:07 +01:00
b27cd83eba Remove hardhat-foundry and check harnesses compilation in CI (#4832)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-01-17 20:32:32 +01:00
ec7ee76494 Update actions/cache action to v4 (#4841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-17 13:24:46 -06:00
0b343abcb5 Enable more solhint rules (#4836) 2024-01-17 09:23:18 -06:00
06eb785fcf Remove obsolete ERC4626 mint NatSpec (#4837)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2024-01-17 09:20:28 -06:00
d7490e4f59 Fix gas report format (#4838) 2024-01-17 09:16:51 -06:00
d2ba1f6251 Remove redundant memory usage in Checkpoints (#4540)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-01-17 10:51:36 +01:00
692dbc560f Add Base64Url encoding (#4822)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-01-16 16:12:50 -06:00
281ab15886 Run gas-compare action on push to master (#4834) 2024-01-16 11:09:50 +01:00
2fb73e5004 Remove outdated release script (#4833) 2024-01-14 11:13:02 -06:00
efb8c1af6e Fix gas report generation (#4824)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-12 23:24:17 +00:00
e68720efb6 Refactor supports interface (#4817) 2024-01-12 16:45:49 -06:00
920225a1c7 Add missing return value names in IAccessManager (#4829)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-01-11 18:01:48 -06:00
a4b98bc79f Update actions/download-artifact digest to v3 (#4795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2024-01-11 11:33:39 -06:00
a80563c008 Migrate to Node 20 (#4756) 2024-01-11 16:13:21 +00:00
fa87080d10 Bump follow-redirects from 1.15.3 to 1.15.4 (#4823)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-10 22:01:30 -06:00
ef68ac3ed8 Add getRoleMembers method to return all accounts that have role (#4546)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2024-01-04 14:07:53 +00:00
b4ceb054de Fix documentation inaccuracies in Governor (#4815) 2024-01-02 17:18:22 -06:00
04cb014144 Make tests style more uniform (#4812) 2024-01-02 10:31:33 -06:00
a72c9561b9 Finalize test migration: remove legacy dependencies and test helpers (#4797) 2023-12-26 23:46:06 +01:00
abcf9dd8b7 Replace Defender Admin with Transaction Proposals (#4804)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-12-22 15:52:00 -06:00
015ef69287 Refactor time helper and remove custom error helper. (#4803)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-22 19:50:25 +00:00
be0572a8dc Migrate ERC1155 tests to ethers v6 (#4771)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-21 21:57:39 +00:00
e70a0118ef Remove changesets already included in CHANGELOG (#4805) 2023-12-21 16:08:59 +01:00
f213a10522 Remove Governor's guide ERC6372 disclaimer for Tally (#4801) 2023-12-19 21:56:43 +01:00
f627500649 Update SupportsInterface.behavior.js (#4674)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-19 15:14:25 +01:00
44965d7779 Migrate SafeERC20.test.js (#4798)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-19 10:00:16 +01:00
5bca2119ca Migrate ERC165 tests (#4794) 2023-12-18 19:28:16 -06:00
c3cd70811b Migrate governance tests to ethers.js (#4728)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-12-18 21:09:23 +01:00
d155600d55 Migrate utils/types/time tests to ethers.js (#4778)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-12-15 17:50:46 +01:00
88211e8fba Migrate ERC721 tests (#4793)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-14 10:07:55 +01:00
88512b23d2 Migrate ERC20 extensions tests to ethers v6 (#4773)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-12-13 22:31:56 +00:00
6ba452dea4 Merge release-v5.0 branch (#4787)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eric Lau <ericglau@outlook.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Zack Reneau-Wedeen <z.reneau.wedeen@gmail.com>
2023-12-08 15:47:12 +00:00
3af62716dd Make Multicall context-aware 2023-12-07 12:37:52 -06:00
cffb2f1ddc Migrate math tests to ethers.js v6 (#4769)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-12-04 13:00:00 -06:00
ef699fa6a2 Update Math try* operations return reference (#4775) 2023-12-01 14:46:46 +01:00
552cffde56 Add Governor note for state changes between proposal creation and execution (#4766)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-11-30 15:04:34 +01:00
ae69142379 Migrate proxy folder to ethersjs (#4746)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-29 21:51:08 +00:00
c35057978f Migrate ERC20 and ERC20Wrapper tests to ethersjs (#4743)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-11-29 13:57:16 -06:00
a32077bbac Update dependency @changesets/read to ^0.6.0 (#4764)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 00:03:42 +00:00
c411700572 Refactor EnumerableSet generation and tests (#4762) 2023-11-28 17:51:58 -06:00
74e396a967 Update dependency @changesets/changelog-github to ^0.5.0 (#4763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 17:49:38 -06:00
e3478edfe7 Update dependency @changesets/pre to v2 (#4765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 17:47:45 -06:00
e0ac73cd6e Refactor enumerableMap generate and tests (#4760) 2023-11-28 17:41:10 -06:00
769071d473 Add note in ERC20Wrapper about rebasing tokens (#4755)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-11-27 15:39:42 +00:00
0b1b5f89ef Create FUNDING.json (#4751) 2023-11-24 11:21:27 -06:00
78d5708340 Migrate utils to ethersjs v6 (#4736)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-24 01:32:30 +00:00
330c39b662 Implement revert tests for VestingWallet (#4733)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-11-23 20:45:45 +00:00
e5fb718d40 Optimized gas costs in ceilDiv (#4553) 2023-11-23 09:31:14 -06:00
0950532d9a Migrate utils-structs tests to ethersjs (#4748)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-23 05:38:20 +00:00
7bd2b2aaf6 Use ERC-XXX syntax (#4730)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-22 23:18:04 -06:00
bf75bccaea Migrate address to ethersjs (#4739)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-22 22:52:44 -06:00
6a56b3b08d Migrate EIP712 to ethersjs (#4750)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-22 22:40:12 -06:00
9702b67ce1 Migrate utils-cryptography to ethers (#4749)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-22 21:35:55 -06:00
e473bcf859 Migrate metatx tests to ethers.js (#4737)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-22 20:24:21 -06:00
6bc1173c8e Update dependency @nomicfoundation/hardhat-toolbox to v4 (#4742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 10:34:51 +03:00
4e17c2e958 Update SECURITY.md and remove support for 2.x version (#4683) 2023-11-14 21:40:26 +00:00
4e419d407c Bump axios from 1.5.1 to 1.6.1 (#4734)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-12 15:48:07 +00:00
7294d34c17 Rename VotesTimestamp to ERC20VotesTimestampMock (#4731) 2023-11-10 15:15:38 +00:00
7de6fd4a26 Close access-control.adoc code block (#4726) 2023-11-09 16:27:40 +00:00
cf6ff90b6d Migrate AccessManager tests to ethers (#4710)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-11-09 15:56:54 +00:00
cb1ef861e5 Add AccessManager guide (#4691)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Eric Lau <ericglau@outlook.com>
Co-authored-by: Zack Reneau-Wedeen <z.reneau.wedeen@gmail.com>
2023-11-09 15:09:05 +00:00
f1f427ddaf Migrate finance tests to ethers.js (#4723)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-11-08 18:14:06 +00:00
248be2fab0 Improve ERC4626 virtual offset notes (#4722) 2023-11-08 16:18:23 +00:00
74016c376a Update docs for Ownable2Step (#4721)
Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
2023-11-07 16:35:58 +00:00
94697be8a3 Fixed Misleading Typo in CHANGELOG.md related to false solidity version (#4697)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-10-26 12:31:45 -06:00
2ec2ed9695 Migrate AccessControl tests (#4694)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-10-25 20:52:09 -06:00
7c8b7a2728 Migrate MerkleProof tests among other testing utilities (#4689) 2023-10-23 12:24:46 -06:00
149e1b79fe Migrate Ownable tests (#4657)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-10-17 10:05:58 +02:00
aed22fbc22 Add view modifier to proxyAdmin in TransparentUpgradeableProxy (#4688)
Co-authored-by: Eric Lau <ericglau@outlook.com>
2023-10-17 10:03:04 +02:00
9c22fb5f33 Clarify is fine relying on the storage slot 2023-10-16 15:51:33 -06:00
16ee2e16da Update dependency undici to v5.26.2 [SECURITY] (#4687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-16 12:17:48 -06:00
6383299d71 AccessManager tests consolidation (#4655) 2023-10-12 11:32:30 -06:00
b48d658228 Update the "utilities" documentation page (#4678)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-10-12 19:08:15 +02:00
3eb5cfb22a Nonces FV (#4528)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-10-12 16:30:02 +02:00
7ef4333301 Add compile step in checks.yml (#4675) 2023-10-12 11:27:50 +02:00
faa83c693a Add note about SafeMath.sol remaining functions moved to Math.sol (#4676) 2023-10-12 11:24:31 +02:00
793d92a333 Document ERC1155 event differences (#4666) 2023-10-06 15:40:03 -03:00
3e6c86392c Merge release-v5.0 branch (#4665)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eric Lau <ericglau@outlook.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-10-05 15:30:30 -03:00
a754936a47 Remove v5.0 release candidate note and add audit (#4663)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-10-05 14:45:18 -03:00
e78628bfcf Document AccessManager functions and events in IAccessManager (#4660)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-10-05 12:55:11 -03:00
0f89a7e5f8 Update "Using with Upgrades" page for 5.0 (#4659) 2023-10-05 14:51:52 +00:00
e12511b53e Fix guides for 5.0 (#4654)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-10-04 22:37:11 -03:00
655bd58487 Improve GovernorTimelockAccess tests (#4642)
Co-authored-by: Francisco <fg@frang.io>
2023-10-04 21:29:25 -03:00
f92dce51ed Reset Hardhat Network before each test suite (#4652) 2023-10-04 20:00:02 -03:00
0560576c7a Improve AccessManaged and AuthorityUtils tests (#4632)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-10-04 22:15:41 +00:00
baf0e91279 Improve AccessManager tests (#4613)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-10-04 17:34:18 -03:00
aca4030e4a Formal verification of AccessManager (#4611)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-10-04 21:17:15 +02:00
39400b78ba Ensure constant getters show in docs (#4649) 2023-10-04 12:54:49 -03:00
2c6b859dd0 Fix coverage analysis (#4648) 2023-10-03 17:43:12 -03:00
5d43060cdc Fix release tagging (#4646) 2023-10-03 15:46:18 -03:00
b4a9c47e9b Fix typos 2023-10-02 17:43:51 -03:00
b849906ce4 Make AccessManager.execute/schedule more conservative when delay is 0 (#4644) 2023-10-02 16:43:12 -03:00
abba0d047a Update remappings.txt for upgradeable contracts and set up submodule (#4639)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-10-02 15:41:18 -03:00
5ed5a86d1d Update eth-gas-reporter (#4643) 2023-10-01 16:43:47 -03:00
ef3e7771a7 Fix upgradeable patch in release branches (#4637) 2023-09-28 19:43:33 -03:00
58463a9823 Enable partial transpilation for upgradeable package (#4628)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-09-28 18:31:49 -03:00
970a7184ad Add changesets for #4624 (#4635) 2023-09-28 18:29:50 -03:00
dee645e914 Fix warning format in the readme (#4634) 2023-09-28 16:58:08 -03:00
57865f8b20 Add named return parameters and _checkSelector function to AccessManager (#4624) 2023-09-28 16:52:42 -03:00
2472e51e80 Improve documentation about backwards compatibility (#4627)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-09-28 12:54:44 -03:00
33ceb2320c Fix typo in tests (#4625) 2023-09-27 10:12:37 +02:00
bd4169bb15 Update solidity-coverage (#4623) 2023-09-21 22:57:34 -03:00
ce7e6042a8 Add version to custom Solhint plugin 2023-09-21 22:25:08 -03:00
da04f40e98 Update lockfile (#4556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-21 22:04:06 -03:00
181d518609 Update readme for release candidate (#4618) 2023-09-20 16:19:48 -03:00
f0316a4cef Fix docs updates on prereleases 2023-09-19 17:24:03 -03:00
ae986db608 Enable docs generation for prereleases 2023-09-19 16:17:35 -03:00
31aa460467 Update docs-utils to support prereleases 2023-09-19 16:13:10 -03:00
f7db0bea31 Merge branch 'feat/access-manager' 2023-09-19 11:38:22 -03:00
64da2c10a4 Fix AccessManager._checkAuthorized in execute context (#4612)
Co-authored-by: Francisco <fg@frang.io>
2023-09-19 11:35:42 -03:00
68204769a1 Fix function documentation in Nonces (#4597)
Co-authored-by: Francisco <fg@frang.io>
2023-09-18 11:30:25 -03:00
652d0c5fb3 Fix minor mistake in GovernorTimelockAccess documentation (#4609) 2023-09-18 10:56:38 -03:00
2215d9fd5e Remove Time.Delay *At functions (#4606)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-15 12:23:28 -03:00
618304cc01 Update linters (major) (#4563)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-14 17:39:27 -03:00
af06fdcfd4 Fix various documentation errors (#4601) 2023-09-14 17:32:47 -03:00
d555464c53 AccessManager: Avoid resetting nonce when consuming a scheduled operation (#4603)
Co-authored-by: Francisco <fg@frang.io>
2023-09-14 17:26:14 -03:00
a714fe6dbd Wrap docstrings to 120 chars (#4600) 2023-09-14 15:28:24 -03:00
05205ab2e1 Remove deprecated 'ERC20FailedDecreaseAllowance' error (#4604)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-09-14 10:49:04 -06:00
224c23b38f Rename ProposalCore.eta to etaSeconds (#4599) 2023-09-14 09:54:43 +02:00
80b2d1df38 Improve GovernorTimelockAccess (#4591)
Co-authored-by: Francisco <fg@frang.io>
2023-09-13 20:25:35 -03:00
3bd9ed377e Better context on _spendAllowance NatSpec (#4568)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-09-13 16:22:05 -03:00
75eb7c2d49 Merge branch 'feat/access-manager' into audit/wip/2a-2b 2023-09-13 16:07:43 -03:00
e48f8fd0d2 Merge branch 'master' into feat/access-manager 2023-09-13 16:02:48 -03:00
6f1685c3eb Merge branch 'master' into audit/wip/2a-2b 2023-09-13 11:14:09 +02:00
60e3ffe6a3 Remove non-standard increaseAllowance and decreaseAllowance from ERC20 (#4585)
Co-authored-by: Francisco <fg@frang.io>
2023-09-12 11:59:48 -03:00
63851f8de5 Fix typographical errors & comments (#4595)
Co-authored-by: Francisco <fg@frang.io>
2023-09-11 18:44:28 -03:00
36bf1e46fa Migrate FV specs to CVL2 (#4527)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-09-11 17:15:51 -03:00
b6111faac8 Use namespaced storage for upgradeable contracts (#4534) 2023-09-11 16:32:10 -03:00
095c8e120c Remove SafeERC20.safePermit (#4582)
Co-authored-by: Francisco <fg@frang.io>
2023-09-11 12:07:25 -03:00
9e09e0653a Fix flaky test in AccessManager (#4593) 2023-09-11 12:07:06 -03:00
a07f28b00c Improve AccessManager docs (#4586) 2023-09-11 15:54:22 +02:00
bba33516b1 Remove unused return value and reuse helper function (#4588)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-08 18:24:23 -03:00
01659449d4 Make Solidity pragma consistent (#4589) 2023-09-08 18:24:06 -03:00
7ae7f3ef4b Remove unused import (#4590) 2023-09-08 18:05:26 -03:00
26c22169f0 Rename custom error AleadyInitialized → InvalidInitialization (#4592) 2023-09-08 18:05:00 -03:00
6f80048ce9 Improve natspec documentation and comments (#4581)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-07 22:10:28 -03:00
d54f4ac4b7 Rename AccessManager groups to roles (#4580) 2023-09-07 20:58:50 -03:00
a05a529049 Rename AccessManager.relay to execute (#4578)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-07 10:08:45 +02:00
25c416d01c Rename internal variables in EnumerableSet for improved readability (#4577)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-06 23:10:19 -03:00
5a77c9995f Make isConsumingScheduleOp return bytes4 to mitigate clashes (#4575)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-06 20:54:44 -03:00
e2a9353dea Remove unused named return variables (#4573)
Co-authored-by: Francisco <fg@frang.io>
2023-09-06 11:35:07 +02:00
87f7a2cd42 Refactor Time library to use valueBefore/valueAfter (#4555)
Co-authored-by: Francisco <fg@frang.io>
2023-09-05 23:19:21 -03:00
bb7ca7d151 Prevent setting address(0) as the initialAdmin in AccessManager (#4570)
Co-authored-by: Francisco <fg@frang.io>
2023-09-05 18:47:05 -03:00
5abbd04933 Improve Initializable readability using intermediate variables (#4576)
Co-authored-by: Francisco <fg@frang.io>
2023-09-05 18:46:14 -03:00
ff9d089dad Add a boolean to AccessManager.GrantGroup (#4569) 2023-09-05 11:50:56 -03:00
33cab7cd25 AccessManager: Remove classes (#4562) 2023-09-05 11:49:54 -03:00
9ef69c03d1 Update actions/checkout action to v4 (#4572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-04 21:38:01 +00:00
1523a4f071 Fix accuracy of docs for ERC20._burn (#4574)
Co-authored-by: Francisco <fg@frang.io>
2023-09-04 18:05:42 -03:00
e7ba2f7784 Move beneficiary zero address check to Ownable (#4531)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-09-04 20:17:16 +00:00
f154bc31d4 Fix some spelling issues in AccessManager.sol & Time.sol (#4571)
Co-authored-by: Francisco <fg@frang.io>
2023-09-04 13:54:28 -03:00
9d2adccf87 Add a minimum delay on all admin update operations (#4557)
Co-authored-by: Francisco <fg@frang.io>
2023-09-04 13:47:51 -03:00
630844ef50 Merge branch 'feat/access-manager' into audit/wip/2a-2b 2023-09-04 15:58:56 +02:00
e891ec587d Merge branch 'master' into feat/access-manager 2023-09-04 15:55:53 +02:00
9612083826 Refactor ERC721 _requireMinted and ownerOf (#4566) 2023-09-04 15:54:21 +02:00
a503ba1a0a Avoid overflow on empty multiproof (#4564) 2023-09-04 10:17:03 +02:00
c0545f741b Delete unused variable (#4565) 2023-09-04 10:16:23 +02:00
98b83dfbaa Move security directory contents to utils (#4551) 2023-09-04 10:11:30 +02:00
424149a682 Stop cleaning up token specific data on ERC-721 burn (#4561)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-02 01:59:00 -03:00
b7da617d8d Define ERC-4906 interfaceId in a private constant (#4560)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-09-02 01:31:59 -03:00
00c5da2034 Allow setting tokenURI for non-existent token (#4559)
Co-authored-by: Francisco <fg@frang.io>
2023-09-02 01:24:05 -03:00
10e00c8ef5 Missing view keyword IAccessManager interface (#4558) 2023-09-01 19:07:20 -03:00
8186c07a83 Follow _approve overrides in ERC721._update (#4552) 2023-08-31 11:23:40 -03:00
8a0b7bed82 Update ERC-7201 location for Initializable (#4554) 2023-08-31 11:02:05 +02:00
3266bca150 Revert memory pointer to storage pointer (#4550) 2023-08-30 19:58:51 +00:00
cd67894914 Use Trace208 in Votes to support ERC6372 clocks (#4539)
Co-authored-by: Francisco <fg@frang.io>
2023-08-30 17:25:17 +00:00
812404cee8 Use leading underscore solhint rule for private constants (#4542)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-29 18:25:35 -03:00
a5ed318634 Refactor access to Checkpoint struct without using memory (#4512) 2023-08-25 20:17:32 -03:00
b2e7bab920 caching result of reading storage variable to save gas (#4535) 2023-08-25 19:49:34 +02:00
98203a72a6 Fix blog link (#4532) 2023-08-25 14:14:49 -03:00
adbb8c9d27 Add Governor module connecting with AccessManager (#4523)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-08-16 02:33:49 -03:00
fab65cd08b Merge branch 'master' into feat/access-manager 2023-08-16 02:23:53 -03:00
9e3f4d60c5 Use the _update mechanism in ERC721 (#4377)
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-08-09 11:03:27 -06:00
8643fd45fd Update remappings and install instructions for Foundry on docs site (#4498)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-08-08 23:22:57 -03:00
cb0ffefe2f Use named arguments in mapping types (#4433)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-08-08 22:48:56 -03:00
b5a3e693e7 Improve AccessManager (#4520) 2023-08-08 03:22:59 -03:00
48b860124c Remove outdated warning from ERC2771Forwarder (#4519) 2023-08-07 22:29:48 -03:00
736091afc4 Refactor restriction mechanism in AccessManager to enable enforce executionDelay (#4518)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-07 20:21:46 -03:00
70578bbb44 Allow Initializable versions greater than 256 (#4460)
Co-authored-by: Francisco <fg@frang.io>
2023-08-07 18:59:19 -03:00
9bb8008c23 Access Manager (#4416)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-07 01:57:10 -03:00
1169bb1e51 Merge branch 'master' into feat/access-manager 2023-08-07 01:28:11 -03:00
54a235f895 Refactor Governor proposal struct for efficient access (#4495)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-08-04 19:12:41 -03:00
b81bec4552 Use Ownable in VestingWallet instead of an immutable beneficiary (#4508)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-04 18:57:53 -03:00
f715365ec4 Implement recommendations from 5.0 audit Phase 1B (#4502)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-04 17:23:38 -03:00
21716722ad Remove GovernorCompatibilyBravo and add simpler GovernorStorage (#4360)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-08-03 12:51:07 -03:00
d39df78f6c Use bytes.concat in MessageHashUtils (#4504) 2023-08-02 18:45:39 +00:00
5ae630684a Add a bool return to _grantRole and _revokeRole (#4241)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-08-01 13:58:47 +02:00
48cc8a92f5 Optimize muldiv (#4494)
Co-authored-by: Francisco <fg@frang.io>
2023-08-01 13:52:36 +02:00
fa680739e9 Bump word-wrap from 1.2.3 to 1.2.4 (#4471)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 18:48:47 -03:00
00cbf5a236 Update pragma to 0.8.20 (#4489)
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-07-31 17:25:45 -03:00
d6b63a48ba Fix issues in the ERC4646Fee documentation (#4487) 2023-07-29 12:30:47 -03:00
f631d8a5f0 Improve ERC4626 fees example (#4476)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-07-29 01:16:14 +00:00
aed5720a01 Avoid returndatacopy in ERC2771Forwarder by calling via assembly (#4458) 2023-07-28 21:58:30 -03:00
02ea01765a Add custom errors to docs (#4480) 2023-07-27 20:18:45 -03:00
9445f96223 Adjust ERC2771Context._msgData for msg.data.length < 20 (#4484) 2023-07-27 17:30:41 -03:00
7c02b5cab2 Refactor DoubleEndedQueue (#4150)
Co-authored-by: Francisco <fg@frang.io>
2023-07-27 15:37:31 -03:00
7222a31d54 Add internal functions inside modifiers (#4472)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-07-26 18:57:50 -03:00
28d9ac2bdb Make ERC2771Context return original sender address if msg.data.length <= 20 (#4481) 2023-07-25 21:48:23 +00:00
19293f3ecd Remove outdated comments in AccessControl.sol (#4475)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-07-25 02:00:30 +00:00
f347b410cf Update recommended Foundry remapping (#4468)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-07-18 17:08:38 +00:00
21bb89ef5b Fix typo in MessageHashUtils.sol (#4462) 2023-07-17 21:26:31 +02:00
121be5dd09 Make TransparentUpgradeableProxy deploy its ProxyAdmin and optimize proxy interfaces (#4382)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Eric Lau <ericglau@outlook.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-07-13 19:25:22 -03:00
9cf873ea14 Change access folder structure (#4359)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-07-13 18:54:22 -03:00
84db204a41 Rename rounding modes and complete with fourth (#4455)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-07-13 17:52:03 -03:00
a55af77c75 Natspec update for TimelockController (#4454) 2023-07-12 21:11:12 -06:00
4d4a509b1f Add GovernorTimelockControl address to TimelockController salt (#4432)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-07-12 20:30:19 -03:00
b6c5abbde5 Add GovernorTimelockControl address to TimelockController salt (#4432)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-07-12 19:36:10 -03:00
0abf18f305 Remove duplicated SLOAD in Arrays.findUpperBound (#4442)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-07-12 17:07:35 -03:00
921ac49ccb Fix typos in the tests (#4452) 2023-07-12 17:05:21 -03:00
8b72e20e32 Remove unnecessary explicit assignment override (#4443) 2023-07-11 16:35:56 -03:00
24ebff5ae9 Remove unused imports (#4436)
Co-authored-by: Francisco <fg@frang.io>
2023-07-11 14:51:40 -03:00
3d0edbecf1 Remove ERC1155Receiver in favor of ERC1155Holder (#4450) 2023-07-11 14:49:58 -03:00
cd981f6521 Add custom linting rules (#4132)
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-07-10 17:26:02 -03:00
2a4396c9dd Add suggested remappings in readme (#4440)
Co-authored-by: Francisco <fg@frang.io>
2023-07-09 18:42:23 -03:00
4bac6fa310 Improve custom error helper when there is no match (#4437) 2023-07-09 18:36:23 -03:00
e47b53bce4 Improve BeaconProxy documentation for storage slot (#4438) 2023-07-09 11:33:23 -04:00
5229b75785 Use immutable beacon address in BeaconProxy (#4435)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-07-09 00:24:12 +02:00
6d74b91388 Remove superfluous receive() function from Proxy.sol (#4434)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-07-07 22:23:28 -03:00
f5bf7233cb Add ERC2771Forwarder fuzz tests for avoiding loss of unused ETH (#4396)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-07-07 21:56:49 -03:00
0053ee040a Move ECDSA message hash methods to its own MessageHashUtils library (#4430)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-07-07 20:01:35 +00:00
996168f1f1 Remove slither hardcoded version (#4431) 2023-07-07 16:29:21 +02:00
7ccea54dc1 Add back IGovernor to docs (#4421) 2023-07-06 18:33:38 -03:00
6bf68a41d1 Remove "available since" comments (#4424)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-07-06 10:00:34 +02:00
3fe28e19af Update lockfile (#4409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-06 00:14:20 -03:00
3ff9b42ff5 Remove retyped and renamed storage layout annotations (#4423) 2023-07-05 18:38:27 -03:00
63bfab1a0c Enable ERC-1271 signature checks in Governor castVoteBySig (#4418)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-07-05 15:11:29 +02:00
90163661df Implement ERC165 tests realted to invalidID (#4414)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-07-04 15:40:41 -03:00
e3adf91e50 Add state getter in TimelockController using OperationState enum (#4358)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-07-04 15:23:44 -03:00
6e21422737 Add Governor signature nonces (#4378)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Sergei Tikhomirov <sergey.s.tikhomirov@gmail.com>
Co-authored-by: Renan Souza <renan.rodrigues.souza1@gmail.com>
2023-07-03 22:29:30 +02:00
bb64458928 Implement recommendations from 5.0 audit Phase 1A (#4398)
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-07-03 15:02:06 -03:00
06861dce54 Update docs for SafeERC20.forceApprove (#4231) 2023-07-01 01:36:10 -03:00
37270eb08a Add security considerations to ERC2771Forwarder (#4406) 2023-06-30 16:52:45 -03:00
621b867b1a Imrove BitMaps documentation (#4400)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-06-30 13:48:37 -03:00
04342118dc Fix visibility in ERC721._checkOnERC721Received documentation (#4386) 2023-06-30 13:08:46 -03:00
874c2d3c02 Use explicit imports (#4399)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-06-29 20:12:26 +00:00
d6a8b2ccd7 Fix details AccessControl-test (#4391) 2023-06-29 13:41:44 -03:00
023894deef Add ERC2771Forwarder as an enhanced successor to MinimalForwarder (#4346)
Co-authored-by: Francisco <fg@frang.io>
2023-06-29 13:00:35 -03:00
f29307cfe0 Add Foundry installation instructions with required warnings (#4389) 2023-06-26 11:36:46 -03:00
8cab922347 Rename ERC1155InsufficientApprovalForAll to ERC1155MissingApprovalForAll (#4381) 2023-06-26 14:20:01 +02:00
cb4bf950df Add unreleased disclaimer in readme 2023-06-24 00:23:25 -03:00
c44c220254 Update Ownable2Step docs (#4384)
Co-authored-by: Francisco <fg@frang.io>
2023-06-23 19:37:27 -03:00
da89c438f1 Pack Governor's ProposalCore into a single slot (#4268)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-06-23 13:05:22 -03:00
a7a94c7746 Update comment to reflect code logic in Ownable.sol (#4369) 2023-06-22 16:34:53 -06:00
1e0e4e20bb Do not emit Approval event when calling transferFrom (#4370)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-06-22 10:41:56 -06:00
6ddacdbde8 Cleanup timelockId on execution for gas refund (#4118)
Co-authored-by: Francisco <fg@frang.io>
2023-06-20 16:38:03 -03:00
dac2457a80 Improve customError testing (#4376) 2023-06-20 18:34:10 +02:00
b66c77a1fc Merge branch 'release-v4.9' into master (#4373) 2023-06-20 13:06:56 -03:00
9fa550c62f Fix attempt to delete nonexistent npm tag (#4374) 2023-06-20 13:06:39 -03:00
2271e2c58d Use clones for testing non ERC1967 proxies (#4371) 2023-06-20 10:01:30 +02:00
365aca6d60 Improve tests for ERC1155 and ERC721 error handling (#3781)
Co-authored-by: Francisco <fg@frang.io>
2023-06-20 03:20:02 +00:00
1d0dbcf9ab Make TransparentUpgradeableProxy admin immutable (#4354)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-06-19 20:57:30 -06:00
1f4e33fb72 Add toStringSigned to Strings.sol (#4330)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-06-19 20:56:00 -03:00
fc19a7947c Change release cycle prBackExists definition (#4365) 2023-06-19 19:33:21 -03:00
c95a445130 Detect MerkleProof multiproof invariant violation (#4367)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-06-19 15:55:35 -03:00
1a77a508f9 Move upgradeToAndCallUUPS to UUPSUpgradeable (#4356)
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-06-16 23:25:58 -03:00
002a7c8812 Remove automatic conflict resolution for merge from release branch (#4362) 2023-06-16 15:42:19 -03:00
cd48b3eab3 Add validation in Governor on ERC-721 or ERC-1155 received (#4314)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-06-15 21:43:17 -03:00
6724873895 Output contract name where storage inconsistency was found (#4357) 2023-06-15 18:54:35 -03:00
c014c8f148 Use ERC721Holder & ERC1155Holder in the TimelockController (#4284)
Co-authored-by: Francisco <fg@frang.io>
2023-06-15 18:27:36 -03:00
ff85c7b0eb Make ERC1967Upgrades a library instead of an abstract contract (#4325) 2023-06-15 22:01:04 +02:00
05ef6924ac Optimize array access in ERC1155 (#4300)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-06-15 02:39:34 +00:00
2477534260 Change behavior of ceilDiv(0, 0) and improve test coverage (#4348) 2023-06-14 17:21:42 -03:00
ac5480e7ca Merge release-v4.9 branch (#4352) 2023-06-14 20:11:37 +00:00
ef103f37e4 Replace some uses of abi.encodePacked with more explicit alternatives (#4296)
Co-authored-by: Francisco <fg@frang.io>
2023-06-14 21:11:12 +02:00
5cc1ea0a39 Add GUIDELINES.md for marking abstract contracts (#4010)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-06-14 19:01:33 +00:00
7cc2cbfeb5 Cleanup the structure of GovernorTimelockControl.test.js (#4302) 2023-06-14 16:00:38 +02:00
604025400f Add EIP-712 name and version getters (#4303)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-06-13 23:54:09 -03:00
d6c7cee321 Update index.adoc (#4336)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-06-13 17:32:24 -03:00
fe08f58c69 Update README.md (#4335) 2023-06-13 16:50:16 -03:00
b425a72240 Replace revert strings with custom errors (#4261)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-06-12 23:41:52 +00:00
08fd777f6d Rename "ecrecover opcode" to "ecrecover precompile" in ECDSA (#4339) 2023-06-12 11:00:35 +02:00
e73f90fa9d Fix IERC1155.safeBatchTransferFrom documentation (#4340) 2023-06-11 16:38:31 -03:00
cc04263170 Highlight Reentrancy Risk in IERC1155 SafeTransferFrom Function (#4283)
Co-authored-by: Francisco <fg@frang.io>
2023-06-09 13:00:16 -03:00
1d5bcd04e7 ECDSA: Use unchecked arithmetic for the tryRecover function (#4301)
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
2023-06-07 19:10:43 -06:00
d9474327a4 Merge pull request from GHSA-5h3x-9wvq-w4m2
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-06-06 21:32:14 -03:00
df2778f38e Remove override interface implementations (#4315)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-06-06 18:13:08 -06:00
4fd2f8be33 Replace abi.encodeWithSelector & abi.encodeWithSignature with abi.encodeCall (#4293)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-06-06 17:32:55 -03:00
85696d80ad Remove further hardcoded function resolution (#4309) 2023-06-06 11:42:50 -06:00
6c14de4f0c ECDSA: Use hexadecimal literals (#4317) 2023-06-06 10:00:01 -06:00
253bfa68c2 Optimize Strings.equal (#4262)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-06-05 18:37:12 -06:00
ffceb3cd98 Remove hardcoded function resolution (#4299) 2023-06-02 14:20:58 -03:00
eecd5e15c7 Make CHANGELOG more compact for improved readability (#4306) 2023-06-02 15:42:02 +00:00
2d1da295e6 Move some changeset to the "Removals" section of CHANGELOG (#4290)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-06-02 12:14:41 -03:00
3902a410f1 Remove DOMAIN_SEPARATOR from Votes and update docs examples (#4297)
Co-authored-by: Qiwei Yang <yangqiwei97@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-06-02 12:02:57 -03:00
5cef83d2c7 Optimize array allocation in ERC1155 (#4196)
Co-authored-by: Francisco <fg@frang.io>
2023-06-02 11:37:59 -03:00
30256fa838 Update lockfile (#4294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-01 20:15:51 -03:00
2ee1da12c4 Remove utils/Counters.sol (#4289)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-05-31 11:40:28 -03:00
4c713f8cea Merge branch 'master' into next-v5.0 2023-05-30 17:02:47 -03:00
7bb5592ad5 Bump minimum pragma version to 0.8.19 (#4288) 2023-05-29 21:37:37 +02:00
15c5c71795 Remove TokenTimelock, PaymentSplitter, ERC20Snapshot, ERC20VotesComp, GovernorVotesComp (#4276) 2023-05-26 23:30:00 +01:00
4448c13c3c Move the Checkpoints library to utils/structs (#4275) 2023-05-26 16:19:27 -03:00
5420879d9b Ability to set starting token id for ERC721Consecutive (#4097)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: ernestognw <ernestognw@gmail.com>
2023-05-26 10:07:16 -06:00
25edd3cd62 Use SafeERC20.forceApprove in safeIncreaseAllowance and safeDecreaseAllowance (#4260)
Co-authored-by: Francisco <fg@frang.io>
2023-05-25 16:27:48 -03:00
238d17cab9 Merge master in next-v5.0 (#4280) 2023-05-25 17:01:25 +01:00
5955d8e85b Merge remote-tracking branch 'upstream/master' into next-v5.0 2023-05-25 10:52:46 +02:00
09329f8a18 Merge release-v4.9 branch (#4274)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-05-24 10:37:00 -03:00
cbc6145f5f Removes zero address check from balanceOf in ERC1155 (#4263)
Co-authored-by: bpachai <bpachai@v2soft.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-05-24 08:39:06 +00:00
13d5e0466a Make Ownable's initial owner explicit (#4267)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-05-23 18:26:43 -03:00
7e814a3074 Fix release merge script (#4273)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-05-23 18:21:17 -03:00
a1d57bac50 Improve FV specifications for AccessControlDefaultAdminRules (#4223)
Co-authored-by: ernestognw <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-05-23 12:54:34 -06:00
11d65442b3 Merge branch 'master' into next-v5.0 2023-05-23 14:11:36 +02:00
dfef6a68ee Fix error when running hardhat test with parameters (#4265) 2023-05-19 21:49:23 +00:00
0f10efe232 Remove code in preparation for v5.0 (#4258)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-05-19 22:48:05 +02:00
96b95592c3 Fix grammar in docs (#4250) 2023-05-16 23:23:52 -03:00
8de6eba8a3 Merge branch 'master' into next-v5.0 2023-05-16 00:07:07 -03:00
1642b6639b Reduce frequency of version comment updates (#4244) 2023-05-12 14:22:26 -03:00
3ec4307c8a Fix bug allowing anyone to cancel an admin renounce (#4238)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-05-11 17:17:06 +00:00
f355bd3a2a Prevent attempt to publish to npm (#4239) 2023-05-11 13:41:02 -03:00
3e1b25a5cf Clean up pending admin schedule on renounce in DefaultAdminRules (#4230) 2023-05-10 20:08:05 +00:00
f7b236dca8 Configure Codespell to check hidden files (#4236) 2023-05-10 21:58:56 +02:00
e5dbc7435e Add final PDF report for v4.9 audit (#4235) 2023-05-10 15:59:11 -03:00
9a2e4cb3a7 Update codespell-project/actions-codespell action to v2 (#4229)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-09 20:59:22 -03:00
d095542fa4 Disable code size warnings on exposed contracts 2023-05-09 17:36:33 -03:00
dff520afae Specify changeset PRs manually 2023-05-09 16:53:55 -03:00
df3f1fc4db Specify changeset commit manually 2023-05-09 16:37:25 -03:00
0ee84342b7 Add PDF report for v4.9 audit (#4227) 2023-05-09 16:09:52 -03:00
51294b7480 Make transpilation setup local to this repo (#4041)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-05-09 15:52:23 -03:00
34d926dd7e Implement extra suggestions from audit review of 4.9 (#4224) 2023-05-09 13:19:35 -03:00
832c352c7d Update lockfile (#4203)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-09 00:04:41 -03:00
908f78d07b Enable more Slither detectors (#4219) 2023-05-08 18:00:49 -03:00
692d8c85a4 Fix lookup documentation in ERC20Votes and Checkpoints (#4218)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-05-05 17:25:23 -03:00
72ed4ca67a Ensure AccessControlDefaultAdminRules's initialDefaultAdmin is non-zero (#4220)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-05-05 16:31:23 -03:00
dcba9f995f Add AccessControlDefaultAdminRules FV (#4180)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
2023-05-05 16:27:43 -03:00
8b2ed0f570 Fix early reporting of FV prover's output (#4213)
Co-authored-by: Francisco <fg@frang.io>
2023-05-04 13:54:22 -03:00
9e8b74a0e2 Add more test cases for EIP712 (#4212) 2023-05-04 10:33:57 -03:00
a7ee03565b Move certora helpers to a dedicated folder (#4211) 2023-05-03 14:34:14 +00:00
10022da83d Disable automatic formal verification workflow on push (#4208) 2023-05-03 16:13:42 +02:00
538655c3c0 Add reentrancy test cases for ERC4626 (#4197)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-05-03 09:35:48 +02:00
0a2a33be30 Add formal verification specs for EnumerableSet & EnumerableMap (#4167)
Co-authored-by: Francisco <fg@frang.io>
2023-05-03 02:54:23 +00:00
ab2604ac5b Add reentrancy test cases for TimelockController (#4200)
Co-authored-by: Francisco <fg@frang.io>
2023-05-02 11:36:56 +02:00
6ff415de6b Downgrade Node for Slither (#4202) 2023-04-28 17:15:15 -03:00
d23f818a59 Fix AccessControlDefaultAdminRules admin consistency (#4177)
Co-authored-by: Francisco <fg@frang.io>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-04-28 15:09:58 +02:00
44d6053b43 Only run FV on new or updated specs (#4195) 2023-04-28 14:01:41 +02:00
f959d7e4e6 Fix release note in IERC1967 (#4183) 2023-04-25 12:57:50 -03:00
8f14d52b73 Fix Checkpoints fuzz overflow (#4184)
Co-authored-by: Francisco <fg@frang.io>
2023-04-25 12:57:16 -03:00
1a079d258b Improve Address tests (#4191) 2023-04-25 08:31:01 -03:00
6aac66d065 Merge release-v4.8 (#4188)
Signed-off-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Benjamin <benjaminxh+github@gmail.com>
Co-authored-by: Owen <omurovec@yahoo.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: JulissaDantes <julissadcj@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
Co-authored-by: Yamen Merhi <yamennmerhi@gmail.com>
Co-authored-by: Pascal Marco Caversaccio <pcaversaccio@users.noreply.github.com>
Co-authored-by: alpharush <0xalpharush@protonmail.com>
Co-authored-by: Paul Razvan Berg <paul.razvan.berg@gmail.com>
2023-04-24 09:18:27 -03:00
a522187b50 Implement suggestions from audit of AccessManager (#4178)
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-04-22 15:40:49 -03:00
7f5e91062e Merge branch 'master' into feat/access-manager 2023-03-26 14:33:49 -03:00
fa112be682 Add AccessManager contracts (#4121)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Ernesto García <ernestognw@gmail.com>
2023-03-24 19:37:08 -03:00
2d05db171a Add note about supply limit in ERC1155Supply 2023-01-31 17:27:05 -03:00
e919d96ff2 Add ERC1155.totalSupply that returns overall supply count (#3962) 2023-01-25 21:39:02 +01:00
54c31ad98b Merge master into next-v5.0 (#3980) 2023-01-24 19:48:49 -03:00
5ad74c6d10 Merge branch 'master' into next-v5.0 2023-01-24 19:37:11 -03:00
c5d040beb9 Remove Address.isContract (#3945)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco Giordano <fg@frang.io>
2023-01-24 17:59:07 -03:00
30c3c6c16e Clean up after merging master into next-v5.0 (#3956)
Co-authored-by: Francisco <fg@frang.io>
2023-01-14 21:19:47 -03:00
147dc89054 Merge branch 'master' into next-v5.0 2023-01-14 18:51:03 -03:00
7c6e289782 Prepare tests for hardhat-exposed transition (#3930)
Co-authored-by: Francisco <frangio.1@gmail.com>
2023-01-12 09:51:29 +01:00
d210847e28 Fix ERC20._update (#3921)
Co-authored-by: Francisco <frangio.1@gmail.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
2023-01-10 17:21:35 -03:00
a290e13099 Add warning in next-v5.0 branch readme (#3941) 2023-01-10 11:15:22 +01:00
97bba5adaa Remove ERC1155 hooks (#3876)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <frangio.1@gmail.com>
2023-01-10 11:13:05 +01:00
fbbaf3365b Merge branch 'master' into next-v5.0 2022-12-26 23:31:13 -03:00
4147005b0c Update Prettier Solidity (#3898) 2022-12-26 23:28:51 -03:00
81dbe643a0 Remove ERC165Storage (#3880)
Co-authored-by: Francisco <frangio.1@gmail.com>
2022-12-19 18:18:33 -03:00
9cbe8b340c Merge branch 'master' into next-v5.0 2022-12-19 18:17:33 -03:00
3c80a42866 Remove hooks from ERC20 (#3838)
Co-authored-by: Francisco <frangio.1@gmail.com>
2022-12-14 16:43:45 -03:00
e2d2ebc8fc Make ERC20Votes independent from ERC20Permit (#3816)
Co-authored-by: Francisco <frangio.1@gmail.com>
2022-11-29 11:25:52 -03:00
bc8f442d00 Remove admin and implementation getters from TransparentUpgradeableProxy (#3820)
Co-authored-by: Francisco <frangio.1@gmail.com>
2022-11-25 15:27:58 -03:00
4a9db80cb9 Remove presets (#3637)
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
Co-authored-by: JulissaDantes <julissadcj@gmail.com>
2022-11-25 12:46:47 -03:00
887985413c Use default admin role in TimelockController (#3799)
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <frangio.1@gmail.com>
2022-11-09 13:18:27 -03:00
b18cf4ba42 Merge branch 'next-v5.0' of https://github.com/OpenZeppelin/openzeppelin-contracts into next-v5.0 2022-11-09 09:27:54 -04:00
39a752e398 Generate gas report for next-v* branches 2022-11-09 09:26:06 -04:00
6ff283bebc Merge branch 'master' into next-v5.0 2022-11-04 11:36:45 -04:00
1cf4db9615 Generate gas report for next-v* branches 2022-08-19 16:30:19 +02:00
859 changed files with 63819 additions and 48380 deletions

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`Initializable`: optimize `_disableInitializers` by using `!=` instead of `<`. ([#3787](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3787))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`Math`: Add `add512`, `mul512` and `mulShr`.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`GovernorSequentialProposalId`: Adds a `Governor` extension that sequentially numbers proposal ids instead of using the hash.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`SafeERC20`: Add `trySafeTransfer` and `trySafeTransferFrom` that do not revert and return false if the transfer is not successful.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ER6909TokenSupply`: Add an extension of ERC6909 which tracks total supply for each token id.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ReentrancyGuard`: Add a `_reentrancyGuardEntered` function to expose the guard status. ([#3714](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3714))

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`Ownable2Step`: make `acceptOwnership` public virtual to enable usecases that require overriding it. ([#3960](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3960))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`Address`: bubble up revert data on `sendValue` failed call

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ERC6909ContentURI`: Add an extension of ERC6909 which adds content URI functionality.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC721Wrapper`: add a new extension of the `ERC721` token which wraps an underlying token. Deposit and withdraw guarantee that the ownership of each token is backed by a corresponding underlying token with the same identifier.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`Math`: Add saturating arithmetic operations `saturatingAdd`, `saturatingSub` and `saturatingMul`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`EnumerableMap`: add a `keys()` function that returns an array containing all the keys. ([#3920](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3920))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ERC2771Forwarder`: Expose the `_isTrustedByTarget` internal function to check whether a target trusts the forwarder.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`Initializable`: Add `_initializableStorageSlot` function that returns a pointer to the storage struct. The function allows customizing with a custom storage slot with an `override`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`UUPSUpgradeable.sol`: Change visibility to the functions `upgradeTo ` and `upgradeToAndCall ` from `external` to `public`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`TimelockController`: Add the `CallSalt` event to emit on operation schedule.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`Governor`: add a public `cancel(uint256)` function.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`Governor`: Enable timestamp operation for blockchains without a stable block time. This is achieved by connecting a Governor's internal clock to match a voting token's EIP-6372 interface.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
Reformatted codebase with latest version of Prettier Solidity. ([#3898](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3898))

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`Strings`: add `equal` method. ([#3774](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3774))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`EnumerableMap`: Add `clear` function to EnumerableMaps which deletes all entries in the map.

View File

@ -0,0 +1,5 @@
---
"openzeppelin-solidity": minor
---
`Calldata`: Library with `emptyBytes` and `emptyString` functions to generate empty `bytes` and `string` calldata types.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`TimelockController`: Receive function is now virtual.

View File

@ -0,0 +1,5 @@
---
"openzeppelin-solidity": minor
---
`Pausable`: Stop explicitly setting `paused` to `false` during construction.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`IERC5313`: Add an interface for EIP-5313 that is now final.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`Math`: optimize `log256` rounding check. ([#3745](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3745))

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`ERC20Votes`: optimize by using unchecked arithmetic. ([#3748](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3748))

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`Multicall`: annotate `multicall` function as upgrade safe to not raise a flag for its delegatecall. ([#3961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3961))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`IERC6909`: Add the interface for ERC-6909.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`IERC4906`: Add an interface for ERC-4906 that is now Final.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`EnumerableSet`: Add `Bytes32x2Set` that handles (ordered) pairs of bytes32.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`StorageSlot`: Add support for `string` and `bytes`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`ERC20Pausable`, `ERC721Pausable`, `ERC1155Pausable`: Add note regarding missing public pausing functionality

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`Votes`, `ERC20Votes`, `ERC721Votes`: support timestamp checkpointing using EIP-6372.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC4626`: Add mitigation to the inflation attack through virtual shares and assets.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`Strings`: add `toString` method for signed integers. ([#3773](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3773))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`GovernorProposalGuardian`: Add a governance extension that defines a proposal guardian who can cancel proposals at any stage in their lifecycle.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC20Wrapper`: Make the `underlying` variable private and add a public accessor.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ERC6909Metadata`: Add an extension of ERC6909 which adds metadata functionality.

View File

@ -0,0 +1,5 @@
---
"openzeppelin-solidity": patch
---
`MessageHashUtils`: Add `toDataWithIntendedValidatorHash(address, bytes32)`.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': patch
---
`ERC7579Utils`: Add ABI decoding checks on calldata bounds within `decodeBatch`

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`EIP712`: add EIP-5267 support for better domain discovery.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`AccessControlDefaultAdminRules`: Add an extension of `AccessControl` with additional security rules for the `DEFAULT_ADMIN_ROLE`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`GovernorCompatibilityBravo`: Fix encoding of proposal data when signatures are missing.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`EnumerableSet`: Add `clear` function to EnumerableSets which deletes all values in the set.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`SignatureChecker`: Add `isValidERC1271SignatureNow` for checking a signature directly against a smart contract using ERC-1271.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`ECDSA`: Add a function `toDataWithIntendedValidatorHash` that encodes data with version 0x00 following EIP-191.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`SafeERC20`: Add a `forceApprove` function to improve compatibility with tokens behaving like USDT.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC1967Upgrade`: removed contract-wide `oz-upgrades-unsafe-allow delegatecall` annotation, replaced by granular annotation in `UUPSUpgradeable`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`MerkleProof`: optimize by using unchecked arithmetic. ([#3745](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3745))

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`IGovernor`: Add the `getProposalId` function to the governor interface.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ERC6909`: Add a standard implementation of ERC6909.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`Hashes`: Expose `efficientKeccak256` for hashing non-commutative pairs of bytes32 without allocating extra memory.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC20Wrapper`: self wrapping and deposit by the wrapper itself are now explicitelly forbiden.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ECDSA`: optimize bytes32 computation by using assembly instead of `abi.encodePacked`.

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': patch
---
`ERC4626`: Use the `asset` getter in `totalAssets`, `_deposit` and `_withdraw`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': patch
---
`TransparentUpgradeableProxy`: Fix transparency in case of selector clash with non-decodable calldata or payable mutability.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ERC721URIStorage`: Emit ERC-4906 `MetadataUpdate` in `_setTokenURI`.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`ShortStrings`: Added a library for handling short strings in a gas efficient way, with fallback to storage for longer strings.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`SignatureChecker`: Allow return data length greater than 32 from EIP-1271 signers.

View File

@ -1,5 +0,0 @@
---
'openzeppelin-solidity': minor
---
`UUPSUpgradeable`: added granular `oz-upgrades-unsafe-allow-reachable` annotation to improve upgrade safety checks on latest version of the Upgrades Plugins (starting with `@openzeppelin/upgrades-core@1.21.0`).

View File

@ -10,3 +10,7 @@ coverage:
project:
default:
threshold: 1%
ignore:
- "test"
- "contracts/mocks"
- "contracts/vendor"

View File

@ -1,20 +0,0 @@
{
"root": true,
"extends" : [
"eslint:recommended",
"prettier",
],
"env": {
"es2022": true,
"browser": true,
"node": true,
"mocha": true,
},
"globals" : {
"artifacts": "readonly",
"contract": "readonly",
"web3": "readonly",
"extendEnvironment": "readonly",
"expect": "readonly",
}
}

View File

@ -10,7 +10,7 @@ about: Report a bug in OpenZeppelin Contracts
**💻 Environment**
<!-- Tell us what version of OpenZeppelin Contracts you're using, and how you're using it: Truffle, Remix, etc. -->
<!-- Tell us what version of OpenZeppelin Contracts you're using, and how you're using it: Hardhat, Remix, etc. -->
**📝 Details**

View File

@ -1,4 +1,5 @@
name: Compare gas costs
description: Compare gas costs between branches
inputs:
token:
description: github token
@ -43,7 +44,8 @@ runs:
shell: bash
- name: Save report
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: gasreport
overwrite: true
path: ${{ inputs.out_report }}

View File

@ -1,12 +1,13 @@
name: Setup
description: Common environment setup
runs:
using: composite
steps:
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: 14.x
- uses: actions/cache@v3
node-version: 20.x
- uses: actions/cache@v4
id: cache
with:
path: '**/node_modules'
@ -15,5 +16,7 @@ runs:
run: npm ci
shell: bash
if: steps.cache.outputs.cache-hit != 'true'
env:
SKIP_COMPILE: true
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: stable

View File

@ -1,4 +1,5 @@
name: Compare storage layouts
description: Compare storage layouts between branches
inputs:
token:
description: github token
@ -49,7 +50,8 @@ runs:
shell: bash
- name: Save artifacts
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: layout
overwrite: true
path: ${{ inputs.out_layout }}

View File

@ -9,7 +9,7 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Add problem matchers
run: |
# https://github.com/rhysd/actionlint/blob/3a2f2c7/docs/usage.md#problem-matchers

View File

@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
if: ${{ !contains(github.event.pull_request.labels.*.name, 'ignore-changeset') }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Include history so Changesets finds merge-base
- name: Set up environment

View File

@ -4,6 +4,7 @@ on:
push:
branches:
- master
- next-v*
- release-v*
pull_request: {}
workflow_dispatch: {}
@ -12,12 +13,14 @@ concurrency:
group: checks-${{ github.ref }}
cancel-in-progress: true
env:
NODE_OPTIONS: --max_old_space_size=8192
jobs:
lint:
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: npm run lint
@ -26,75 +29,104 @@ jobs:
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
NODE_OPTIONS: --max_old_space_size=4096
# Needed for "eth-gas-reporter" to produce a "gasReporterOutput.json" as documented in
# https://github.com/cgewecke/eth-gas-reporter/blob/v0.2.27/docs/gasReporterOutput.md
CI: true
GAS: true
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Run tests and generate gas report
run: npm run test
- name: Check linearisation of the inheritance graph
run: npm run test:inheritance
- name: Check pragma consistency between files
run: npm run test:pragma
- name: Check proceduraly generated contracts are up-to-date
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
run: npm run test:generation
- name: Compare gas costs
uses: ./.github/actions/gas-compare
with:
token: ${{ github.token }}
tests-upgradeable:
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Include history so patch conflicts are resolved automatically
- name: Set up environment
uses: ./.github/actions/setup
- name: Copy non-upgradeable contracts as dependency
run: |
mkdir -p lib/openzeppelin-contracts
cp -rnT contracts lib/openzeppelin-contracts/contracts
- name: Transpile to upgradeable
run: bash scripts/upgradeable/transpile.sh
- name: Run tests
run: npm run test
- name: Check linearisation of the inheritance graph
run: npm run test:inheritance
- name: Check pragma consistency between files
run: npm run test:pragma
- name: Check storage layout
uses: ./.github/actions/storage-layout
continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'breaking change') }}
with:
token: ${{ github.token }}
foundry-tests:
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
tests-foundry:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Set up environment
uses: ./.github/actions/setup
- name: Run tests
run: forge test -vv
coverage:
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: npm run coverage
- name: Run coverage
run: npm run coverage
- uses: codecov/codecov-action@v5
env:
NODE_OPTIONS: --max_old_space_size=4096
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
harnesses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Compile harnesses
run: |
make -C certora apply
npm run compile:harnesses
slither:
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: rm foundry.toml
- uses: crytic/slither-action@v0.3.0
with:
node-version: 18
- uses: crytic/slither-action@v0.4.0
codespell:
if: github.repository != 'OpenZeppelin/openzeppelin-contracts-upgradeable'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Run CodeSpell
uses: codespell-project/actions-codespell@v1.0
uses: codespell-project/actions-codespell@v2.1
with:
check_hidden: true
check_filenames: true
skip: package-lock.json,*.pdf
skip: package-lock.json,*.pdf,vendor

View File

@ -11,7 +11,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: bash scripts/git-user-config.sh

View File

@ -1,10 +1,6 @@
name: formal verification
on:
push:
branches:
- master
- release-v*
pull_request:
types:
- opened
@ -14,9 +10,9 @@ on:
workflow_dispatch: {}
env:
PIP_VERSION: '3.10'
PIP_VERSION: '3.11'
JAVA_VERSION: '11'
SOLC_VERSION: '0.8.19'
SOLC_VERSION: '0.8.20'
concurrency: ${{ github.workflow }}-${{ github.ref }}
@ -24,7 +20,7 @@ jobs:
apply-diff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Apply patches
run: make -C certora apply
@ -32,18 +28,31 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'formal-verification')
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up environment
uses: ./.github/actions/setup
- name: identify specs that need to be run
id: arguments
run: |
if [[ ${{ github.event_name }} = 'pull_request' ]];
then
RESULT=$(git diff ${{ github.event.pull_request.head.sha }}..${{ github.event.pull_request.base.sha }} --name-only certora/specs/*.spec | while IFS= read -r file; do [[ -f $file ]] && basename "${file%.spec}"; done | tr "\n" " ")
else
RESULT='--all'
fi
echo "result=$RESULT" >> "$GITHUB_OUTPUT"
- name: Install python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ env.PIP_VERSION }}
cache: 'pip'
cache-dependency-path: 'fv-requirements.txt'
- name: Install python packages
run: pip install -r requirements.txt
run: pip install -r fv-requirements.txt
- name: Install java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JAVA_VERSION }}
@ -55,6 +64,23 @@ jobs:
- name: Verify specification
run: |
make -C certora apply
node certora/run.js >> "$GITHUB_STEP_SUMMARY"
node certora/run.js ${{ steps.arguments.outputs.result }} >> "$GITHUB_STEP_SUMMARY"
env:
CERTORAKEY: ${{ secrets.CERTORAKEY }}
halmos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- name: Install python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PIP_VERSION }}
cache: 'pip'
cache-dependency-path: 'fv-requirements.txt'
- name: Install python packages
run: pip install -r fv-requirements.txt
- name: Run Halmos
run: halmos --match-test '^symbolic|^testSymbolic' -vv

View File

@ -27,12 +27,12 @@ jobs:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- id: state
name: Get state
uses: actions/github-script@v6
uses: actions/github-script@v7
env:
TRIGGERING_ACTOR: ${{ github.triggering_actor }}
with:
@ -58,7 +58,7 @@ jobs:
if: needs.state.outputs.start == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: bash scripts/git-user-config.sh
@ -66,7 +66,7 @@ jobs:
name: Create branch with release candidate
run: bash scripts/release/workflow/start.sh
- name: Re-run workflow
uses: actions/github-script@v6
uses: actions/github-script@v7
env:
REF: ${{ steps.start.outputs.branch }}
with:
@ -81,7 +81,7 @@ jobs:
if: needs.state.outputs.promote == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- run: bash scripts/git-user-config.sh
@ -89,7 +89,7 @@ jobs:
if: needs.state.outputs.is_prerelease == 'true'
run: bash scripts/release/workflow/exit-prerelease.sh
- name: Re-run workflow
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: await require('./scripts/release/workflow/rerun.js')({ github, context })
@ -102,13 +102,13 @@ jobs:
if: needs.state.outputs.changesets == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0 # To get all tags
- name: Set up environment
uses: ./.github/actions/setup
- name: Set release title
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
result-encoding: string
script: await require('./scripts/release/workflow/set-changesets-pr-title.js')({ core })
@ -134,7 +134,7 @@ jobs:
if: needs.state.outputs.publish == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up environment
uses: ./.github/actions/setup
- id: pack
@ -143,22 +143,18 @@ jobs:
env:
PRERELEASE: ${{ needs.state.outputs.is_prerelease }}
- name: Upload tarball artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ github.ref_name }}
path: ${{ steps.pack.outputs.tarball }}
- name: Tag
run: npx changeset tag
- name: Publish
run: bash scripts/release/workflow/publish.sh
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
TARBALL: ${{ steps.pack.outputs.tarball }}
TAG: ${{ steps.pack.outputs.tag }}
- name: Push tags
run: git push --tags
- name: Create Github Release
uses: actions/github-script@v6
uses: actions/github-script@v7
env:
PRERELEASE: ${{ needs.state.outputs.is_prerelease }}
with:
@ -171,12 +167,10 @@ jobs:
name: Tarball Integrity Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Download tarball artifact
id: artifact
# Replace with actions/upload-artifact@v3 when
# https://github.com/actions/download-artifact/pull/194 gets released
uses: actions/download-artifact@e9ef242655d12993efdcda9058dee2db83a2cb9b
uses: actions/download-artifact@v4
with:
name: ${{ github.ref_name }}
- name: Check integrity
@ -192,23 +186,27 @@ jobs:
pull-requests: write
if: needs.state.outputs.merge == 'true'
runs-on: ubuntu-latest
env:
MERGE_BRANCH: merge/${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0 # All branches
- name: Set up environment
uses: ./.github/actions/setup
- run: bash scripts/git-user-config.sh
- name: Create branch to merge
run: bash scripts/release/workflow/prepare-release-merge.sh
run: |
git checkout -B "$MERGE_BRANCH" "$GITHUB_REF_NAME"
git push -f origin "$MERGE_BRANCH"
- name: Create PR back to master
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: |
await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
head: 'merge/${{ github.ref_name }}',
head: process.env.MERGE_BRANCH,
base: 'master',
title: '${{ format('Merge {0} branch', github.ref_name) }}'
});

View File

@ -1,4 +1,4 @@
name: Upgradeable Trigger
name: transpile upgradeable
on:
push:
@ -7,17 +7,28 @@ on:
- release-v*
jobs:
trigger:
transpile:
environment: push-upgradeable
runs-on: ubuntu-latest
steps:
- id: app
uses: getsentry/action-github-app-token@v2
- uses: actions/checkout@v4
with:
app_id: ${{ secrets.UPGRADEABLE_APP_ID }}
private_key: ${{ secrets.UPGRADEABLE_APP_PK }}
- run: |
curl -X POST \
https://api.github.com/repos/OpenZeppelin/openzeppelin-contracts-upgradeable/dispatches \
-H 'Accept: application/vnd.github.v3+json' \
-H 'Authorization: token ${{ steps.app.outputs.token }}' \
-d '{ "event_type": "Update", "client_payload": { "ref": "${{ github.ref }}" } }'
repository: OpenZeppelin/openzeppelin-contracts-upgradeable
fetch-depth: 0
token: ${{ secrets.GH_TOKEN_UPGRADEABLE }}
- name: Fetch current non-upgradeable branch
run: |
git fetch "$REMOTE" master # Fetch default branch first for patch to apply cleanly
git fetch "$REMOTE" "$REF"
git checkout FETCH_HEAD
env:
REF: ${{ github.ref }}
REMOTE: https://github.com/${{ github.repository }}.git
- name: Set up environment
uses: ./.github/actions/setup
- run: bash scripts/git-user-config.sh
- name: Transpile to upgradeable
run: bash scripts/upgradeable/transpile-onto.sh ${{ github.ref_name }} origin/${{ github.ref_name }}
env:
SUBMODULE_REMOTE: https://github.com/${{ github.repository }}.git
- run: git push origin ${{ github.ref_name }}

8
.gitignore vendored
View File

@ -29,20 +29,15 @@ npm-debug.log
# local env variables
.env
# truffle build directory
build/
# macOS
.DS_Store
# truffle
.node-xmlhttprequest-*
# IntelliJ IDE
.idea
# docs artifacts
docs/modules/api
build/site
# only used to package @openzeppelin/contracts
contracts/build/
@ -63,6 +58,7 @@ contracts-exposed
# Foundry
/out
/cache_forge
# Certora
.certora*

3
.gitmodules vendored
View File

@ -5,3 +5,6 @@
[submodule "lib/erc4626-tests"]
path = lib/erc4626-tests
url = https://github.com/a16z/erc4626-tests.git
[submodule "lib/halmos-cheatcodes"]
path = lib/halmos-cheatcodes
url = https://github.com/a16z/halmos-cheatcodes

2
.husky/pre-commit Executable file
View File

@ -0,0 +1,2 @@
npm run test:generation
npx lint-staged

View File

@ -10,5 +10,6 @@
"singleQuote": false
}
}
]
],
"plugins": ["prettier-plugin-solidity"]
}

View File

@ -10,4 +10,12 @@ module.exports = {
fgrep: '[skip-on-coverage]',
invert: true,
},
// Work around stack too deep for coverage
configureYulOptimizer: true,
solcOptimizerDetails: {
yul: true,
yulDetails: {
optimizerSteps: '',
},
},
};

View File

@ -1,14 +0,0 @@
{
"rules": {
"no-unused-vars": "error",
"const-name-snakecase": "error",
"contract-name-camelcase": "error",
"event-name-camelcase": "error",
"func-name-mixedcase": "error",
"func-param-name-mixedcase": "error",
"modifier-name-mixedcase": "error",
"private-vars-leading-underscore": "error",
"var-name-mixedcase": "error",
"imports-on-top": "error"
}
}

View File

@ -1,5 +1,493 @@
# Changelog
### Breaking Changes
- Replace `GovernorCountingOverridable.VoteReceipt` struct parameter member names `hasOverriden` and `overridenWeight` for `hasOverridden` and `overriddenWeight` respectively.
#### Custom error changes
- Replace `GovernorAlreadyOverridenVote` with `GovernorAlreadyOverriddenVote`.
## 5.2.0 (2025-01-08)
### Breaking Changes
#### Custom error changes
This version comes with changes to the custom error identifiers. Contracts previously depending on the following errors should be replaced accordingly:
- Replace `Errors.FailedCall` with a bubbled-up revert reason in `Address.sendValue`.
### Changes by category
#### General
- Update some pragma directives to ensure that all file requirements match that of the files they import. ([#5273](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5273))
#### Account
- `ERC4337Utils`: Add a reusable library to manipulate user operations and interact with ERC-4337 contracts ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))
- `ERC7579Utils`: Add a reusable library to interact with ERC-7579 modular accounts ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))
#### Governance
- `GovernorCountingOverridable`: Add a governor counting module that enables token holders to override the vote of their delegate. ([#5192](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5192))
- `VotesExtended`: Create an extension of `Votes` which checkpoints balances and delegates. ([#5192](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5192))
### Proxy
- `Clones`: Add `cloneWithImmutableArgs` and `cloneDeterministicWithImmutableArgs` variants that create clones with per-instance immutable arguments. The immutable arguments can be retrieved using `fetchCloneArgs`. The corresponding `predictDeterministicWithImmutableArgs` function is also included. ([#5109](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5109))
### Tokens
- `ERC1363Utils`: Add helper similar to the existing `ERC721Utils` and `ERC1155Utils` ([#5133](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5133))
### Utils
- `Address`: bubble up revert data on `sendValue` failed call ([#5418](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5418))
- `Bytes`: Add a library of common operations that operate on `bytes` objects. ([#5252](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5252))
- `CAIP2` and `CAIP10`: Add libraries for formatting and parsing CAIP-2 and CAIP-10 identifiers. ([#5252](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5252))
- `NoncesKeyed`: Add a variant of `Nonces` that implements the ERC-4337 entrypoint nonce system. ([#5272](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5272))
- `Packing`: Add variants for packing `bytes10` and `bytes22` ([#5274](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5274))
- `Strings`: Add `parseUint`, `parseInt`, `parseHexUint` and `parseAddress` to parse strings into numbers and addresses. Also provide variants of these functions that parse substrings, and `tryXxx` variants that do not revert on invalid input. ([#5166](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5166))
## 5.1.0 (2024-10-17)
### Breaking changes
- `ERC1967Utils`: Removed duplicate declaration of the `Upgraded`, `AdminChanged` and `BeaconUpgraded` events. These events are still available through the `IERC1967` interface located under the `contracts/interfaces/` directory. Minimum pragma version is now 0.8.21.
- `Governor`, `GovernorCountingSimple`: The `_countVote` virtual function now returns an `uint256` with the total votes cast. This change allows for more flexibility for partial and fractional voting. Upgrading users may get a compilation error that can be fixed by adding a return statement to the `_countVote` function.
#### Custom error changes
This version comes with changes to the custom error identifiers. Contracts previously depending on the following errors should be replaced accordingly:
- Replace `Address.FailedInnerCall` with `Errors.FailedCall`
- Replace `Address.AddressInsufficientBalance` with `Errors.InsufficientBalance`
- Replace `Clones.Create2InsufficientBalance` with `Errors.InsufficientBalance`
- Replace `Clones.ERC1167FailedCreateClone` with `Errors.FailedDeployment`
- Replace `Clones.Create2FailedDeployment` with `Errors.FailedDeployment`
- `SafeERC20`: Replace `Address.AddressEmptyCode` with `SafeERC20FailedOperation` if there is no code at the token's address.
- `SafeERC20`: Replace generic `Error(string)` with `SafeERC20FailedOperation` if the returned data can't be decoded as `bool`.
- `SafeERC20`: Replace generic `SafeERC20FailedOperation` with the revert message from the contract call if it fails.
### Changes by category
#### General
- `AccessManager`, `VestingWallet`, `TimelockController` and `ERC2771Forwarder`: Added a public `initializer` function in their corresponding upgradeable variants. ([#5008](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5008))
#### Access
- `AccessControlEnumerable`: Add a `getRoleMembers` method to return all accounts that have `role`. ([#4546](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4546))
- `AccessManager`: Allow the `onlyAuthorized` modifier to restrict functions added to the manager. ([#5014](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5014))
#### Finance
- `VestingWalletCliff`: Add an extension of the `VestingWallet` contract with an added cliff. ([#4870](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4870))
#### Governance
- `GovernorCountingFractional`: Add a governor counting module that allows distributing voting power amongst 3 options (For, Against, Abstain). ([#5045](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5045))
- `Votes`: Set `_moveDelegateVotes` visibility to internal instead of private. ([#5007](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5007))
#### Proxy
- `Clones`: Add version of `clone` and `cloneDeterministic` that support sending value at creation. ([#4936](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4936))
- `TransparentUpgradeableProxy`: Make internal `_proxyAdmin()` getter have `view` visibility. ([#4688](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4688))
- `ProxyAdmin`: Fixed documentation for `UPGRADE_INTERFACE_VERSION` getter. ([#5031](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5031))
#### Tokens
- `ERC1363`: Add implementation of the token payable standard allowing execution of contract code after transfers and approvals. ([#4631](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4631))
- `ERC20TemporaryApproval`: Add an ERC-20 extension that implements temporary approval using transient storage, based on ERC7674 (draft). ([#5071](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5071))
- `SafeERC20`: Add "relaxed" function for interacting with ERC-1363 functions in a way that is compatible with EOAs. ([#4631](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4631))
- `SafeERC20`: Document risks of `safeIncreaseAllowance` and `safeDecreaseAllowance` when associated with ERC-7674. ([#5262](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5262))
- `ERC721Utils` and `ERC1155Utils`: Add reusable libraries with functions to perform acceptance checks on `IERC721Receiver` and `IERC1155Receiver` implementers. ([#4845](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4845))
- `ERC1363Utils`: Add helper similar to the existing ERC721Utils and ERC1155Utils. ([#5133](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5133))
#### Utils
- `Arrays`: add a `sort` functions for `address[]`, `bytes32[]` and `uint256[]` memory arrays. ([#4846](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4846))
- `Arrays`: add new functions `lowerBound`, `upperBound`, `lowerBoundMemory` and `upperBoundMemory` for lookups in sorted arrays with potential duplicates. ([#4842](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4842))
- `Arrays`: deprecate `findUpperBound` in favor of the new `lowerBound`. ([#4842](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4842))
- `Base64`: Add `encodeURL` following section 5 of RFC4648 for URL encoding ([#4822](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4822))
- `Comparator`: A library of comparator functions, useful for customizing the behavior of the Heap structure. ([#5084](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5084))
- `Create2`: Bubbles up returndata from a deployed contract that reverted during construction. ([#5052](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5052))
- `Create2`, `Clones`: Mask `computeAddress` and `cloneDeterministic` outputs to produce a clean value for an `address` type (i.e. only use 20 bytes) ([#4941](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4941))
- `Errors`: New library of common custom errors. ([#4936](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4936))
- `Hashes`: A library with commonly used hash functions. ([#3617](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3617))
- `Packing`: Added a new utility for packing, extracting and replacing bytesXX values. ([#4992](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4992))
- `Panic`: Add a library for reverting with panic codes. ([#3298](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3298))
- `ReentrancyGuardTransient`: Added a variant of `ReentrancyGuard` that uses transient storage. ([#4988](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4988))
- `Strings`: Added a utility function for converting an address to checksummed string. ([#5067](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5067))
- `SlotDerivation`: Add a library of methods for derivating common storage slots. ([#4975](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4975))
- `TransientSlot`: Add primitives for operating on the transient storage space using a typed-slot representation. ([#4980](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4980))
##### Cryptography
- `SignatureChecker`: refactor `isValidSignatureNow` to avoid validating ECDSA signatures if there is code deployed at the signer's address. ([#4951](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4951))
- `MerkleProof`: Add variations of `verify`, `processProof`, `multiProofVerify` and `processMultiProof` (and equivalent calldata version) with support for custom hashing functions. ([#4887](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4887))
- `P256`: Library for verification and public key recovery of P256 (aka secp256r1) signatures. ([#4881](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4881))
- `RSA`: Library to verify signatures according to RFC 8017 Signature Verification Operation ([#4952](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4952))
#### Math
- `Math`: add an `invMod` function to get the modular multiplicative inverse of a number in Z/nZ. ([#4839](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4839))
- `Math`: Add `modExp` function that exposes the `EIP-198` precompile. Includes `uint256` and `bytes memory` versions. ([#3298](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3298))
- `Math`: Custom errors replaced with native panic codes. ([#3298](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3298))
- `Math`, `SignedMath`: Add a branchless `ternary` function that computes`cond ? a : b` in constant gas cost. ([#4976](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4976))
- `SafeCast`: Add `toUint(bool)` for operating on `bool` values as `uint256`. ([#4878](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4878))
#### Structures
- `CircularBuffer`: Add a data structure that stores the last `N` values pushed to it. ([#4913](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4913))
- `DoubleEndedQueue`: Custom errors replaced with native panic codes. ([#4872](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4872))
- `EnumerableMap`: add `UintToBytes32Map`, `AddressToAddressMap`, `AddressToBytes32Map` and `Bytes32ToAddressMap`. ([#4843](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4843))
- `Heap`: A data structure that implements a heap-based priority queue. ([#5084](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/5084))
- `MerkleTree`: A data structure that allows inserting elements into a merkle tree and updating its root hash. ([#3617](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3617))
## 5.0.2 (2024-02-29)
- `Base64`: Fix issue where dirty memory located just after the input buffer is affecting the result. ([#4926](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4926))
## 5.0.1 (2023-12-07)
- `ERC2771Context` and `Context`: Introduce a `_contextPrefixLength()` getter, used to trim extra information appended to `msg.data`.
- `Multicall`: Make aware of non-canonical context (i.e. `msg.sender` is not `_msgSender()`), allowing compatibility with `ERC2771Context`.
## 5.0.0 (2023-10-05)
### Additions Summary
The following contracts and libraries were added:
- `AccessManager`: A consolidated system for managing access control in complex systems.
- `AccessManaged`: A module for connecting a contract to an authority in charge of its access control.
- `GovernorTimelockAccess`: An adapter for time-locking governance proposals using an `AccessManager`.
- `AuthorityUtils`: A library of utilities for interacting with authority contracts.
- `GovernorStorage`: A Governor module that stores proposal details in storage.
- `ERC2771Forwarder`: An ERC2771 forwarder for meta transactions.
- `ERC1967Utils`: A library with ERC1967 events, errors and getters.
- `Nonces`: An abstraction for managing account nonces.
- `MessageHashUtils`: A library for producing digests for ECDSA operations.
- `Time`: A library with helpers for manipulating time-related objects.
### Removals Summary
The following contracts, libraries, and functions were removed:
- `Address.isContract` (because of its ambiguous nature and potential for misuse)
- `Checkpoints.History`
- `Counters`
- `ERC20Snapshot`
- `ERC20VotesComp`
- `ERC165Storage` (in favor of inheritance based approach)
- `ERC777`
- `ERC1820Implementer`
- `GovernorVotesComp`
- `GovernorProposalThreshold` (deprecated since 4.4)
- `PaymentSplitter`
- `PullPayment`
- `SafeMath`
- `SignedSafeMath`
- `Timers`
- `TokenTimelock` (in favor of `VestingWallet`)
- All escrow contracts (`Escrow`, `ConditionalEscrow` and `RefundEscrow`)
- All cross-chain contracts, including `AccessControlCrossChain` and all the vendored bridge interfaces
- All presets in favor of [OpenZeppelin Contracts Wizard](https://wizard.openzeppelin.com/)
These removals were implemented in the following PRs: [#3637](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3637), [#3880](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3880), [#3945](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3945), [#4258](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4258), [#4276](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4276), [#4289](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4289)
### Changes by category
#### General
- Replaced revert strings and require statements with custom errors. ([#4261](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4261))
- Bumped minimum compiler version required to 0.8.20 ([#4288](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4288), [#4489](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4489))
- Use of `abi.encodeCall` in place of `abi.encodeWithSelector` and `abi.encodeWithSignature` for improved type-checking of parameters ([#4293](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4293))
- Replaced some uses of `abi.encodePacked` with clearer alternatives (e.g. `bytes.concat`, `string.concat`). ([#4504](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4504)) ([#4296](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4296))
- Overrides are now used internally for a number of functions that were previously hardcoded to their default implementation in certain locations: `ERC1155Supply.totalSupply`, `ERC721.ownerOf`, `ERC721.balanceOf` and `ERC721.totalSupply` in `ERC721Enumerable`, `ERC20.totalSupply` in `ERC20FlashMint`, and `ERC1967._getImplementation` in `ERC1967Proxy`. ([#4299](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4299))
- Removed the `override` specifier from functions that only override a single interface function. ([#4315](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4315))
- Switched to using explicit Solidity import statements. Some previously available symbols may now have to be separately imported. ([#4399](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4399))
- `Governor`, `Initializable`, and `UUPSUpgradeable`: Use internal functions in modifiers to optimize bytecode size. ([#4472](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4472))
- Upgradeable contracts now use namespaced storage (EIP-7201). ([#4534](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4534))
- Upgradeable contracts no longer transpile interfaces and libraries. ([#4628](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4628))
#### Access
- `Ownable`: Added an `initialOwner` parameter to the constructor, making the ownership initialization explicit. ([#4267](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4267))
- `Ownable`: Prevent using address(0) as the initial owner. ([#4531](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4531))
- `AccessControl`: Added a boolean return value to the internal `_grantRole` and `_revokeRole` functions indicating whether the role was granted or revoked. ([#4241](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4241))
- `access`: Moved `AccessControl` extensions to a dedicated directory. ([#4359](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4359))
- `AccessManager`: Added a new contract for managing access control of complex systems in a consolidated location. ([#4121](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4121))
- `AccessManager`, `AccessManaged`, `GovernorTimelockAccess`: Ensure that calldata shorter than 4 bytes is not padded to 4 bytes. ([#4624](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4624))
- `AccessManager`: Use named return parameters in functions that return multiple values. ([#4624](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4624))
- `AccessManager`: Make `schedule` and `execute` more conservative when delay is 0. ([#4644](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4644))
#### Finance
- `VestingWallet`: Fixed revert during 1 second time window when duration is 0. ([#4502](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4502))
- `VestingWallet`: Use `Ownable` instead of an immutable `beneficiary`. ([#4508](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4508))
#### Governance
- `Governor`: Optimized use of storage for proposal data ([#4268](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4268))
- `Governor`: Added validation in ERC1155 and ERC721 receiver hooks to ensure Governor is the executor. ([#4314](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4314))
- `Governor`: Refactored internals to implement common queuing logic in the core module of the Governor. Added `queue` and `_queueOperations` functions that act at different levels. Modules that implement queuing via timelocks are expected to override `_queueOperations` to implement the timelock-specific logic. Added `_executeOperations` as the equivalent for execution. ([#4360](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4360))
- `Governor`: Added `voter` and `nonce` parameters in signed ballots, to avoid forging signatures for random addresses, prevent signature replay, and allow invalidating signatures. Add `voter` as a new parameter in the `castVoteBySig` and `castVoteWithReasonAndParamsBySig` functions. ([#4378](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4378))
- `Governor`: Added support for casting votes with ERC-1271 signatures by using a `bytes memory signature` instead of `r`, `s` and `v` arguments in the `castVoteBySig` and `castVoteWithReasonAndParamsBySig` functions. ([#4418](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4418))
- `Governor`: Added a mechanism to restrict the address of the proposer using a suffix in the description.
- `GovernorStorage`: Added a new governor extension that stores the proposal details in storage, with an interface that operates on `proposalId`, as well as proposal enumerability. This replaces the old `GovernorCompatibilityBravo` module. ([#4360](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4360))
- `GovernorTimelockAccess`: Added a module to connect a governor with an instance of `AccessManager`, allowing the governor to make calls that are delay-restricted by the manager using the normal `queue` workflow. ([#4523](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4523))
- `GovernorTimelockControl`: Clean up timelock id on execution for gas refund. ([#4118](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4118))
- `GovernorTimelockControl`: Added the Governor instance address as part of the TimelockController operation `salt` to avoid operation id collisions between governors using the same TimelockController. ([#4432](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4432))
- `TimelockController`: Changed the role architecture to use `DEFAULT_ADMIN_ROLE` as the admin for all roles, instead of the bespoke `TIMELOCK_ADMIN_ROLE` that was used previously. This aligns with the general recommendation for `AccessControl` and makes the addition of new roles easier. Accordingly, the `admin` parameter and timelock will now be granted `DEFAULT_ADMIN_ROLE` instead of `TIMELOCK_ADMIN_ROLE`. ([#3799](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3799))
- `TimelockController`: Added a state getter that returns an `OperationState` enum. ([#4358](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4358))
- `Votes`: Use Trace208 for checkpoints. This enables EIP-6372 clock support for keys but reduces the max supported voting power to uint208. ([#4539](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4539))
#### Metatx
- `ERC2771Forwarder`: Added `deadline` for expiring transactions, batching, and more secure handling of `msg.value`. ([#4346](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4346))
- `ERC2771Context`: Return the forwarder address whenever the `msg.data` of a call originating from a trusted forwarder is not long enough to contain the request signer address (i.e. `msg.data.length` is less than 20 bytes), as specified by ERC-2771. ([#4481](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4481))
- `ERC2771Context`: Prevent revert in `_msgData()` when a call originating from a trusted forwarder is not long enough to contain the request signer address (i.e. `msg.data.length` is less than 20 bytes). Return the full calldata in that case. ([#4484](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4484))
#### Proxy
- `ProxyAdmin`: Removed `getProxyAdmin` and `getProxyImplementation` getters. ([#3820](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3820))
- `TransparentUpgradeableProxy`: Removed `admin` and `implementation` getters, which were only callable by the proxy owner and thus not very useful. ([#3820](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3820))
- `ERC1967Utils`: Refactored the `ERC1967Upgrade` abstract contract as a library. ([#4325](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4325))
- `TransparentUpgradeableProxy`: Admin is now stored in an immutable variable (set during construction) to avoid unnecessary storage reads on every proxy call. This removed the ability to ever change the admin. Transfer of the upgrade capability is exclusively handled through the ownership of the `ProxyAdmin`. ([#4354](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4354))
- Moved the logic to validate ERC-1822 during an upgrade from `ERC1967Utils` to `UUPSUpgradeable`. ([#4356](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4356))
- `UUPSUpgradeable`, `TransparentUpgradeableProxy` and `ProxyAdmin`: Removed `upgradeTo` and `upgrade` functions, and made `upgradeToAndCall` and `upgradeAndCall` ignore the data argument if it is empty. It is no longer possible to invoke the receive function (or send value with empty data) along with an upgrade. ([#4382](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4382))
- `BeaconProxy`: Reject value in initialization unless a payable function is explicitly invoked. ([#4382](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4382))
- `Proxy`: Removed redundant `receive` function. ([#4434](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4434))
- `BeaconProxy`: Use an immutable variable to store the address of the beacon. It is no longer possible for a `BeaconProxy` to upgrade by changing to another beacon. ([#4435](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4435))
- `Initializable`: Use the namespaced storage pattern to avoid putting critical variables in slot 0. Allow reinitializer versions greater than 256. ([#4460](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4460))
- `Initializable`: Use intermediate variables to improve readability. ([#4576](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4576))
#### Token
- `ERC20`, `ERC721`, `ERC1155`: Deleted `_beforeTokenTransfer` and `_afterTokenTransfer` hooks, added a new internal `_update` function for customizations, and refactored all extensions using those hooks to use `_update` instead. ([#3838](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3838), [#3876](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3876), [#4377](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4377))
- `ERC20`: Removed `Approval` event previously emitted in `transferFrom` to indicate that part of the allowance was consumed. With this change, allowances are no longer reconstructible from events. See the code for guidelines on how to re-enable this event if needed. ([#4370](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4370))
- `ERC20`: Removed the non-standard `increaseAllowance` and `decreaseAllowance` functions. ([#4585](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4585))
- `ERC20Votes`: Changed internal vote accounting to reusable `Votes` module previously used by `ERC721Votes`. Removed implicit `ERC20Permit` inheritance. Note that the `DOMAIN_SEPARATOR` getter was previously guaranteed to be available for `ERC20Votes` contracts, but is no longer available unless `ERC20Permit` is explicitly used; ERC-5267 support is included in `ERC20Votes` with `EIP712` and is recommended as an alternative. ([#3816](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3816))
- `SafeERC20`: Refactored `safeDecreaseAllowance` and `safeIncreaseAllowance` to support USDT-like tokens. ([#4260](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4260))
- `SafeERC20`: Removed `safePermit` in favor of documentation-only `permit` recommendations. Based on recommendations from @trust1995 ([#4582](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4582))
- `ERC721`: `_approve` no longer allows approving the owner of the tokenId. ([#4377](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/4377)) `_setApprovalForAll` no longer allows setting address(0) as an operator. ([#4377](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4377))
- `ERC721`: Renamed `_requireMinted` to `_requireOwned` and added a return value with the current owner. Implemented `ownerOf` in terms of `_requireOwned`. ([#4566](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4566))
- `ERC721Consecutive`: Added a `_firstConsecutiveId` internal function that can be overridden to change the id of the first token minted through `_mintConsecutive`. ([#4097](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4097))
- `ERC721URIStorage`: Allow setting the token URI prior to minting. ([#4559](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4559))
- `ERC721URIStorage`, `ERC721Royalty`: Stop resetting token-specific URI and royalties when burning. ([#4561](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4561))
- `ERC1155`: Optimized array allocation. ([#4196](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4196))
- `ERC1155`: Removed check for address zero in `balanceOf`. ([#4263](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4263))
- `ERC1155`: Optimized array accesses by skipping bounds checking when unnecessary. ([#4300](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4300))
- `ERC1155`: Bubble errors triggered in the `onERC1155Received` and `onERC1155BatchReceived` hooks. ([#4314](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4314))
- `ERC1155Supply`: Added a `totalSupply()` function that returns the total amount of token circulating, this change will restrict the total tokens minted across all ids to 2\*\*256-1 . ([#3962](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3962))
- `ERC1155Receiver`: Removed in favor of `ERC1155Holder`. ([#4450](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4450))
#### Utils
- `Address`: Removed the ability to customize error messages. A common custom error is always used if the underlying revert reason cannot be bubbled up. ([#4502](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4502))
- `Arrays`: Added `unsafeMemoryAccess` helpers to read from a memory array without checking the length. ([#4300](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4300))
- `Arrays`: Optimized `findUpperBound` by removing redundant SLOAD. ([#4442](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4442))
- `Checkpoints`: Library moved from `utils` to `utils/structs` ([#4275](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4275))
- `DoubleEndedQueue`: Refactored internal structure to use `uint128` instead of `int128`. This has no effect on the library interface. ([#4150](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4150))
- `ECDSA`: Use unchecked arithmetic for the `tryRecover` function that receives the `r` and `vs` short-signature fields separately. ([#4301](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4301))
- `EIP712`: Added internal getters for the name and version strings ([#4303](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4303))
- `Math`: Makes `ceilDiv` to revert on 0 division even if the numerator is 0 ([#4348](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4348))
- `Math`: Optimized stack operations in `mulDiv`. ([#4494](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4494))
- `Math`: Renamed members of `Rounding` enum, and added a new rounding mode for "away from zero". ([#4455](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4455))
- `MerkleProof`: Use custom error to report invalid multiproof instead of reverting with overflow panic. ([#4564](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4564))
- `MessageHashUtils`: Added a new library for creating message digest to be used along with signing or recovery such as ECDSA or ERC-1271. These functions are moved from the `ECDSA` library. ([#4430](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4430))
- `Nonces`: Added a new contract to keep track of user nonces. Used for signatures in `ERC20Permit`, `ERC20Votes`, and `ERC721Votes`. ([#3816](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3816))
- `ReentrancyGuard`, `Pausable`: Moved to `utils` directory. ([#4551](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4551))
- `Strings`: Renamed `toString(int256)` to `toStringSigned(int256)`. ([#4330](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4330))
- Optimized `Strings.equal` ([#4262](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4262))
### How to migrate from 4.x
#### ERC20, ERC721, and ERC1155
These breaking changes will require modifications to ERC20, ERC721, and ERC1155 contracts, since the `_afterTokenTransfer` and `_beforeTokenTransfer` functions were removed. Thus, any customization made through those hooks should now be done overriding the new `_update` function instead.
Minting and burning are implemented by `_update` and customizations should be done by overriding this function as well. `_transfer`, `_mint` and `_burn` are no longer virtual (meaning they are not overridable) to guard against possible inconsistencies.
For example, a contract using `ERC20`'s `_beforeTokenTransfer` hook would have to be changed in the following way.
```diff
-function _beforeTokenTransfer(
+function _update(
address from,
address to,
uint256 amount
) internal virtual override {
- super._beforeTokenTransfer(from, to, amount);
require(!condition(), "ERC20: wrong condition");
+ super._update(from, to, amount);
}
```
#### More about ERC721
In the case of `ERC721`, the `_update` function does not include a `from` parameter, as the sender is implicitly the previous owner of the `tokenId`. The address of this previous owner is returned by the `_update` function, so it can be used for a posteriori checks. In addition to `to` and `tokenId`, a third parameter (`auth`) is present in this function. This parameter enabled an optional check that the caller/spender is approved to do the transfer. This check cannot be performed after the transfer (because the transfer resets the approval), and doing it before `_update` would require a duplicate call to `_ownerOf`.
In this logic of removing hidden SLOADs, the `_isApprovedOrOwner` function was removed in favor of a new `_isAuthorized` function. Overrides that used to target the `_isApprovedOrOwner` should now be performed on the `_isAuthorized` function. Calls to `_isApprovedOrOwner` that preceded a call to `_transfer`, `_burn` or `_approve` should be removed in favor of using the `auth` argument in `_update` and `_approve`. This is showcased in `ERC721Burnable.burn` and in `ERC721Wrapper.withdrawTo`.
The `_exists` function was removed. Calls to this function can be replaced by `_ownerOf(tokenId) != address(0)`.
#### More about ERC1155
Batch transfers will now emit `TransferSingle` if the batch consists of a single token, while in previous versions the `TransferBatch` event would be used for all transfers initiated through `safeBatchTransferFrom`. Both behaviors are compliant with the ERC-1155 specification.
#### ERC165Storage
Users that were registering EIP-165 interfaces with `_registerInterface` from `ERC165Storage` should instead do so by overriding the `supportsInterface` function as seen below:
```solidity
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
}
```
#### SafeMath
Methods in SafeMath superseded by native overflow checks in Solidity 0.8.0 were removed along with operations providing an interface for revert strings. The remaining methods were moved to `utils/Math.sol`.
```diff
- import "@openzeppelin/contracts/utils/math/SafeMath.sol";
+ import "@openzeppelin/contracts/utils/math/Math.sol";
function tryOperations(uint256 x, uint256 y) external view {
- (bool overflowsAdd, uint256 resultAdd) = SafeMath.tryAdd(x, y);
+ (bool overflowsAdd, uint256 resultAdd) = Math.tryAdd(x, y);
- (bool overflowsSub, uint256 resultSub) = SafeMath.trySub(x, y);
+ (bool overflowsSub, uint256 resultSub) = Math.trySub(x, y);
- (bool overflowsMul, uint256 resultMul) = SafeMath.tryMul(x, y);
+ (bool overflowsMul, uint256 resultMul) = Math.tryMul(x, y);
- (bool overflowsDiv, uint256 resultDiv) = SafeMath.tryDiv(x, y);
+ (bool overflowsDiv, uint256 resultDiv) = Math.tryDiv(x, y);
// ...
}
```
#### Adapting Governor modules
Custom Governor modules that override internal functions may require modifications if migrated to v5. In particular, the new internal functions `_queueOperations` and `_executeOperations` may need to be used. If assistance with this migration is needed reach out via the [OpenZeppelin Support Forum](https://forum.openzeppelin.com/c/support/contracts/18).
#### ECDSA and MessageHashUtils
The `ECDSA` library is now focused on signer recovery. Previously it also included utility methods for producing digests to be used with signing or recovery. These utilities have been moved to the `MessageHashUtils` library and should be imported if needed:
```diff
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
+import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol";
contract Verifier {
using ECDSA for bytes32;
+ using MessageHashUtils for bytes32;
function _verify(bytes32 data, bytes memory signature, address account) internal pure returns (bool) {
return data
.toEthSignedMessageHash()
.recover(signature) == account;
}
}
```
#### Interfaces and libraries in upgradeable contracts
The upgradeable version of the contracts library used to include a variant suffixed with `Upgradeable` for every contract. These variants, which are produced automatically, mainly include changes for dealing with storage that don't apply to libraries and interfaces.
The upgradeable library no longer includes upgradeable variants for libraries and interfaces. Projects migrating to 5.0 should replace their library and interface imports with their corresponding non-upgradeable version:
```diff
// Libraries
-import {AddressUpgradeable} from '@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol';
+import {Address} from '@openzeppelin/contracts/utils/Address.sol';
// Interfaces
-import {IERC20Upgradeable} from '@openzeppelin/contracts-upgradeable/interfaces/IERC20.sol';
+import {IERC20} from '@openzeppelin/contracts/interfaces/IERC20.sol';
```
#### Offchain Considerations
Some changes may affect offchain systems if they rely on assumptions that are changed along with these new breaking changes. These cases are:
##### Relying on revert strings for processing errors
A concrete example is AccessControl, where it was previously advised to catch revert reasons using the following regex:
```
/^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
```
Instead, contracts now revert with custom errors. Systems that interact with smart contracts outside of the network should consider reliance on revert strings and possibly support the new custom errors.
##### Relying on storage locations for retrieving data
After 5.0, the storage location of some variables were changed. This is the case for `Initializable` and all the upgradeable contracts since they now use namespaced storaged locations. Any system relying on storage locations for retrieving data or detecting capabilities should be updated to support these new locations.
## 4.9.6 (2024-02-29)
- `Base64`: Fix issue where dirty memory located just after the input buffer is affecting the result. ([#4929](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4929))
## 4.9.5 (2023-12-08)
- `Multicall`: Make aware of non-canonical context (i.e. `msg.sender` is not `_msgSender()`), allowing compatibility with `ERC2771Context`. Patch duplicated `Address.functionDelegateCall` in v4.9.4 (removed).
## 4.9.3 (2023-07-28)
- `ERC2771Context`: Return the forwarder address whenever the `msg.data` of a call originating from a trusted forwarder is not long enough to contain the request signer address (i.e. `msg.data.length` is less than 20 bytes), as specified by ERC-2771. ([#4481](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4481))
- `ERC2771Context`: Prevent revert in `_msgData()` when a call originating from a trusted forwarder is not long enough to contain the request signer address (i.e. `msg.data.length` is less than 20 bytes). Return the full calldata in that case. ([#4484](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4484))
## 4.9.2 (2023-06-16)
- `MerkleProof`: Fix a bug in `processMultiProof` and `processMultiProofCalldata` that allows proving arbitrary leaves if the tree contains a node with value 0 at depth 1.
## 4.9.1 (2023-06-07)
- `Governor`: Add a mechanism to restrict the address of the proposer using a suffix in the description.
## 4.9.0 (2023-05-23)
- `ReentrancyGuard`: Add a `_reentrancyGuardEntered` function to expose the guard status. ([#3714](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3714))
- `ERC721Wrapper`: add a new extension of the `ERC721` token which wraps an underlying token. Deposit and withdraw guarantee that the ownership of each token is backed by a corresponding underlying token with the same identifier. ([#3863](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3863))
- `EnumerableMap`: add a `keys()` function that returns an array containing all the keys. ([#3920](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3920))
- `Governor`: add a public `cancel(uint256)` function. ([#3983](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3983))
- `Governor`: Enable timestamp operation for blockchains without a stable block time. This is achieved by connecting a Governor's internal clock to match a voting token's EIP-6372 interface. ([#3934](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3934))
- `Strings`: add `equal` method. ([#3774](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3774))
- `IERC5313`: Add an interface for EIP-5313 that is now final. ([#4013](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4013))
- `IERC4906`: Add an interface for ERC-4906 that is now Final. ([#4012](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4012))
- `StorageSlot`: Add support for `string` and `bytes`. ([#4008](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4008))
- `Votes`, `ERC20Votes`, `ERC721Votes`: support timestamp checkpointing using EIP-6372. ([#3934](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3934))
- `ERC4626`: Add mitigation to the inflation attack through virtual shares and assets. ([#3979](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3979))
- `Strings`: add `toString` method for signed integers. ([#3773](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3773))
- `ERC20Wrapper`: Make the `underlying` variable private and add a public accessor. ([#4029](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4029))
- `EIP712`: add EIP-5267 support for better domain discovery. ([#3969](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3969))
- `AccessControlDefaultAdminRules`: Add an extension of `AccessControl` with additional security rules for the `DEFAULT_ADMIN_ROLE`. ([#4009](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4009))
- `SignatureChecker`: Add `isValidERC1271SignatureNow` for checking a signature directly against a smart contract using ERC-1271. ([#3932](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3932))
- `SafeERC20`: Add a `forceApprove` function to improve compatibility with tokens behaving like USDT. ([#4067](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4067))
- `ERC1967Upgrade`: removed contract-wide `oz-upgrades-unsafe-allow delegatecall` annotation, replaced by granular annotation in `UUPSUpgradeable`. ([#3971](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3971))
- `ERC20Wrapper`: self wrapping and deposit by the wrapper itself are now explicitly forbidden. ([#4100](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4100))
- `ECDSA`: optimize bytes32 computation by using assembly instead of `abi.encodePacked`. ([#3853](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3853))
- `ERC721URIStorage`: Emit ERC-4906 `MetadataUpdate` in `_setTokenURI`. ([#4012](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4012))
- `ShortStrings`: Added a library for handling short strings in a gas efficient way, with fallback to storage for longer strings. ([#4023](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4023))
- `SignatureChecker`: Allow return data length greater than 32 from EIP-1271 signers. ([#4038](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4038))
- `UUPSUpgradeable`: added granular `oz-upgrades-unsafe-allow-reachable` annotation to improve upgrade safety checks on latest version of the Upgrades Plugins (starting with `@openzeppelin/upgrades-core@1.21.0`). ([#3971](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3971))
- `Initializable`: optimize `_disableInitializers` by using `!=` instead of `<`. ([#3787](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3787))
- `Ownable2Step`: make `acceptOwnership` public virtual to enable usecases that require overriding it. ([#3960](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3960))
- `UUPSUpgradeable.sol`: Change visibility to the functions `upgradeTo ` and `upgradeToAndCall ` from `external` to `public`. ([#3959](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3959))
- `TimelockController`: Add the `CallSalt` event to emit on operation schedule. ([#4001](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4001))
- Reformatted codebase with latest version of Prettier Solidity. ([#3898](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3898))
- `Math`: optimize `log256` rounding check. ([#3745](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3745))
- `ERC20Votes`: optimize by using unchecked arithmetic. ([#3748](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3748))
- `Multicall`: annotate `multicall` function as upgrade safe to not raise a flag for its delegatecall. ([#3961](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3961))
- `ERC20Pausable`, `ERC721Pausable`, `ERC1155Pausable`: Add note regarding missing public pausing functionality ([#4007](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4007))
- `ECDSA`: Add a function `toDataWithIntendedValidatorHash` that encodes data with version 0x00 following EIP-191. ([#4063](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4063))
- `MerkleProof`: optimize by using unchecked arithmetic. ([#3745](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3745))
### Breaking changes
- `EIP712`: Addition of ERC5267 support requires support for user defined value types, which was released in Solidity version 0.8.8. This requires a pragma change from `^0.8.0` to `^0.8.8`.
@ -12,6 +500,11 @@
- `ERC777`: The `ERC777` token standard is no longer supported by OpenZeppelin. Our implementation is now deprecated and will be removed in the next major release. The corresponding standard interfaces remain available. ([#4066](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4066))
- `ERC1820Implementer`: The `ERC1820` pseudo-introspection mechanism is no longer supported by OpenZeppelin. Our implementation is now deprecated and will be removed in the next major release. The corresponding standard interfaces remain available. ([#4066](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4066))
## 4.8.3 (2023-04-13)
- `GovernorCompatibilityBravo`: Fix encoding of proposal data when signatures are missing.
- `TransparentUpgradeableProxy`: Fix transparency in case of selector clash with non-decodable calldata or payable mutability. ([#4154](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/4154))
## 4.8.2 (2023-03-02)
- `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`.
@ -320,7 +813,7 @@ It is no longer possible to call an `initializer`-protected function from within
This release includes two small breaking changes in `TimelockController`.
1. The `onlyRole` modifier in this contract was designed to let anyone through if the role was granted to `address(0)`,
allowing the possibility to to make a role "open", which can be used for `EXECUTOR_ROLE`. This modifier is now
allowing the possibility to make a role "open", which can be used for `EXECUTOR_ROLE`. This modifier is now
replaced by `AccessControl.onlyRole`, which does not have this ability. The previous behavior was moved to the
modifier `TimelockController.onlyRoleOrOpenRole`.
2. It was possible to make `PROPOSER_ROLE` an open role (as described in the previous item) if it was granted to

View File

@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
level of experience, education, socioeconomic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards

10
FUNDING.json Normal file
View File

@ -0,0 +1,10 @@
{
"drips": {
"ethereum": {
"ownedBy": "0xAeb37910f93486C85A1F8F994b67E8187554d664"
}
},
"opRetro": {
"projectId": "0x939241afa4c4b9e1dda6b8250baa8f04fa8b0debce738cfd324c0b18f9926d25"
}
}

View File

@ -55,7 +55,7 @@ External contributions must be reviewed separately by multiple maintainers.
Automation should be used as much as possible to reduce the possibility of human error and forgetfulness.
Automations that make use of sensitive credentials must use secure secret management, and must be strengthened against attacks such as [those on GitHub Actions worklows](https://github.com/nikitastupin/pwnhub).
Automations that make use of sensitive credentials must use secure secret management, and must be strengthened against attacks such as [those on GitHub Actions workflows](https://github.com/nikitastupin/pwnhub).
Some other examples of automation are:
@ -95,8 +95,18 @@ In addition to the official Solidity Style Guide we have a number of other conve
}
```
* Events should be emitted immediately after the state change that they
represent, and should be named in the past tense.
* Functions should be declared virtual, with few exceptions listed below. The
contract logic should be written considering that these functions may be
overridden by developers, e.g. getting a value using an internal getter rather
than reading directly from a state variable.
If function A is an "alias" of function B, i.e. it invokes function B without
significant additional logic, then function A should not be virtual so that
any user overrides are implemented on B, preventing inconsistencies.
* Events should generally be emitted immediately after the state change that they
represent, and should be named in the past tense. Some exceptions may be made for gas
efficiency if the result doesn't affect observable ordering of events.
```solidity
function _burn(address who, uint256 value) internal {
@ -105,7 +115,7 @@ In addition to the official Solidity Style Guide we have a number of other conve
}
```
Some standards (e.g. ERC20) use present tense, and in those cases the
Some standards (e.g. ERC-20) use present tense, and in those cases the
standard specification is used.
* Interface names should have a capital I prefix.
@ -114,4 +124,32 @@ In addition to the official Solidity Style Guide we have a number of other conve
interface IERC777 {
```
* Contracts not intended to be used standalone should be marked abstract
so they are required to be inherited to other contracts.
```solidity
abstract contract AccessControl is ..., {
```
* Return values are generally not named, unless they are not immediately clear or there are multiple return values.
```solidity
function expiration() public view returns (uint256) { // Good
function hasRole() public view returns (bool isMember, uint32 currentDelay) { // Good
```
* Unchecked arithmetic blocks should contain comments explaining why overflow is guaranteed not to happen. If the reason is immediately apparent from the line above the unchecked block, the comment may be omitted.
* Custom errors should be declared following the [EIP-6093](https://eips.ethereum.org/EIPS/eip-6093) rationale whenever reasonable. Also, consider the following:
* The domain prefix should be picked in the following order:
1. Use `ERC<number>` if the error is a violation of an ERC specification.
2. Use the name of the underlying component where it belongs (eg. `Governor`, `ECDSA`, or `Timelock`).
* The location of custom errors should be decided in the following order:
1. Take the errors from their underlying ERCs if they're already defined.
2. Declare the errors in the underlying interface/library if the error makes sense in its context.
3. Declare the error in the implementation if the underlying interface/library is not suitable to do so (eg. interface/library already specified in an ERC).
4. Declare the error in an extension if the error only happens in such extension or child contracts.
* Custom error names should not be declared twice along the library to avoid duplicated identifier declarations when inheriting from multiple contracts.

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016-2023 zOS Global Limited and contributors
Copyright (c) 2016-2025 Zeppelin Group Ltd
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@ -4,7 +4,7 @@
[![Coverage Status](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts/graph/badge.svg)](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts)
[![GitPOAPs](https://public-api.gitpoap.io/v1/repo/OpenZeppelin/openzeppelin-contracts/badge)](https://www.gitpoap.io/gh/OpenZeppelin/openzeppelin-contracts)
[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-yellow)](https://docs.openzeppelin.com/contracts)
[![Forum](https://img.shields.io/badge/forum-%F0%9F%92%AC-yellow)](https://docs.openzeppelin.com/contracts)
[![Forum](https://img.shields.io/badge/forum-%F0%9F%92%AC-yellow)](https://forum.openzeppelin.com/)
**A library for secure smart contract development.** Build on a solid foundation of community-vetted code.
@ -14,28 +14,43 @@
:mage: **Not sure how to get started?** Check out [Contracts Wizard](https://wizard.openzeppelin.com/) — an interactive smart contract generator.
:building_construction: **Want to scale your decentralized application?** Check out [OpenZeppelin Defender](https://openzeppelin.com/defender) — a secure platform for automating and monitoring your operations.
:building_construction: **Want to scale your decentralized application?** Check out [OpenZeppelin Defender](https://openzeppelin.com/defender) — a mission-critical developer security platform to code, audit, deploy, monitor, and operate with confidence.
> [!IMPORTANT]
> OpenZeppelin Contracts uses semantic versioning to communicate backwards compatibility of its API and storage layout. For upgradeable contracts, the storage layout of different major versions should be assumed incompatible, for example, it is unsafe to upgrade from 4.9.3 to 5.0.0. Learn more at [Backwards Compatibility](https://docs.openzeppelin.com/contracts/backwards-compatibility).
## Overview
### Installation
#### Hardhat (npm)
```
$ npm install @openzeppelin/contracts
```
OpenZeppelin Contracts features a [stable API](https://docs.openzeppelin.com/contracts/releases-stability#api-stability), which means that your contracts won't break unexpectedly when upgrading to a newer minor version.
#### Foundry (git)
An alternative to npm is to use the GitHub repository (`openzeppelin/openzeppelin-contracts`) to retrieve the contracts. When doing this, make sure to specify the tag for a release such as `v4.5.0`, instead of using the `master` branch.
> [!WARNING]
> When installing via git, it is a common error to use the `master` branch. This is a development branch that should be avoided in favor of tagged releases. The release process involves security measures that the `master` branch does not guarantee.
> [!WARNING]
> Foundry installs the latest version initially, but subsequent `forge update` commands will use the `master` branch.
```
$ forge install OpenZeppelin/openzeppelin-contracts
```
Add `@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/` in `remappings.txt.`
### Usage
Once installed, you can use the contracts in the library by importing them:
```solidity
pragma solidity ^0.8.0;
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyCollectible is ERC721 {
constructor() ERC721("MyCollectible", "MCO") {
@ -55,9 +70,9 @@ The guides in the [documentation site](https://docs.openzeppelin.com/contracts)
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales).
* [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools including non-overflowing math, signature verification, and trustless paying systems.
The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts's development in the [community forum](https://forum.openzeppelin.com).
The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the [community forum](https://forum.openzeppelin.com).
Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/guides), which cover several common use cases and good practices. The following articles provide great background reading, though please note that some of the referenced tools have changed, as the tooling in the ecosystem continues to rapidly evolve.
Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/), which cover several common use cases and good practices. The following articles provide great background reading, though please note that some of the referenced tools have changed, as the tooling in the ecosystem continues to rapidly evolve.
* [The Hitchhikers Guide to Smart Contracts in Ethereum](https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05) will help you get an overview of the various tools available for smart contract development, and help you set up your environment.
* [A Gentle Introduction to Ethereum Programming, Part 1](https://blog.openzeppelin.com/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094) provides very useful information on an introductory level, including many basic concepts from the Ethereum platform.
@ -67,7 +82,9 @@ Finally, you may want to take a look at the [guides on our blog](https://blog.op
This project is maintained by [OpenZeppelin](https://openzeppelin.com) with the goal of providing a secure and reliable library of smart contract components for the ecosystem. We address security through risk management in various areas such as engineering and open source best practices, scoping and API design, multi-layered review processes, and incident response preparedness.
The security policy is detailed in [`SECURITY.md`](./SECURITY.md), and specifies how you can report security vulnerabilities, which versions will receive security patches, and how to stay informed about them. We run a [bug bounty program on Immunefi](https://immunefi.com/bounty/openzeppelin) to reward the responsible disclosure of vulnerabilities.
The [OpenZeppelin Contracts Security Center](https://contracts.openzeppelin.com/security) contains more details about the secure development process.
The security policy is detailed in [`SECURITY.md`](./SECURITY.md) as well, and specifies how you can report security vulnerabilities, which versions will receive security patches, and how to stay informed about them. We run a [bug bounty program on Immunefi](https://immunefi.com/bounty/openzeppelin) to reward the responsible disclosure of vulnerabilities.
The engineering guidelines we follow to promote project quality can be found in [`GUIDELINES.md`](./GUIDELINES.md).

View File

@ -1,12 +1,10 @@
# Releasing
> Visit the documentation for [details about release schedule](https://docs.openzeppelin.com/contracts/releases-stability).
OpenZeppelin Contracts uses a fully automated release process that takes care of compiling, packaging, and publishing the library, all of which is carried out in a clean CI environment (GitHub Actions), implemented in the ([`release-cycle`](.github/workflows/release-cycle.yml)) workflow. This helps to reduce the potential for human error and inconsistencies, and ensures that the release process is ongoing and reliable.
## Changesets
[Changesets](https://github.com/changesets/changesets/) is used as part of our release process for `CHANGELOG.md` management. Each change that is relevant for the codebase is expected to include a changeset.
[Changesets](https://github.com/changesets/changesets/) are used as part of our release process for `CHANGELOG.md` management. Each change that is relevant for the codebase is expected to include a changeset.
## Branching model

View File

@ -8,7 +8,7 @@ Security vulnerabilities should be disclosed to the project maintainers through
Responsible disclosure of security vulnerabilities is rewarded through a bug bounty program on [Immunefi].
There is a bonus reward for issues introduced in release candidates that are reported before making it into a stable release.
There is a bonus reward for issues introduced in release candidates that are reported before making it into a stable release. Learn more about release candidates at [`RELEASING.md`](./RELEASING.md).
## Security Patches
@ -30,13 +30,14 @@ Only critical severity bug fixes will be backported to past major releases.
| Version | Critical security fixes | Other security fixes |
| ------- | ----------------------- | -------------------- |
| 4.x | :white_check_mark: | :white_check_mark: |
| 5.x | :white_check_mark: | :white_check_mark: |
| 4.9 | :white_check_mark: | :x: |
| 3.4 | :white_check_mark: | :x: |
| 2.5 | :white_check_mark: | :x: |
| 2.5 | :x: | :x: |
| < 2.0 | :x: | :x: |
Note as well that the Solidity language itself only guarantees security updates for the latest release.
## Legal
Smart contracts are a nascent techology and carry a high level of technical risk and uncertainty. OpenZeppelin Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including OpenZeppelin. Your use of the project is also governed by the terms found at www.openzeppelin.com/tos (the "Terms"). As set out in the Terms, you are solely responsible for any use of OpenZeppelin Contracts and you assume all risks associated with any such use. This Security Policy in no way evidences or represents an on-going duty by any contributor, including OpenZeppelin, to correct any flaws or alert you to all or any of the potential risks of utilizing the project.
Smart contracts are a nascent technology and carry a high level of technical risk and uncertainty. OpenZeppelin Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including OpenZeppelin. Your use of the project is also governed by the terms found at www.openzeppelin.com/tos (the "Terms"). As set out in the Terms, you are solely responsible for any use of OpenZeppelin Contracts and you assume all risks associated with any such use. This Security Policy in no way evidences or represents an ongoing duty by any contributor, including OpenZeppelin, to correct any flaws or alert you to all or any of the potential risks of utilizing the project.

View File

@ -20,7 +20,7 @@ The git commit hash we evaluated is:
# Disclaimer
The audit makes no statements or warrantees about utility of the code, safety of the code, suitability of the business model, regulatory regime for the business model, or any other statements about fitness of the contracts to purpose, or their bugfree status. The audit documentation is for discussion purposes only.
The audit makes no statements or warrantees about utility of the code, safety of the code, suitability of the business model, regulatory regime for the business model, or any other statements about fitness of the contracts to purpose, or their bug free status. The audit documentation is for discussion purposes only.
# Executive Summary

BIN
audits/2023-05-v4.9.pdf Normal file

Binary file not shown.

BIN
audits/2023-10-v5.0.pdf Normal file

Binary file not shown.

BIN
audits/2024-10-v5.1.pdf Normal file

Binary file not shown.

BIN
audits/2024-12-v5.2.pdf Normal file

Binary file not shown.

View File

@ -1,10 +1,14 @@
# Audits
| Date | Version | Commit | Auditor | Scope | Links |
| ------------ | ------- | --------- | ------------ | -------------------- | ----------------------------------------------------------- |
| October 2022 | v4.8.0 | `14f98db` | OpenZeppelin | ERC4626, Checkpoints | [🔗](./2022-10-ERC4626.pdf) [🔗](./2022-10-Checkpoints.pdf) |
| October 2018 | v2.0.0 | `dac5bcc` | LevelK | Everything | [🔗](./2018-10.pdf) |
| March 2017 | v1.0.4 | `9c5975a` | New Alchemy | Everything | [🔗](./2017-03.md) |
| Date | Version | Commit | Auditor | Scope | Links |
| ------------- | ------- | -------------------------------------------------------------------------------- | ------------ | -------------------- | ----------------------------------------------------------- |
| December 2024 | v5.2.0 | [`98d28f9`](https://github.com/openzeppelin/openzeppelin-contracts/tree/98d28f9) | OpenZeppelin | v5.2 Changes | [🔗](./2024-12-v5.2.pdf) |
| October 2024 | v5.1.0 | [`aba9ff6`](https://github.com/openzeppelin/openzeppelin-contracts/tree/aba9ff6) | OpenZeppelin | v5.1 Changes | [🔗](./2024-10-v5.1.pdf) |
| October 2023 | v5.0.0 | [`b5a3e69`](https://github.com/openzeppelin/openzeppelin-contracts/tree/b5a3e69) | OpenZeppelin | v5.0 Changes | [🔗](./2023-10-v5.0.pdf) |
| May 2023 | v4.9.0 | [`91df66c`](https://github.com/openzeppelin/openzeppelin-contracts/tree/91df66c) | OpenZeppelin | v4.9 Changes | [🔗](./2023-05-v4.9.pdf) |
| October 2022 | v4.8.0 | [`14f98db`](https://github.com/openzeppelin/openzeppelin-contracts/tree/14f98db) | OpenZeppelin | ERC4626, Checkpoints | [🔗](./2022-10-ERC4626.pdf) [🔗](./2022-10-Checkpoints.pdf) |
| October 2018 | v2.0.0 | [`dac5bcc`](https://github.com/openzeppelin/openzeppelin-contracts/tree/dac5bcc) | LevelK | Everything | [🔗](./2018-10.pdf) |
| March 2017 | v1.0.4 | [`9c5975a`](https://github.com/openzeppelin/openzeppelin-contracts/tree/9c5975a) | New Alchemy | Everything | [🔗](./2017-03.md) |
# Formal Verification

View File

@ -17,7 +17,7 @@ $(DST): FORCE
@cp -r $(SRC) $@
# Update a solidity file in the $DST directory using the corresponding patch
$(DST)/%.sol: FORCE
$(DST)/%.sol: FORCE | $(DST)
@echo Applying patch to $@
@patch -p0 -d $(DST) < $(patsubst $(DST)_%,$(DIFF)/%.patch,$(subst /,_,$@))
@ -31,7 +31,7 @@ $(DIFF): FORCE
@mkdir $@
# Create the patch file by comparing the source and the destination
$(DIFF)/%.patch: FORCE
$(DIFF)/%.patch: FORCE | $(DIFF)
@echo Generating patch $@
@diff -ruN \
$(patsubst $(DIFF)/%.patch,$(SRC)/%,$(subst _,/,$@)) \

View File

@ -2,14 +2,14 @@
These instructions detail the process for running Certora Verification Tool on OpenZeppelin Contracts.
Documentation for CVT and the specification language are available [here](https://certora.atlassian.net/wiki/spaces/CPD/overview).
Documentation for CVT and the specification language is available [here](https://certora.atlassian.net/wiki/spaces/CPD/overview).
## Prerequisites
Follow the [Certora installation guide](https://docs.certora.com/en/latest/docs/user-guide/getting-started/install.html) in order to get the Certora Prover Package and the `solc` executable folder in your path.
> **Note**
> An API Key is required for local testing. Although the prover will run on a Github Actions' CI environment on selected Pull Requests.
> An API Key is required for local testing. Although the prover will run on a GitHub Actions' CI environment on selected Pull Requests.
## Running the verification

View File

@ -0,0 +1,97 @@
--- access/manager/AccessManager.sol 2023-10-05 12:17:09.694051809 -0300
+++ access/manager/AccessManager.sol 2023-10-05 12:26:18.498688718 -0300
@@ -6,7 +6,6 @@
import {IAccessManaged} from "./IAccessManaged.sol";
import {Address} from "../../utils/Address.sol";
import {Context} from "../../utils/Context.sol";
-import {Multicall} from "../../utils/Multicall.sol";
import {Math} from "../../utils/math/Math.sol";
import {Time} from "../../utils/types/Time.sol";
@@ -57,7 +56,8 @@
* mindful of the danger associated with functions such as {{Ownable-renounceOwnership}} or
* {{AccessControl-renounceRole}}.
*/
-contract AccessManager is Context, Multicall, IAccessManager {
+// NOTE: The FV version of this contract doesn't include Multicall because CVL HAVOCs on any `delegatecall`.
+contract AccessManager is Context, IAccessManager {
using Time for *;
// Structure that stores the details for a target contract.
@@ -105,7 +105,7 @@
// Used to identify operations that are currently being executed via {execute}.
// This should be transient storage when supported by the EVM.
- bytes32 private _executionId;
+ bytes32 internal _executionId; // private → internal for FV
/**
* @dev Check that the caller is authorized to perform the operation, following the restrictions encoded in
@@ -253,6 +253,11 @@
_setGrantDelay(roleId, newDelay);
}
+ // Exposed for FV
+ function _getTargetAdminDelayFull(address target) internal view virtual returns (uint32, uint32, uint48) {
+ return _targets[target].adminDelay.getFull();
+ }
+
/**
* @dev Internal version of {grantRole} without access control. Returns true if the role was newly granted.
*
@@ -287,6 +292,11 @@
return newMember;
}
+ // Exposed for FV
+ function _getRoleGrantDelayFull(uint64 roleId) internal view virtual returns (uint32, uint32, uint48) {
+ return _roles[roleId].grantDelay.getFull();
+ }
+
/**
* @dev Internal version of {revokeRole} without access control. This logic is also used by {renounceRole}.
* Returns true if the role was previously granted.
@@ -586,7 +596,7 @@
/**
* @dev Check if the current call is authorized according to admin logic.
*/
- function _checkAuthorized() private {
+ function _checkAuthorized() internal virtual { // private → internal virtual for FV
address caller = _msgSender();
(bool immediate, uint32 delay) = _canCallSelf(caller, _msgData());
if (!immediate) {
@@ -609,7 +619,7 @@
*/
function _getAdminRestrictions(
bytes calldata data
- ) private view returns (bool adminRestricted, uint64 roleAdminId, uint32 executionDelay) {
+ ) internal view returns (bool adminRestricted, uint64 roleAdminId, uint32 executionDelay) { // private → internal for FV
if (data.length < 4) {
return (false, 0, 0);
}
@@ -662,7 +672,7 @@
address caller,
address target,
bytes calldata data
- ) private view returns (bool immediate, uint32 delay) {
+ ) internal view returns (bool immediate, uint32 delay) { // private → internal for FV
if (target == address(this)) {
return _canCallSelf(caller, data);
} else {
@@ -716,14 +726,14 @@
/**
* @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes
*/
- function _checkSelector(bytes calldata data) private pure returns (bytes4) {
+ function _checkSelector(bytes calldata data) internal pure returns (bytes4) { // private → internal for FV
return bytes4(data[0:4]);
}
/**
* @dev Hashing function for execute protection
*/
- function _hashExecutionId(address target, bytes4 selector) private pure returns (bytes32) {
+ function _hashExecutionId(address target, bytes4 selector) internal pure returns (bytes32) { // private → internal for FV
return keccak256(abi.encode(target, selector));
}
}

View File

@ -1,14 +0,0 @@
--- token/ERC721/ERC721.sol 2023-03-07 10:48:47.736822221 +0100
+++ token/ERC721/ERC721.sol 2023-03-09 19:49:39.669338673 +0100
@@ -199,6 +199,11 @@
return _owners[tokenId];
}
+ // FV
+ function _getApproved(uint256 tokenId) internal view returns (address) {
+ return _tokenApprovals[tokenId];
+ }
+
/**
* @dev Returns whether `tokenId` exists.
*

View File

@ -0,0 +1,46 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {AccessControlDefaultAdminRules} from "../patched/access/extensions/AccessControlDefaultAdminRules.sol";
contract AccessControlDefaultAdminRulesHarness is AccessControlDefaultAdminRules {
uint48 private _delayIncreaseWait;
constructor(
uint48 initialDelay,
address initialDefaultAdmin,
uint48 delayIncreaseWait
) AccessControlDefaultAdminRules(initialDelay, initialDefaultAdmin) {
_delayIncreaseWait = delayIncreaseWait;
}
// FV
function pendingDefaultAdmin_() external view returns (address) {
(address newAdmin, ) = pendingDefaultAdmin();
return newAdmin;
}
function pendingDefaultAdminSchedule_() external view returns (uint48) {
(, uint48 schedule) = pendingDefaultAdmin();
return schedule;
}
function pendingDelay_() external view returns (uint48) {
(uint48 newDelay, ) = pendingDefaultAdminDelay();
return newDelay;
}
function pendingDelaySchedule_() external view returns (uint48) {
(, uint48 schedule) = pendingDefaultAdminDelay();
return schedule;
}
function delayChangeWait_(uint48 newDelay) external view returns (uint48) {
return _delayChangeWait(newDelay);
}
// Overrides
function defaultAdminDelayIncreaseWait() public view override returns (uint48) {
return _delayIncreaseWait;
}
}

View File

@ -1,7 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma solidity ^0.8.0;
import "../patched/access/AccessControl.sol";
import {AccessControl} from "../patched/access/AccessControl.sol";
contract AccessControlHarness is AccessControl {}

Some files were not shown because too many files have changed in this diff Show More