You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: contracts/access/README.adoc
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,9 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/
5
5
6
6
This directory provides ways to restrict who can access the functions of a contract or when they can do it.
7
7
8
-
- {AccessControl} provides a general role based access control mechanism. Multiple hierarchical roles can be created and assigned each to multiple accounts.
8
+
- {AccessManager} is a full-fledged access control solution for smart contract systems. Allows creating and assigning multiple hierarchical roles with execution delays for each account across various contracts.
9
+
- {AccessManaged} delegates its access control to an authority that dictates the permissions of the managed contract. It's compatible with an AccessManager as an authority.
10
+
- {AccessControl} provides a per-contract role based access control mechanism. Multiple hierarchical roles can be created and assigned each to multiple accounts within the same instance.
9
11
- {Ownable} is a simpler mechanism with a single owner "role" that can be assigned to a single account. This simpler mechanism can be useful for quick tests but projects with production concerns are likely to outgrow it.
Timelock extensions add a delay for governance decisions to be executed. The workflow is extended to require a `queue` step before execution. With these modules, proposals are executed by the external timelock contract, thus it is the timelock that has to hold the assets that are being governed.
32
32
33
+
* {GovernorTimelockAccess}: Connects with an instance of an {AccessManager}. This allows restrictions (and delays) enforced by the manager to be considered by the Governor and integrated into the AccessManager's "schedule + execute" workflow.
34
+
33
35
* {GovernorTimelockControl}: Connects with an instance of {TimelockController}. Allows multiple proposers and executors, in addition to the Governor itself.
34
36
35
37
* {GovernorTimelockCompound}: Connects with an instance of Compound's https://github.com/compound-finance/compound-protocol/blob/master/contracts/Timelock.sol[`Timelock`] contract.
@@ -66,6 +68,8 @@ NOTE: Functions of the `Governor` contract do not include access control. If you
Copy file name to clipboardExpand all lines: contracts/metatx/README.adoc
+5Lines changed: 5 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,11 @@
3
3
[.readme-notice]
4
4
NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/metatx
5
5
6
+
This directory includes contracts for adding meta-transaction capabilities (i.e. abstracting the execution context from the transaction origin) following the https://eips.ethereum.org/EIPS/eip-2771[ERC-2771 specification].
7
+
8
+
- {ERC2771Context}: Provides a mechanism to override the sender and calldata of the execution context (`msg.sender` and `msg.data`) with a custom value specified by a trusted forwarder.
9
+
- {ERC2771Forwarder}: A production-ready forwarder that relays operation requests signed off-chain by an EOA.
Copy file name to clipboardExpand all lines: contracts/utils/README.adoc
+24-4Lines changed: 24 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -5,14 +5,30 @@ NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/
5
5
6
6
Miscellaneous contracts and libraries containing utility functions you can use to improve security, work with new data types, or safely use low-level primitives.
7
7
8
+
* {Math}, {SignedMath}: Implementation of various arithmetic functions.
9
+
* {SafeCast}: Checked downcasting functions to avoid silent truncation.
10
+
* {ECDSA}, {MessageHashUtils}: Libraries for interacting with ECDSA signatures.
11
+
* {SignatureChecker}: A library helper to support regular ECDSA from EOAs as well as ERC-1271 signatures for smart contracts.
12
+
* {MerkleProof}: Functions for verifying https://en.wikipedia.org/wiki/Merkle_tree[Merkle Tree] proofs.
13
+
* {EIP712}: Contract with functions to allow processing signed typed structure data according to https://eips.ethereum.org/EIPS/eip-712[EIP-712].
8
14
* {ReentrancyGuard}: A modifier that can prevent reentrancy during certain functions.
9
15
* {Pausable}: A common emergency response mechanism that can pause functionality while a remediation is pending.
10
-
* {SafeCast}: Checked downcasting functions to avoid silent truncation.
11
-
* {Math}, {SignedMath}: Implementation of various arithmetic functions.
12
-
* {Multicall}: Simple way to batch together multiple calls in a single external call.
13
-
* {Create2}: Wrapper around the https://blog.openzeppelin.com/getting-the-most-out-of-create2/[`CREATE2` EVM opcode] for safe use without having to deal with low-level assembly.
16
+
* {Nonces}: Utility for tracking and verifying address nonces that only increment.
17
+
* {ERC165, ERC165Checker}: Utilities for inspecting interfaces supported by contracts.
18
+
* {BitMaps}: A simple library to manage boolean value mapped to a numerical index in an efficient way.
14
19
* {EnumerableMap}: A type like Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`], but with key-value _enumeration_: this will let you know how many entries a mapping has, and iterate over them (which is not possible with `mapping`).
15
20
* {EnumerableSet}: Like {EnumerableMap}, but for https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets]. Can be used to store privileged accounts, issued IDs, etc.
21
+
* {DoubleEndedQueue}: An implementation of a https://en.wikipedia.org/wiki/Double-ended_queue[double ended queue] whose values can be removed added or remove from both sides. Useful for FIFO and LIFO structures.
22
+
* {Checkpoints}: A data structure to store values mapped to an strictly increasing key. Can be used for storing and accessing values over time.
23
+
* {Create2}: Wrapper around the https://blog.openzeppelin.com/getting-the-most-out-of-create2/[`CREATE2` EVM opcode] for safe use without having to deal with low-level assembly.
24
+
* {Address}: Collection of functions for overloading Solidity's https://docs.soliditylang.org/en/latest/types.html#address[`address`] type.
25
+
* {Arrays}: Collection of functions that operate on https://docs.soliditylang.org/en/latest/types.html#arrays[`arrays`].
26
+
* {Base64}: On-chain base64 and base64URL encoding according to https://datatracker.ietf.org/doc/html/rfc4648[RFC-4648].
27
+
* {Strings}: Common operations for strings formatting.
28
+
* {ShortString}: Library to encode (and decode) short strings into (or from) a single bytes32 slot for optimizing costs. Short strings are limited to 31 characters.
29
+
* {StorageSlot}: Methods for accessing specific storage slots formatted as common primitive types.
30
+
* {Multicall}: Abstract contract with an utility to allow batching together multiple calls in a single transaction. Useful for allowing EOAs to perform multiple operations at once.
31
+
* {Context}: An utility for abstracting the sender and calldata in the current execution context.
16
32
17
33
[NOTE]
18
34
====
@@ -45,6 +61,8 @@ Because Solidity does not support generic types, {EnumerableMap} and {Enumerable
45
61
46
62
{{Pausable}}
47
63
64
+
{{Nonces}}
65
+
48
66
== Introspection
49
67
50
68
This set of interfaces and contracts deal with https://en.wikipedia.org/wiki/Type_introspection[type introspection] of contracts, that is, examining which functions can be called on them. This is usually referred to as a contract's _interface_.
@@ -86,3 +104,5 @@ Ethereum contracts have no native concept of an interface, so applications must
0 commit comments