@venusprotocol/governance-contracts 2.5.0-dev.5 → 2.5.0-dev.7
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/deploy/005-remote-timelock.ts +9 -0
- package/deploy/008-configure-acm-commands-aggregator.ts +43 -5
- package/deploy/010-redstone-and-vault-permission.ts +102 -0
- package/deployments/basesepolia/ACMCommandsAggregator.json +366 -0
- package/deployments/basesepolia/CriticalTimelock.json +691 -0
- package/deployments/basesepolia/DefaultProxyAdmin.json +200 -0
- package/deployments/basesepolia/FastTrackTimelock.json +691 -0
- package/deployments/basesepolia/NormalTimelock.json +691 -0
- package/deployments/basesepolia/OmnichainExecutorOwner.json +555 -0
- package/deployments/basesepolia/OmnichainExecutorOwner_Implementation.json +600 -0
- package/deployments/basesepolia/OmnichainExecutorOwner_Proxy.json +262 -0
- package/deployments/basesepolia/OmnichainGovernanceExecutor.json +1840 -0
- package/deployments/basesepolia/solcInputs/39b818455672acbd6d12469b0e689d7a.json +40 -0
- package/deployments/basesepolia/solcInputs/9f400d4fd6f6fcf916824838bc678e25.json +139 -0
- package/deployments/basesepolia/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
- package/deployments/basesepolia/solcInputs/dd255b4e0156dfc73554b72a83ca02d8.json +40 -0
- package/deployments/basesepolia/solcInputs/e5536fb1b5f4db72d1c808989021a017.json +73 -0
- package/deployments/basesepolia.json +3859 -0
- package/deployments/basesepolia_addresses.json +10 -1
- package/deployments/bscmainnet/ACMCommandsAggregator.json +366 -0
- package/deployments/bscmainnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
- package/deployments/bscmainnet.json +245 -0
- package/deployments/bscmainnet_addresses.json +1 -0
- package/deployments/bsctestnet/ACMCommandsAggregator.json +366 -0
- package/deployments/bsctestnet/solcInputs/c8adce9942919fd992f7532e82a0e082.json +43 -0
- package/deployments/bsctestnet.json +245 -0
- package/deployments/bsctestnet_addresses.json +1 -0
- package/dist/deploy/005-remote-timelock.d.ts +1 -0
- package/dist/deploy/005-remote-timelock.d.ts.map +1 -1
- package/dist/deploy/005-remote-timelock.js +9 -0
- package/dist/deploy/005-remote-timelock.js.map +1 -1
- package/dist/deploy/008-configure-acm-commands-aggregator.d.ts.map +1 -1
- package/dist/deploy/008-configure-acm-commands-aggregator.js +43 -4
- package/dist/deploy/008-configure-acm-commands-aggregator.js.map +1 -1
- package/dist/deploy/010-redstone-and-vault-permission.d.ts +4 -0
- package/dist/deploy/010-redstone-and-vault-permission.d.ts.map +1 -0
- package/dist/deploy/010-redstone-and-vault-permission.js +75 -0
- package/dist/deploy/010-redstone-and-vault-permission.js.map +1 -0
- package/dist/deployments/bscmainnet.json +245 -0
- package/dist/deployments/bsctestnet.json +245 -0
- package/dist/helpers/Addresses.d.ts +76 -0
- package/dist/helpers/Addresses.d.ts.map +1 -0
- package/dist/helpers/Addresses.js +80 -0
- package/dist/helpers/Addresses.js.map +1 -0
- package/dist/helpers/permissions.d.ts +0 -1
- package/dist/helpers/permissions.d.ts.map +1 -1
- package/dist/helpers/permissions.js +1 -8
- package/dist/helpers/permissions.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ export enum REMOTE_NETWORKS {
|
|
|
13
13
|
ZKSYNCMAINNET = "zksyncmainnet",
|
|
14
14
|
OPSEPOLIA = "opsepolia",
|
|
15
15
|
OPMAINNET = "opmainnet",
|
|
16
|
+
BASESEPOLIA = "basesepolia",
|
|
16
17
|
HARDHAT = "hardhat",
|
|
17
18
|
}
|
|
18
19
|
type DelayTypes = {
|
|
@@ -80,6 +81,11 @@ export const delayConfig: DelayConfig = {
|
|
|
80
81
|
fast: 21600,
|
|
81
82
|
critical: 3600,
|
|
82
83
|
},
|
|
84
|
+
basesepolia: {
|
|
85
|
+
normal: 600,
|
|
86
|
+
fast: 300,
|
|
87
|
+
critical: 100,
|
|
88
|
+
},
|
|
83
89
|
};
|
|
84
90
|
|
|
85
91
|
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
@@ -98,6 +104,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
98
104
|
args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].normal],
|
|
99
105
|
log: true,
|
|
100
106
|
autoMine: true,
|
|
107
|
+
skipIfAlreadyDeployed: true,
|
|
101
108
|
});
|
|
102
109
|
|
|
103
110
|
await deploy(live ? "FastTrackTimelock" : "FastTrackTimelockRemote", {
|
|
@@ -106,6 +113,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
106
113
|
args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].fast],
|
|
107
114
|
log: true,
|
|
108
115
|
autoMine: true,
|
|
116
|
+
skipIfAlreadyDeployed: true,
|
|
109
117
|
});
|
|
110
118
|
|
|
111
119
|
await deploy(live ? "CriticalTimelock" : "CriticalTimelockRemote", {
|
|
@@ -114,6 +122,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
114
122
|
args: [omnichainGovernanceExecutorAddress, delayConfig[networkName].critical],
|
|
115
123
|
log: true,
|
|
116
124
|
autoMine: true,
|
|
125
|
+
skipIfAlreadyDeployed: true,
|
|
117
126
|
});
|
|
118
127
|
};
|
|
119
128
|
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
getPrimeRevokePermissions,
|
|
29
29
|
getProtocolShareReservePermissions,
|
|
30
30
|
getRedstoneOraclePermissions,
|
|
31
|
-
getRedstoneOracleRevokePermissions,
|
|
32
31
|
getResilientOraclePermissions,
|
|
33
32
|
getResilientOracleRevokePermissions,
|
|
34
33
|
getRewardDistributorPermissionsBlockbased,
|
|
@@ -71,6 +70,10 @@ const SEPOLIA_sFrxETH_ORACLE = "0x61EB836afA467677e6b403D504fe69D6940e7996";
|
|
|
71
70
|
const OPBNBTESTNET_RESILIENT_ORACLE = "0xEF4e53a9A4565ef243A2f0ee9a7fc2410E1aA623";
|
|
72
71
|
const OPBNBTESTNET_BINANCE_ORACLE = "0x496B6b03469472572C47bdB407d5549b244a74F2";
|
|
73
72
|
const OPBNBTESTNET_BOUND_VALIDATOR = "0x049537Bb065e6253e9D8D08B45Bf6b753657A746";
|
|
73
|
+
const BASESEPOLIA_RESILIENT_ORACLE = "0xC34871C982cf0Bc6e7aCa2c2670Bc319bDA1C744";
|
|
74
|
+
const BASESEPOLIA_CHAINLINK_ORACLE = "0x801aB33A69AD867500fbCda7b3dB66C73151494b";
|
|
75
|
+
const BASESEPOLIA_REDSTONE_ORACLE = "0x8267FE3f75E0A37ee34e113E767F9C9727206838";
|
|
76
|
+
const BASESEPOLIA_BOUND_VALIDATOR = "0xC76284488E57554A457A75a8b166fB2ADAB430dB";
|
|
74
77
|
|
|
75
78
|
const ARBITRUMONE_XVS = "0xc1Eb7689147C81aC840d4FF0D298489fc7986d52";
|
|
76
79
|
const ETHEREUM_XVS = "0xd3CC9d8f3689B83c91b7B59cAB4946B063EB894A";
|
|
@@ -84,6 +87,8 @@ const OPBNBMAINNET_XVS_BRIDGE_ADMIN = "0x52fcE05aDbf6103d71ed2BA8Be7A31728273183
|
|
|
84
87
|
const ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN = "0xc94578caCC89a29B044a0a1D54d20d48A645E5C8";
|
|
85
88
|
const SEPOLIA_XVS_BRIDGE_ADMIN = "0xd3c6bdeeadB2359F726aD4cF42EAa8B7102DAd9B";
|
|
86
89
|
const OPBNBTESTNET_XVS_BRIDGE_ADMIN = "0x19252AFD0B2F539C400aEab7d460CBFbf74c17ff";
|
|
90
|
+
const BASESEPOLIA_XVS = "0xE657EDb5579B82135a274E85187927C42E38C021";
|
|
91
|
+
const BASESEPOLIA_XVS_BRIDGE_ADMIN = "0xE431E82d8fFfd81E7c082BeC7Fe2C306f5c988aD";
|
|
87
92
|
|
|
88
93
|
const ARBITRUMONE_XVS_VAULT_PROXY = "0x8b79692AAB2822Be30a6382Eb04763A74752d5B4";
|
|
89
94
|
const ETHEREUM_XVS_VAULT_PROXY = "0xA0882C2D5DF29233A092d2887A258C2b90e9b994";
|
|
@@ -91,6 +96,7 @@ const OPBNBMAINNET_XVS_VAULT_PROXY = "0x7dc969122450749A8B0777c0e324522d67737988
|
|
|
91
96
|
const ARBITRUMSEPOLIA_XVS_VAULT_PROXY = "0x407507DC2809D3aa31D54EcA3BEde5C5c4C8A17F";
|
|
92
97
|
const SEPOLIA_XVS_VAULT_PROXY = "0x1129f882eAa912aE6D4f6D445b2E2b1eCbA99fd5";
|
|
93
98
|
const OPBNBTESTNET_XVS_VAULT_PROXY = "0xB14A0e72C5C202139F78963C9e89252c1ad16f01";
|
|
99
|
+
const BASESEPOLIA_XVS_VAULT_PROXY = "0x9b5D0aDfCEcC8ed422d714EcbcE2FFA436e269B8";
|
|
94
100
|
|
|
95
101
|
const ETHEREUM_XVS_VAULT_TREASURY = "0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE";
|
|
96
102
|
const SEPOLIA_XVS_VAULT_TREASURY = "0xCCB08e5107b406E67Ad8356023dd489CEbc79B40";
|
|
@@ -101,6 +107,7 @@ const OPBNBMAINNET_POOL_REGISTRY = "0x345a030Ad22e2317ac52811AC41C1A63cfa13aEe";
|
|
|
101
107
|
const SEPOLIA_POOL_REGISTRY = "0x758f5715d817e02857Ba40889251201A5aE3E186";
|
|
102
108
|
const OPBNBTESTNET_POOL_REGISTRY = "0x560eA4e1cC42591E9f5F5D83Ad2fd65F30128951";
|
|
103
109
|
const ARBITRUMSEPOLIA_POOL_REGISTRY = "0xf93Df3135e0D555185c0BC888073374cA551C5fE";
|
|
110
|
+
const BASESEPOLIA_POOL_REGISTRY = "0xCa330282BEeb07a81963336d0bf8f5f34317916c";
|
|
104
111
|
|
|
105
112
|
const ARBITRUMONE_PRIME = "0xFE69720424C954A2da05648a0FAC84f9bf11Ef49";
|
|
106
113
|
const ARBITRUMONE_PLP = "0x86bf21dB200f29F21253080942Be8af61046Ec29";
|
|
@@ -118,6 +125,9 @@ const SEPOLIA_PLP = "0x15242a55Ad1842A1aEa09c59cf8366bD2f3CE9B4";
|
|
|
118
125
|
const SEPOLIA_PSR = "0xbea70755cc3555708ca11219adB0db4C80F6721B";
|
|
119
126
|
const OPBNBTESTNET_PSR = "0xc355dEb1A9289f8C58CFAa076EEdBf51F3A8Da7F";
|
|
120
127
|
const SEPOLIA_CONVERTER_NETWORK = "0xB5A4208bFC4cC2C4670744849B8fC35B21A690Fa";
|
|
128
|
+
const BASESEPOLIA_PRIME = "0x15A1AC7fA14C5900Ba93853375d66b6bB6A83B50";
|
|
129
|
+
const BASESEPOLIA_PLP = "0xb5BA66311C5f9A5C9d3CeE0183F5426DD694dE37";
|
|
130
|
+
const BASESEPOLIA_PSR = "0x4Ae3D77Ece08Ec3E5f5842B195f746bd3bCb8d73";
|
|
121
131
|
|
|
122
132
|
const ARBITRUMONE_GUARDIAN = "0x14e0E151b33f9802b3e75b621c1457afc44DcAA0";
|
|
123
133
|
const ETHEREUM_GUARDIAN = "0x285960C5B22fD66A736C7136967A3eB15e93CC67";
|
|
@@ -125,10 +135,12 @@ const OPBNBMAINNET_GUARDIAN = "0xC46796a21a3A9FAB6546aF3434F2eBfFd0604207";
|
|
|
125
135
|
const SEPOLIA_GUARDIAN = "0x94fa6078b6b8a26f0b6edffbe6501b22a10470fb";
|
|
126
136
|
const OPBNBTESTNET_GUARDIAN = "0xb15f6EfEbC276A3b9805df81b5FB3D50C2A62BDf";
|
|
127
137
|
const ARBITRUMSEPOLIA_GUARDIAN = "0x1426A5Ae009c4443188DA8793751024E358A61C2";
|
|
138
|
+
const BASESEPOLIA_GUARDIAN = "0xdf3b635d2b535f906BB02abb22AED71346E36a00";
|
|
128
139
|
|
|
129
140
|
const ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xfCA70dd553b7dF6eB8F813CFEA6a9DD039448878";
|
|
130
141
|
const SEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xf964158C67439D01e5f17F0A3F39DfF46823F27A";
|
|
131
142
|
const OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER = "0x4F570240FF6265Fbb1C79cE824De6408F1948913";
|
|
143
|
+
const BASESEPOLIA_OMNICHAIN_EXECUTOR_OWNER = "0xe3fb08B8817a0c88d39A4DA4eFFD586D3326b73b";
|
|
132
144
|
|
|
133
145
|
const ETHEREUM_CONVERTERS: string[] = [
|
|
134
146
|
"0xaE39C38AF957338b3cEE2b3E5d825ea88df02EfE",
|
|
@@ -257,6 +269,23 @@ const grantPermissions: Permissions = {
|
|
|
257
269
|
...getIRMPermissions(),
|
|
258
270
|
...getOmniChainExecutorOwnerPermissions(OPBNBTESTNET_OMNICHAIN_EXECUTOR_OWNER, OPBNBTESTNET_GUARDIAN),
|
|
259
271
|
],
|
|
272
|
+
basesepolia: [
|
|
273
|
+
...getResilientOraclePermissions(BASESEPOLIA_RESILIENT_ORACLE),
|
|
274
|
+
...getChainlinkOraclePermissions(BASESEPOLIA_CHAINLINK_ORACLE),
|
|
275
|
+
...getRedstoneOraclePermissions(BASESEPOLIA_REDSTONE_ORACLE),
|
|
276
|
+
...getBoundValidatorPermissions(BASESEPOLIA_BOUND_VALIDATOR),
|
|
277
|
+
...getXVSPermissions(BASESEPOLIA_XVS),
|
|
278
|
+
...getXVSBridgeAdminPermissions(BASESEPOLIA_XVS_BRIDGE_ADMIN),
|
|
279
|
+
...getXVSVaultPermissions(BASESEPOLIA_XVS_VAULT_PROXY),
|
|
280
|
+
...getPoolRegistryPermissions(BASESEPOLIA_POOL_REGISTRY),
|
|
281
|
+
...getPrimePermissions(BASESEPOLIA_PRIME),
|
|
282
|
+
...getPrimeLiquidityProviderPermissions(BASESEPOLIA_PLP),
|
|
283
|
+
...getProtocolShareReservePermissions(BASESEPOLIA_PSR),
|
|
284
|
+
...getComptrollerPermissions(),
|
|
285
|
+
...getVTokenPermissions(),
|
|
286
|
+
...getRewardDistributorPermissionsTimebased(),
|
|
287
|
+
...getIRMPermissions(),
|
|
288
|
+
],
|
|
260
289
|
};
|
|
261
290
|
|
|
262
291
|
const revokePermissions: Permissions = {
|
|
@@ -272,7 +301,6 @@ const revokePermissions: Permissions = {
|
|
|
272
301
|
...getComptrollerRevokePermissions(ARBITRUMONE_GUARDIAN),
|
|
273
302
|
...getVTokenRevokePermissions(ARBITRUMONE_GUARDIAN),
|
|
274
303
|
...getXVSBridgeAdminRevokePermissions(ARBITRUMONE_XVS_BRIDGE_ADMIN, ARBITRUMONE_GUARDIAN),
|
|
275
|
-
...getRedstoneOracleRevokePermissions(ARBITRUMONE_REDSTONE_ORACLE, ARBITRUMONE_GUARDIAN),
|
|
276
304
|
],
|
|
277
305
|
ethereum: [
|
|
278
306
|
...getPrimeRevokePermissions(ETHEREUM_PRIME, ETHEREUM_GUARDIAN),
|
|
@@ -285,7 +313,6 @@ const revokePermissions: Permissions = {
|
|
|
285
313
|
...getPoolRegistryRevokePermissions(ETHEREUM_POOL_REGISTRY, ETHEREUM_GUARDIAN),
|
|
286
314
|
...getComptrollerRevokePermissions(ETHEREUM_GUARDIAN),
|
|
287
315
|
...getVTokenRevokePermissions(ETHEREUM_GUARDIAN),
|
|
288
|
-
...getRedstoneOracleRevokePermissions(ETHEREUM_REDSTONE_ORACLE, ETHEREUM_GUARDIAN),
|
|
289
316
|
...getConverterNetworkRevokePermissions(ETHEREUM_CONVERTER_NETWORK, ETHEREUM_GUARDIAN),
|
|
290
317
|
...getSFrxETHOracleRevokePermissions(ETHEREUM_sFrxETH_ORACLE, ETHEREUM_GUARDIAN),
|
|
291
318
|
...getConvertersRevokePermissions(ETHEREUM_CONVERTERS, ETHEREUM_GUARDIAN),
|
|
@@ -325,7 +352,6 @@ const revokePermissions: Permissions = {
|
|
|
325
352
|
...getPoolRegistryRevokePermissions(SEPOLIA_POOL_REGISTRY, SEPOLIA_GUARDIAN),
|
|
326
353
|
...getComptrollerRevokePermissions(SEPOLIA_GUARDIAN),
|
|
327
354
|
...getVTokenRevokePermissions(SEPOLIA_GUARDIAN),
|
|
328
|
-
...getRedstoneOracleRevokePermissions(SEPOLIA_REDSTONE_ORACLE, SEPOLIA_GUARDIAN),
|
|
329
355
|
...getConverterNetworkRevokePermissions(SEPOLIA_CONVERTER_NETWORK, SEPOLIA_GUARDIAN),
|
|
330
356
|
...getSFrxETHOracleRevokePermissions(SEPOLIA_sFrxETH_ORACLE, SEPOLIA_GUARDIAN),
|
|
331
357
|
...getConvertersRevokePermissions(SEPOLIA_CONVERTERS, SEPOLIA_GUARDIAN),
|
|
@@ -345,9 +371,21 @@ const revokePermissions: Permissions = {
|
|
|
345
371
|
...getComptrollerRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
|
|
346
372
|
...getVTokenRevokePermissions(ARBITRUMSEPOLIA_GUARDIAN),
|
|
347
373
|
...getXVSBridgeAdminRevokePermissions(ARBITRUMSEPOLIA_XVS_BRIDGE_ADMIN, ARBITRUMSEPOLIA_GUARDIAN),
|
|
348
|
-
...getRedstoneOracleRevokePermissions(ARBITRUMSEPOLIA_REDSTONE_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
|
|
349
374
|
...getOmniChainExecutorOwnerRevokePermissions(ARBITRUMSEPOLIA_OMNICHAIN_EXECUTOR_OWNER, ARBITRUMSEPOLIA_GUARDIAN),
|
|
350
375
|
],
|
|
376
|
+
basesepolia: [
|
|
377
|
+
...getPrimeRevokePermissions(BASESEPOLIA_PRIME, BASESEPOLIA_GUARDIAN),
|
|
378
|
+
...getPrimeLiquidityProviderRevokePermissions(BASESEPOLIA_PLP, BASESEPOLIA_GUARDIAN),
|
|
379
|
+
...getResilientOracleRevokePermissions(BASESEPOLIA_RESILIENT_ORACLE, BASESEPOLIA_GUARDIAN),
|
|
380
|
+
...getBoundValidatorRevokePermissions(BASESEPOLIA_BOUND_VALIDATOR, BASESEPOLIA_GUARDIAN),
|
|
381
|
+
...getXVSVaultRevokePermissions(BASESEPOLIA_XVS_VAULT_PROXY, BASESEPOLIA_GUARDIAN),
|
|
382
|
+
...getRewardDistributorRevokePermissions(BASESEPOLIA_GUARDIAN, true),
|
|
383
|
+
...getIRMRevokePermissions(BASESEPOLIA_GUARDIAN),
|
|
384
|
+
...getPoolRegistryRevokePermissions(BASESEPOLIA_POOL_REGISTRY, BASESEPOLIA_GUARDIAN),
|
|
385
|
+
...getComptrollerRevokePermissions(BASESEPOLIA_GUARDIAN),
|
|
386
|
+
...getVTokenRevokePermissions(BASESEPOLIA_GUARDIAN),
|
|
387
|
+
...getXVSBridgeAdminRevokePermissions(BASESEPOLIA_XVS_BRIDGE_ADMIN, BASESEPOLIA_GUARDIAN),
|
|
388
|
+
],
|
|
351
389
|
};
|
|
352
390
|
|
|
353
391
|
function splitPermissions(
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ethers } from "hardhat";
|
|
2
|
+
import { DeployFunction } from "hardhat-deploy/types";
|
|
3
|
+
import { HardhatRuntimeEnvironment } from "hardhat/types";
|
|
4
|
+
import { ACMCommandsAggregator } from "typechain";
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
ARBITRUMONE_GUARDIAN,
|
|
8
|
+
ARBITRUMONE_REDSTONE_ORACLE,
|
|
9
|
+
ARBITRUMONE_XVS_VAULT_PROXY,
|
|
10
|
+
ARBITRUMSEPOLIA_GUARDIAN,
|
|
11
|
+
ARBITRUMSEPOLIA_REDSTONE_ORACLE,
|
|
12
|
+
ARBITRUMSEPOLIA_XVS_VAULT_PROXY,
|
|
13
|
+
ETHEREUM_GUARDIAN,
|
|
14
|
+
ETHEREUM_REDSTONE_ORACLE,
|
|
15
|
+
ETHEREUM_XVS_VAULT_PROXY,
|
|
16
|
+
OPBNBMAINNET_GUARDIAN,
|
|
17
|
+
OPBNBMAINNET_XVS_VAULT_PROXY,
|
|
18
|
+
OPBNBTESTNET_GUARDIAN,
|
|
19
|
+
OPBNBTESTNET_XVS_VAULT_PROXY,
|
|
20
|
+
SEPOLIA_GUARDIAN,
|
|
21
|
+
SEPOLIA_REDSTONE_ORACLE,
|
|
22
|
+
SEPOLIA_XVS_VAULT_PROXY,
|
|
23
|
+
} from "../helpers/Addresses";
|
|
24
|
+
import { getXVSVaultRevokePermissions } from "../helpers/permissions";
|
|
25
|
+
|
|
26
|
+
interface Permissions {
|
|
27
|
+
[key: string]: string[][];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const getRedstoneOraclePermissionsRevokedPreviously = (redstoneOracle: string, guardian: string): string[][] => {
|
|
31
|
+
return [
|
|
32
|
+
[redstoneOracle, "setTokenConfig(TokenConfig)", guardian],
|
|
33
|
+
[redstoneOracle, "setDirectPrice(address,uint256)", guardian],
|
|
34
|
+
];
|
|
35
|
+
};
|
|
36
|
+
const BSCMAINNET_REDSTONE_ORACLE = "0x8455EFA4D7Ff63b8BFD96AdD889483Ea7d39B70a";
|
|
37
|
+
const BSCTESTNET_REDSTONE_ORACLE = "0x0Af51d1504ac5B711A9EAFe2fAC11A51d32029Ad";
|
|
38
|
+
|
|
39
|
+
const BSCMAINNET_GUARDIAN = "0x3a3284dC0FaFfb0b5F0d074c4C704D14326C98cF";
|
|
40
|
+
const BSCTESTNET_GUARDIAN = "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C";
|
|
41
|
+
|
|
42
|
+
const grantPermissions: Permissions = {
|
|
43
|
+
arbitrumone: [...getRedstoneOraclePermissionsRevokedPreviously(ARBITRUMONE_REDSTONE_ORACLE, ARBITRUMONE_GUARDIAN)],
|
|
44
|
+
arbitrumsepolia: [
|
|
45
|
+
...getRedstoneOraclePermissionsRevokedPreviously(ARBITRUMSEPOLIA_REDSTONE_ORACLE, ARBITRUMSEPOLIA_GUARDIAN),
|
|
46
|
+
],
|
|
47
|
+
ethereum: [...getRedstoneOraclePermissionsRevokedPreviously(ETHEREUM_REDSTONE_ORACLE, ETHEREUM_GUARDIAN)],
|
|
48
|
+
sepolia: [...getRedstoneOraclePermissionsRevokedPreviously(SEPOLIA_REDSTONE_ORACLE, SEPOLIA_GUARDIAN)],
|
|
49
|
+
bscmainnet: [...getRedstoneOraclePermissionsRevokedPreviously(BSCMAINNET_REDSTONE_ORACLE, BSCMAINNET_GUARDIAN)],
|
|
50
|
+
bsctestnet: [...getRedstoneOraclePermissionsRevokedPreviously(BSCTESTNET_REDSTONE_ORACLE, BSCTESTNET_GUARDIAN)],
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const revokePermissions: Permissions = {
|
|
54
|
+
arbitrumone: [...getXVSVaultRevokePermissions(ARBITRUMONE_XVS_VAULT_PROXY, ARBITRUMONE_GUARDIAN)],
|
|
55
|
+
arbitrumsepolia: [...getXVSVaultRevokePermissions(ARBITRUMSEPOLIA_XVS_VAULT_PROXY, ARBITRUMSEPOLIA_GUARDIAN)],
|
|
56
|
+
ethereum: [...getXVSVaultRevokePermissions(ETHEREUM_XVS_VAULT_PROXY, ETHEREUM_GUARDIAN)],
|
|
57
|
+
sepolia: [...getXVSVaultRevokePermissions(SEPOLIA_XVS_VAULT_PROXY, SEPOLIA_GUARDIAN)],
|
|
58
|
+
opbnbmainnet: [...getXVSVaultRevokePermissions(OPBNBMAINNET_XVS_VAULT_PROXY, OPBNBMAINNET_GUARDIAN)],
|
|
59
|
+
opbnbtestnet: [...getXVSVaultRevokePermissions(OPBNBTESTNET_XVS_VAULT_PROXY, OPBNBTESTNET_GUARDIAN)],
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
63
|
+
const acmCommandsAggregator: ACMCommandsAggregator = await ethers.getContract("ACMCommandsAggregator");
|
|
64
|
+
|
|
65
|
+
const _grantPermissions: ACMCommandsAggregator.PermissionStruct[] = grantPermissions[hre.network.name].map(
|
|
66
|
+
permission => ({
|
|
67
|
+
contractAddress: permission[0],
|
|
68
|
+
functionSig: permission[1],
|
|
69
|
+
account: permission[2],
|
|
70
|
+
}),
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const _revokePermissions: ACMCommandsAggregator.PermissionStruct[] = revokePermissions[hre.network.name].map(
|
|
74
|
+
permission => ({
|
|
75
|
+
contractAddress: permission[0],
|
|
76
|
+
functionSig: permission[1],
|
|
77
|
+
account: permission[2],
|
|
78
|
+
}),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
try {
|
|
82
|
+
// Add grant permissions
|
|
83
|
+
let tx = await acmCommandsAggregator.addGrantPermissions(_grantPermissions);
|
|
84
|
+
let receipt = await tx.wait();
|
|
85
|
+
let events = receipt.events?.filter(event => event.event === "GrantPermissionsAdded");
|
|
86
|
+
console.log(`Grant Permissions for ${hre.network.name} added with indexes: `, events?.[0].args?.index.toString());
|
|
87
|
+
|
|
88
|
+
// Add revoke permissions
|
|
89
|
+
tx = await acmCommandsAggregator.addRevokePermissions(_revokePermissions);
|
|
90
|
+
receipt = await tx.wait();
|
|
91
|
+
events = receipt.events?.filter(event => event.event === "RevokePermissionsAdded");
|
|
92
|
+
console.log(`Revoke Permissions for ${hre.network.name} added with indexes: `, events?.[0].args?.index.toString());
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.error("Error adding adding permissions:", error);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
func.tags = ["redstone-vault-permissions"];
|
|
99
|
+
|
|
100
|
+
func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.name === "hardhat";
|
|
101
|
+
|
|
102
|
+
export default func;
|