@ensuro/access-managed-proxy 0.2.0 → 0.3.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/README.md +12 -5
- package/build/build-info.json +1 -1
- package/build/contracts/AMPUtils.sol/AMPUtils.json +2 -2
- package/build/contracts/AccessManagedProxy.sol/AccessManagedProxy.json +71 -3
- package/build/contracts/AccessManagedProxyBase.sol/AccessManagedProxyBase.json +147 -0
- package/build/contracts/interfaces/IAccessManagedProxy.sol/IAccessManagedProxy.json +98 -0
- package/build/contracts/mock/DummyAccessManaged.sol/DummyAccessManaged.json +321 -0
- package/build/contracts/mock/DummyImplementation.sol/DummyImplementation.json +95 -2
- package/contracts/AMPUtils.sol +54 -3
- package/contracts/AccessManagedProxy.sol +39 -51
- package/contracts/AccessManagedProxyBase.sol +74 -0
- package/contracts/interfaces/IAccessManagedProxy.sol +51 -0
- package/contracts/mock/DummyAccessManaged.sol +56 -0
- package/contracts/mock/DummyImplementation.sol +19 -2
- package/js/deployProxy.js +5 -11
- package/package.json +1 -1
- package/build/contracts/amps/AccessManagedProxyS1.sol/AccessManagedProxyS1.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS10.sol/AccessManagedProxyS10.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS11.sol/AccessManagedProxyS11.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS12.sol/AccessManagedProxyS12.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS13.sol/AccessManagedProxyS13.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS14.sol/AccessManagedProxyS14.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS15.sol/AccessManagedProxyS15.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS16.sol/AccessManagedProxyS16.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS17.sol/AccessManagedProxyS17.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS18.sol/AccessManagedProxyS18.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS19.sol/AccessManagedProxyS19.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS2.sol/AccessManagedProxyS2.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS20.sol/AccessManagedProxyS20.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS21.sol/AccessManagedProxyS21.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS22.sol/AccessManagedProxyS22.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS23.sol/AccessManagedProxyS23.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS24.sol/AccessManagedProxyS24.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS25.sol/AccessManagedProxyS25.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS26.sol/AccessManagedProxyS26.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS27.sol/AccessManagedProxyS27.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS28.sol/AccessManagedProxyS28.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS29.sol/AccessManagedProxyS29.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS3.sol/AccessManagedProxyS3.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS30.sol/AccessManagedProxyS30.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS31.sol/AccessManagedProxyS31.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS32.sol/AccessManagedProxyS32.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS33.sol/AccessManagedProxyS33.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS34.sol/AccessManagedProxyS34.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS35.sol/AccessManagedProxyS35.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS36.sol/AccessManagedProxyS36.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS37.sol/AccessManagedProxyS37.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS38.sol/AccessManagedProxyS38.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS39.sol/AccessManagedProxyS39.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS4.sol/AccessManagedProxyS4.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS40.sol/AccessManagedProxyS40.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS5.sol/AccessManagedProxyS5.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS6.sol/AccessManagedProxyS6.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS7.sol/AccessManagedProxyS7.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS8.sol/AccessManagedProxyS8.json +0 -123
- package/build/contracts/amps/AccessManagedProxyS9.sol/AccessManagedProxyS9.json +0 -123
- package/contracts/amps/AccessManagedProxyS1.sol +0 -63
- package/contracts/amps/AccessManagedProxyS10.sol +0 -99
- package/contracts/amps/AccessManagedProxyS11.sol +0 -103
- package/contracts/amps/AccessManagedProxyS12.sol +0 -107
- package/contracts/amps/AccessManagedProxyS13.sol +0 -111
- package/contracts/amps/AccessManagedProxyS14.sol +0 -115
- package/contracts/amps/AccessManagedProxyS15.sol +0 -119
- package/contracts/amps/AccessManagedProxyS16.sol +0 -123
- package/contracts/amps/AccessManagedProxyS17.sol +0 -127
- package/contracts/amps/AccessManagedProxyS18.sol +0 -131
- package/contracts/amps/AccessManagedProxyS19.sol +0 -135
- package/contracts/amps/AccessManagedProxyS2.sol +0 -67
- package/contracts/amps/AccessManagedProxyS20.sol +0 -139
- package/contracts/amps/AccessManagedProxyS21.sol +0 -143
- package/contracts/amps/AccessManagedProxyS22.sol +0 -147
- package/contracts/amps/AccessManagedProxyS23.sol +0 -151
- package/contracts/amps/AccessManagedProxyS24.sol +0 -155
- package/contracts/amps/AccessManagedProxyS25.sol +0 -159
- package/contracts/amps/AccessManagedProxyS26.sol +0 -163
- package/contracts/amps/AccessManagedProxyS27.sol +0 -167
- package/contracts/amps/AccessManagedProxyS28.sol +0 -171
- package/contracts/amps/AccessManagedProxyS29.sol +0 -175
- package/contracts/amps/AccessManagedProxyS3.sol +0 -71
- package/contracts/amps/AccessManagedProxyS30.sol +0 -179
- package/contracts/amps/AccessManagedProxyS31.sol +0 -183
- package/contracts/amps/AccessManagedProxyS32.sol +0 -187
- package/contracts/amps/AccessManagedProxyS33.sol +0 -191
- package/contracts/amps/AccessManagedProxyS34.sol +0 -195
- package/contracts/amps/AccessManagedProxyS35.sol +0 -199
- package/contracts/amps/AccessManagedProxyS36.sol +0 -203
- package/contracts/amps/AccessManagedProxyS37.sol +0 -207
- package/contracts/amps/AccessManagedProxyS38.sol +0 -211
- package/contracts/amps/AccessManagedProxyS39.sol +0 -215
- package/contracts/amps/AccessManagedProxyS4.sol +0 -75
- package/contracts/amps/AccessManagedProxyS40.sol +0 -219
- package/contracts/amps/AccessManagedProxyS5.sol +0 -79
- package/contracts/amps/AccessManagedProxyS6.sol +0 -83
- package/contracts/amps/AccessManagedProxyS7.sol +0 -87
- package/contracts/amps/AccessManagedProxyS8.sol +0 -91
- package/contracts/amps/AccessManagedProxyS9.sol +0 -95
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "DummyAccessManaged",
|
|
4
|
+
"sourceName": "contracts/mock/DummyAccessManaged.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"stateMutability": "nonpayable",
|
|
9
|
+
"type": "constructor"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "authority",
|
|
16
|
+
"type": "address"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"name": "AccessManagedInvalidAuthority",
|
|
20
|
+
"type": "error"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"inputs": [
|
|
24
|
+
{
|
|
25
|
+
"internalType": "address",
|
|
26
|
+
"name": "caller",
|
|
27
|
+
"type": "address"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"internalType": "uint32",
|
|
31
|
+
"name": "delay",
|
|
32
|
+
"type": "uint32"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"name": "AccessManagedRequiredDelay",
|
|
36
|
+
"type": "error"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"inputs": [
|
|
40
|
+
{
|
|
41
|
+
"internalType": "address",
|
|
42
|
+
"name": "caller",
|
|
43
|
+
"type": "address"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"name": "AccessManagedUnauthorized",
|
|
47
|
+
"type": "error"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"inputs": [
|
|
51
|
+
{
|
|
52
|
+
"internalType": "address",
|
|
53
|
+
"name": "target",
|
|
54
|
+
"type": "address"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"name": "AddressEmptyCode",
|
|
58
|
+
"type": "error"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"inputs": [
|
|
62
|
+
{
|
|
63
|
+
"internalType": "address",
|
|
64
|
+
"name": "implementation",
|
|
65
|
+
"type": "address"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"name": "ERC1967InvalidImplementation",
|
|
69
|
+
"type": "error"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"inputs": [],
|
|
73
|
+
"name": "ERC1967NonPayable",
|
|
74
|
+
"type": "error"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"inputs": [],
|
|
78
|
+
"name": "FailedCall",
|
|
79
|
+
"type": "error"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"inputs": [],
|
|
83
|
+
"name": "InvalidInitialization",
|
|
84
|
+
"type": "error"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"inputs": [],
|
|
88
|
+
"name": "NotInitializing",
|
|
89
|
+
"type": "error"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"inputs": [],
|
|
93
|
+
"name": "UUPSUnauthorizedCallContext",
|
|
94
|
+
"type": "error"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"inputs": [
|
|
98
|
+
{
|
|
99
|
+
"internalType": "bytes32",
|
|
100
|
+
"name": "slot",
|
|
101
|
+
"type": "bytes32"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"name": "UUPSUnsupportedProxiableUUID",
|
|
105
|
+
"type": "error"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"anonymous": false,
|
|
109
|
+
"inputs": [
|
|
110
|
+
{
|
|
111
|
+
"indexed": false,
|
|
112
|
+
"internalType": "address",
|
|
113
|
+
"name": "authority",
|
|
114
|
+
"type": "address"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"name": "AuthorityUpdated",
|
|
118
|
+
"type": "event"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"anonymous": false,
|
|
122
|
+
"inputs": [
|
|
123
|
+
{
|
|
124
|
+
"indexed": false,
|
|
125
|
+
"internalType": "uint64",
|
|
126
|
+
"name": "version",
|
|
127
|
+
"type": "uint64"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"name": "Initialized",
|
|
131
|
+
"type": "event"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"anonymous": false,
|
|
135
|
+
"inputs": [
|
|
136
|
+
{
|
|
137
|
+
"indexed": false,
|
|
138
|
+
"internalType": "bytes4",
|
|
139
|
+
"name": "selector",
|
|
140
|
+
"type": "bytes4"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"name": "MethodCalled",
|
|
144
|
+
"type": "event"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"anonymous": false,
|
|
148
|
+
"inputs": [
|
|
149
|
+
{
|
|
150
|
+
"indexed": true,
|
|
151
|
+
"internalType": "address",
|
|
152
|
+
"name": "implementation",
|
|
153
|
+
"type": "address"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"name": "Upgraded",
|
|
157
|
+
"type": "event"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"inputs": [],
|
|
161
|
+
"name": "UPGRADE_INTERFACE_VERSION",
|
|
162
|
+
"outputs": [
|
|
163
|
+
{
|
|
164
|
+
"internalType": "string",
|
|
165
|
+
"name": "",
|
|
166
|
+
"type": "string"
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"stateMutability": "view",
|
|
170
|
+
"type": "function"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"inputs": [],
|
|
174
|
+
"name": "authority",
|
|
175
|
+
"outputs": [
|
|
176
|
+
{
|
|
177
|
+
"internalType": "address",
|
|
178
|
+
"name": "",
|
|
179
|
+
"type": "address"
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"stateMutability": "view",
|
|
183
|
+
"type": "function"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"inputs": [],
|
|
187
|
+
"name": "callDirect",
|
|
188
|
+
"outputs": [],
|
|
189
|
+
"stateMutability": "nonpayable",
|
|
190
|
+
"type": "function"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"inputs": [],
|
|
194
|
+
"name": "callThru1967",
|
|
195
|
+
"outputs": [],
|
|
196
|
+
"stateMutability": "nonpayable",
|
|
197
|
+
"type": "function"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"inputs": [],
|
|
201
|
+
"name": "callThruAMP",
|
|
202
|
+
"outputs": [],
|
|
203
|
+
"stateMutability": "nonpayable",
|
|
204
|
+
"type": "function"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"inputs": [],
|
|
208
|
+
"name": "callThruAMPNonSkippedMethod",
|
|
209
|
+
"outputs": [],
|
|
210
|
+
"stateMutability": "nonpayable",
|
|
211
|
+
"type": "function"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"inputs": [],
|
|
215
|
+
"name": "callThruAMPSkippedMethod",
|
|
216
|
+
"outputs": [],
|
|
217
|
+
"stateMutability": "nonpayable",
|
|
218
|
+
"type": "function"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"inputs": [
|
|
222
|
+
{
|
|
223
|
+
"internalType": "address",
|
|
224
|
+
"name": "initialAuthority",
|
|
225
|
+
"type": "address"
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"name": "initialize",
|
|
229
|
+
"outputs": [],
|
|
230
|
+
"stateMutability": "nonpayable",
|
|
231
|
+
"type": "function"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"inputs": [],
|
|
235
|
+
"name": "isConsumingScheduledOp",
|
|
236
|
+
"outputs": [
|
|
237
|
+
{
|
|
238
|
+
"internalType": "bytes4",
|
|
239
|
+
"name": "",
|
|
240
|
+
"type": "bytes4"
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
"stateMutability": "view",
|
|
244
|
+
"type": "function"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"inputs": [],
|
|
248
|
+
"name": "proxiableUUID",
|
|
249
|
+
"outputs": [
|
|
250
|
+
{
|
|
251
|
+
"internalType": "bytes32",
|
|
252
|
+
"name": "",
|
|
253
|
+
"type": "bytes32"
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"stateMutability": "view",
|
|
257
|
+
"type": "function"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"inputs": [],
|
|
261
|
+
"name": "pureMethod",
|
|
262
|
+
"outputs": [
|
|
263
|
+
{
|
|
264
|
+
"internalType": "uint256",
|
|
265
|
+
"name": "",
|
|
266
|
+
"type": "uint256"
|
|
267
|
+
}
|
|
268
|
+
],
|
|
269
|
+
"stateMutability": "pure",
|
|
270
|
+
"type": "function"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"inputs": [
|
|
274
|
+
{
|
|
275
|
+
"internalType": "address",
|
|
276
|
+
"name": "newAuthority",
|
|
277
|
+
"type": "address"
|
|
278
|
+
}
|
|
279
|
+
],
|
|
280
|
+
"name": "setAuthority",
|
|
281
|
+
"outputs": [],
|
|
282
|
+
"stateMutability": "nonpayable",
|
|
283
|
+
"type": "function"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"inputs": [
|
|
287
|
+
{
|
|
288
|
+
"internalType": "address",
|
|
289
|
+
"name": "newImplementation",
|
|
290
|
+
"type": "address"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"internalType": "bytes",
|
|
294
|
+
"name": "data",
|
|
295
|
+
"type": "bytes"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"name": "upgradeToAndCall",
|
|
299
|
+
"outputs": [],
|
|
300
|
+
"stateMutability": "payable",
|
|
301
|
+
"type": "function"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"inputs": [],
|
|
305
|
+
"name": "viewMethod",
|
|
306
|
+
"outputs": [
|
|
307
|
+
{
|
|
308
|
+
"internalType": "address",
|
|
309
|
+
"name": "",
|
|
310
|
+
"type": "address"
|
|
311
|
+
}
|
|
312
|
+
],
|
|
313
|
+
"stateMutability": "view",
|
|
314
|
+
"type": "function"
|
|
315
|
+
}
|
|
316
|
+
],
|
|
317
|
+
"bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051610dba6100f95f395f818161054c0152818161057501526106b60152610dba5ff3fe6080604052600436106100d9575f3560e01c8063ad3cb1cc1161007c578063c4d66de811610057578063c4d66de814610213578063caa719a814610232578063e68be8a914610246578063fc7b17b91461025a575f5ffd5b8063ad3cb1cc14610196578063becf8b49146101d3578063bf7e214f146101e7575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638c3fce0e1461014c5780638fb36037146101605780639ba7fcaa14610181575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610b43565b61026c565b005b3480156100fd575f5ffd5b50610106610282565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f061029d565b348015610138575f5ffd5b506100f0610147366004610c07565b6102cb565b348015610157575f5ffd5b506100f0610352565b34801561016b575f5ffd5b50610174610376565b6040516101109190610c27565b34801561018c575f5ffd5b506201e240610106565b3480156101a1575f5ffd5b506101c6604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610c3c565b3480156101de575f5ffd5b506100f06103ac565b3480156101f2575f5ffd5b506101fb6103dc565b6040516001600160a01b039091168152602001610110565b34801561021e575f5ffd5b506100f061022d366004610c07565b6103f7565b34801561023d575f5ffd5b506100f06104f0565b348015610251575f5ffd5b506100f061051d565b348015610265575f5ffd5b50336101fb565b610274610541565b61027e82826105ea565b5050565b5f61028b6106ab565b505f516020610d655f395f51905f5290565b6040515f516020610d455f395f51905f52906102c1906375a62cfb60e01b90610c27565b60405180910390a1565b336102d46103dc565b6001600160a01b0316816001600160a01b0316146103145760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610349576040516361798f2f60e11b81526001600160a01b038316600482015260240161030b565b61027e826106f4565b6040515f516020610d455f395f51905f52906102c19063461fe70760e11b90610c27565b5f516020610d255f395f51905f5280545f9190600160a01b900460ff1661039d575f6103a6565b638fb3603760e01b5b91505090565b6103b8335b5f36610754565b6040515f516020610d455f395f51905f52906102c19063becf8b4960e01b90610c27565b5f516020610d255f395f51905f52546001600160a01b031690565b5f61040061084a565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156104275750825b90505f8267ffffffffffffffff1660011480156104435750303b155b905081158015610451575080155b1561046f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561049957845460ff60401b1916600160401b1785555b6104a286610874565b83156104e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6104f9336103b1565b6040515f516020610d455f395f51905f52906102c190631954e33560e31b90610c27565b6040515f516020610d455f395f51905f52906102c19063e68be8a960e01b90610c27565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806105c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105bb5f516020610d655f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105e55760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610644575060408051601f3d908101601f1916820190925261064191810190610c71565b60015b61066c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161030b565b5f516020610d655f395f51905f52811461069c57604051632a87526960e21b81526004810182905260240161030b565b6106a68383610885565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105e55760405163703e46dd60e11b815260040160405180910390fd5b5f516020610d255f395f51905f5280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f516020610d255f395f51905f525f8061078c61076f6103dc565b873061077e60045f8a8c610c88565b61078791610caf565b6108da565b91509150816104e85763ffffffff81161561082757825460ff60a01b1916600160a01b1783556107ba6103dc565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016107e993929190610ce5565b5f604051808303815f87803b158015610800575f5ffd5b505af1158015610812573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506104e89050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161030b565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61087c61096c565b6105e781610991565b61088e826109a2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156108d2576106a68282610a05565b61027e610aa5565b6040516001600160a01b038085166024830152831660448201526001600160e01b0319821660648201525f908190819060840160408051601f19818403018152918152602080830180516001600160e01b031663b700961360e01b1781525f808052918290528351939450919290918a5afa15610962575f516020805191945081901c150291505b5094509492505050565b610974610ac4565b6105e557604051631afcd79f60e31b815260040160405180910390fd5b61099961096c565b6105e7816106f4565b806001600160a01b03163b5f036109d757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161030b565b5f516020610d655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610a128484610add565b9050808015610a3357505f3d1180610a3357505f846001600160a01b03163b115b15610a4857610a40610af0565b91505061086e565b8015610a7257604051639996b31560e01b81526001600160a01b038516600482015260240161030b565b3d15610a8557610a80610b09565b610a9e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105e55760405163b398979f60e01b815260040160405180910390fd5b5f610acd61084a565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80356001600160a01b0381168114610b2a575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610b54575f5ffd5b610b5d83610b14565b9150602083013567ffffffffffffffff811115610b78575f5ffd5b8301601f81018513610b88575f5ffd5b803567ffffffffffffffff811115610ba257610ba2610b2f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bd157610bd1610b2f565b604052818152828201602001871015610be8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610c17575f5ffd5b610c2082610b14565b9392505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610c81575f5ffd5b5051919050565b5f5f85851115610c96575f5ffd5b83861115610ca2575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610a9e576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f191601019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb3ee0c9c17a6f300ca9db0ce582eb48eb468bbc48403087bedae4907797003e64736f6c634300081e0033",
|
|
318
|
+
"deployedBytecode": "0x6080604052600436106100d9575f3560e01c8063ad3cb1cc1161007c578063c4d66de811610057578063c4d66de814610213578063caa719a814610232578063e68be8a914610246578063fc7b17b91461025a575f5ffd5b8063ad3cb1cc14610196578063becf8b49146101d3578063bf7e214f146101e7575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638c3fce0e1461014c5780638fb36037146101605780639ba7fcaa14610181575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610b43565b61026c565b005b3480156100fd575f5ffd5b50610106610282565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f061029d565b348015610138575f5ffd5b506100f0610147366004610c07565b6102cb565b348015610157575f5ffd5b506100f0610352565b34801561016b575f5ffd5b50610174610376565b6040516101109190610c27565b34801561018c575f5ffd5b506201e240610106565b3480156101a1575f5ffd5b506101c6604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610c3c565b3480156101de575f5ffd5b506100f06103ac565b3480156101f2575f5ffd5b506101fb6103dc565b6040516001600160a01b039091168152602001610110565b34801561021e575f5ffd5b506100f061022d366004610c07565b6103f7565b34801561023d575f5ffd5b506100f06104f0565b348015610251575f5ffd5b506100f061051d565b348015610265575f5ffd5b50336101fb565b610274610541565b61027e82826105ea565b5050565b5f61028b6106ab565b505f516020610d655f395f51905f5290565b6040515f516020610d455f395f51905f52906102c1906375a62cfb60e01b90610c27565b60405180910390a1565b336102d46103dc565b6001600160a01b0316816001600160a01b0316146103145760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610349576040516361798f2f60e11b81526001600160a01b038316600482015260240161030b565b61027e826106f4565b6040515f516020610d455f395f51905f52906102c19063461fe70760e11b90610c27565b5f516020610d255f395f51905f5280545f9190600160a01b900460ff1661039d575f6103a6565b638fb3603760e01b5b91505090565b6103b8335b5f36610754565b6040515f516020610d455f395f51905f52906102c19063becf8b4960e01b90610c27565b5f516020610d255f395f51905f52546001600160a01b031690565b5f61040061084a565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156104275750825b90505f8267ffffffffffffffff1660011480156104435750303b155b905081158015610451575080155b1561046f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561049957845460ff60401b1916600160401b1785555b6104a286610874565b83156104e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6104f9336103b1565b6040515f516020610d455f395f51905f52906102c190631954e33560e31b90610c27565b6040515f516020610d455f395f51905f52906102c19063e68be8a960e01b90610c27565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806105c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105bb5f516020610d655f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105e55760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610644575060408051601f3d908101601f1916820190925261064191810190610c71565b60015b61066c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161030b565b5f516020610d655f395f51905f52811461069c57604051632a87526960e21b81526004810182905260240161030b565b6106a68383610885565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105e55760405163703e46dd60e11b815260040160405180910390fd5b5f516020610d255f395f51905f5280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f516020610d255f395f51905f525f8061078c61076f6103dc565b873061077e60045f8a8c610c88565b61078791610caf565b6108da565b91509150816104e85763ffffffff81161561082757825460ff60a01b1916600160a01b1783556107ba6103dc565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016107e993929190610ce5565b5f604051808303815f87803b158015610800575f5ffd5b505af1158015610812573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506104e89050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161030b565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61087c61096c565b6105e781610991565b61088e826109a2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156108d2576106a68282610a05565b61027e610aa5565b6040516001600160a01b038085166024830152831660448201526001600160e01b0319821660648201525f908190819060840160408051601f19818403018152918152602080830180516001600160e01b031663b700961360e01b1781525f808052918290528351939450919290918a5afa15610962575f516020805191945081901c150291505b5094509492505050565b610974610ac4565b6105e557604051631afcd79f60e31b815260040160405180910390fd5b61099961096c565b6105e7816106f4565b806001600160a01b03163b5f036109d757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161030b565b5f516020610d655f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610a128484610add565b9050808015610a3357505f3d1180610a3357505f846001600160a01b03163b115b15610a4857610a40610af0565b91505061086e565b8015610a7257604051639996b31560e01b81526001600160a01b038516600482015260240161030b565b3d15610a8557610a80610b09565b610a9e565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105e55760405163b398979f60e01b815260040160405180910390fd5b5f610acd61084a565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80356001600160a01b0381168114610b2a575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610b54575f5ffd5b610b5d83610b14565b9150602083013567ffffffffffffffff811115610b78575f5ffd5b8301601f81018513610b88575f5ffd5b803567ffffffffffffffff811115610ba257610ba2610b2f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610bd157610bd1610b2f565b604052818152828201602001871015610be8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610c17575f5ffd5b610c2082610b14565b9392505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610c81575f5ffd5b5051919050565b5f5f85851115610c96575f5ffd5b83861115610ca2575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610a9e576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f191601019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fb3ee0c9c17a6f300ca9db0ce582eb48eb468bbc48403087bedae4907797003e64736f6c634300081e0033",
|
|
319
|
+
"linkReferences": {},
|
|
320
|
+
"deployedLinkReferences": {}
|
|
321
|
+
}
|
|
@@ -8,6 +8,28 @@
|
|
|
8
8
|
"stateMutability": "nonpayable",
|
|
9
9
|
"type": "constructor"
|
|
10
10
|
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "authority",
|
|
16
|
+
"type": "address"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"name": "AccessManagedInvalidAuthority",
|
|
20
|
+
"type": "error"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"inputs": [
|
|
24
|
+
{
|
|
25
|
+
"internalType": "address",
|
|
26
|
+
"name": "caller",
|
|
27
|
+
"type": "address"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"name": "AccessManagedUnauthorized",
|
|
31
|
+
"type": "error"
|
|
32
|
+
},
|
|
11
33
|
{
|
|
12
34
|
"inputs": [
|
|
13
35
|
{
|
|
@@ -66,6 +88,19 @@
|
|
|
66
88
|
"name": "UUPSUnsupportedProxiableUUID",
|
|
67
89
|
"type": "error"
|
|
68
90
|
},
|
|
91
|
+
{
|
|
92
|
+
"anonymous": false,
|
|
93
|
+
"inputs": [
|
|
94
|
+
{
|
|
95
|
+
"indexed": false,
|
|
96
|
+
"internalType": "address",
|
|
97
|
+
"name": "authority",
|
|
98
|
+
"type": "address"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"name": "AuthorityUpdated",
|
|
102
|
+
"type": "event"
|
|
103
|
+
},
|
|
69
104
|
{
|
|
70
105
|
"anonymous": false,
|
|
71
106
|
"inputs": [
|
|
@@ -92,6 +127,19 @@
|
|
|
92
127
|
"name": "MethodCalled",
|
|
93
128
|
"type": "event"
|
|
94
129
|
},
|
|
130
|
+
{
|
|
131
|
+
"anonymous": false,
|
|
132
|
+
"inputs": [
|
|
133
|
+
{
|
|
134
|
+
"indexed": false,
|
|
135
|
+
"internalType": "bytes4[]",
|
|
136
|
+
"name": "newPassThruMethods",
|
|
137
|
+
"type": "bytes4[]"
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"name": "PassThruMethodsChanged",
|
|
141
|
+
"type": "event"
|
|
142
|
+
},
|
|
95
143
|
{
|
|
96
144
|
"anonymous": false,
|
|
97
145
|
"inputs": [
|
|
@@ -153,6 +201,25 @@
|
|
|
153
201
|
"stateMutability": "nonpayable",
|
|
154
202
|
"type": "function"
|
|
155
203
|
},
|
|
204
|
+
{
|
|
205
|
+
"inputs": [
|
|
206
|
+
{
|
|
207
|
+
"internalType": "bytes",
|
|
208
|
+
"name": "something",
|
|
209
|
+
"type": "bytes"
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"name": "checkCanCall",
|
|
213
|
+
"outputs": [
|
|
214
|
+
{
|
|
215
|
+
"internalType": "bytes4",
|
|
216
|
+
"name": "selector",
|
|
217
|
+
"type": "bytes4"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"stateMutability": "nonpayable",
|
|
221
|
+
"type": "function"
|
|
222
|
+
},
|
|
156
223
|
{
|
|
157
224
|
"inputs": [],
|
|
158
225
|
"name": "initialize",
|
|
@@ -186,6 +253,32 @@
|
|
|
186
253
|
"stateMutability": "pure",
|
|
187
254
|
"type": "function"
|
|
188
255
|
},
|
|
256
|
+
{
|
|
257
|
+
"inputs": [
|
|
258
|
+
{
|
|
259
|
+
"internalType": "address",
|
|
260
|
+
"name": "newAuthority",
|
|
261
|
+
"type": "address"
|
|
262
|
+
}
|
|
263
|
+
],
|
|
264
|
+
"name": "setAuthority",
|
|
265
|
+
"outputs": [],
|
|
266
|
+
"stateMutability": "nonpayable",
|
|
267
|
+
"type": "function"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"inputs": [
|
|
271
|
+
{
|
|
272
|
+
"internalType": "bytes4[]",
|
|
273
|
+
"name": "newPTMethods",
|
|
274
|
+
"type": "bytes4[]"
|
|
275
|
+
}
|
|
276
|
+
],
|
|
277
|
+
"name": "setPassThruMethods",
|
|
278
|
+
"outputs": [],
|
|
279
|
+
"stateMutability": "nonpayable",
|
|
280
|
+
"type": "function"
|
|
281
|
+
},
|
|
189
282
|
{
|
|
190
283
|
"inputs": [
|
|
191
284
|
{
|
|
@@ -218,8 +311,8 @@
|
|
|
218
311
|
"type": "function"
|
|
219
312
|
}
|
|
220
313
|
],
|
|
221
|
-
"bytecode": "
|
|
222
|
-
"deployedBytecode": "
|
|
314
|
+
"bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516110f86100f95f395f818161049f015281816104c8015261060b01526110f85ff3fe6080604052600436106100d9575f3560e01c80639ba7fcaa1161007c578063caa719a811610057578063caa719a814610206578063e68be8a91461021a578063fc7b17b91461022e578063fd07a75714610248575f5ffd5b80639ba7fcaa146101a0578063ad3cb1cc146101b5578063becf8b49146101f2575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638129fc1c1461014c5780638c01fde4146101605780638c3fce0e1461018c575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610df9565b610267565b005b3480156100fd575f5ffd5b5061010661027d565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f0610298565b348015610138575f5ffd5b506100f0610147366004610e46565b6102c6565b348015610157575f5ffd5b506100f06102d2565b34801561016b575f5ffd5b5061017f61017a366004610e68565b6103c1565b6040516101109190610ea2565b348015610197575f5ffd5b506100f06103fb565b3480156101ab575f5ffd5b506201e240610106565b3480156101c0575f5ffd5b506101e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610eb7565b3480156101fd575f5ffd5b506100f061041f565b348015610211575f5ffd5b506100f0610443565b348015610225575f5ffd5b506100f0610467565b348015610239575f5ffd5b50604051338152602001610110565b348015610253575f5ffd5b506100f0610262366004610eec565b61048b565b61026f610494565b610279828261053a565b5050565b5f610286610600565b505f5160206110a35f395f51905f5290565b6040515f5160206110835f395f51905f52906102bc906375a62cfb60e01b90610ea2565b60405180910390a1565b6102cf81610649565b50565b5f6102db6106f2565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156103025750825b90505f8267ffffffffffffffff16600114801561031e5750303b155b90508115801561032c575080155b1561034a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037457845460ff60401b1916600160401b1785555b83156103ba57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206103d2338261071c565b5f5160206110835f395f51905f52816040516103ee9190610ea2565b60405180910390a1919050565b6040515f5160206110835f395f51905f52906102bc9063461fe70760e11b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063becf8b4960e01b90610ea2565b6040515f5160206110835f395f51905f52906102bc90631954e33560e31b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063e68be8a960e01b90610ea2565b6102cf8161082f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061051a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661050e5f5160206110a35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105385760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610594575060408051601f3d908101601f1916820190925261059191810190610fac565b60015b6105c157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206110a35f395f51905f5281146105f157604051632a87526960e21b8152600481018290526024016105b8565b6105fb8383610955565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105385760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f0361067e576040516361798f2f60e11b81526001600160a01b03821660048201526024016105b8565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190610fc3565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156107d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190610fde565b50905082816108295760405162d1953b60e31b81526001600160a01b0390911660048201526024016105b8565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156108e757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108a95790505b505050505090505f5b815181101561094b575f836002015f84848151811061091157610911611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016108f0565b506105fb836109aa565b61095e82610b1e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156109a2576105fb8282610b81565b610279610c21565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff8111156109e6576109e6610d48565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b508051610a26916001840191602090910190610c77565b505f5b8251811015610ae257828181518110610a4457610a44611022565b6020026020010151826001018281548110610a6157610a61611022565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610aa857610aa8611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610a29565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610b129190611036565b60405180910390a15050565b806001600160a01b03163b5f03610b5357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105b8565b5f5160206110a35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610b8e8484610c40565b9050808015610baf57505f3d1180610baf57505f846001600160a01b03163b115b15610bc457610bbc610c53565b915050610716565b8015610bee57604051639996b31560e01b81526001600160a01b03851660048201526024016105b8565b3d15610c0157610bfc610c6c565b610c1a565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105385760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610d10579160200282015f5b83821115610cde57835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610c9d565b8015610d0e5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610cde565b505b50610d1c929150610d20565b5090565b5b80821115610d1c575f8155600101610d21565b6001600160a01b03811681146102cf575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8557610d85610d48565b604052919050565b5f82601f830112610d9c575f5ffd5b813567ffffffffffffffff811115610db657610db6610d48565b610dc9601f8201601f1916602001610d5c565b818152846020838601011115610ddd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610e0a575f5ffd5b8235610e1581610d34565b9150602083013567ffffffffffffffff811115610e30575f5ffd5b610e3c85828601610d8d565b9150509250929050565b5f60208284031215610e56575f5ffd5b8135610e6181610d34565b9392505050565b5f60208284031215610e78575f5ffd5b813567ffffffffffffffff811115610e8e575f5ffd5b610e9a84828501610d8d565b949350505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610efc575f5ffd5b813567ffffffffffffffff811115610f12575f5ffd5b8201601f81018413610f22575f5ffd5b803567ffffffffffffffff811115610f3c57610f3c610d48565b8060051b610f4c60208201610d5c565b91825260208184018101929081019087841115610f67575f5ffd5b6020850194505b83851015610fa157843592506001600160e01b031983168314610f8f575f5ffd5b82825260209485019490910190610f6e565b979650505050505050565b5f60208284031215610fbc575f5ffd5b5051919050565b5f60208284031215610fd3575f5ffd5b8151610e6181610d34565b5f5f60408385031215610fef575f5ffd5b82518015158114610ffe575f5ffd5b602084015190925063ffffffff81168114611017575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156110775783516001600160e01b03191683526020938401939092019160010161104f565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dc0bc1558ad048c33ceae0113316fb1a6758d80f3622b2f17b194c8d3ee84cf464736f6c634300081e0033",
|
|
315
|
+
"deployedBytecode": "0x6080604052600436106100d9575f3560e01c80639ba7fcaa1161007c578063caa719a811610057578063caa719a814610206578063e68be8a91461021a578063fc7b17b91461022e578063fd07a75714610248575f5ffd5b80639ba7fcaa146101a0578063ad3cb1cc146101b5578063becf8b49146101f2575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638129fc1c1461014c5780638c01fde4146101605780638c3fce0e1461018c575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610df9565b610267565b005b3480156100fd575f5ffd5b5061010661027d565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f0610298565b348015610138575f5ffd5b506100f0610147366004610e46565b6102c6565b348015610157575f5ffd5b506100f06102d2565b34801561016b575f5ffd5b5061017f61017a366004610e68565b6103c1565b6040516101109190610ea2565b348015610197575f5ffd5b506100f06103fb565b3480156101ab575f5ffd5b506201e240610106565b3480156101c0575f5ffd5b506101e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610eb7565b3480156101fd575f5ffd5b506100f061041f565b348015610211575f5ffd5b506100f0610443565b348015610225575f5ffd5b506100f0610467565b348015610239575f5ffd5b50604051338152602001610110565b348015610253575f5ffd5b506100f0610262366004610eec565b61048b565b61026f610494565b610279828261053a565b5050565b5f610286610600565b505f5160206110a35f395f51905f5290565b6040515f5160206110835f395f51905f52906102bc906375a62cfb60e01b90610ea2565b60405180910390a1565b6102cf81610649565b50565b5f6102db6106f2565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156103025750825b90505f8267ffffffffffffffff16600114801561031e5750303b155b90508115801561032c575080155b1561034a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037457845460ff60401b1916600160401b1785555b83156103ba57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206103d2338261071c565b5f5160206110835f395f51905f52816040516103ee9190610ea2565b60405180910390a1919050565b6040515f5160206110835f395f51905f52906102bc9063461fe70760e11b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063becf8b4960e01b90610ea2565b6040515f5160206110835f395f51905f52906102bc90631954e33560e31b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063e68be8a960e01b90610ea2565b6102cf8161082f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061051a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661050e5f5160206110a35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105385760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610594575060408051601f3d908101601f1916820190925261059191810190610fac565b60015b6105c157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206110a35f395f51905f5281146105f157604051632a87526960e21b8152600481018290526024016105b8565b6105fb8383610955565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105385760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f0361067e576040516361798f2f60e11b81526001600160a01b03821660048201526024016105b8565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190610fc3565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156107d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190610fde565b50905082816108295760405162d1953b60e31b81526001600160a01b0390911660048201526024016105b8565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156108e757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108a95790505b505050505090505f5b815181101561094b575f836002015f84848151811061091157610911611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016108f0565b506105fb836109aa565b61095e82610b1e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156109a2576105fb8282610b81565b610279610c21565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff8111156109e6576109e6610d48565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b508051610a26916001840191602090910190610c77565b505f5b8251811015610ae257828181518110610a4457610a44611022565b6020026020010151826001018281548110610a6157610a61611022565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610aa857610aa8611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610a29565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610b129190611036565b60405180910390a15050565b806001600160a01b03163b5f03610b5357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105b8565b5f5160206110a35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610b8e8484610c40565b9050808015610baf57505f3d1180610baf57505f846001600160a01b03163b115b15610bc457610bbc610c53565b915050610716565b8015610bee57604051639996b31560e01b81526001600160a01b03851660048201526024016105b8565b3d15610c0157610bfc610c6c565b610c1a565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105385760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610d10579160200282015f5b83821115610cde57835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610c9d565b8015610d0e5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610cde565b505b50610d1c929150610d20565b5090565b5b80821115610d1c575f8155600101610d21565b6001600160a01b03811681146102cf575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8557610d85610d48565b604052919050565b5f82601f830112610d9c575f5ffd5b813567ffffffffffffffff811115610db657610db6610d48565b610dc9601f8201601f1916602001610d5c565b818152846020838601011115610ddd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610e0a575f5ffd5b8235610e1581610d34565b9150602083013567ffffffffffffffff811115610e30575f5ffd5b610e3c85828601610d8d565b9150509250929050565b5f60208284031215610e56575f5ffd5b8135610e6181610d34565b9392505050565b5f60208284031215610e78575f5ffd5b813567ffffffffffffffff811115610e8e575f5ffd5b610e9a84828501610d8d565b949350505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610efc575f5ffd5b813567ffffffffffffffff811115610f12575f5ffd5b8201601f81018413610f22575f5ffd5b803567ffffffffffffffff811115610f3c57610f3c610d48565b8060051b610f4c60208201610d5c565b91825260208184018101929081019087841115610f67575f5ffd5b6020850194505b83851015610fa157843592506001600160e01b031983168314610f8f575f5ffd5b82825260209485019490910190610f6e565b979650505050505050565b5f60208284031215610fbc575f5ffd5b5051919050565b5f60208284031215610fd3575f5ffd5b8151610e6181610d34565b5f5f60408385031215610fef575f5ffd5b82518015158114610ffe575f5ffd5b602084015190925063ffffffff81168114611017575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156110775783516001600160e01b03191683526020938401939092019160010161104f565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dc0bc1558ad048c33ceae0113316fb1a6758d80f3622b2f17b194c8d3ee84cf464736f6c634300081e0033",
|
|
223
316
|
"linkReferences": {},
|
|
224
317
|
"deployedLinkReferences": {}
|
|
225
318
|
}
|
package/contracts/AMPUtils.sol
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// SPDX-License-Identifier:
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.0;
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
|
5
|
+
import {IAccessManagedProxy} from "./interfaces/IAccessManagedProxy.sol";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @title AMPUtils
|
|
@@ -13,6 +14,56 @@ library AMPUtils {
|
|
|
13
14
|
// Error copied from IAccessManaged
|
|
14
15
|
error AccessManagedUnauthorized(address caller);
|
|
15
16
|
|
|
17
|
+
struct AccessManagedProxyStorage {
|
|
18
|
+
IAccessManager accessManager;
|
|
19
|
+
bytes4[] passThruMethods; // This is used for observability
|
|
20
|
+
mapping(bytes4 => bool) skipAc; // This is the used for actual lookup
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice Storage slot with the address of the current access mananger.
|
|
25
|
+
* @dev Computed as: `keccak256(
|
|
26
|
+
* abi.encode(uint256(keccak256("ensuro.storage.AccessManagedProxy")) - 1)
|
|
27
|
+
* ) & ~bytes32(uint256(0xff))
|
|
28
|
+
*/
|
|
29
|
+
// solhint-disable-next-line const-name-snakecase
|
|
30
|
+
bytes32 internal constant AccessManagedProxyStorageLocation =
|
|
31
|
+
0x787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00;
|
|
32
|
+
|
|
33
|
+
function getAccessManagedProxyStorage() internal pure returns (AccessManagedProxyStorage storage $) {
|
|
34
|
+
// solhint-disable-next-line no-inline-assembly
|
|
35
|
+
assembly {
|
|
36
|
+
$.slot := AccessManagedProxyStorageLocation
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function setAccessManager(IAccessManager accessManager) internal {
|
|
41
|
+
if (address(accessManager).code.length == 0) {
|
|
42
|
+
revert IAccessManagedProxy.AccessManagedInvalidAuthority(address(accessManager));
|
|
43
|
+
}
|
|
44
|
+
getAccessManagedProxyStorage().accessManager = accessManager;
|
|
45
|
+
emit IAccessManagedProxy.AuthorityUpdated(address(accessManager));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function setPassThruMethods(bytes4[] memory passThruMethods) internal {
|
|
49
|
+
AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();
|
|
50
|
+
$.passThruMethods = new bytes4[](passThruMethods.length);
|
|
51
|
+
for (uint256 i; i < passThruMethods.length; ++i) {
|
|
52
|
+
$.passThruMethods[i] = passThruMethods[i];
|
|
53
|
+
$.skipAc[passThruMethods[i]] = true;
|
|
54
|
+
}
|
|
55
|
+
emit IAccessManagedProxy.PassThruMethodsChanged(passThruMethods);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function replacePassThruMethods(bytes4[] memory newPassThruMethods) internal {
|
|
59
|
+
AccessManagedProxyStorage storage $ = AMPUtils.getAccessManagedProxyStorage();
|
|
60
|
+
bytes4[] memory oldPassThruMethods = $.passThruMethods;
|
|
61
|
+
for (uint256 i; i < oldPassThruMethods.length; ++i) {
|
|
62
|
+
$.skipAc[oldPassThruMethods[i]] = false;
|
|
63
|
+
}
|
|
64
|
+
setPassThruMethods(newPassThruMethods);
|
|
65
|
+
}
|
|
66
|
+
|
|
16
67
|
/**
|
|
17
68
|
* @dev Checks if the user can call a particular selector, assuming the calling contract was deployed as an AMP.
|
|
18
69
|
*
|
|
@@ -20,7 +71,7 @@ library AMPUtils {
|
|
|
20
71
|
* @param selector The selector of the method called (or a fake selector generated with makeSelector or another way)
|
|
21
72
|
*/
|
|
22
73
|
function checkCanCall(address user, bytes4 selector) internal view {
|
|
23
|
-
(bool immediate, ) =
|
|
74
|
+
(bool immediate, ) = IAccessManagedProxy(payable(address(this))).ACCESS_MANAGER().canCall(
|
|
24
75
|
user,
|
|
25
76
|
address(this),
|
|
26
77
|
selector
|