web3gbit-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/--broadcast +0 -0
- package/--private-key +0 -0
- package/--rpc-url +0 -0
- package/.github/workflows/test.yml +38 -0
- package/.gitmodules +3 -0
- package/GbitToken_flat.sol +2 -0
- package/GbitToken_flat.solnpx +0 -0
- package/README.md +72 -0
- package/admin-cli.js +413 -0
- package/cache/solidity-files-cache.json +1 -0
- package/foundry.lock +8 -0
- package/foundry.toml +6 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +268 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/foundry.toml +18 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/forge-std/src/Base.sol +48 -0
- package/lib/forge-std/src/Config.sol +60 -0
- package/lib/forge-std/src/LibVariable.sol +477 -0
- package/lib/forge-std/src/Script.sol +28 -0
- package/lib/forge-std/src/StdAssertions.sol +779 -0
- package/lib/forge-std/src/StdChains.sol +295 -0
- package/lib/forge-std/src/StdCheats.sol +825 -0
- package/lib/forge-std/src/StdConfig.sol +632 -0
- package/lib/forge-std/src/StdConstants.sol +30 -0
- package/lib/forge-std/src/StdError.sol +15 -0
- package/lib/forge-std/src/StdInvariant.sol +120 -0
- package/lib/forge-std/src/StdJson.sol +275 -0
- package/lib/forge-std/src/StdMath.sol +47 -0
- package/lib/forge-std/src/StdStorage.sol +475 -0
- package/lib/forge-std/src/StdStyle.sol +333 -0
- package/lib/forge-std/src/StdToml.sol +275 -0
- package/lib/forge-std/src/StdUtils.sol +200 -0
- package/lib/forge-std/src/Test.sol +32 -0
- package/lib/forge-std/src/Vm.sol +2500 -0
- package/lib/forge-std/src/console.sol +1551 -0
- package/lib/forge-std/src/console2.sol +4 -0
- package/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
- package/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
- package/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
- package/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
- package/lib/forge-std/src/safeconsole.sol +13248 -0
- package/lib/forge-std/test/CommonBase.t.sol +44 -0
- package/lib/forge-std/test/Config.t.sol +381 -0
- package/lib/forge-std/test/LibVariable.t.sol +452 -0
- package/lib/forge-std/test/StdAssertions.t.sol +141 -0
- package/lib/forge-std/test/StdChains.t.sol +227 -0
- package/lib/forge-std/test/StdCheats.t.sol +638 -0
- package/lib/forge-std/test/StdConstants.t.sol +38 -0
- package/lib/forge-std/test/StdError.t.sol +119 -0
- package/lib/forge-std/test/StdJson.t.sol +49 -0
- package/lib/forge-std/test/StdMath.t.sol +202 -0
- package/lib/forge-std/test/StdStorage.t.sol +485 -0
- package/lib/forge-std/test/StdStyle.t.sol +110 -0
- package/lib/forge-std/test/StdToml.t.sol +49 -0
- package/lib/forge-std/test/StdUtils.t.sol +342 -0
- package/lib/forge-std/test/Vm.t.sol +18 -0
- package/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
- package/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/lib/forge-std/test/fixtures/config.toml +81 -0
- package/lib/forge-std/test/fixtures/test.json +8 -0
- package/lib/forge-std/test/fixtures/test.toml +6 -0
- package/lib/openzeppelin-contracts/.changeset/blue-mirrors-agree.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/bright-webs-create.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/clean-worlds-end.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.changeset/curly-pandas-flow.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/flat-ideas-count.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/fluffy-facts-brake.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/forty-ads-design.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/full-emus-hear.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/fuzzy-lizards-do.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/grumpy-cats-brake.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/khaki-crews-join.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/new-socks-deny.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/shaky-phones-mix.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/social-tools-sniff.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/spotty-plums-brush.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/stale-lizards-cheat.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/swift-planets-juggle.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/tame-monkeys-make.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/tender-pans-yawn.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/thick-banks-relate.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/vast-worlds-pull.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/whole-turkeys-swim.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/yellow-clowns-mate.md +5 -0
- package/lib/openzeppelin-contracts/.changeset/young-corners-help.md +5 -0
- package/lib/openzeppelin-contracts/.codecov.yml +16 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.gitattributes +3 -0
- package/lib/openzeppelin-contracts/.github/CODEOWNERS +10 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +51 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +108 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +57 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +132 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +63 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +212 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-upgradeable.yml +95 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +35 -0
- package/lib/openzeppelin-contracts/.gitmodules +10 -0
- package/lib/openzeppelin-contracts/.husky/pre-commit +2 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +21 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +1364 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/FUNDING.json +10 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +170 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +122 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +43 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2024-10-v5.1.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2024-12-v5.2.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-04-v5.3.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-07-v5.4.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2025-10-v5.5.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +22 -0
- package/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +207 -0
- package/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +98 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +67 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +45 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sol +372 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol +81 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +192 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManager.sol +741 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sol +36 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sol +403 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAuthority.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/account/Account.sol +151 -0
- package/lib/openzeppelin-contracts/contracts/account/README.adoc +30 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579.sol +420 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579Hooked.sol +107 -0
- package/lib/openzeppelin-contracts/contracts/account/extensions/draft-ERC7821.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/EIP7702Utils.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC4337Utils.sol +279 -0
- package/lib/openzeppelin-contracts/contracts/account/utils/draft-ERC7579Utils.sol +280 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/CrosschainLinked.sol +108 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/ERC7786Recipient.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/README.adoc +29 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC20.sol +36 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC20Core.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/crosschain/bridges/BridgeERC7802.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +160 -0
- package/lib/openzeppelin-contracts/contracts/finance/VestingWalletCliff.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/governance/Governor.sol +819 -0
- package/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +454 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +197 -0
- package/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +470 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingFractional.sol +190 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingOverridable.sol +222 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +96 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorNoncesKeyed.sol +91 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +92 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalGuardian.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSequentialProposalId.sol +75 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +106 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sol +134 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSuperQuorum.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sol +346 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +165 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +167 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +63 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +113 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +60 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +253 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/VotesExtended.sol +85 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +41 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +230 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC6909.sol +125 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC7751.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +200 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC7913.sol +18 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +138 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC4337.sol +255 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol +162 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7579.sol +227 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7674.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7786.sol +64 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7802.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC7821.sol +44 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sol +372 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AccessManagedTarget.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AccessManagerMock.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +171 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AuthorityMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/BatchCaller.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +106 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ConstructorMock.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165Mock.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +53 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MerkleProofCustomHashMock.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MerkleTreeMock.sol +52 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MulticallHelper.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +131 -0
- package/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyTransientMock.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +49 -0
- package/lib/openzeppelin-contracts/contracts/mocks/Stateless.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +87 -0
- package/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/TransientSlotMock.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/UpgradeableBeaconMock.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/VotesExtendedMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/AccountMock.sol +181 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/modules/ERC7579Mock.sol +128 -0
- package/lib/openzeppelin-contracts/contracts/mocks/account/utils/ERC7579UtilsMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +174 -0
- package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786GatewayMock.sol +56 -0
- package/lib/openzeppelin-contracts/contracts/mocks/crosschain/ERC7786RecipientMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/AccessManagerEnumerable.sol +161 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC20WithAutoMinerReward.sol +22 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +109 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/MyNFT.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintBase.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintMissing.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintOnlyRole.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlModified.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessManagedERC20MintBase.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/MyContractOwnable.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyAccountEIP7702.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/account/MyFactoryAccount.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +80 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/GameItems.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC1155/MyERC115HolderContract.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC20/GLDToken.sol +11 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC6909/ERC6909GameItems.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/token/ERC721/GameItem.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Base64NFT.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/utilities/Multicall.sol +15 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCountingOverridableMock.sol +18 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorFractionalMock.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorNoncesKeyedMock.sol +44 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorProposalGuardianMock.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSequentialProposalIdMock.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorStorageMock.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorSuperQuorumMock.sol +95 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockAccessMock.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVotesSuperQuorumFractionMock.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +11 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/ERC1967ProxyUnsafe.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +74 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ForceApproveMock.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363NoReturnMock.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReceiverMock.sol +52 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363ReturnFalseMock.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1363SpenderMock.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol +10 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20BridgeableMock.sol +30 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20GetterHelper.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +30 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Reentrant.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesAdditionalCheckpointsMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +253 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesTimestampMock.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626LimitsMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626Mock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/utils/cryptography/ERC7739Mock.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +294 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol +177 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +57 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +45 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +118 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +238 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +148 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +416 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +123 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +88 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +58 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol +88 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +305 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +81 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC1363.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Crosschain.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +77 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +89 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +315 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Bridgeable.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20TemporaryApproval.sol +119 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/ERC1363Utils.sol +95 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +280 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/ERC6909.sol +224 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/README.adoc +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909ContentURI.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909Metadata.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC6909/extensions/ERC6909TokenSupply.sol +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +433 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +69 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +176 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +165 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +62 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +102 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sol +50 -0
- package/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +139 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/Address.sol +167 -0
- package/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +888 -0
- package/lib/openzeppelin-contracts/contracts/utils/Base58.sol +240 -0
- package/lib/openzeppelin-contracts/contracts/utils/Base64.sol +234 -0
- package/lib/openzeppelin-contracts/contracts/utils/Blockhash.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/utils/Bytes.sol +332 -0
- package/lib/openzeppelin-contracts/contracts/utils/CAIP10.sol +54 -0
- package/lib/openzeppelin-contracts/contracts/utils/CAIP2.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/utils/Calldata.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/Comparators.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/utils/Context.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/utils/Create2.sol +91 -0
- package/lib/openzeppelin-contracts/contracts/utils/Errors.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol +127 -0
- package/lib/openzeppelin-contracts/contracts/utils/Memory.sol +146 -0
- package/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/utils/Nonces.sol +46 -0
- package/lib/openzeppelin-contracts/contracts/utils/NoncesKeyed.sol +74 -0
- package/lib/openzeppelin-contracts/contracts/utils/Packing.sol +1656 -0
- package/lib/openzeppelin-contracts/contracts/utils/Panic.sol +57 -0
- package/lib/openzeppelin-contracts/contracts/utils/Pausable.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +160 -0
- package/lib/openzeppelin-contracts/contracts/utils/RLP.sol +476 -0
- package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol +119 -0
- package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol +84 -0
- package/lib/openzeppelin-contracts/contracts/utils/RelayedCall.sol +133 -0
- package/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +122 -0
- package/lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol +155 -0
- package/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +143 -0
- package/lib/openzeppelin-contracts/contracts/utils/Strings.sol +508 -0
- package/lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol +183 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +284 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +160 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/Hashes.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +510 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol +228 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/P256.sol +408 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/README.adoc +76 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/RSA.sol +154 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +191 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/TrieProof.sol +230 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/WebAuthn.sol +261 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-ERC7739Utils.sol +207 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/AbstractSigner.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913.sol +259 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913Weighted.sol +208 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerECDSA.sol +56 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerEIP7702.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerERC7913.sol +63 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerP256.sol +64 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerRSA.sol +65 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerWebAuthn.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/signers/draft-ERC7739.sol +98 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913WebAuthnVerifier.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/utils/draft-InteroperableAddress.sol +235 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +142 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +763 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +1162 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +68 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Accumulators.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +60 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol +833 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol +152 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +237 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +1443 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +895 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Heap.sol +259 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/MerkleTree.sol +267 -0
- package/lib/openzeppelin-contracts/contracts/utils/types/Time.sol +133 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-control-multiple.svg +97 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager-functions.svg +47 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/access-manager.svg +99 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +29 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +339 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/account-abstraction.adoc +100 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/accounts.adoc +354 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +50 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/eoa-delegation.adoc +143 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +118 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +67 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc6909.adoc +47 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +58 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +51 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +242 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +100 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/multisig.adoc +308 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +634 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +141 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +88 -0
- package/lib/openzeppelin-contracts/eslint.config.mjs +29 -0
- package/lib/openzeppelin-contracts/foundry.toml +20 -0
- package/lib/openzeppelin-contracts/fv/Makefile +54 -0
- package/lib/openzeppelin-contracts/fv/README.md +60 -0
- package/lib/openzeppelin-contracts/fv/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/fv/diff/account_extensions_draft-AccountERC7579.sol.patch +25 -0
- package/lib/openzeppelin-contracts/fv/diff/token_ERC721_ERC721.sol.patch +11 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessControlDefaultAdminRulesHarness.sol +46 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessControlHarness.sol +6 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessManagedHarness.sol +36 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccessManagerHarness.sol +116 -0
- package/lib/openzeppelin-contracts/fv/harnesses/AccountHarness.sol +60 -0
- package/lib/openzeppelin-contracts/fv/harnesses/DoubleEndedQueueHarness.sol +58 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20FlashMintHarness.sol +36 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20PermitHarness.sol +16 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC20WrapperHarness.sol +22 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC3156FlashBorrowerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC721Harness.sol +37 -0
- package/lib/openzeppelin-contracts/fv/harnesses/ERC721ReceiverHarness.sol +11 -0
- package/lib/openzeppelin-contracts/fv/harnesses/EnumerableMapHarness.sol +55 -0
- package/lib/openzeppelin-contracts/fv/harnesses/EnumerableSetHarness.sol +35 -0
- package/lib/openzeppelin-contracts/fv/harnesses/InitializableHarness.sol +23 -0
- package/lib/openzeppelin-contracts/fv/harnesses/NoncesHarness.sol +14 -0
- package/lib/openzeppelin-contracts/fv/harnesses/Ownable2StepHarness.sol +10 -0
- package/lib/openzeppelin-contracts/fv/harnesses/OwnableHarness.sol +10 -0
- package/lib/openzeppelin-contracts/fv/harnesses/PausableHarness.sol +18 -0
- package/lib/openzeppelin-contracts/fv/harnesses/TimelockControllerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/fv/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/fv/run.js +68 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControl.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControlDefaultAdminRules.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessControlDefaultAdminRules.spec +467 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManaged.conf +14 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManaged.spec +49 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManager.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/AccessManager.spec +837 -0
- package/lib/openzeppelin-contracts/fv/specs/Account.conf +9 -0
- package/lib/openzeppelin-contracts/fv/specs/Account.spec +490 -0
- package/lib/openzeppelin-contracts/fv/specs/DoubleEndedQueue.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20.conf +9 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20FlashMint.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20Wrapper.conf +13 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC20Wrapper.spec +226 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC721.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/ERC721.spec +695 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableMap.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableMap.spec +364 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableSet.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/EnumerableSet.spec +272 -0
- package/lib/openzeppelin-contracts/fv/specs/Initializable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Initializable.spec +176 -0
- package/lib/openzeppelin-contracts/fv/specs/Nonces.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Nonces.spec +92 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable2Step.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/fv/specs/Pausable.conf +8 -0
- package/lib/openzeppelin-contracts/fv/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/fv/specs/TimelockController.conf +10 -0
- package/lib/openzeppelin-contracts/fv/specs/TimelockController.spec +299 -0
- package/lib/openzeppelin-contracts/fv/specs/helpers/helpers.spec +13 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessManaged.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccessManager.spec +33 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IAccount.spec +34 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/fv/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/fv-requirements.txt +4 -0
- package/lib/openzeppelin-contracts/hardhat/async-test-sanity.js +10 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +29 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/remappings.js +18 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +124 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +11140 -0
- package/lib/openzeppelin-contracts/package.json +108 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +28 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +249 -0
- package/lib/openzeppelin-contracts/scripts/checks/coverage.sh +24 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +39 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +55 -0
- package/lib/openzeppelin-contracts/scripts/checks/pragma-validity.js +45 -0
- package/lib/openzeppelin-contracts/scripts/fetch-common-contracts.js +50 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +81 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/helpers/sanitize.js +5 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +61 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.js +505 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Arrays.opts.js +9 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +242 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +18 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +141 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Enumerable.opts.js +56 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +464 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +470 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.js +186 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/MerkleProof.opts.js +11 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.js +92 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.opts.js +3 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Packing.t.js +48 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +136 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Slot.opts.js +15 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.js +119 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SlotDerivation.t.js +127 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +77 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlotMock.js +57 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlot.js +80 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/TransientSlotMock.js +35 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +34 -0
- package/lib/openzeppelin-contracts/scripts/get-contracts-metadata.js +55 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +7 -0
- package/lib/openzeppelin-contracts/scripts/minimize-pragma.js +140 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/check-upgradeable.sh +27 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/set-max-old-space-size.sh +10 -0
- package/lib/openzeppelin-contracts/scripts/solc-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +118 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +8 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/alias/Initializable.sol +5 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/alias/UUPSUpgradeable.sol +5 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +50 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +390 -0
- package/lib/openzeppelin-contracts/slither.config.json +4 -0
- package/lib/openzeppelin-contracts/solhint.config.js +29 -0
- package/lib/openzeppelin-contracts/test/TESTING.md +3 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +874 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.test.js +19 -0
- package/lib/openzeppelin-contracts/test/access/Ownable.test.js +79 -0
- package/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +102 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlDefaultAdminRules.test.js +32 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlEnumerable.test.js +24 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManaged.test.js +146 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.behavior.js +257 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.predicate.js +456 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.test.js +2489 -0
- package/lib/openzeppelin-contracts/test/access/manager/AuthorityUtils.test.js +112 -0
- package/lib/openzeppelin-contracts/test/account/Account.behavior.js +144 -0
- package/lib/openzeppelin-contracts/test/account/Account.test.js +48 -0
- package/lib/openzeppelin-contracts/test/account/AccountECDSA.test.js +52 -0
- package/lib/openzeppelin-contracts/test/account/AccountEIP7702.t.sol +116 -0
- package/lib/openzeppelin-contracts/test/account/AccountEIP7702.test.js +52 -0
- package/lib/openzeppelin-contracts/test/account/AccountERC7913.test.js +138 -0
- package/lib/openzeppelin-contracts/test/account/AccountMultiSigner.test.js +326 -0
- package/lib/openzeppelin-contracts/test/account/AccountMultiSignerWeighted.test.js +312 -0
- package/lib/openzeppelin-contracts/test/account/AccountP256.test.js +58 -0
- package/lib/openzeppelin-contracts/test/account/AccountRSA.test.js +58 -0
- package/lib/openzeppelin-contracts/test/account/AccountWebAuthn.test.js +88 -0
- package/lib/openzeppelin-contracts/test/account/examples/AccountEIP7702WithModulesMock.test.js +99 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.behavior.js +621 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579.test.js +60 -0
- package/lib/openzeppelin-contracts/test/account/extensions/AccountERC7579Hooked.test.js +60 -0
- package/lib/openzeppelin-contracts/test/account/extensions/ERC7821.behavior.js +145 -0
- package/lib/openzeppelin-contracts/test/account/utils/EIP7702Utils.test.js +53 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC4337Utils.test.js +594 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.t.sol +434 -0
- package/lib/openzeppelin-contracts/test/account/utils/draft-ERC7579Utils.test.js +399 -0
- package/lib/openzeppelin-contracts/test/crosschain/BridgeERC20.behavior.js +163 -0
- package/lib/openzeppelin-contracts/test/crosschain/BridgeERC20.test.js +46 -0
- package/lib/openzeppelin-contracts/test/crosschain/ERC7786Recipient.test.js +73 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +87 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +65 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWalletCliff.test.js +70 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.t.sol +59 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.test.js +980 -0
- package/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +1279 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingFractional.test.js +248 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorCountingOverridable.test.js +346 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +131 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorNoncesKeyed.test.js +243 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +185 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorProposalGuardian.test.js +132 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSequentialProposalId.test.js +202 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorStorage.test.js +175 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorum.test.js +168 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorSuperQuorumGreaterThanQuorum.t.sol +83 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockAccess.test.js +864 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +448 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +504 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +165 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesSuperQuorumFraction.test.js +160 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +245 -0
- package/lib/openzeppelin-contracts/test/governance/utils/ERC6372.behavior.js +28 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +325 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +102 -0
- package/lib/openzeppelin-contracts/test/governance/utils/VotesExtended.test.js +152 -0
- package/lib/openzeppelin-contracts/test/helpers/access-manager.js +85 -0
- package/lib/openzeppelin-contracts/test/helpers/account.js +16 -0
- package/lib/openzeppelin-contracts/test/helpers/chains.js +56 -0
- package/lib/openzeppelin-contracts/test/helpers/constants.js +7 -0
- package/lib/openzeppelin-contracts/test/helpers/deploy.js +14 -0
- package/lib/openzeppelin-contracts/test/helpers/eip712-types.js +61 -0
- package/lib/openzeppelin-contracts/test/helpers/eip712.js +45 -0
- package/lib/openzeppelin-contracts/test/helpers/enums.js +15 -0
- package/lib/openzeppelin-contracts/test/helpers/erc4337.js +244 -0
- package/lib/openzeppelin-contracts/test/helpers/erc7579.js +58 -0
- package/lib/openzeppelin-contracts/test/helpers/erc7739.js +118 -0
- package/lib/openzeppelin-contracts/test/helpers/governance.js +218 -0
- package/lib/openzeppelin-contracts/test/helpers/iterate.js +41 -0
- package/lib/openzeppelin-contracts/test/helpers/math.js +33 -0
- package/lib/openzeppelin-contracts/test/helpers/methods.js +14 -0
- package/lib/openzeppelin-contracts/test/helpers/precompiles.js +12 -0
- package/lib/openzeppelin-contracts/test/helpers/random.js +26 -0
- package/lib/openzeppelin-contracts/test/helpers/signers.js +222 -0
- package/lib/openzeppelin-contracts/test/helpers/storage.js +48 -0
- package/lib/openzeppelin-contracts/test/helpers/strings.js +5 -0
- package/lib/openzeppelin-contracts/test/helpers/time.js +33 -0
- package/lib/openzeppelin-contracts/test/helpers/trie.js +79 -0
- package/lib/openzeppelin-contracts/test/helpers/txpool.js +28 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +109 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.t.sol +279 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.test.js +384 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +160 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.t.sol +91 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.test.js +177 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +36 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Utils.test.js +162 -0
- package/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +198 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +141 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +55 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +82 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +367 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +28 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +216 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +120 -0
- package/lib/openzeppelin-contracts/test/sanity.test.js +27 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +865 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +258 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +66 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +105 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +119 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +70 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +56 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Utils.test.js +299 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +269 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +199 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC1363.test.js +370 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +105 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +55 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Crosschain.test.js +83 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +164 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +129 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Permit.test.js +109 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +546 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +203 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +41 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +888 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20Bridgeable.test.js +89 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20TemporaryApproval.test.js +142 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +463 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.behavior.js +216 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/ERC6909.test.js +104 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909ContentURI.test.js +52 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909Metadata.test.js +62 -0
- package/lib/openzeppelin-contracts/test/token/ERC6909/extensions/ERC6909TokenSupply.test.js +56 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +954 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +23 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +28 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +77 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +187 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +228 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +81 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +57 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +134 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +194 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +201 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +20 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Utils.test.js +94 -0
- package/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +152 -0
- package/lib/openzeppelin-contracts/test/utils/Address.test.js +332 -0
- package/lib/openzeppelin-contracts/test/utils/Arrays.t.sol +416 -0
- package/lib/openzeppelin-contracts/test/utils/Arrays.test.js +284 -0
- package/lib/openzeppelin-contracts/test/utils/Base58.t.sol +24 -0
- package/lib/openzeppelin-contracts/test/utils/Base58.test.js +65 -0
- package/lib/openzeppelin-contracts/test/utils/Base64.t.sol +36 -0
- package/lib/openzeppelin-contracts/test/utils/Base64.test.js +79 -0
- package/lib/openzeppelin-contracts/test/utils/Blockhash.t.sol +101 -0
- package/lib/openzeppelin-contracts/test/utils/Blockhash.test.js +59 -0
- package/lib/openzeppelin-contracts/test/utils/Bytes.t.sol +322 -0
- package/lib/openzeppelin-contracts/test/utils/Bytes.test.js +371 -0
- package/lib/openzeppelin-contracts/test/utils/CAIP.test.js +56 -0
- package/lib/openzeppelin-contracts/test/utils/Calldata.test.js +22 -0
- package/lib/openzeppelin-contracts/test/utils/Context.behavior.js +48 -0
- package/lib/openzeppelin-contracts/test/utils/Context.test.js +18 -0
- package/lib/openzeppelin-contracts/test/utils/Create2.t.sol +17 -0
- package/lib/openzeppelin-contracts/test/utils/Create2.test.js +190 -0
- package/lib/openzeppelin-contracts/test/utils/LowLevelCall.test.js +257 -0
- package/lib/openzeppelin-contracts/test/utils/Memory.t.sol +63 -0
- package/lib/openzeppelin-contracts/test/utils/Memory.test.js +106 -0
- package/lib/openzeppelin-contracts/test/utils/Multicall.test.js +72 -0
- package/lib/openzeppelin-contracts/test/utils/Nonces.behavior.js +189 -0
- package/lib/openzeppelin-contracts/test/utils/Nonces.test.js +16 -0
- package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.t.sol +51 -0
- package/lib/openzeppelin-contracts/test/utils/NoncesKeyed.test.js +17 -0
- package/lib/openzeppelin-contracts/test/utils/Packing.t.sol +993 -0
- package/lib/openzeppelin-contracts/test/utils/Packing.test.js +70 -0
- package/lib/openzeppelin-contracts/test/utils/Panic.test.js +37 -0
- package/lib/openzeppelin-contracts/test/utils/Pausable.test.js +90 -0
- package/lib/openzeppelin-contracts/test/utils/RLP.t.sol +144 -0
- package/lib/openzeppelin-contracts/test/utils/RLP.test.js +224 -0
- package/lib/openzeppelin-contracts/test/utils/ReentrancyGuard.test.js +58 -0
- package/lib/openzeppelin-contracts/test/utils/RelayedCall.test.js +217 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +109 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +64 -0
- package/lib/openzeppelin-contracts/test/utils/SlotDerivation.t.sol +248 -0
- package/lib/openzeppelin-contracts/test/utils/SlotDerivation.test.js +58 -0
- package/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +73 -0
- package/lib/openzeppelin-contracts/test/utils/Strings.t.sol +50 -0
- package/lib/openzeppelin-contracts/test/utils/Strings.test.js +360 -0
- package/lib/openzeppelin-contracts/test/utils/TransientSlot.test.js +59 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +322 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +105 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC1271.behavior.js +111 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739.test.js +42 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ERC7739Utils.test.js +203 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +216 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.t.sol +33 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.test.js +149 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/P256.t.sol +45 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/P256.test.js +182 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.helper.js +17 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/RSA.test.js +102 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/SigVer15_186-3.rsp +3850 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +427 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/TrieProof.test.js +659 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/WebAuthn.t.sol +298 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ecdsa_secp256r1_sha256_p1363_test.json +3719 -0
- package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.t.sol +99 -0
- package/lib/openzeppelin-contracts/test/utils/draft-InteroperableAddress.test.js +170 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +18 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +272 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +169 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +370 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.test.js +746 -0
- package/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +159 -0
- package/lib/openzeppelin-contracts/test/utils/math/SignedMath.t.sol +81 -0
- package/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +53 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Accumulators.t.sol +35 -0
- package/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +149 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.t.sol +440 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.test.js +147 -0
- package/lib/openzeppelin-contracts/test/utils/structs/CircularBuffer.test.js +83 -0
- package/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +144 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +214 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +83 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +175 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +66 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Heap.t.sol +74 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Heap.test.js +113 -0
- package/lib/openzeppelin-contracts/test/utils/structs/MerkleTree.test.js +180 -0
- package/lib/openzeppelin-contracts/test/utils/types/Time.test.js +135 -0
- package/lucro.txt +1 -0
- package/out/Base.sol/CommonBase.json +1 -0
- package/out/Base.sol/ScriptBase.json +1 -0
- package/out/Base.sol/TestBase.json +1 -0
- package/out/Context.sol/Context.json +1 -0
- package/out/Counter.s.sol/CounterScript.json +1 -0
- package/out/Counter.sol/Counter.json +1 -0
- package/out/Counter.t.sol/CounterTest.json +1 -0
- package/out/ERC20.sol/ERC20.json +1 -0
- package/out/GbitToken.sol/GbitToken.json +1 -0
- package/out/Guestbook.sol/Guestbook.json +1 -0
- package/out/IERC20.sol/IERC20.json +1 -0
- package/out/IERC20Metadata.sol/IERC20Metadata.json +1 -0
- package/out/IMulticall3.sol/IMulticall3.json +1 -0
- package/out/Script.sol/Script.json +1 -0
- package/out/StdAssertions.sol/StdAssertions.json +1 -0
- package/out/StdChains.sol/StdChains.json +1 -0
- package/out/StdCheats.sol/StdCheats.json +1 -0
- package/out/StdCheats.sol/StdCheatsSafe.json +1 -0
- package/out/StdConstants.sol/StdConstants.json +1 -0
- package/out/StdError.sol/stdError.json +1 -0
- package/out/StdInvariant.sol/StdInvariant.json +1 -0
- package/out/StdJson.sol/stdJson.json +1 -0
- package/out/StdMath.sol/stdMath.json +1 -0
- package/out/StdStorage.sol/stdStorage.json +1 -0
- package/out/StdStorage.sol/stdStorageSafe.json +1 -0
- package/out/StdStyle.sol/StdStyle.json +1 -0
- package/out/StdToml.sol/stdToml.json +1 -0
- package/out/StdUtils.sol/StdUtils.json +1 -0
- package/out/Test.sol/Test.json +1 -0
- package/out/Vm.sol/Vm.json +1 -0
- package/out/Vm.sol/VmSafe.json +1 -0
- package/out/Web3HubCore.sol/Web3HubCore.json +1 -0
- package/out/build-info/8a1d781106536b7b.json +1 -0
- package/out/build-info/aac4797350a36a99.json +1 -0
- package/out/build-info/c34d5a7881e6beba.json +1 -0
- package/out/build-info/ce38d811b8078146.json +1 -0
- package/out/build-info/db34a3531e47e196.json +1 -0
- package/out/console.sol/console.json +1 -0
- package/out/draft-IERC6093.sol/IERC1155Errors.json +1 -0
- package/out/draft-IERC6093.sol/IERC20Errors.json +1 -0
- package/out/draft-IERC6093.sol/IERC721Errors.json +1 -0
- package/out/safeconsole.sol/safeconsole.json +1 -0
- package/package.json +25 -0
- package/remappings.txt +1 -0
- package/script/Counter.s.sol +19 -0
- package/src/Counter.sol +14 -0
- package/src/GbitToken.sol +72 -0
- package/src/Guestbook.sol +28 -0
- package/src/Web3HubCore.sol +42 -0
- package/test/Counter.t.sol +24 -0
package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingOverridable.sol
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorCountingOverridable.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {SignatureChecker} from "../../utils/cryptography/SignatureChecker.sol";
|
|
7
|
+
import {SafeCast} from "../../utils/math/SafeCast.sol";
|
|
8
|
+
import {VotesExtended} from "../utils/VotesExtended.sol";
|
|
9
|
+
import {GovernorVotes} from "./GovernorVotes.sol";
|
|
10
|
+
import {IGovernor, Governor} from "../Governor.sol";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @dev Extension of {Governor} which enables delegators to override the vote of their delegates. This module requires a
|
|
14
|
+
* token that inherits {VotesExtended}.
|
|
15
|
+
*/
|
|
16
|
+
abstract contract GovernorCountingOverridable is GovernorVotes {
|
|
17
|
+
bytes32 public constant OVERRIDE_BALLOT_TYPEHASH =
|
|
18
|
+
keccak256("OverrideBallot(uint256 proposalId,uint8 support,address voter,uint256 nonce,string reason)");
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @dev Supported vote types. Matches Governor Bravo ordering.
|
|
22
|
+
*/
|
|
23
|
+
enum VoteType {
|
|
24
|
+
Against,
|
|
25
|
+
For,
|
|
26
|
+
Abstain
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
struct VoteReceipt {
|
|
30
|
+
uint8 casted; // 0 if vote was not casted. Otherwise: support + 1
|
|
31
|
+
bool hasOverridden;
|
|
32
|
+
uint208 overriddenWeight;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
struct ProposalVote {
|
|
36
|
+
uint256[3] votes;
|
|
37
|
+
mapping(address voter => VoteReceipt) voteReceipt;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// @dev The votes casted by `delegate` were reduced by `weight` after an override vote was casted by the original token holder
|
|
41
|
+
event VoteReduced(address indexed delegate, uint256 proposalId, uint8 support, uint256 weight);
|
|
42
|
+
|
|
43
|
+
/// @dev A delegated vote on `proposalId` was overridden by `weight`
|
|
44
|
+
event OverrideVoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason);
|
|
45
|
+
|
|
46
|
+
error GovernorAlreadyOverriddenVote(address account);
|
|
47
|
+
|
|
48
|
+
mapping(uint256 proposalId => ProposalVote) private _proposalVotes;
|
|
49
|
+
|
|
50
|
+
/// @inheritdoc IGovernor
|
|
51
|
+
// solhint-disable-next-line func-name-mixedcase
|
|
52
|
+
function COUNTING_MODE() public pure virtual override returns (string memory) {
|
|
53
|
+
return "support=bravo,override&quorum=for,abstain&overridable=true";
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @dev See {IGovernor-hasVoted}.
|
|
58
|
+
*
|
|
59
|
+
* NOTE: Calling {castVote} (or similar) casts a vote using the voting power that is delegated to the voter.
|
|
60
|
+
* Conversely, calling {castOverrideVote} (or similar) uses the voting power of the account itself, from its asset
|
|
61
|
+
* balances. Casting an "override vote" does not count as voting and won't be reflected by this getter. Consider
|
|
62
|
+
* using {hasVotedOverride} to check if an account has casted an "override vote" for a given proposal id.
|
|
63
|
+
*/
|
|
64
|
+
function hasVoted(uint256 proposalId, address account) public view virtual override returns (bool) {
|
|
65
|
+
return _proposalVotes[proposalId].voteReceipt[account].casted != 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @dev Check if an `account` has overridden their delegate for a proposal.
|
|
70
|
+
*/
|
|
71
|
+
function hasVotedOverride(uint256 proposalId, address account) public view virtual returns (bool) {
|
|
72
|
+
return _proposalVotes[proposalId].voteReceipt[account].hasOverridden;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @dev Accessor to the internal vote counts.
|
|
77
|
+
*/
|
|
78
|
+
function proposalVotes(
|
|
79
|
+
uint256 proposalId
|
|
80
|
+
) public view virtual returns (uint256 againstVotes, uint256 forVotes, uint256 abstainVotes) {
|
|
81
|
+
uint256[3] storage votes = _proposalVotes[proposalId].votes;
|
|
82
|
+
return (votes[uint8(VoteType.Against)], votes[uint8(VoteType.For)], votes[uint8(VoteType.Abstain)]);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/// @inheritdoc Governor
|
|
86
|
+
function _quorumReached(uint256 proposalId) internal view virtual override returns (bool) {
|
|
87
|
+
uint256[3] storage votes = _proposalVotes[proposalId].votes;
|
|
88
|
+
return quorum(proposalSnapshot(proposalId)) <= votes[uint8(VoteType.For)] + votes[uint8(VoteType.Abstain)];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @dev See {Governor-_voteSucceeded}. In this module, the forVotes must be strictly over the againstVotes.
|
|
93
|
+
*/
|
|
94
|
+
function _voteSucceeded(uint256 proposalId) internal view virtual override returns (bool) {
|
|
95
|
+
uint256[3] storage votes = _proposalVotes[proposalId].votes;
|
|
96
|
+
return votes[uint8(VoteType.For)] > votes[uint8(VoteType.Against)];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @dev See {Governor-_countVote}. In this module, the support follows the `VoteType` enum (from Governor Bravo).
|
|
101
|
+
*
|
|
102
|
+
* NOTE: called by {Governor-_castVote} which emits the {IGovernor-VoteCast} (or {IGovernor-VoteCastWithParams})
|
|
103
|
+
* event.
|
|
104
|
+
*/
|
|
105
|
+
function _countVote(
|
|
106
|
+
uint256 proposalId,
|
|
107
|
+
address account,
|
|
108
|
+
uint8 support,
|
|
109
|
+
uint256 totalWeight,
|
|
110
|
+
bytes memory /*params*/
|
|
111
|
+
) internal virtual override returns (uint256) {
|
|
112
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
113
|
+
|
|
114
|
+
if (support > uint8(VoteType.Abstain)) {
|
|
115
|
+
revert GovernorInvalidVoteType();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (proposalVote.voteReceipt[account].casted != 0) {
|
|
119
|
+
revert GovernorAlreadyCastVote(account);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
totalWeight -= proposalVote.voteReceipt[account].overriddenWeight;
|
|
123
|
+
proposalVote.votes[support] += totalWeight;
|
|
124
|
+
proposalVote.voteReceipt[account].casted = support + 1;
|
|
125
|
+
|
|
126
|
+
return totalWeight;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @dev Variant of {Governor-_countVote} that deals with vote overrides.
|
|
131
|
+
*
|
|
132
|
+
* NOTE: See {hasVoted} for more details about the difference between {castVote} and {castOverrideVote}.
|
|
133
|
+
*/
|
|
134
|
+
function _countOverride(uint256 proposalId, address account, uint8 support) internal virtual returns (uint256) {
|
|
135
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
136
|
+
|
|
137
|
+
if (support > uint8(VoteType.Abstain)) {
|
|
138
|
+
revert GovernorInvalidVoteType();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (proposalVote.voteReceipt[account].hasOverridden) {
|
|
142
|
+
revert GovernorAlreadyOverriddenVote(account);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
uint256 snapshot = proposalSnapshot(proposalId);
|
|
146
|
+
uint256 overriddenWeight = VotesExtended(address(token())).getPastBalanceOf(account, snapshot);
|
|
147
|
+
address delegate = VotesExtended(address(token())).getPastDelegate(account, snapshot);
|
|
148
|
+
uint8 delegateCasted = proposalVote.voteReceipt[delegate].casted;
|
|
149
|
+
|
|
150
|
+
proposalVote.voteReceipt[account].hasOverridden = true;
|
|
151
|
+
proposalVote.votes[support] += overriddenWeight;
|
|
152
|
+
if (delegateCasted == 0) {
|
|
153
|
+
proposalVote.voteReceipt[delegate].overriddenWeight += SafeCast.toUint208(overriddenWeight);
|
|
154
|
+
} else {
|
|
155
|
+
uint8 delegateSupport = delegateCasted - 1;
|
|
156
|
+
proposalVote.votes[delegateSupport] -= overriddenWeight;
|
|
157
|
+
emit VoteReduced(delegate, proposalId, delegateSupport, overriddenWeight);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return overriddenWeight;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/// @dev Variant of {Governor-_castVote} that deals with vote overrides. Returns the overridden weight.
|
|
164
|
+
function _castOverride(
|
|
165
|
+
uint256 proposalId,
|
|
166
|
+
address account,
|
|
167
|
+
uint8 support,
|
|
168
|
+
string calldata reason
|
|
169
|
+
) internal virtual returns (uint256) {
|
|
170
|
+
_validateStateBitmap(proposalId, _encodeStateBitmap(ProposalState.Active));
|
|
171
|
+
|
|
172
|
+
uint256 overriddenWeight = _countOverride(proposalId, account, support);
|
|
173
|
+
|
|
174
|
+
emit OverrideVoteCast(account, proposalId, support, overriddenWeight, reason);
|
|
175
|
+
|
|
176
|
+
_tallyUpdated(proposalId);
|
|
177
|
+
|
|
178
|
+
return overriddenWeight;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/// @dev Public function for casting an override vote. Returns the overridden weight.
|
|
182
|
+
function castOverrideVote(
|
|
183
|
+
uint256 proposalId,
|
|
184
|
+
uint8 support,
|
|
185
|
+
string calldata reason
|
|
186
|
+
) public virtual returns (uint256) {
|
|
187
|
+
address voter = _msgSender();
|
|
188
|
+
return _castOverride(proposalId, voter, support, reason);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/// @dev Public function for casting an override vote using a voter's signature. Returns the overridden weight.
|
|
192
|
+
function castOverrideVoteBySig(
|
|
193
|
+
uint256 proposalId,
|
|
194
|
+
uint8 support,
|
|
195
|
+
address voter,
|
|
196
|
+
string calldata reason,
|
|
197
|
+
bytes calldata signature
|
|
198
|
+
) public virtual returns (uint256) {
|
|
199
|
+
bool valid = SignatureChecker.isValidSignatureNow(
|
|
200
|
+
voter,
|
|
201
|
+
_hashTypedDataV4(
|
|
202
|
+
keccak256(
|
|
203
|
+
abi.encode(
|
|
204
|
+
OVERRIDE_BALLOT_TYPEHASH,
|
|
205
|
+
proposalId,
|
|
206
|
+
support,
|
|
207
|
+
voter,
|
|
208
|
+
_useNonce(voter),
|
|
209
|
+
keccak256(bytes(reason))
|
|
210
|
+
)
|
|
211
|
+
)
|
|
212
|
+
),
|
|
213
|
+
signature
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
if (!valid) {
|
|
217
|
+
revert GovernorInvalidSignature(voter);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return _castOverride(proposalId, voter, support, reason);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorCountingSimple.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {IGovernor, Governor} from "../Governor.sol";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @dev Extension of {Governor} for simple, 3 options, vote counting.
|
|
10
|
+
*/
|
|
11
|
+
abstract contract GovernorCountingSimple is Governor {
|
|
12
|
+
/**
|
|
13
|
+
* @dev Supported vote types. Matches Governor Bravo ordering.
|
|
14
|
+
*/
|
|
15
|
+
enum VoteType {
|
|
16
|
+
Against,
|
|
17
|
+
For,
|
|
18
|
+
Abstain
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
struct ProposalVote {
|
|
22
|
+
uint256 againstVotes;
|
|
23
|
+
uint256 forVotes;
|
|
24
|
+
uint256 abstainVotes;
|
|
25
|
+
mapping(address voter => bool) hasVoted;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
mapping(uint256 proposalId => ProposalVote) private _proposalVotes;
|
|
29
|
+
|
|
30
|
+
/// @inheritdoc IGovernor
|
|
31
|
+
// solhint-disable-next-line func-name-mixedcase
|
|
32
|
+
function COUNTING_MODE() public pure virtual override returns (string memory) {
|
|
33
|
+
return "support=bravo&quorum=for,abstain";
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/// @inheritdoc IGovernor
|
|
37
|
+
function hasVoted(uint256 proposalId, address account) public view virtual override returns (bool) {
|
|
38
|
+
return _proposalVotes[proposalId].hasVoted[account];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @dev Accessor to the internal vote counts.
|
|
43
|
+
*/
|
|
44
|
+
function proposalVotes(
|
|
45
|
+
uint256 proposalId
|
|
46
|
+
) public view virtual returns (uint256 againstVotes, uint256 forVotes, uint256 abstainVotes) {
|
|
47
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
48
|
+
return (proposalVote.againstVotes, proposalVote.forVotes, proposalVote.abstainVotes);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// @inheritdoc Governor
|
|
52
|
+
function _quorumReached(uint256 proposalId) internal view virtual override returns (bool) {
|
|
53
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
54
|
+
|
|
55
|
+
return quorum(proposalSnapshot(proposalId)) <= proposalVote.forVotes + proposalVote.abstainVotes;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @dev See {Governor-_voteSucceeded}. In this module, the forVotes must be strictly over the againstVotes.
|
|
60
|
+
*/
|
|
61
|
+
function _voteSucceeded(uint256 proposalId) internal view virtual override returns (bool) {
|
|
62
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
63
|
+
|
|
64
|
+
return proposalVote.forVotes > proposalVote.againstVotes;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @dev See {Governor-_countVote}. In this module, the support follows the `VoteType` enum (from Governor Bravo).
|
|
69
|
+
*/
|
|
70
|
+
function _countVote(
|
|
71
|
+
uint256 proposalId,
|
|
72
|
+
address account,
|
|
73
|
+
uint8 support,
|
|
74
|
+
uint256 totalWeight,
|
|
75
|
+
bytes memory // params
|
|
76
|
+
) internal virtual override returns (uint256) {
|
|
77
|
+
ProposalVote storage proposalVote = _proposalVotes[proposalId];
|
|
78
|
+
|
|
79
|
+
if (proposalVote.hasVoted[account]) {
|
|
80
|
+
revert GovernorAlreadyCastVote(account);
|
|
81
|
+
}
|
|
82
|
+
proposalVote.hasVoted[account] = true;
|
|
83
|
+
|
|
84
|
+
if (support == uint8(VoteType.Against)) {
|
|
85
|
+
proposalVote.againstVotes += totalWeight;
|
|
86
|
+
} else if (support == uint8(VoteType.For)) {
|
|
87
|
+
proposalVote.forVotes += totalWeight;
|
|
88
|
+
} else if (support == uint8(VoteType.Abstain)) {
|
|
89
|
+
proposalVote.abstainVotes += totalWeight;
|
|
90
|
+
} else {
|
|
91
|
+
revert GovernorInvalidVoteType();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return totalWeight;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorNoncesKeyed.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {Governor} from "../Governor.sol";
|
|
7
|
+
import {Nonces} from "../../utils/Nonces.sol";
|
|
8
|
+
import {NoncesKeyed} from "../../utils/NoncesKeyed.sol";
|
|
9
|
+
import {SignatureChecker} from "../../utils/cryptography/SignatureChecker.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @dev An extension of {Governor} that extends existing nonce management to use {NoncesKeyed}, where the key is the low-order 192 bits of the `proposalId`.
|
|
13
|
+
* This is useful for voting by signature while maintaining separate sequences of nonces for each proposal.
|
|
14
|
+
*
|
|
15
|
+
* NOTE: Traditional (un-keyed) nonces are still supported and can continue to be used as if this extension was not present.
|
|
16
|
+
*/
|
|
17
|
+
abstract contract GovernorNoncesKeyed is Governor, NoncesKeyed {
|
|
18
|
+
function _useCheckedNonce(address owner, uint256 nonce) internal virtual override(Nonces, NoncesKeyed) {
|
|
19
|
+
super._useCheckedNonce(owner, nonce);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @dev Check the signature against keyed nonce and falls back to the traditional nonce.
|
|
24
|
+
*
|
|
25
|
+
* NOTE: This function won't call `super._validateVoteSig` if the keyed nonce is valid.
|
|
26
|
+
* Side effects may be skipped depending on the linearization of the function.
|
|
27
|
+
*/
|
|
28
|
+
function _validateVoteSig(
|
|
29
|
+
uint256 proposalId,
|
|
30
|
+
uint8 support,
|
|
31
|
+
address voter,
|
|
32
|
+
bytes memory signature
|
|
33
|
+
) internal virtual override returns (bool) {
|
|
34
|
+
if (
|
|
35
|
+
SignatureChecker.isValidSignatureNow(
|
|
36
|
+
voter,
|
|
37
|
+
_hashTypedDataV4(
|
|
38
|
+
keccak256(
|
|
39
|
+
abi.encode(BALLOT_TYPEHASH, proposalId, support, voter, nonces(voter, uint192(proposalId)))
|
|
40
|
+
)
|
|
41
|
+
),
|
|
42
|
+
signature
|
|
43
|
+
)
|
|
44
|
+
) {
|
|
45
|
+
_useNonce(voter, uint192(proposalId));
|
|
46
|
+
return true;
|
|
47
|
+
} else {
|
|
48
|
+
return super._validateVoteSig(proposalId, support, voter, signature);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @dev Check the signature against keyed nonce and falls back to the traditional nonce.
|
|
54
|
+
*
|
|
55
|
+
* NOTE: This function won't call `super._validateExtendedVoteSig` if the keyed nonce is valid.
|
|
56
|
+
* Side effects may be skipped depending on the linearization of the function.
|
|
57
|
+
*/
|
|
58
|
+
function _validateExtendedVoteSig(
|
|
59
|
+
uint256 proposalId,
|
|
60
|
+
uint8 support,
|
|
61
|
+
address voter,
|
|
62
|
+
string memory reason,
|
|
63
|
+
bytes memory params,
|
|
64
|
+
bytes memory signature
|
|
65
|
+
) internal virtual override returns (bool) {
|
|
66
|
+
if (
|
|
67
|
+
SignatureChecker.isValidSignatureNow(
|
|
68
|
+
voter,
|
|
69
|
+
_hashTypedDataV4(
|
|
70
|
+
keccak256(
|
|
71
|
+
abi.encode(
|
|
72
|
+
EXTENDED_BALLOT_TYPEHASH,
|
|
73
|
+
proposalId,
|
|
74
|
+
support,
|
|
75
|
+
voter,
|
|
76
|
+
nonces(voter, uint192(proposalId)),
|
|
77
|
+
keccak256(bytes(reason)),
|
|
78
|
+
keccak256(params)
|
|
79
|
+
)
|
|
80
|
+
)
|
|
81
|
+
),
|
|
82
|
+
signature
|
|
83
|
+
)
|
|
84
|
+
) {
|
|
85
|
+
_useNonce(voter, uint192(proposalId));
|
|
86
|
+
return true;
|
|
87
|
+
} else {
|
|
88
|
+
return super._validateExtendedVoteSig(proposalId, support, voter, reason, params, signature);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorPreventLateQuorum.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {Governor} from "../Governor.sol";
|
|
7
|
+
import {Math} from "../../utils/math/Math.sol";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @dev A module that ensures there is a minimum voting period after quorum is reached. This prevents a large voter from
|
|
11
|
+
* swaying a vote and triggering quorum at the last minute, by ensuring there is always time for other voters to react
|
|
12
|
+
* and try to oppose the decision.
|
|
13
|
+
*
|
|
14
|
+
* If a vote causes quorum to be reached, the proposal's voting period may be extended so that it does not end before at
|
|
15
|
+
* least a specified time has passed (the "vote extension" parameter). This parameter can be set through a governance
|
|
16
|
+
* proposal.
|
|
17
|
+
*/
|
|
18
|
+
abstract contract GovernorPreventLateQuorum is Governor {
|
|
19
|
+
uint48 private _voteExtension;
|
|
20
|
+
|
|
21
|
+
mapping(uint256 proposalId => uint48) private _extendedDeadlines;
|
|
22
|
+
|
|
23
|
+
/// @dev Emitted when a proposal deadline is pushed back due to reaching quorum late in its voting period.
|
|
24
|
+
event ProposalExtended(uint256 indexed proposalId, uint64 extendedDeadline);
|
|
25
|
+
|
|
26
|
+
/// @dev Emitted when the {lateQuorumVoteExtension} parameter is changed.
|
|
27
|
+
event LateQuorumVoteExtensionSet(uint64 oldVoteExtension, uint64 newVoteExtension);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @dev Initializes the vote extension parameter: the time in either number of blocks or seconds (depending on the
|
|
31
|
+
* governor clock mode) that is required to pass since the moment a proposal reaches quorum until its voting period
|
|
32
|
+
* ends. If necessary the voting period will be extended beyond the one set during proposal creation.
|
|
33
|
+
*/
|
|
34
|
+
constructor(uint48 initialVoteExtension) {
|
|
35
|
+
_setLateQuorumVoteExtension(initialVoteExtension);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @dev Returns the proposal deadline, which may have been extended beyond that set at proposal creation, if the
|
|
40
|
+
* proposal reached quorum late in the voting period. See {Governor-proposalDeadline}.
|
|
41
|
+
*/
|
|
42
|
+
function proposalDeadline(uint256 proposalId) public view virtual override returns (uint256) {
|
|
43
|
+
return Math.max(super.proposalDeadline(proposalId), _extendedDeadlines[proposalId]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @dev Vote tally updated and detects if it caused quorum to be reached, potentially extending the voting period.
|
|
48
|
+
*
|
|
49
|
+
* May emit a {ProposalExtended} event.
|
|
50
|
+
*/
|
|
51
|
+
function _tallyUpdated(uint256 proposalId) internal virtual override {
|
|
52
|
+
super._tallyUpdated(proposalId);
|
|
53
|
+
if (_extendedDeadlines[proposalId] == 0 && _quorumReached(proposalId)) {
|
|
54
|
+
uint48 extendedDeadline = clock() + lateQuorumVoteExtension();
|
|
55
|
+
|
|
56
|
+
if (extendedDeadline > proposalDeadline(proposalId)) {
|
|
57
|
+
emit ProposalExtended(proposalId, extendedDeadline);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
_extendedDeadlines[proposalId] = extendedDeadline;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @dev Returns the current value of the vote extension parameter: the number of blocks that are required to pass
|
|
66
|
+
* from the time a proposal reaches quorum until its voting period ends.
|
|
67
|
+
*/
|
|
68
|
+
function lateQuorumVoteExtension() public view virtual returns (uint48) {
|
|
69
|
+
return _voteExtension;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @dev Changes the {lateQuorumVoteExtension}. This operation can only be performed by the governance executor,
|
|
74
|
+
* generally through a governance proposal.
|
|
75
|
+
*
|
|
76
|
+
* Emits a {LateQuorumVoteExtensionSet} event.
|
|
77
|
+
*/
|
|
78
|
+
function setLateQuorumVoteExtension(uint48 newVoteExtension) public virtual onlyGovernance {
|
|
79
|
+
_setLateQuorumVoteExtension(newVoteExtension);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @dev Changes the {lateQuorumVoteExtension}. This is an internal function that can be exposed in a public function
|
|
84
|
+
* like {setLateQuorumVoteExtension} if another access control mechanism is needed.
|
|
85
|
+
*
|
|
86
|
+
* Emits a {LateQuorumVoteExtensionSet} event.
|
|
87
|
+
*/
|
|
88
|
+
function _setLateQuorumVoteExtension(uint48 newVoteExtension) internal virtual {
|
|
89
|
+
emit LateQuorumVoteExtensionSet(_voteExtension, newVoteExtension);
|
|
90
|
+
_voteExtension = newVoteExtension;
|
|
91
|
+
}
|
|
92
|
+
}
|
package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalGuardian.sol
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.5.0) (governance/extensions/GovernorProposalGuardian.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {Governor} from "../Governor.sol";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @dev Extension of {Governor} which adds a proposal guardian that can cancel proposals at any stage in the proposal's lifecycle.
|
|
10
|
+
*
|
|
11
|
+
* NOTE: if the proposal guardian is not configured, then proposers take this role for their proposals.
|
|
12
|
+
*/
|
|
13
|
+
abstract contract GovernorProposalGuardian is Governor {
|
|
14
|
+
address private _proposalGuardian;
|
|
15
|
+
|
|
16
|
+
event ProposalGuardianSet(address oldProposalGuardian, address newProposalGuardian);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @dev Getter that returns the address of the proposal guardian.
|
|
20
|
+
*/
|
|
21
|
+
function proposalGuardian() public view virtual returns (address) {
|
|
22
|
+
return _proposalGuardian;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @dev Update the proposal guardian's address. This operation can only be performed through a governance proposal.
|
|
27
|
+
*
|
|
28
|
+
* Emits a {ProposalGuardianSet} event.
|
|
29
|
+
*/
|
|
30
|
+
function setProposalGuardian(address newProposalGuardian) public virtual onlyGovernance {
|
|
31
|
+
_setProposalGuardian(newProposalGuardian);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @dev Internal setter for the proposal guardian.
|
|
36
|
+
*
|
|
37
|
+
* Emits a {ProposalGuardianSet} event.
|
|
38
|
+
*/
|
|
39
|
+
function _setProposalGuardian(address newProposalGuardian) internal virtual {
|
|
40
|
+
emit ProposalGuardianSet(_proposalGuardian, newProposalGuardian);
|
|
41
|
+
_proposalGuardian = newProposalGuardian;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @dev Override {Governor-_validateCancel} to implement the extended cancellation logic.
|
|
46
|
+
*
|
|
47
|
+
* * The {proposalGuardian} can cancel any proposal at any point.
|
|
48
|
+
* * If no proposal guardian is set, the {IGovernor-proposalProposer} can cancel their proposals at any point.
|
|
49
|
+
* * In any case, permissions defined in {Governor-_validateCancel} (or another override) remains valid.
|
|
50
|
+
*/
|
|
51
|
+
function _validateCancel(uint256 proposalId, address caller) internal view virtual override returns (bool) {
|
|
52
|
+
address guardian = proposalGuardian();
|
|
53
|
+
|
|
54
|
+
return
|
|
55
|
+
guardian == caller ||
|
|
56
|
+
(guardian == address(0) && caller == proposalProposer(proposalId)) ||
|
|
57
|
+
super._validateCancel(proposalId, caller);
|
|
58
|
+
}
|
|
59
|
+
}
|
package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSequentialProposalId.sol
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// OpenZeppelin Contracts (last updated v5.4.0) (governance/extensions/GovernorSequentialProposalId.sol)
|
|
3
|
+
|
|
4
|
+
pragma solidity ^0.8.24;
|
|
5
|
+
|
|
6
|
+
import {IGovernor, Governor} from "../Governor.sol";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @dev Extension of {Governor} that changes the numbering of proposal ids from the default hash-based approach to
|
|
10
|
+
* sequential ids.
|
|
11
|
+
*/
|
|
12
|
+
abstract contract GovernorSequentialProposalId is Governor {
|
|
13
|
+
uint256 private _latestProposalId;
|
|
14
|
+
mapping(uint256 proposalHash => uint256 proposalId) private _proposalIds;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @dev The {latestProposalId} may only be initialized if it hasn't been set yet
|
|
18
|
+
* (through initialization or the creation of a proposal).
|
|
19
|
+
*/
|
|
20
|
+
error GovernorAlreadyInitializedLatestProposalId();
|
|
21
|
+
|
|
22
|
+
/// @inheritdoc IGovernor
|
|
23
|
+
function getProposalId(
|
|
24
|
+
address[] memory targets,
|
|
25
|
+
uint256[] memory values,
|
|
26
|
+
bytes[] memory calldatas,
|
|
27
|
+
bytes32 descriptionHash
|
|
28
|
+
) public view virtual override returns (uint256) {
|
|
29
|
+
uint256 proposalHash = hashProposal(targets, values, calldatas, descriptionHash);
|
|
30
|
+
uint256 storedProposalId = _proposalIds[proposalHash];
|
|
31
|
+
if (storedProposalId == 0) {
|
|
32
|
+
revert GovernorNonexistentProposal(0);
|
|
33
|
+
}
|
|
34
|
+
return storedProposalId;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @dev Returns the latest proposal id. A return value of 0 means no proposals have been created yet.
|
|
39
|
+
*/
|
|
40
|
+
function latestProposalId() public view virtual returns (uint256) {
|
|
41
|
+
return _latestProposalId;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @dev See {IGovernor-_propose}.
|
|
46
|
+
* Hook into the proposing mechanism to increment proposal count.
|
|
47
|
+
*/
|
|
48
|
+
function _propose(
|
|
49
|
+
address[] memory targets,
|
|
50
|
+
uint256[] memory values,
|
|
51
|
+
bytes[] memory calldatas,
|
|
52
|
+
string memory description,
|
|
53
|
+
address proposer
|
|
54
|
+
) internal virtual override returns (uint256) {
|
|
55
|
+
uint256 proposalHash = hashProposal(targets, values, calldatas, keccak256(bytes(description)));
|
|
56
|
+
uint256 storedProposalId = _proposalIds[proposalHash];
|
|
57
|
+
if (storedProposalId == 0) {
|
|
58
|
+
_proposalIds[proposalHash] = ++_latestProposalId;
|
|
59
|
+
}
|
|
60
|
+
return super._propose(targets, values, calldatas, description, proposer);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @dev Internal function to set the {latestProposalId}. This function is helpful when transitioning
|
|
65
|
+
* from another governance system. The next proposal id will be `newLatestProposalId` + 1.
|
|
66
|
+
*
|
|
67
|
+
* May only call this function if the current value of {latestProposalId} is 0.
|
|
68
|
+
*/
|
|
69
|
+
function _initializeLatestProposalId(uint256 newLatestProposalId) internal virtual {
|
|
70
|
+
if (_latestProposalId != 0) {
|
|
71
|
+
revert GovernorAlreadyInitializedLatestProposalId();
|
|
72
|
+
}
|
|
73
|
+
_latestProposalId = newLatestProposalId;
|
|
74
|
+
}
|
|
75
|
+
}
|