@openzeppelin/confidential-contracts 0.2.0-rc.1 → 0.2.0-rc.2

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.
@@ -9,8 +9,8 @@
9
9
  "type": "error"
10
10
  }
11
11
  ],
12
- "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202badf2b27d3126f95b223aabf2129c5cd7d4ec2067b5ad4b9865cdad9fad273b64736f6c634300081d0033",
13
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202badf2b27d3126f95b223aabf2129c5cd7d4ec2067b5ad4b9865cdad9fad273b64736f6c634300081d0033",
12
+ "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fae0bfd796eb509c298d3dbe84db66209673e90a0fef5e9327e8cc01bfdb512364736f6c634300081d0033",
13
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fae0bfd796eb509c298d3dbe84db66209673e90a0fef5e9327e8cc01bfdb512364736f6c634300081d0033",
14
14
  "linkReferences": {},
15
15
  "deployedLinkReferences": {}
16
16
  }
@@ -9,8 +9,8 @@
9
9
  "type": "error"
10
10
  }
11
11
  ],
12
- "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220364ffbf1ba7183f1c16596a69be847e39b8e467761b3ce24b8ce5f16c879b66764736f6c634300081d0033",
13
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220364ffbf1ba7183f1c16596a69be847e39b8e467761b3ce24b8ce5f16c879b66764736f6c634300081d0033",
12
+ "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208d10bbb6df7f7649514536955adf1972a6b98a5041d01dae6110903bae3bd54264736f6c634300081d0033",
13
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208d10bbb6df7f7649514536955adf1972a6b98a5041d01dae6110903bae3bd54264736f6c634300081d0033",
14
14
  "linkReferences": {},
15
15
  "deployedLinkReferences": {}
16
16
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "ConfidentialFungibleTokenUtils",
4
4
  "sourceName": "contracts/token/utils/ConfidentialFungibleTokenUtils.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207957906c4b97065019cfc26811aadbd7c68fb750b8aaa6a2dcaaedd1c6fd049d64736f6c634300081d0033",
7
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207957906c4b97065019cfc26811aadbd7c68fb750b8aaa6a2dcaaedd1c6fd049d64736f6c634300081d0033",
6
+ "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212205cc35163a526cc9f1c44e34cb185c44eb4c490f59215936ad87fe3140963d2bb64736f6c634300081d0033",
7
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212205cc35163a526cc9f1c44e34cb185c44eb4c490f59215936ad87fe3140963d2bb64736f6c634300081d0033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "TFHESafeMath",
4
4
  "sourceName": "contracts/utils/TFHESafeMath.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220a360bdfb9ce166b60c4797a3050030012f08a59e6faec120f3896650e4d97ecc64736f6c634300081d0033",
7
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220a360bdfb9ce166b60c4797a3050030012f08a59e6faec120f3896650e4d97ecc64736f6c634300081d0033",
6
+ "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202db981d102d3bd3880b704612058ffa3febefb18c1373c66a5feb1a1993637a564736f6c634300081d0033",
7
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202db981d102d3bd3880b704612058ffa3febefb18c1373c66a5feb1a1993637a564736f6c634300081d0033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -0,0 +1,290 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "VestingWalletConfidentialFactory",
4
+ "sourceName": "contracts/finance/VestingWalletConfidentialFactory.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "FailedDeployment",
9
+ "type": "error"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "balance",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "needed",
21
+ "type": "uint256"
22
+ }
23
+ ],
24
+ "name": "InsufficientBalance",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "address",
31
+ "name": "owner",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "OwnableInvalidOwner",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [
40
+ {
41
+ "internalType": "uint64",
42
+ "name": "cliffSeconds",
43
+ "type": "uint64"
44
+ },
45
+ {
46
+ "internalType": "uint64",
47
+ "name": "durationSeconds",
48
+ "type": "uint64"
49
+ }
50
+ ],
51
+ "name": "VestingWalletCliffConfidentialInvalidCliffDuration",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "anonymous": false,
56
+ "inputs": [
57
+ {
58
+ "indexed": true,
59
+ "internalType": "address",
60
+ "name": "vestingWalletConfidential",
61
+ "type": "address"
62
+ },
63
+ {
64
+ "indexed": true,
65
+ "internalType": "address",
66
+ "name": "beneficiary",
67
+ "type": "address"
68
+ },
69
+ {
70
+ "indexed": false,
71
+ "internalType": "uint48",
72
+ "name": "startTimestamp",
73
+ "type": "uint48"
74
+ },
75
+ {
76
+ "indexed": false,
77
+ "internalType": "uint48",
78
+ "name": "durationSeconds",
79
+ "type": "uint48"
80
+ },
81
+ {
82
+ "indexed": false,
83
+ "internalType": "uint48",
84
+ "name": "cliffSeconds",
85
+ "type": "uint48"
86
+ },
87
+ {
88
+ "indexed": true,
89
+ "internalType": "address",
90
+ "name": "executor",
91
+ "type": "address"
92
+ }
93
+ ],
94
+ "name": "VestingWalletConfidentialCreated",
95
+ "type": "event"
96
+ },
97
+ {
98
+ "anonymous": false,
99
+ "inputs": [
100
+ {
101
+ "indexed": true,
102
+ "internalType": "address",
103
+ "name": "vestingWalletConfidential",
104
+ "type": "address"
105
+ },
106
+ {
107
+ "indexed": true,
108
+ "internalType": "address",
109
+ "name": "beneficiary",
110
+ "type": "address"
111
+ },
112
+ {
113
+ "indexed": true,
114
+ "internalType": "address",
115
+ "name": "confidentialFungibleToken",
116
+ "type": "address"
117
+ },
118
+ {
119
+ "indexed": false,
120
+ "internalType": "euint64",
121
+ "name": "encryptedAmount",
122
+ "type": "bytes32"
123
+ },
124
+ {
125
+ "indexed": false,
126
+ "internalType": "uint48",
127
+ "name": "startTimestamp",
128
+ "type": "uint48"
129
+ },
130
+ {
131
+ "indexed": false,
132
+ "internalType": "uint48",
133
+ "name": "durationSeconds",
134
+ "type": "uint48"
135
+ },
136
+ {
137
+ "indexed": false,
138
+ "internalType": "uint48",
139
+ "name": "cliffSeconds",
140
+ "type": "uint48"
141
+ },
142
+ {
143
+ "indexed": false,
144
+ "internalType": "address",
145
+ "name": "executor",
146
+ "type": "address"
147
+ }
148
+ ],
149
+ "name": "VestingWalletConfidentialFunded",
150
+ "type": "event"
151
+ },
152
+ {
153
+ "inputs": [
154
+ {
155
+ "internalType": "address",
156
+ "name": "confidentialFungibleToken",
157
+ "type": "address"
158
+ },
159
+ {
160
+ "components": [
161
+ {
162
+ "internalType": "address",
163
+ "name": "beneficiary",
164
+ "type": "address"
165
+ },
166
+ {
167
+ "internalType": "externalEuint64",
168
+ "name": "encryptedAmount",
169
+ "type": "bytes32"
170
+ },
171
+ {
172
+ "internalType": "uint48",
173
+ "name": "startTimestamp",
174
+ "type": "uint48"
175
+ },
176
+ {
177
+ "internalType": "uint48",
178
+ "name": "durationSeconds",
179
+ "type": "uint48"
180
+ },
181
+ {
182
+ "internalType": "uint48",
183
+ "name": "cliffSeconds",
184
+ "type": "uint48"
185
+ }
186
+ ],
187
+ "internalType": "struct VestingWalletConfidentialFactory.VestingPlan[]",
188
+ "name": "vestingPlans",
189
+ "type": "tuple[]"
190
+ },
191
+ {
192
+ "internalType": "address",
193
+ "name": "executor",
194
+ "type": "address"
195
+ },
196
+ {
197
+ "internalType": "bytes",
198
+ "name": "inputProof",
199
+ "type": "bytes"
200
+ }
201
+ ],
202
+ "name": "batchFundVestingWalletConfidential",
203
+ "outputs": [],
204
+ "stateMutability": "nonpayable",
205
+ "type": "function"
206
+ },
207
+ {
208
+ "inputs": [
209
+ {
210
+ "internalType": "address",
211
+ "name": "beneficiary",
212
+ "type": "address"
213
+ },
214
+ {
215
+ "internalType": "uint48",
216
+ "name": "startTimestamp",
217
+ "type": "uint48"
218
+ },
219
+ {
220
+ "internalType": "uint48",
221
+ "name": "durationSeconds",
222
+ "type": "uint48"
223
+ },
224
+ {
225
+ "internalType": "uint48",
226
+ "name": "cliffSeconds",
227
+ "type": "uint48"
228
+ },
229
+ {
230
+ "internalType": "address",
231
+ "name": "executor",
232
+ "type": "address"
233
+ }
234
+ ],
235
+ "name": "createVestingWalletConfidential",
236
+ "outputs": [
237
+ {
238
+ "internalType": "address",
239
+ "name": "",
240
+ "type": "address"
241
+ }
242
+ ],
243
+ "stateMutability": "nonpayable",
244
+ "type": "function"
245
+ },
246
+ {
247
+ "inputs": [
248
+ {
249
+ "internalType": "address",
250
+ "name": "beneficiary",
251
+ "type": "address"
252
+ },
253
+ {
254
+ "internalType": "uint48",
255
+ "name": "startTimestamp",
256
+ "type": "uint48"
257
+ },
258
+ {
259
+ "internalType": "uint48",
260
+ "name": "durationSeconds",
261
+ "type": "uint48"
262
+ },
263
+ {
264
+ "internalType": "uint48",
265
+ "name": "cliffSeconds",
266
+ "type": "uint48"
267
+ },
268
+ {
269
+ "internalType": "address",
270
+ "name": "executor",
271
+ "type": "address"
272
+ }
273
+ ],
274
+ "name": "predictVestingWalletConfidential",
275
+ "outputs": [
276
+ {
277
+ "internalType": "address",
278
+ "name": "",
279
+ "type": "address"
280
+ }
281
+ ],
282
+ "stateMutability": "view",
283
+ "type": "function"
284
+ }
285
+ ],
286
+ "bytecode": "0x",
287
+ "deployedBytecode": "0x",
288
+ "linkReferences": {},
289
+ "deployedLinkReferences": {}
290
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (finance/ERC7821WithExecutor.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (finance/ERC7821WithExecutor.sol)
3
3
  pragma solidity ^0.8.20;
4
4
 
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (finance/VestingWalletCliffConfidential.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (finance/VestingWalletCliffConfidential.sol)
3
3
  pragma solidity ^0.8.27;
4
4
 
5
5
  import {euint128} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (finance/VestingWalletConfidential.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (finance/VestingWalletConfidential.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {FHE, ebool, euint64, euint128} from "@fhevm/solidity/lib/FHE.sol";
@@ -83,7 +83,7 @@ abstract contract VestingWalletConfidential is OwnableUpgradeable, ReentrancyGua
83
83
  emit VestingWalletConfidentialTokenReleased(token, amountSent);
84
84
  }
85
85
 
86
- /// @dev Calculates the amount of tokens that has already vested. Default implementation is a linear vesting curve.
86
+ /// @dev Calculates the amount of tokens that have already vested. Default implementation is a linear vesting curve.
87
87
  function vestedAmount(address token, uint64 timestamp) public virtual returns (euint128) {
88
88
  return
89
89
  _vestingSchedule(
@@ -1,22 +1,20 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (finance/VestingWalletCliffExecutorConfidentialFactory.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (finance/VestingWalletConfidentialFactory.sol)
3
3
  pragma solidity ^0.8.27;
4
4
 
5
5
  import {FHE, euint64, externalEuint64, euint128} from "@fhevm/solidity/lib/FHE.sol";
6
6
  import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
7
7
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
8
8
  import {IConfidentialFungibleToken} from "./../interfaces/IConfidentialFungibleToken.sol";
9
- import {ERC7821WithExecutor} from "./ERC7821WithExecutor.sol";
10
9
  import {VestingWalletCliffConfidential} from "./VestingWalletCliffConfidential.sol";
11
- import {VestingWalletConfidential} from "./VestingWalletConfidential.sol";
12
10
 
13
11
  /**
14
- * @dev This factory enables creating {VestingWalletCliffExecutorConfidential} in batch.
12
+ * @dev A factory which enables batch funding of vesting wallets.
15
13
  *
16
- * Confidential vesting wallets created inherit both {VestingWalletCliffConfidential} for vesting cliffs
17
- * and {ERC7821WithExecutor} to allow for arbitrary calls to be executed from the vesting wallet.
14
+ * The {_deployVestingWalletImplementation} and {_initializeVestingWallet} functions remain unimplemented
15
+ * to allow for custom implementations of the vesting wallet to be used.
18
16
  */
19
- contract VestingWalletCliffExecutorConfidentialFactory {
17
+ abstract contract VestingWalletConfidentialFactory {
20
18
  struct VestingPlan {
21
19
  address beneficiary;
22
20
  externalEuint64 encryptedAmount;
@@ -25,7 +23,7 @@ contract VestingWalletCliffExecutorConfidentialFactory {
25
23
  uint48 cliffSeconds;
26
24
  }
27
25
 
28
- address private immutable _vestingImplementation = address(new VestingWalletCliffExecutorConfidential());
26
+ address private immutable _vestingImplementation;
29
27
 
30
28
  event VestingWalletConfidentialFunded(
31
29
  address indexed vestingWalletConfidential,
@@ -46,6 +44,10 @@ contract VestingWalletCliffExecutorConfidentialFactory {
46
44
  address indexed executor
47
45
  );
48
46
 
47
+ constructor() {
48
+ _vestingImplementation = _deployVestingWalletImplementation();
49
+ }
50
+
49
51
  /**
50
52
  * @dev Batches the funding of multiple confidential vesting wallets.
51
53
  *
@@ -128,7 +130,8 @@ contract VestingWalletCliffExecutorConfidentialFactory {
128
130
  executor
129
131
  )
130
132
  );
131
- VestingWalletCliffExecutorConfidential(vestingWalletConfidentialAddress).initialize(
133
+ _initializeVestingWallet(
134
+ vestingWalletConfidentialAddress,
132
135
  beneficiary,
133
136
  startTimestamp,
134
137
  durationSeconds,
@@ -147,7 +150,7 @@ contract VestingWalletCliffExecutorConfidentialFactory {
147
150
  }
148
151
 
149
152
  /**
150
- * @dev Predicts deterministic address for a confidential vesting wallet.
153
+ * @dev Predicts the deterministic address for a confidential vesting wallet.
151
154
  */
152
155
  function predictVestingWalletConfidential(
153
156
  address beneficiary,
@@ -169,35 +172,33 @@ contract VestingWalletCliffExecutorConfidentialFactory {
169
172
  );
170
173
  }
171
174
 
172
- /**
173
- * @dev Gets create2 salt for a confidential vesting wallet.
174
- */
175
- function _getCreate2VestingWalletConfidentialSalt(
175
+ /// @dev Virtual function that must be implemented to initialize the vesting wallet at `vestingWalletAddress`.
176
+ function _initializeVestingWallet(
177
+ address vestingWalletAddress,
176
178
  address beneficiary,
177
179
  uint48 startTimestamp,
178
180
  uint48 durationSeconds,
179
181
  uint48 cliffSeconds,
180
182
  address executor
181
- ) internal pure virtual returns (bytes32) {
182
- return keccak256(abi.encodePacked(beneficiary, startTimestamp, durationSeconds, cliffSeconds, executor));
183
- }
184
- }
183
+ ) internal virtual;
185
184
 
186
- // slither-disable-next-line locked-ether
187
- contract VestingWalletCliffExecutorConfidential is VestingWalletCliffConfidential, ERC7821WithExecutor {
188
- constructor() {
189
- _disableInitializers();
190
- }
185
+ /**
186
+ * @dev Internal function that is called once to deploy the vesting wallet implementation.
187
+ *
188
+ * Vesting wallet clones will be initialized by calls to the {_initializeVestingWallet} function.
189
+ */
190
+ function _deployVestingWalletImplementation() internal virtual returns (address);
191
191
 
192
- function initialize(
192
+ /**
193
+ * @dev Gets create2 salt for a confidential vesting wallet.
194
+ */
195
+ function _getCreate2VestingWalletConfidentialSalt(
193
196
  address beneficiary,
194
197
  uint48 startTimestamp,
195
198
  uint48 durationSeconds,
196
199
  uint48 cliffSeconds,
197
200
  address executor
198
- ) public initializer {
199
- __VestingWalletConfidential_init(beneficiary, startTimestamp, durationSeconds);
200
- __VestingWalletCliffConfidential_init(cliffSeconds);
201
- __ERC7821WithExecutor_init(executor);
201
+ ) internal pure virtual returns (bytes32) {
202
+ return keccak256(abi.encodePacked(beneficiary, startTimestamp, durationSeconds, cliffSeconds, executor));
202
203
  }
203
204
  }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (governance/utils/VotesConfidential.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (governance/utils/VotesConfidential.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {FHE, ebool, euint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (interfaces/IConfidentialFungibleToken.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (interfaces/IConfidentialFungibleToken.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {euint64, externalEuint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (interfaces/IConfidentialFungibleTokenReceiver.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (interfaces/IConfidentialFungibleTokenReceiver.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {ebool, euint64} from "@fhevm/solidity/lib/FHE.sol";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@openzeppelin/confidential-contracts",
3
3
  "description": "Smart Contract library for use with confidential coprocessors",
4
- "version": "0.2.0-rc.1",
4
+ "version": "0.2.0-rc.2",
5
5
  "files": [
6
6
  "**/*.sol",
7
7
  "/build/contracts/*.json",
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (token/ConfidentialFungibleToken.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (token/ConfidentialFungibleToken.sol)
3
3
  pragma solidity ^0.8.27;
4
4
 
5
5
  import {FHE, externalEuint64, ebool, euint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (token/extensions/ConfidentialFungibleTokenERC20Wrapper.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (token/extensions/ConfidentialFungibleTokenERC20Wrapper.sol)
3
3
 
4
4
  pragma solidity ^0.8.27;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (token/extensions/ConfidentialFungibleTokenVotes.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (token/extensions/ConfidentialFungibleTokenVotes.sol)
3
3
  pragma solidity ^0.8.27;
4
4
 
5
5
  import {euint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (token/utils/ConfidentialFungibleTokenUtils.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (token/utils/ConfidentialFungibleTokenUtils.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {FHE, ebool, euint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (utils/TFHESafeMath.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (utils/TFHESafeMath.sol)
3
3
  pragma solidity ^0.8.24;
4
4
 
5
5
  import {FHE, ebool, euint64} from "@fhevm/solidity/lib/FHE.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (utils/structs/CheckpointsConfidential.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (utils/structs/CheckpointsConfidential.sol)
3
3
  // This file was procedurally generated from scripts/generate/templates/CheckpointsConfidential.js.
4
4
 
5
5
  pragma solidity ^0.8.24;
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.1) (utils/structs/temporary-Checkpoints.sol)
2
+ // OpenZeppelin Confidential Contracts (last updated v0.2.0-rc.2) (utils/structs/temporary-Checkpoints.sol)
3
3
  // OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/Checkpoints.sol)
4
4
  // This file was procedurally generated from scripts/generate/templates/Checkpoints.js.
5
5
  // WARNING: This file is temporary and will be deleted once the latest version of the file is released in v5.5.0 of @openzeppelin/contracts.