olas-operate-middleware 0.14.1__py3-none-any.whl → 0.14.2__py3-none-any.whl

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.

Potentially problematic release.


This version of olas-operate-middleware might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: olas-operate-middleware
3
- Version: 0.14.1
3
+ Version: 0.14.2
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: David Vilela
@@ -39,10 +39,6 @@ operate/data/contracts/optimism_mintable_erc20/__init__.py,sha256=7MXE2uJ_XdnpaB
39
39
  operate/data/contracts/optimism_mintable_erc20/build/OptimismMintableERC20.json,sha256=77YyAhmsobhckux59r0JWgPd9fgmlSnEAJ_Wef-WwKI,9974
40
40
  operate/data/contracts/optimism_mintable_erc20/contract.py,sha256=WDaHgB5iugnpkDF_QRKoIPGhJmk___9y97S7nkbpInY,1566
41
41
  operate/data/contracts/optimism_mintable_erc20/contract.yaml,sha256=kX4RBON_ajqOVJffhKtMSjf0FA0hMuVTUPUbCMaZCz4,717
42
- operate/data/contracts/recovery_module/__init__.py,sha256=mkoUIiE0NPmybypzUQbYGHOvU5-PSRH5YP2urAS07hE,868
43
- operate/data/contracts/recovery_module/build/RecoveryModule.json,sha256=QRfZH_dAjXEhCRZMv3VOyEmSn6vy3ggDgXePLYhv6as,60660
44
- operate/data/contracts/recovery_module/contract.py,sha256=-9eaMdUBXRN-0GCw3hozbc_ZyvrTAi_R0VGnAcDfiI0,1907
45
- operate/data/contracts/recovery_module/contract.yaml,sha256=Kxf2GCWPwT0QqjuhsM8eMYNm8YtTWE9y571tYq3NtlE,680
46
42
  operate/data/contracts/requester_activity_checker/__init__.py,sha256=BrOe5cib0jItJCsygrAYejy0v16xayRUoJUWubyw1yA,878
47
43
  operate/data/contracts/requester_activity_checker/build/RequesterActivityChecker.json,sha256=KbZbZDEred3LvxIY30igz5w9ubaD0-PvDbFdlg7F-y4,9748
48
44
  operate/data/contracts/requester_activity_checker/contract.py,sha256=preNvyk8kmtUE0LgEIZMLorYevgCmoxBqI-1STrX0_4,1252
@@ -59,7 +55,7 @@ operate/data/contracts/uniswap_v2_erc20/tests/__init__.py,sha256=3Arw8dsCsJz6hVO
59
55
  operate/data/contracts/uniswap_v2_erc20/tests/test_contract.py,sha256=z4GfybA_oZUA6-sl61qaJ78rXdbcW_rk4APzgMzQD38,13456
60
56
  operate/keys.py,sha256=qfT3-ZS1R2jG_t7BdqUdgrAYqHnj6dNrtK5c0-_AODU,6179
61
57
  operate/ledger/__init__.py,sha256=c41SqGLSpLBvG_q1cPyDh1aunByopsIIC5Mfk1vdmQE,6207
62
- operate/ledger/profiles.py,sha256=ElxkFcZ9gt9Cetn6nWC0v63Ca0Eo8YTt9_amnI1v6RQ,15153
58
+ operate/ledger/profiles.py,sha256=xeHRM_qGAj9Ksl1DaMrAmn5GENmsVgpiI8s3QDBrLyM,15463
63
59
  operate/migration.py,sha256=hdZlhhdkoPPzkOD0CFyNYAp-eqUrVu_PJnw8_PoxpWk,21015
64
60
  operate/operate_http/__init__.py,sha256=MTS1tMZ5qnA_WzaoeLxlK9IJToMGIpkNr7_vyBeAqZ8,4680
65
61
  operate/operate_http/exceptions.py,sha256=4UFzrn-GyDD71RhkaOyFPBynL6TrrtP3eywaaU3o4fc,1339
@@ -70,7 +66,7 @@ operate/quickstart/claim_staking_rewards.py,sha256=K7X1Yq0mxe3qWmFLb1Xu9-Jghhml9
70
66
  operate/quickstart/reset_configs.py,sha256=DVPM4mh6Djunwq16hf8lD9-nGkkm7wVtwr2JUXr1if8,3380
71
67
  operate/quickstart/reset_password.py,sha256=jEBk2ROR1q8PkTIHlqum7E8PRQtXHwrauiy0_bik3RQ,2394
72
68
  operate/quickstart/reset_staking.py,sha256=SB5LZq9EctG4SYn2M6oPZ7R7ARHSFLRGzAqfKkpRcy0,5111
73
- operate/quickstart/run_service.py,sha256=tt4PYeZJ2MtYeG59vohOdMbOiCYGGUmGnjeZwYl0shQ,30383
69
+ operate/quickstart/run_service.py,sha256=zn-TC7xlRc036C9tXMKIDKPB4GDXMWI2pRG3AeziLWk,30355
74
70
  operate/quickstart/stop_service.py,sha256=a3-1vVyZma2UtFUPKMvVrOso1Iwpz5Rzpus9VAI4qOc,2169
75
71
  operate/quickstart/terminate_on_chain_service.py,sha256=5ENU8_mkj06i80lKUX-v1QbLU0YzKeOZDUL1e_jzySE,2914
76
72
  operate/quickstart/utils.py,sha256=i1juhJCPkzB7ZKgSk5tNiRmYxGcx8MG-dTjVyC5sKys,9287
@@ -79,10 +75,10 @@ operate/serialization.py,sha256=mf2uJCj1WULaTIJSYQ-XuaW3bdwc0vn-cxk2q0IJQf4,3885
79
75
  operate/services/__init__.py,sha256=isrThS-Ccu5Sc15JZgkN4uTAVaSg-NwUUSDeTyJEqLk,855
80
76
  operate/services/agent_runner.py,sha256=JGjyrzA5hX4Nuh79h81-dl2hdt74ZkC63t7UsGXY6Rw,7500
81
77
  operate/services/deployment_runner.py,sha256=7A94QpZu100BwIk1Q9Cr0SVK5Sj7nTWx2GRCwr0gvaM,30772
82
- operate/services/funding_manager.py,sha256=q-mO6kQWthCLI5uW8qbrMQw_6i--zd1rJ3SG4tbw6FM,41672
78
+ operate/services/funding_manager.py,sha256=pURhGwo2-3c7_EiQE_BuECLQsD7t_86KgL27bzliHkc,41680
83
79
  operate/services/health_checker.py,sha256=dARikrgzU1jEuK4NUqlZ7N0DQq4Ah1ZiRKHmrlh8v-A,11472
84
80
  operate/services/manage.py,sha256=9dTjXhBq6tgcFWfhU61JQL67L2h3_b_7p8OICimWWB4,113292
85
- operate/services/protocol.py,sha256=4wAMHoELkqJJlETsMJa-XT8xVA0jfueiaKMn7X4SUKo,71898
81
+ operate/services/protocol.py,sha256=afq9x0MbWV0ry2h7DusVTxFWUVe6Q3pVAZGhzb2RznQ,71310
86
82
  operate/services/service.py,sha256=YOU0rlPe5PjDnFRlAcThYLvr5MrPOftBDKZHMRNzZ78,46647
87
83
  operate/services/utils/__init__.py,sha256=TvioaZ1mfTRUSCtrQoLNAp4WMVXyqEJqFJM4PxSQCRU,24
88
84
  operate/services/utils/mech.py,sha256=98gNw8pMNvv_O34V1blr7JUwenqxFeeyFuXLuSYv10w,3864
@@ -95,8 +91,8 @@ operate/utils/ssl.py,sha256=O5DrDoZD4T4qQuHP8GLwWUVxQ-1qXeefGp6uDJiF2lM,4308
95
91
  operate/wallet/__init__.py,sha256=NGiozD3XhvkBi7_FaOWQ8x1thZPK4uGpokJaeDY_o2w,813
96
92
  operate/wallet/master.py,sha256=019VvWsMfzAV3fUienhcYVLB12BcSVvub3weAeMOlSA,33808
97
93
  operate/wallet/wallet_recovery_manager.py,sha256=kZIKBCIVb-ufntUoCE0IqAJ-Q2YUIl7955UYY6sp8Os,19856
98
- olas_operate_middleware-0.14.1.dist-info/METADATA,sha256=f-5TTJaF2_pDz2a0j7nRdvqdokleT2m2-gJ94jf2YI4,1492
99
- olas_operate_middleware-0.14.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
100
- olas_operate_middleware-0.14.1.dist-info/entry_points.txt,sha256=dM1g2I7ODApKQFcgl5J4NGA7pfBTo6qsUTXM-j2OLlw,44
101
- olas_operate_middleware-0.14.1.dist-info/licenses/LICENSE,sha256=mdBDB-mWKV5Cz4ejBzBiKqan6Z8zVLAh9xwM64O2FW4,11339
102
- olas_operate_middleware-0.14.1.dist-info/RECORD,,
94
+ olas_operate_middleware-0.14.2.dist-info/METADATA,sha256=RMbhPtaO2PcCJJJxdgyi2N0ihdzE0Rt1M83ETVeLltM,1492
95
+ olas_operate_middleware-0.14.2.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
96
+ olas_operate_middleware-0.14.2.dist-info/entry_points.txt,sha256=dM1g2I7ODApKQFcgl5J4NGA7pfBTo6qsUTXM-j2OLlw,44
97
+ olas_operate_middleware-0.14.2.dist-info/licenses/LICENSE,sha256=mdBDB-mWKV5Cz4ejBzBiKqan6Z8zVLAh9xwM64O2FW4,11339
98
+ olas_operate_middleware-0.14.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.3.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -140,7 +140,11 @@ STAKING: t.Dict[Chain, t.Dict[str, str]] = {
140
140
  "modius_alpha_3": "0x9034D0413D122015710f1744A19eFb1d7c2CEB13",
141
141
  "modius_alpha_4": "0x8BcAdb2c291C159F9385964e5eD95a9887302862",
142
142
  },
143
- Chain.POLYGON: {},
143
+ Chain.POLYGON: {
144
+ "polygon_beta_1": "0x9F1936f6afB5EAaA2220032Cf5e265F2Cc9511Cc",
145
+ "polygon_beta_2": "0x22D58680F643333F93205B956a4Aa1dC203a16Ad",
146
+ "polygon_beta_3": "0x8887C2852986e7cbaC99B6065fFe53074A6BCC26", # Note: “Polygon Alpha 3” is a typo in apps — the correct name is Polygon Beta 3.
147
+ },
144
148
  }
145
149
 
146
150
 
@@ -490,15 +490,13 @@ def configure_local_config(
490
490
 
491
491
  print()
492
492
 
493
- template["env_variables"][env_var_name]["value"] = (
493
+ template["env_variables"][env_var_name]["value"] = str(
494
494
  config.user_provided_args[env_var_name]
495
495
  )
496
496
 
497
497
  # TODO: Handle it in a more generic way
498
498
  if (
499
- template["env_variables"][env_var_name]["provision_type"]
500
- == ServiceEnvProvisionType.COMPUTED
501
- and "SUBGRAPH_API_KEY" in config.user_provided_args
499
+ "SUBGRAPH_API_KEY" in config.user_provided_args
502
500
  and "{SUBGRAPH_API_KEY}" in template["env_variables"][env_var_name]["value"]
503
501
  ):
504
502
  template["env_variables"][env_var_name]["value"] = template[
@@ -567,7 +565,10 @@ def get_service(manager: ServiceManager, template: ServiceTemplate) -> Service:
567
565
  if env_var_name not in service.env_variables:
568
566
  service.env_variables[env_var_name] = env_var_data
569
567
 
570
- if env_var_data["provision_type"] == ServiceEnvProvisionType.FIXED:
568
+ if env_var_data["provision_type"] in (
569
+ ServiceEnvProvisionType.FIXED,
570
+ ServiceEnvProvisionType.USER,
571
+ ):
571
572
  service.env_variables[env_var_name]["value"] = env_var_data["value"]
572
573
 
573
574
  service.update_user_params_from_template(service_template=template)
@@ -388,7 +388,7 @@ class FundingManager:
388
388
  )
389
389
 
390
390
  if not staking_contract:
391
- return dict(bonded_assets)
391
+ return ChainAmounts(bonded_assets)
392
392
 
393
393
  staking_manager = StakingManager(Chain(chain))
394
394
  staking_params = staking_manager.get_staking_params(
@@ -69,7 +69,6 @@ from operate.constants import (
69
69
  )
70
70
  from operate.data import DATA_DIR
71
71
  from operate.data.contracts.dual_staking_token.contract import DualStakingTokenContract
72
- from operate.data.contracts.recovery_module.contract import RecoveryModule
73
72
  from operate.data.contracts.staking_token.contract import StakingTokenContract
74
73
  from operate.ledger import (
75
74
  get_default_ledger_api,
@@ -1807,21 +1806,10 @@ class EthSafeTxBuilder(_ChainUtil):
1807
1806
 
1808
1807
  def get_recover_access_data(self, service_id: int) -> t.Dict:
1809
1808
  """Get recover access tx data."""
1810
- instance = t.cast(
1811
- RecoveryModule,
1812
- RecoveryModule.from_dir(
1813
- directory=str(DATA_DIR / "contracts" / "recovery_module"),
1814
- ),
1815
- ).get_instance(
1809
+ instance = registry_contracts.recovery_module.get_instance(
1816
1810
  ledger_api=self.ledger_api,
1817
1811
  contract_address=self.contracts["recovery_module"],
1818
1812
  )
1819
- # TODO Replace the line above by this one once the recovery_module is
1820
- # included in the release of OpenAutonomy.
1821
- # instance = registry_contracts.recovery_module.get_instance( # noqa: E800
1822
- # ledger_api=self.ledger_api, # noqa: E800
1823
- # contract_address=self.contracts["recovery_module"], # noqa: E800
1824
- # ) # noqa: E800
1825
1813
  txd = instance.encode_abi(
1826
1814
  abi_element_identifier="recoverAccess",
1827
1815
  args=[service_id],
@@ -1,20 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # ------------------------------------------------------------------------------
3
- #
4
- # Copyright 2025 Valory AG
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # ------------------------------------------------------------------------------
19
-
20
- """This module contains the support resources for the `RecoveryModule` contract."""
@@ -1,811 +0,0 @@
1
- {
2
- "abi": [
3
- {
4
- "type": "constructor",
5
- "inputs": [
6
- {
7
- "name": "_multiSend",
8
- "type": "address",
9
- "internalType": "address"
10
- },
11
- {
12
- "name": "_serviceRegistry",
13
- "type": "address",
14
- "internalType": "address"
15
- }
16
- ],
17
- "stateMutability": "nonpayable"
18
- },
19
- {
20
- "type": "function",
21
- "name": "DEFAULT_DATA_LENGTH",
22
- "inputs": [],
23
- "outputs": [
24
- {
25
- "name": "",
26
- "type": "uint256",
27
- "internalType": "uint256"
28
- }
29
- ],
30
- "stateMutability": "view"
31
- },
32
- {
33
- "type": "function",
34
- "name": "RECOVER_THRESHOLD",
35
- "inputs": [],
36
- "outputs": [
37
- {
38
- "name": "",
39
- "type": "uint256",
40
- "internalType": "uint256"
41
- }
42
- ],
43
- "stateMutability": "view"
44
- },
45
- {
46
- "type": "function",
47
- "name": "create",
48
- "inputs": [
49
- {
50
- "name": "multisigOwners",
51
- "type": "address[]",
52
- "internalType": "address[]"
53
- },
54
- {
55
- "name": "threshold",
56
- "type": "uint256",
57
- "internalType": "uint256"
58
- },
59
- {
60
- "name": "data",
61
- "type": "bytes",
62
- "internalType": "bytes"
63
- }
64
- ],
65
- "outputs": [
66
- {
67
- "name": "multisig",
68
- "type": "address",
69
- "internalType": "address"
70
- }
71
- ],
72
- "stateMutability": "nonpayable"
73
- },
74
- {
75
- "type": "function",
76
- "name": "enableModule",
77
- "inputs": [],
78
- "outputs": [],
79
- "stateMutability": "nonpayable"
80
- },
81
- {
82
- "type": "function",
83
- "name": "multiSend",
84
- "inputs": [],
85
- "outputs": [
86
- {
87
- "name": "",
88
- "type": "address",
89
- "internalType": "address"
90
- }
91
- ],
92
- "stateMutability": "view"
93
- },
94
- {
95
- "type": "function",
96
- "name": "recoverAccess",
97
- "inputs": [
98
- {
99
- "name": "serviceId",
100
- "type": "uint256",
101
- "internalType": "uint256"
102
- }
103
- ],
104
- "outputs": [],
105
- "stateMutability": "nonpayable"
106
- },
107
- {
108
- "type": "function",
109
- "name": "serviceRegistry",
110
- "inputs": [],
111
- "outputs": [
112
- {
113
- "name": "",
114
- "type": "address",
115
- "internalType": "address"
116
- }
117
- ],
118
- "stateMutability": "view"
119
- },
120
- {
121
- "type": "event",
122
- "name": "AccessRecovered",
123
- "inputs": [
124
- {
125
- "name": "serviceOwner",
126
- "type": "address",
127
- "indexed": true,
128
- "internalType": "address"
129
- },
130
- {
131
- "name": "serviceId",
132
- "type": "uint256",
133
- "indexed": true,
134
- "internalType": "uint256"
135
- }
136
- ],
137
- "anonymous": false
138
- },
139
- {
140
- "type": "event",
141
- "name": "EnabledModule",
142
- "inputs": [
143
- {
144
- "name": "module",
145
- "type": "address",
146
- "indexed": true,
147
- "internalType": "address"
148
- }
149
- ],
150
- "anonymous": false
151
- },
152
- {
153
- "type": "event",
154
- "name": "ServiceRedeployed",
155
- "inputs": [
156
- {
157
- "name": "serviceOwner",
158
- "type": "address",
159
- "indexed": true,
160
- "internalType": "address"
161
- },
162
- {
163
- "name": "serviceId",
164
- "type": "uint256",
165
- "indexed": true,
166
- "internalType": "uint256"
167
- },
168
- {
169
- "name": "owners",
170
- "type": "address[]",
171
- "indexed": false,
172
- "internalType": "address[]"
173
- },
174
- {
175
- "name": "threshold",
176
- "type": "uint256",
177
- "indexed": false,
178
- "internalType": "uint256"
179
- }
180
- ],
181
- "anonymous": false
182
- },
183
- {
184
- "type": "error",
185
- "name": "DelegatecallOnly",
186
- "inputs": []
187
- },
188
- {
189
- "type": "error",
190
- "name": "DuplicateModule",
191
- "inputs": []
192
- },
193
- {
194
- "type": "error",
195
- "name": "EmptyModulesOnly",
196
- "inputs": []
197
- },
198
- {
199
- "type": "error",
200
- "name": "IncorrectDataLength",
201
- "inputs": [
202
- {
203
- "name": "expected",
204
- "type": "uint256",
205
- "internalType": "uint256"
206
- },
207
- {
208
- "name": "provided",
209
- "type": "uint256",
210
- "internalType": "uint256"
211
- }
212
- ]
213
- },
214
- {
215
- "type": "error",
216
- "name": "OwnerOnly",
217
- "inputs": [
218
- {
219
- "name": "sender",
220
- "type": "address",
221
- "internalType": "address"
222
- },
223
- {
224
- "name": "owner",
225
- "type": "address",
226
- "internalType": "address"
227
- }
228
- ]
229
- },
230
- {
231
- "type": "error",
232
- "name": "ReentrancyGuard",
233
- "inputs": []
234
- },
235
- {
236
- "type": "error",
237
- "name": "RegistryOnly",
238
- "inputs": [
239
- {
240
- "name": "sender",
241
- "type": "address",
242
- "internalType": "address"
243
- },
244
- {
245
- "name": "registry",
246
- "type": "address",
247
- "internalType": "address"
248
- }
249
- ]
250
- },
251
- {
252
- "type": "error",
253
- "name": "WrongNumOwners",
254
- "inputs": [
255
- {
256
- "name": "expected",
257
- "type": "uint256",
258
- "internalType": "uint256"
259
- },
260
- {
261
- "name": "provided",
262
- "type": "uint256",
263
- "internalType": "uint256"
264
- }
265
- ]
266
- },
267
- {
268
- "type": "error",
269
- "name": "WrongOwner",
270
- "inputs": [
271
- {
272
- "name": "provided",
273
- "type": "address",
274
- "internalType": "address"
275
- }
276
- ]
277
- },
278
- {
279
- "type": "error",
280
- "name": "WrongServiceState",
281
- "inputs": [
282
- {
283
- "name": "state",
284
- "type": "uint8",
285
- "internalType": "uint8"
286
- },
287
- {
288
- "name": "serviceId",
289
- "type": "uint256",
290
- "internalType": "uint256"
291
- }
292
- ]
293
- },
294
- {
295
- "type": "error",
296
- "name": "WrongThreshold",
297
- "inputs": [
298
- {
299
- "name": "expected",
300
- "type": "uint256",
301
- "internalType": "uint256"
302
- },
303
- {
304
- "name": "provided",
305
- "type": "uint256",
306
- "internalType": "uint256"
307
- }
308
- ]
309
- },
310
- {
311
- "type": "error",
312
- "name": "ZeroAddress",
313
- "inputs": []
314
- },
315
- {
316
- "type": "error",
317
- "name": "ZeroNonceOnly",
318
- "inputs": []
319
- }
320
- ],
321
- "bytecode": "0x60e06040526001600955348015610014575f5ffd5b506040516117ef3803806117ef833981016040819052610033916100a4565b6001600160a01b038216158061005057506001600160a01b038116155b1561006e5760405163d92e233d60e01b815260040160405180910390fd5b306080526001600160a01b0391821660a0521660c0526100d5565b80516001600160a01b038116811461009f575f5ffd5b919050565b5f5f604083850312156100b5575f5ffd5b6100be83610089565b91506100cc60208401610089565b90509250929050565b60805160a05160c0516116a561014a5f395f818160bb0152818161034f0152818161042301528181610861015281816108a30152818161093d015281816109c90152610aad01525f818160fa015281816107810152610e7901525f8181610141015281816101ff015261028101526116a55ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c8063cbcf252a11610058578063cbcf252a146100b6578063e49cda08146100f5578063f02fb7741461011c578063f398dba814610124575f5ffd5b8063242929621461007e57806363745087146100885780639d619683146100a3575b5f5ffd5b610086610137565b005b610090600181565b6040519081526020015b60405180910390f35b6100866100b13660046110e7565b61030e565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161009a565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b610090602081565b6100dd6101323660046111e9565b61082c565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101805760405163f56b123b60e01b815260040160405180910390fd5b600554156101a157604051637ee422c560e01b815260040160405180910390fd5b60015f81905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f546001600160a01b0316146101f557604051630187398b60e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f90815260016020526040902054161561024d57604051633b3a461d60e21b815260040160405180910390fd5b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f81815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a2565b60016009541115610332576040516345f5ce8b60e11b815260040160405180910390fd5b60026009556040516331a9108f60e11b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561039c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c091906112bb565b9050336001600160a01b038216146104015760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b604051630846d5ff60e31b8152600481018390525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634236aff89060240160e060405180830381865afa158015610468573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048c91906112f5565b965050505050925050600160058111156104a8576104a861138c565b8160058111156104ba576104ba61138c565b146104f7578060058111156104d1576104d161138c565b60405163549292e760e01b815260ff9091166004820152602481018590526044016103f8565b6001600160a01b03821661051e5760405163d92e233d60e01b815260040160405180910390fd5b5f826001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561055a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610581919081019061140e565b80519091506060805f5b610596600185611448565b81101561065f5760018582815181106105b1576105b161146d565b60209081029190910101516040516001600160a01b039283166024820152911660448201526001606482015260840160408051601f19818403018152918152602080830180516001600160e01b031663f8dc5dd960e01b179052825191519295508492610627925f928c928492918a9101611498565b60408051601f198184030181529082905261064592916020016114f7565b60408051601f19818403018152919052915060010161058b565b5060018461066d8286611448565b8151811061067d5761067d61146d565b60209081029190910101516040516001600160a01b0392831660248201529116604482015233606482015260840160408051601f19818403018152918152602080830180516001600160e01b031663e318b52b60e01b1790528251915192945083926106f2925f928b92849291899101611498565b60408051601f198184030181529082905261071092916020016114f7565b6040516020818303038152906040529050806040516024016107329190611539565b60408051601f198184030181529181526020820180516001600160e01b03166346c07f8560e11b1790525163468721a760e01b81529092506001600160a01b0387169063468721a7906107b0907f0000000000000000000000000000000000000000000000000000000000000000905f90879060019060040161154b565b6020604051808303815f875af11580156107cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f0919061159f565b50604051889033907fb5107ff9d13ac6cf43e8c27ad100b95516dc653454fe527b8a3dc5e202aa590d905f90a350506001600955505050505050565b5f60016009541115610851576040516345f5ce8b60e11b815260040160405180910390fd5b6002600955336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108d057604051631db36e8b60e31b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044016103f8565b8151602081146108fd57604051631a64813d60e11b815260206004820152602481018290526044016103f8565b5f855190506060805f8680602001905181019061091a91906115be565b6040516331a9108f60e11b8152600481018290529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a691906112bb565b604051630846d5ff60e31b8152600481018490529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634236aff89060240160e060405180830381865afa158015610a0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3291906112f5565b50939c505063ffffffff169350506001600160a01b038a169150610a6b90505760405163d92e233d60e01b815260040160405180910390fd5b898114610a9557604051635372461560e01b815260048101829052602481018b90526044016103f8565b604051634d486f8560e01b8152600481018490525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634d486f85906024015f60405180830381865afa158015610af9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2091908101906115d5565b91505080518714610b5157805160405163f720290d60e01b81526004810191909152602481018890526044016103f8565b5f5b87811015610bf157818181518110610b6d57610b6d61146d565b60200260200101516001600160a01b03168d8281518110610b9057610b9061146d565b60200260200101516001600160a01b031614610be9578c8181518110610bb857610bb861146d565b60200260200101516040516374dba67360e01b81526004016103f891906001600160a01b0391909116815260200190565b600101610b53565b505f896001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c2e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c55919081019061140e565b905080516001148015610c925750836001600160a01b0316815f81518110610c7f57610c7f61146d565b60200260200101516001600160a01b0316145b15610eea575f5b88811015610d60578d8181518110610cb357610cb361146d565b60209081029190910101516040516001600160a01b03909116602482015260016044820152606401604051602081830303815290604052630d582f1360e01b6020820180516001600160e01b0383818316178352505050509750865f8c5f8b518c604051602001610d28959493929190611498565b60408051601f1981840301815290829052610d4692916020016114f7565b60408051601f198184030181529190529650600101610c99565b508c5f81518110610d7357610d7361146d565b60209081029190910101516040516001600160a01b0391821660248201529085166044820152606481018d905260840160408051601f19818403018152918152602080830180516001600160e01b031663f8dc5dd960e01b179052825191519299508892610dea925f928f928492918e9101611498565b60408051601f1981840301815290829052610e0892916020016114f7565b604051602081830303815290604052955085604051602401610e2a9190611539565b60408051601f198184030181529181526020820180516001600160e01b03166346c07f8560e11b1790525163468721a760e01b81529097506001600160a01b038b169063468721a790610ea8907f0000000000000000000000000000000000000000000000000000000000000000905f908c9060019060040161154b565b6020604051808303815f875af1158015610ec4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee8919061159f565b505b896001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610f25573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4c919081019061140e565b9050896001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae91906115be565b9250828c14610fda57604051635372461560e01b815260048101849052602481018d90526044016103f8565b8051881461100857805160405163f720290d60e01b81526004810191909152602481018990526044016103f8565b5f5b8881101561108c5781600161101f838c611448565b6110299190611448565b815181106110395761103961146d565b60200260200101516001600160a01b03168e828151811061105c5761105c61146d565b60200260200101516001600160a01b031614611084578d8181518110610bb857610bb861146d565b60010161100a565b5084846001600160a01b03167f5795fc55b414d902f8e0e955ef070f406b0d406db8ec24fe9bb833c7a478b64a8f8f6040516110c992919061161a565b60405180910390a35050600160095550959998505050505050505050565b5f602082840312156110f7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561113b5761113b6110fe565b604052919050565b5f67ffffffffffffffff82111561115c5761115c6110fe565b5060051b60200190565b6001600160a01b038116811461117a575f5ffd5b50565b5f82601f83011261118c575f5ffd5b813567ffffffffffffffff8111156111a6576111a66110fe565b6111b9601f8201601f1916602001611112565b8181528460208386010111156111cd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156111fb575f5ffd5b833567ffffffffffffffff811115611211575f5ffd5b8401601f81018613611221575f5ffd5b803561123461122f82611143565b611112565b8082825260208201915060208360051b850101925088831115611255575f5ffd5b6020840193505b8284101561128057833561126f81611166565b82526020938401939091019061125c565b955050505060208401359150604084013567ffffffffffffffff8111156112a5575f5ffd5b6112b18682870161117d565b9150509250925092565b5f602082840312156112cb575f5ffd5b81516112d681611166565b9392505050565b805163ffffffff811681146112f0575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a03121561130b575f5ffd5b87516bffffffffffffffffffffffff81168114611326575f5ffd5b602089015190975061133781611166565b6040890151909650945061134d606089016112dd565b935061135b608089016112dd565b925061136960a089016112dd565b915060c08801516006811061137c575f5ffd5b8091505092959891949750929550565b634e487b7160e01b5f52602160045260245ffd5b5f82601f8301126113af575f5ffd5b81516113bd61122f82611143565b8082825260208201915060208360051b8601019250858311156113de575f5ffd5b602085015b838110156114045780516113f681611166565b8352602092830192016113e3565b5095945050505050565b5f6020828403121561141e575f5ffd5b815167ffffffffffffffff811115611434575f5ffd5b611440848285016113a0565b949350505050565b8181038181111561146757634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f600287106114b557634e487b7160e01b5f52602160045260245ffd5b8660f81b82526bffffffffffffffffffffffff198660601b1660018301528460158301528360358301526114ec6055830184611481565b979650505050505050565b5f6114406115058386611481565b84611481565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112d6602083018461150b565b6001600160a01b0385168152836020820152608060408201525f611572608083018561150b565b90506002831061159057634e487b7160e01b5f52602160045260245ffd5b82606083015295945050505050565b5f602082840312156115af575f5ffd5b815180151581146112d6575f5ffd5b5f602082840312156115ce575f5ffd5b5051919050565b5f5f604083850312156115e6575f5ffd5b8251602084015190925067ffffffffffffffff811115611604575f5ffd5b611610858286016113a0565b9150509250929050565b604080825283519082018190525f9060208501906060840190835b8181101561165c5783516001600160a01b0316835260209384019390920191600101611635565b505060209390930193909352509291505056fea26469706673582212208d9f5b58c915ac9e6cffc7f49ab633eb5742c62ea252885584e6abdee0068a1864736f6c634300081e0033",
322
- "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c8063cbcf252a11610058578063cbcf252a146100b6578063e49cda08146100f5578063f02fb7741461011c578063f398dba814610124575f5ffd5b8063242929621461007e57806363745087146100885780639d619683146100a3575b5f5ffd5b610086610137565b005b610090600181565b6040519081526020015b60405180910390f35b6100866100b13660046110e7565b61030e565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161009a565b6100dd7f000000000000000000000000000000000000000000000000000000000000000081565b610090602081565b6100dd6101323660046111e9565b61082c565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101805760405163f56b123b60e01b815260040160405180910390fd5b600554156101a157604051637ee422c560e01b815260040160405180910390fd5b60015f81905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f546001600160a01b0316146101f557604051630187398b60e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f90815260016020526040902054161561024d57604051633b3a461d60e21b815260040160405180910390fd5b600160208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f81815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455948552835490911681179092555190917fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091a2565b60016009541115610332576040516345f5ce8b60e11b815260040160405180910390fd5b60026009556040516331a9108f60e11b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561039c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c091906112bb565b9050336001600160a01b038216146104015760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b604051630846d5ff60e31b8152600481018390525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634236aff89060240160e060405180830381865afa158015610468573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048c91906112f5565b965050505050925050600160058111156104a8576104a861138c565b8160058111156104ba576104ba61138c565b146104f7578060058111156104d1576104d161138c565b60405163549292e760e01b815260ff9091166004820152602481018590526044016103f8565b6001600160a01b03821661051e5760405163d92e233d60e01b815260040160405180910390fd5b5f826001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561055a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610581919081019061140e565b80519091506060805f5b610596600185611448565b81101561065f5760018582815181106105b1576105b161146d565b60209081029190910101516040516001600160a01b039283166024820152911660448201526001606482015260840160408051601f19818403018152918152602080830180516001600160e01b031663f8dc5dd960e01b179052825191519295508492610627925f928c928492918a9101611498565b60408051601f198184030181529082905261064592916020016114f7565b60408051601f19818403018152919052915060010161058b565b5060018461066d8286611448565b8151811061067d5761067d61146d565b60209081029190910101516040516001600160a01b0392831660248201529116604482015233606482015260840160408051601f19818403018152918152602080830180516001600160e01b031663e318b52b60e01b1790528251915192945083926106f2925f928b92849291899101611498565b60408051601f198184030181529082905261071092916020016114f7565b6040516020818303038152906040529050806040516024016107329190611539565b60408051601f198184030181529181526020820180516001600160e01b03166346c07f8560e11b1790525163468721a760e01b81529092506001600160a01b0387169063468721a7906107b0907f0000000000000000000000000000000000000000000000000000000000000000905f90879060019060040161154b565b6020604051808303815f875af11580156107cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f0919061159f565b50604051889033907fb5107ff9d13ac6cf43e8c27ad100b95516dc653454fe527b8a3dc5e202aa590d905f90a350506001600955505050505050565b5f60016009541115610851576040516345f5ce8b60e11b815260040160405180910390fd5b6002600955336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108d057604051631db36e8b60e31b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044016103f8565b8151602081146108fd57604051631a64813d60e11b815260206004820152602481018290526044016103f8565b5f855190506060805f8680602001905181019061091a91906115be565b6040516331a9108f60e11b8152600481018290529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a691906112bb565b604051630846d5ff60e31b8152600481018490529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634236aff89060240160e060405180830381865afa158015610a0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3291906112f5565b50939c505063ffffffff169350506001600160a01b038a169150610a6b90505760405163d92e233d60e01b815260040160405180910390fd5b898114610a9557604051635372461560e01b815260048101829052602481018b90526044016103f8565b604051634d486f8560e01b8152600481018490525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634d486f85906024015f60405180830381865afa158015610af9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2091908101906115d5565b91505080518714610b5157805160405163f720290d60e01b81526004810191909152602481018890526044016103f8565b5f5b87811015610bf157818181518110610b6d57610b6d61146d565b60200260200101516001600160a01b03168d8281518110610b9057610b9061146d565b60200260200101516001600160a01b031614610be9578c8181518110610bb857610bb861146d565b60200260200101516040516374dba67360e01b81526004016103f891906001600160a01b0391909116815260200190565b600101610b53565b505f896001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c2e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c55919081019061140e565b905080516001148015610c925750836001600160a01b0316815f81518110610c7f57610c7f61146d565b60200260200101516001600160a01b0316145b15610eea575f5b88811015610d60578d8181518110610cb357610cb361146d565b60209081029190910101516040516001600160a01b03909116602482015260016044820152606401604051602081830303815290604052630d582f1360e01b6020820180516001600160e01b0383818316178352505050509750865f8c5f8b518c604051602001610d28959493929190611498565b60408051601f1981840301815290829052610d4692916020016114f7565b60408051601f198184030181529190529650600101610c99565b508c5f81518110610d7357610d7361146d565b60209081029190910101516040516001600160a01b0391821660248201529085166044820152606481018d905260840160408051601f19818403018152918152602080830180516001600160e01b031663f8dc5dd960e01b179052825191519299508892610dea925f928f928492918e9101611498565b60408051601f1981840301815290829052610e0892916020016114f7565b604051602081830303815290604052955085604051602401610e2a9190611539565b60408051601f198184030181529181526020820180516001600160e01b03166346c07f8560e11b1790525163468721a760e01b81529097506001600160a01b038b169063468721a790610ea8907f0000000000000000000000000000000000000000000000000000000000000000905f908c9060019060040161154b565b6020604051808303815f875af1158015610ec4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee8919061159f565b505b896001600160a01b031663a0e67e2b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610f25573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4c919081019061140e565b9050896001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae91906115be565b9250828c14610fda57604051635372461560e01b815260048101849052602481018d90526044016103f8565b8051881461100857805160405163f720290d60e01b81526004810191909152602481018990526044016103f8565b5f5b8881101561108c5781600161101f838c611448565b6110299190611448565b815181106110395761103961146d565b60200260200101516001600160a01b03168e828151811061105c5761105c61146d565b60200260200101516001600160a01b031614611084578d8181518110610bb857610bb861146d565b60010161100a565b5084846001600160a01b03167f5795fc55b414d902f8e0e955ef070f406b0d406db8ec24fe9bb833c7a478b64a8f8f6040516110c992919061161a565b60405180910390a35050600160095550959998505050505050505050565b5f602082840312156110f7575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561113b5761113b6110fe565b604052919050565b5f67ffffffffffffffff82111561115c5761115c6110fe565b5060051b60200190565b6001600160a01b038116811461117a575f5ffd5b50565b5f82601f83011261118c575f5ffd5b813567ffffffffffffffff8111156111a6576111a66110fe565b6111b9601f8201601f1916602001611112565b8181528460208386010111156111cd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156111fb575f5ffd5b833567ffffffffffffffff811115611211575f5ffd5b8401601f81018613611221575f5ffd5b803561123461122f82611143565b611112565b8082825260208201915060208360051b850101925088831115611255575f5ffd5b6020840193505b8284101561128057833561126f81611166565b82526020938401939091019061125c565b955050505060208401359150604084013567ffffffffffffffff8111156112a5575f5ffd5b6112b18682870161117d565b9150509250925092565b5f602082840312156112cb575f5ffd5b81516112d681611166565b9392505050565b805163ffffffff811681146112f0575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a03121561130b575f5ffd5b87516bffffffffffffffffffffffff81168114611326575f5ffd5b602089015190975061133781611166565b6040890151909650945061134d606089016112dd565b935061135b608089016112dd565b925061136960a089016112dd565b915060c08801516006811061137c575f5ffd5b8091505092959891949750929550565b634e487b7160e01b5f52602160045260245ffd5b5f82601f8301126113af575f5ffd5b81516113bd61122f82611143565b8082825260208201915060208360051b8601019250858311156113de575f5ffd5b602085015b838110156114045780516113f681611166565b8352602092830192016113e3565b5095945050505050565b5f6020828403121561141e575f5ffd5b815167ffffffffffffffff811115611434575f5ffd5b611440848285016113a0565b949350505050565b8181038181111561146757634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f600287106114b557634e487b7160e01b5f52602160045260245ffd5b8660f81b82526bffffffffffffffffffffffff198660601b1660018301528460158301528360358301526114ec6055830184611481565b979650505050505050565b5f6114406115058386611481565b84611481565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112d6602083018461150b565b6001600160a01b0385168152836020820152608060408201525f611572608083018561150b565b90506002831061159057634e487b7160e01b5f52602160045260245ffd5b82606083015295945050505050565b5f602082840312156115af575f5ffd5b815180151581146112d6575f5ffd5b5f602082840312156115ce575f5ffd5b5051919050565b5f5f604083850312156115e6575f5ffd5b8251602084015190925067ffffffffffffffff811115611604575f5ffd5b611610858286016113a0565b9150509250929050565b604080825283519082018190525f9060208501906060840190835b8181101561165c5783516001600160a01b0316835260209384019390920191600101611635565b505060209390930193909352509291505056fea26469706673582212208d9f5b58c915ac9e6cffc7f49ab633eb5742c62ea252885584e6abdee0068a1864736f6c634300081e0033",
323
- "linkReferences": {},
324
- "immutableReferences": {
325
- "10591": [
326
- {
327
- "start": 321,
328
- "length": 32
329
- },
330
- {
331
- "start": 511,
332
- "length": 32
333
- },
334
- {
335
- "start": 641,
336
- "length": 32
337
- }
338
- ],
339
- "10593": [
340
- {
341
- "start": 250,
342
- "length": 32
343
- },
344
- {
345
- "start": 1921,
346
- "length": 32
347
- },
348
- {
349
- "start": 3705,
350
- "length": 32
351
- }
352
- ],
353
- "10595": [
354
- {
355
- "start": 187,
356
- "length": 32
357
- },
358
- {
359
- "start": 847,
360
- "length": 32
361
- },
362
- {
363
- "start": 1059,
364
- "length": 32
365
- },
366
- {
367
- "start": 2145,
368
- "length": 32
369
- },
370
- {
371
- "start": 2211,
372
- "length": 32
373
- },
374
- {
375
- "start": 2365,
376
- "length": 32
377
- },
378
- {
379
- "start": 2505,
380
- "length": 32
381
- },
382
- {
383
- "start": 2733,
384
- "length": 32
385
- }
386
- ]
387
- },
388
- "methodIdentifiers": {
389
- "DEFAULT_DATA_LENGTH()": "f02fb774",
390
- "RECOVER_THRESHOLD()": "63745087",
391
- "create(address[],uint256,bytes)": "f398dba8",
392
- "enableModule()": "24292962",
393
- "multiSend()": "e49cda08",
394
- "recoverAccess(uint256)": "9d619683",
395
- "serviceRegistry()": "cbcf252a"
396
- },
397
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_multiSend\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_serviceRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DelegatecallOnly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyModulesOnly\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"}],\"name\":\"IncorrectDataLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerOnly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"RegistryOnly\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"}],\"name\":\"WrongNumOwners\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"provided\",\"type\":\"address\"}],\"name\":\"WrongOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"serviceId\",\"type\":\"uint256\"}],\"name\":\"WrongServiceState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"}],\"name\":\"WrongThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroNonceOnly\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"serviceOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"serviceId\",\"type\":\"uint256\"}],\"name\":\"AccessRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"EnabledModule\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"serviceOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"serviceId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"name\":\"ServiceRedeployed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_DATA_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECOVER_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"multisigOwners\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"multisig\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiSend\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"serviceId\",\"type\":\"uint256\"}],\"name\":\"recoverAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aleksandr Kuperman - <aleksandr.kuperman@valory.xyz>Andrey Lebedev - <andrey.lebedev@valory.xyz>Mariapia Moscatiello - <mariapia.moscatiello@valory.xyz>\",\"errors\":{\"DelegatecallOnly()\":[{\"details\":\"Must be `DELEGATECALL` only.\"}],\"DuplicateModule()\":[{\"details\":\"Modules must not be duplicated.\"}],\"EmptyModulesOnly()\":[{\"details\":\"Modules must not be initialized.\"}],\"IncorrectDataLength(uint256,uint256)\":[{\"details\":\"Provided incorrect data length.\",\"params\":{\"expected\":\"Expected minimum data length.\",\"provided\":\"Provided data length.\"}}],\"OwnerOnly(address,address)\":[{\"details\":\"Only `owner` has a privilege, but the `sender` was provided.\",\"params\":{\"owner\":\"Required sender address as an owner.\",\"sender\":\"Sender address.\"}}],\"ReentrancyGuard()\":[{\"details\":\"Caught reentrancy violation.\"}],\"RegistryOnly(address,address)\":[{\"details\":\"Only `registry` has a privilege, but the `sender` was provided.\",\"params\":{\"registry\":\"Required sender address as a registry.\",\"sender\":\"Sender address.\"}}],\"WrongNumOwners(uint256,uint256)\":[{\"details\":\"Provided incorrect number of owners.\",\"params\":{\"expected\":\"Expected number of owners.\",\"provided\":\"Provided number of owners.\"}}],\"WrongOwner(address)\":[{\"details\":\"Provided incorrect multisig owner.\",\"params\":{\"provided\":\"Provided owner address.\"}}],\"WrongServiceState(uint8,uint256)\":[{\"details\":\"Wrong state of a service.\",\"params\":{\"serviceId\":\"Service Id.\",\"state\":\"Service state.\"}}],\"WrongThreshold(uint256,uint256)\":[{\"details\":\"Provided incorrect multisig threshold.\",\"params\":{\"expected\":\"Expected threshold.\",\"provided\":\"Provided threshold.\"}}],\"ZeroAddress()\":[{\"details\":\"Provided zero address.\"}],\"ZeroNonceOnly()\":[{\"details\":\"Nonce must be zero.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"RecoveryModule constructor.\",\"params\":{\"_multiSend\":\"Multisend contract address.\",\"_serviceRegistry\":\"Service Registry contract address.\"}},\"create(address[],uint256,bytes)\":{\"details\":\"Updates and/or verifies the existent gnosis safe multisig for changed owners and threshold.\",\"params\":{\"data\":\"Packed data containing multisig service Id.\",\"multisigOwners\":\"Set of updated multisig owners to verify against.\",\"threshold\":\"Updated number for multisig transaction confirmations.\"},\"returns\":{\"multisig\":\"Multisig address.\"}},\"enableModule()\":{\"details\":\"Enables self address as a multisig module.\"},\"recoverAccess(uint256)\":{\"details\":\"Recovers service multisig access for a specified service Id.\",\"params\":{\"serviceId\":\"Service Id.\"}}},\"title\":\"RecoveryModule - Smart contract for Safe recovery module for scenarios when the access is lost\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address[],uint256,bytes)\":{\"notice\":\"This function operates with existent multisig proxy that is requested to be updated in terms of the set of owners' addresses and the threshold. There are two scenarios possible: 1. The multisig proxy is already updated before reaching this function. Then the multisig address must be passed as a payload such that its owners and threshold are verified against those specified in the argument list. 2. The multisig proxy is not yet updated. Then the service Id must be passed in a packed bytes of data in order to update multisig owners to match service agent instances. The updated multisig proxy is then going to be verified with the provided set of owners' addresses and the threshold. Note that owners' addresses in the multisig are stored in reverse order compared to how they were added: https://etherscan.io/address/0xd9db270c1b5e3bd161e8c8503c55ceabee709552#code#F6#L56\"},\"enableModule()\":{\"notice\":\"This function must only be called via `DELEGATECALL` when a Safe contract is created. For enabling module after multisig is created use direct native Safe enableModule() function call.\"},\"recoverAccess(uint256)\":{\"notice\":\"Only service owner is entitled to recover and become the ultimate multisig owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/multisigs/RecoveryModule.sol\":\"RecoveryModule\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":750},\"remappings\":[\":@gnosis.pm/=node_modules/@gnosis.pm/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"contracts/multisigs/RecoveryModule.sol\":{\"keccak256\":\"0x588aa4a836dc6168a1a7b84f790275920d326c54627e9a5754a14018845c40e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e3d3f0fb791b08c830d87c5b4c75c00fc72389b788c1bf7362973fd313fd476\",\"dweb:/ipfs/Qmee3fmPpuBE4e45fNV8w6UrSJZZUccDurynv6cecoSwBf\"]},\"node_modules/@gnosis.pm/safe-contracts/contracts/examples/libraries/GnosisSafeStorage.sol\":{\"keccak256\":\"0xecfd0d8a43d859ef1fb8161cb21ce5d38461603383378a5b1c4c7d5d4a3bfbf3\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://4248ba92a7d4b9c24344944427b7a2f092f2328d57d39317f4a9f178f503beb5\",\"dweb:/ipfs/QmUFuLoQRjZdx7fsDEprFstuDjLQ7em3syagHA8b8AD2Sa\"]}},\"version\":1}",
398
- "metadata": {
399
- "compiler": {
400
- "version": "0.8.30+commit.73712a01"
401
- },
402
- "language": "Solidity",
403
- "output": {
404
- "abi": [
405
- {
406
- "inputs": [
407
- {
408
- "internalType": "address",
409
- "name": "_multiSend",
410
- "type": "address"
411
- },
412
- {
413
- "internalType": "address",
414
- "name": "_serviceRegistry",
415
- "type": "address"
416
- }
417
- ],
418
- "stateMutability": "nonpayable",
419
- "type": "constructor"
420
- },
421
- {
422
- "inputs": [],
423
- "type": "error",
424
- "name": "DelegatecallOnly"
425
- },
426
- {
427
- "inputs": [],
428
- "type": "error",
429
- "name": "DuplicateModule"
430
- },
431
- {
432
- "inputs": [],
433
- "type": "error",
434
- "name": "EmptyModulesOnly"
435
- },
436
- {
437
- "inputs": [
438
- {
439
- "internalType": "uint256",
440
- "name": "expected",
441
- "type": "uint256"
442
- },
443
- {
444
- "internalType": "uint256",
445
- "name": "provided",
446
- "type": "uint256"
447
- }
448
- ],
449
- "type": "error",
450
- "name": "IncorrectDataLength"
451
- },
452
- {
453
- "inputs": [
454
- {
455
- "internalType": "address",
456
- "name": "sender",
457
- "type": "address"
458
- },
459
- {
460
- "internalType": "address",
461
- "name": "owner",
462
- "type": "address"
463
- }
464
- ],
465
- "type": "error",
466
- "name": "OwnerOnly"
467
- },
468
- {
469
- "inputs": [],
470
- "type": "error",
471
- "name": "ReentrancyGuard"
472
- },
473
- {
474
- "inputs": [
475
- {
476
- "internalType": "address",
477
- "name": "sender",
478
- "type": "address"
479
- },
480
- {
481
- "internalType": "address",
482
- "name": "registry",
483
- "type": "address"
484
- }
485
- ],
486
- "type": "error",
487
- "name": "RegistryOnly"
488
- },
489
- {
490
- "inputs": [
491
- {
492
- "internalType": "uint256",
493
- "name": "expected",
494
- "type": "uint256"
495
- },
496
- {
497
- "internalType": "uint256",
498
- "name": "provided",
499
- "type": "uint256"
500
- }
501
- ],
502
- "type": "error",
503
- "name": "WrongNumOwners"
504
- },
505
- {
506
- "inputs": [
507
- {
508
- "internalType": "address",
509
- "name": "provided",
510
- "type": "address"
511
- }
512
- ],
513
- "type": "error",
514
- "name": "WrongOwner"
515
- },
516
- {
517
- "inputs": [
518
- {
519
- "internalType": "uint8",
520
- "name": "state",
521
- "type": "uint8"
522
- },
523
- {
524
- "internalType": "uint256",
525
- "name": "serviceId",
526
- "type": "uint256"
527
- }
528
- ],
529
- "type": "error",
530
- "name": "WrongServiceState"
531
- },
532
- {
533
- "inputs": [
534
- {
535
- "internalType": "uint256",
536
- "name": "expected",
537
- "type": "uint256"
538
- },
539
- {
540
- "internalType": "uint256",
541
- "name": "provided",
542
- "type": "uint256"
543
- }
544
- ],
545
- "type": "error",
546
- "name": "WrongThreshold"
547
- },
548
- {
549
- "inputs": [],
550
- "type": "error",
551
- "name": "ZeroAddress"
552
- },
553
- {
554
- "inputs": [],
555
- "type": "error",
556
- "name": "ZeroNonceOnly"
557
- },
558
- {
559
- "inputs": [
560
- {
561
- "internalType": "address",
562
- "name": "serviceOwner",
563
- "type": "address",
564
- "indexed": true
565
- },
566
- {
567
- "internalType": "uint256",
568
- "name": "serviceId",
569
- "type": "uint256",
570
- "indexed": true
571
- }
572
- ],
573
- "type": "event",
574
- "name": "AccessRecovered",
575
- "anonymous": false
576
- },
577
- {
578
- "inputs": [
579
- {
580
- "internalType": "address",
581
- "name": "module",
582
- "type": "address",
583
- "indexed": true
584
- }
585
- ],
586
- "type": "event",
587
- "name": "EnabledModule",
588
- "anonymous": false
589
- },
590
- {
591
- "inputs": [
592
- {
593
- "internalType": "address",
594
- "name": "serviceOwner",
595
- "type": "address",
596
- "indexed": true
597
- },
598
- {
599
- "internalType": "uint256",
600
- "name": "serviceId",
601
- "type": "uint256",
602
- "indexed": true
603
- },
604
- {
605
- "internalType": "address[]",
606
- "name": "owners",
607
- "type": "address[]",
608
- "indexed": false
609
- },
610
- {
611
- "internalType": "uint256",
612
- "name": "threshold",
613
- "type": "uint256",
614
- "indexed": false
615
- }
616
- ],
617
- "type": "event",
618
- "name": "ServiceRedeployed",
619
- "anonymous": false
620
- },
621
- {
622
- "inputs": [],
623
- "stateMutability": "view",
624
- "type": "function",
625
- "name": "DEFAULT_DATA_LENGTH",
626
- "outputs": [
627
- {
628
- "internalType": "uint256",
629
- "name": "",
630
- "type": "uint256"
631
- }
632
- ]
633
- },
634
- {
635
- "inputs": [],
636
- "stateMutability": "view",
637
- "type": "function",
638
- "name": "RECOVER_THRESHOLD",
639
- "outputs": [
640
- {
641
- "internalType": "uint256",
642
- "name": "",
643
- "type": "uint256"
644
- }
645
- ]
646
- },
647
- {
648
- "inputs": [
649
- {
650
- "internalType": "address[]",
651
- "name": "multisigOwners",
652
- "type": "address[]"
653
- },
654
- {
655
- "internalType": "uint256",
656
- "name": "threshold",
657
- "type": "uint256"
658
- },
659
- {
660
- "internalType": "bytes",
661
- "name": "data",
662
- "type": "bytes"
663
- }
664
- ],
665
- "stateMutability": "nonpayable",
666
- "type": "function",
667
- "name": "create",
668
- "outputs": [
669
- {
670
- "internalType": "address",
671
- "name": "multisig",
672
- "type": "address"
673
- }
674
- ]
675
- },
676
- {
677
- "inputs": [],
678
- "stateMutability": "nonpayable",
679
- "type": "function",
680
- "name": "enableModule"
681
- },
682
- {
683
- "inputs": [],
684
- "stateMutability": "view",
685
- "type": "function",
686
- "name": "multiSend",
687
- "outputs": [
688
- {
689
- "internalType": "address",
690
- "name": "",
691
- "type": "address"
692
- }
693
- ]
694
- },
695
- {
696
- "inputs": [
697
- {
698
- "internalType": "uint256",
699
- "name": "serviceId",
700
- "type": "uint256"
701
- }
702
- ],
703
- "stateMutability": "nonpayable",
704
- "type": "function",
705
- "name": "recoverAccess"
706
- },
707
- {
708
- "inputs": [],
709
- "stateMutability": "view",
710
- "type": "function",
711
- "name": "serviceRegistry",
712
- "outputs": [
713
- {
714
- "internalType": "address",
715
- "name": "",
716
- "type": "address"
717
- }
718
- ]
719
- }
720
- ],
721
- "devdoc": {
722
- "kind": "dev",
723
- "methods": {
724
- "constructor": {
725
- "details": "RecoveryModule constructor.",
726
- "params": {
727
- "_multiSend": "Multisend contract address.",
728
- "_serviceRegistry": "Service Registry contract address."
729
- }
730
- },
731
- "create(address[],uint256,bytes)": {
732
- "details": "Updates and/or verifies the existent gnosis safe multisig for changed owners and threshold.",
733
- "params": {
734
- "data": "Packed data containing multisig service Id.",
735
- "multisigOwners": "Set of updated multisig owners to verify against.",
736
- "threshold": "Updated number for multisig transaction confirmations."
737
- },
738
- "returns": {
739
- "multisig": "Multisig address."
740
- }
741
- },
742
- "enableModule()": {
743
- "details": "Enables self address as a multisig module."
744
- },
745
- "recoverAccess(uint256)": {
746
- "details": "Recovers service multisig access for a specified service Id.",
747
- "params": {
748
- "serviceId": "Service Id."
749
- }
750
- }
751
- },
752
- "version": 1
753
- },
754
- "userdoc": {
755
- "kind": "user",
756
- "methods": {
757
- "create(address[],uint256,bytes)": {
758
- "notice": "This function operates with existent multisig proxy that is requested to be updated in terms of the set of owners' addresses and the threshold. There are two scenarios possible: 1. The multisig proxy is already updated before reaching this function. Then the multisig address must be passed as a payload such that its owners and threshold are verified against those specified in the argument list. 2. The multisig proxy is not yet updated. Then the service Id must be passed in a packed bytes of data in order to update multisig owners to match service agent instances. The updated multisig proxy is then going to be verified with the provided set of owners' addresses and the threshold. Note that owners' addresses in the multisig are stored in reverse order compared to how they were added: https://etherscan.io/address/0xd9db270c1b5e3bd161e8c8503c55ceabee709552#code#F6#L56"
759
- },
760
- "enableModule()": {
761
- "notice": "This function must only be called via `DELEGATECALL` when a Safe contract is created. For enabling module after multisig is created use direct native Safe enableModule() function call."
762
- },
763
- "recoverAccess(uint256)": {
764
- "notice": "Only service owner is entitled to recover and become the ultimate multisig owner."
765
- }
766
- },
767
- "version": 1
768
- }
769
- },
770
- "settings": {
771
- "remappings": [
772
- "@gnosis.pm/=node_modules/@gnosis.pm/",
773
- "ds-test/=lib/solmate/lib/ds-test/src/",
774
- "forge-std/=lib/forge-std/src/",
775
- "solmate/=lib/solmate/src/"
776
- ],
777
- "optimizer": {
778
- "enabled": true,
779
- "runs": 750
780
- },
781
- "metadata": {
782
- "bytecodeHash": "ipfs"
783
- },
784
- "compilationTarget": {
785
- "contracts/multisigs/RecoveryModule.sol": "RecoveryModule"
786
- },
787
- "evmVersion": "prague",
788
- "libraries": {}
789
- },
790
- "sources": {
791
- "contracts/multisigs/RecoveryModule.sol": {
792
- "keccak256": "0x588aa4a836dc6168a1a7b84f790275920d326c54627e9a5754a14018845c40e3",
793
- "urls": [
794
- "bzz-raw://3e3d3f0fb791b08c830d87c5b4c75c00fc72389b788c1bf7362973fd313fd476",
795
- "dweb:/ipfs/Qmee3fmPpuBE4e45fNV8w6UrSJZZUccDurynv6cecoSwBf"
796
- ],
797
- "license": "MIT"
798
- },
799
- "node_modules/@gnosis.pm/safe-contracts/contracts/examples/libraries/GnosisSafeStorage.sol": {
800
- "keccak256": "0xecfd0d8a43d859ef1fb8161cb21ce5d38461603383378a5b1c4c7d5d4a3bfbf3",
801
- "urls": [
802
- "bzz-raw://4248ba92a7d4b9c24344944427b7a2f092f2328d57d39317f4a9f178f503beb5",
803
- "dweb:/ipfs/QmUFuLoQRjZdx7fsDEprFstuDjLQ7em3syagHA8b8AD2Sa"
804
- ],
805
- "license": "LGPL-3.0-only"
806
- }
807
- },
808
- "version": 1
809
- },
810
- "id": 20
811
- }
@@ -1,61 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # ------------------------------------------------------------------------------
3
- #
4
- # Copyright 2025 Valory AG
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # ------------------------------------------------------------------------------
19
-
20
- """This module contains the class to connect to the `RecoveryModule` contract."""
21
-
22
-
23
- from typing import Any, Dict
24
-
25
- from aea.configurations.base import PublicId
26
- from aea.contracts.base import Contract
27
- from aea.crypto.base import LedgerApi
28
-
29
-
30
- PUBLIC_ID = PublicId.from_str("valory/recovery_module:0.1.0")
31
-
32
-
33
- class RecoveryModule(Contract):
34
- """The RecoveryModule contract"""
35
-
36
- contract_id = PUBLIC_ID
37
-
38
- @classmethod
39
- def get_recover_access_transaction(
40
- cls,
41
- ledger_api: LedgerApi,
42
- contract_address: str,
43
- owner: str,
44
- service_id: int,
45
- raise_on_try: bool = False,
46
- ) -> Dict[str, Any]:
47
- """Get the recover access transaction."""
48
-
49
- tx_params = ledger_api.build_transaction(
50
- contract_instance=cls.get_instance(
51
- ledger_api=ledger_api, contract_address=contract_address
52
- ),
53
- method_name="recoverAccess",
54
- method_args={
55
- "serviceId": service_id,
56
- },
57
- tx_args={"sender_address": owner},
58
- raise_on_try=raise_on_try,
59
- )
60
-
61
- return tx_params
@@ -1,23 +0,0 @@
1
- name: recovery_module
2
- author: valory
3
- version: 0.1.0
4
- type: contract
5
- description: Recovery module
6
- license: Apache-2.0
7
- aea_version: '>=2.0.0, <3.0.0'
8
- fingerprint:
9
- __init__.py: bafybeicjlkmxs5ikpgdtgndifstpmmpaixwcbgouvmt6gowuhf5dy3dpgu
10
- build/RecoveryModule.json: bafybeifsyjdbprcp4kxpijlpqfovxcf7cv2ujapt3d5zn34wby26ldv4ky
11
- contract.py: bafybeifihpwb3etbrnn2hqdizsp5zolis3ur23slt3q5zctcykm5nlvv7q
12
- fingerprint_ignore_patterns: []
13
- contracts: []
14
- class_name: RecoveryModule
15
- contract_interface_paths:
16
- ethereum: build/RecoveryModule.json
17
- dependencies:
18
- open-aea-ledger-ethereum:
19
- version: ==1.60.0
20
- open-aea-test-autonomy:
21
- version: ==0.18.3
22
- web3:
23
- version: <7,>=6.0.0