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/utils/README.adoc
+14-11
Original file line number
Diff line number
Diff line change
@@ -5,23 +5,20 @@ 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
-
The {Address}, {Arrays}, {Base64} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types.
9
-
{Multicall} provides a function to batch together multiple calls in a single external call.
10
-
11
-
For new data types:
12
-
13
-
* {EnumerableMap}: like Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type, 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`).
14
-
* {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.
8
+
* {ReentrancyGuard}: A modifier that can prevent reentrancy during certain functions.
9
+
* {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.
14
+
* {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
+
* {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.
15
16
16
17
[NOTE]
17
18
====
18
19
Because Solidity does not support generic types, {EnumerableMap} and {EnumerableSet} are specialized to a limited number of key-value types.
19
-
20
-
As of v3.0, {EnumerableMap} supports `uint256 -> address` (`UintToAddressMap`), and {EnumerableSet} supports `address` and `uint256` (`AddressSet` and `UintSet`).
21
20
====
22
21
23
-
Finally, {Create2} contains all necessary utilities to safely use the https://blog.openzeppelin.com/getting-the-most-out-of-create2/[`CREATE2` EVM opcode], without having to deal with low-level assembly.
24
-
25
22
== Math
26
23
27
24
{{Math}}
@@ -42,6 +39,12 @@ Finally, {Create2} contains all necessary utilities to safely use the https://bl
42
39
43
40
{{EIP712}}
44
41
42
+
== Security
43
+
44
+
{{ReentrancyGuard}}
45
+
46
+
{{Pausable}}
47
+
45
48
== Introspection
46
49
47
50
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_.
0 commit comments