* add ERC721 and ERC1155 receiver support in Governor, Timelock and MinimalForwarder (#3174)
* revert the nft receiver hooks from MinimalForwarder and linting updates
* add ERC165 support & simplify test
* add changelog entry
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
* allow re-initialization of contracts
* fix lint
* use a private function to avoid code duplication
* use oz-retyped-from syntax
* add documentation
* rephrase
* documentation
* Update contracts/proxy/utils/Initializable.sol
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
* reinitialize test
* lint
* typos and style
* add note about relation between initializer and reinitializer
* lint
* set _initializing in the modifier
* remove unnecessary variable set
* rename _preventInitialize -> _disableInitializers
* rename preventInitialize -> disableInitializers
* test nested reinitializers in reverse order
* docs typos and style
* edit docs for consistency between initializer and reinitializer
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
* replace `immutable` with `constant` for _PERMIT_TYPEHASH
This commit is related to the following issue discussion: https://github.com/OpenZeppelin/contracts-wizard/issues/89#issuecomment-1042391318
Since Solidity version `0.6.12` the `keccak256` of string literals is treated specially and the hash is evaluated at compile time. Since the OpenZeppelin Wizard also uses `constant` for OpenZeppelin's AccessControl's roles declarations, it's good practice to make this consistent.
* Update CHANGELOG
* fix: ensure transpiler compatibility
* fix: fixing var-name-mixedcase
* prettier & lint check
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
* add a protection mechanism to prevent relaying transaction that are not
part of an execute operation
* more accurate relay authorization
* force reset the relay authorizations after executions
* refactor of the onlyGovernor modifier
* only whitelist when executor is not governor itself
* fix lint
* add private function for call permission management
* use deque
* fix lint
* remove unecessary dependency
* remove unecessary dependency
* comment rephrasing
* Update contracts/governance/Governor.sol
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
* cache keccak256(_msgData())
* use Context
* lint
* conditionnal clear
* add test to cover queue.clear()
* lint
* write more extended docs for onlyGovernance
* add changelog entry
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>