@venusprotocol/governance-contracts 2.11.0-dev.1 → 2.11.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 +14 -0
- package/dist/scripts/ACMPermissions/PermissionFetcher.d.ts +29 -0
- package/dist/scripts/ACMPermissions/PermissionFetcher.d.ts.map +1 -0
- package/dist/scripts/ACMPermissions/PermissionFetcher.js +320 -0
- package/dist/scripts/ACMPermissions/PermissionFetcher.js.map +1 -0
- package/dist/scripts/ACMPermissions/config.d.ts +4 -0
- package/dist/scripts/ACMPermissions/config.d.ts.map +1 -0
- package/dist/scripts/ACMPermissions/config.js +156 -0
- package/dist/scripts/ACMPermissions/config.js.map +1 -0
- package/dist/scripts/ACMPermissions/fetchNonGuardianPermissions.d.ts +2 -0
- package/dist/scripts/ACMPermissions/fetchNonGuardianPermissions.d.ts.map +1 -0
- package/dist/scripts/ACMPermissions/fetchNonGuardianPermissions.js +88 -0
- package/dist/scripts/ACMPermissions/fetchNonGuardianPermissions.js.map +1 -0
- package/dist/scripts/ACMPermissions/index.d.ts +2 -0
- package/dist/scripts/ACMPermissions/index.d.ts.map +1 -0
- package/dist/scripts/ACMPermissions/index.js +48 -0
- package/dist/scripts/ACMPermissions/index.js.map +1 -0
- package/dist/scripts/ACMPermissions/types.d.ts +30 -0
- package/dist/scripts/ACMPermissions/types.d.ts.map +1 -0
- package/dist/scripts/ACMPermissions/types.js +9 -0
- package/dist/scripts/ACMPermissions/types.js.map +1 -0
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -79,6 +79,20 @@ Deployed contract abis and addresses are exported in the `deployments` directory
|
|
|
79
79
|
$ yarn hardhat export --network <network-name> --export ./deployments/<network-name>.json
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
### Permissions Fetcher Tool
|
|
83
|
+
|
|
84
|
+
To fetch all permissions, run the following command:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
$ npx hardhat run scripts/ACMPermissions/index.ts --network <network-nme>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
To fetch only timelock permissions excluding guardian, run:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
$ npx hardhat run scripts/ACMPermissions/fetchNonGuardianPermissions.ts --network <network-nme>
|
|
94
|
+
```
|
|
95
|
+
|
|
82
96
|
### Discussion
|
|
83
97
|
|
|
84
98
|
For any concerns with the protocol, open an issue or visit us on [Telegram](https://t.me/venusprotocol) to discuss.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "dotenv/config";
|
|
2
|
+
import { SUPPORTED_NETWORKS } from "helpers/deploy/constants";
|
|
3
|
+
import { MissingRoleMap, Permission, Role } from "./types";
|
|
4
|
+
export declare class PermissionFetcher {
|
|
5
|
+
readonly network: SUPPORTED_NETWORKS;
|
|
6
|
+
readonly bnbPermissionFile: string;
|
|
7
|
+
readonly chunkSize: number;
|
|
8
|
+
mdFilePath: string;
|
|
9
|
+
jsonFilePath: string;
|
|
10
|
+
permissionsMap: Record<string, Permission>;
|
|
11
|
+
missingRoleMap: MissingRoleMap;
|
|
12
|
+
roleHashTable: Record<string, Role>;
|
|
13
|
+
existingPermissions: Permission[];
|
|
14
|
+
missingRoleFile: string;
|
|
15
|
+
blocksParsed: number;
|
|
16
|
+
constructor(network: SUPPORTED_NETWORKS, bnbPermissionFile: string, chunkSize: number);
|
|
17
|
+
getPastEvents(startBlock: number, endBlock: number): Promise<void>;
|
|
18
|
+
private processEvents;
|
|
19
|
+
private updateMDPermissionFile;
|
|
20
|
+
private addPrevPermissionsInMap;
|
|
21
|
+
private storeInJson;
|
|
22
|
+
private decodeLogs;
|
|
23
|
+
private getRoleHashTable;
|
|
24
|
+
private fetchEvents;
|
|
25
|
+
private getPermissionsJson;
|
|
26
|
+
private addMissingRole;
|
|
27
|
+
private getHash;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=PermissionFetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionFetcher.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/PermissionFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,OAAO,EAAS,cAAc,EAAE,UAAU,EAAmB,IAAI,EAAY,MAAM,SAAS,CAAC;AAE7F,qBAAa,iBAAiB;IAUhB,QAAQ,CAAC,OAAO,EAAE,kBAAkB;IAAE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;IAThH,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAChD,cAAc,EAAE,cAAc,CAAM;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;gBAEA,OAAO,EAAE,kBAAkB,EAAW,iBAAiB,EAAE,MAAM,EAAW,SAAS,EAAE,MAAM;IAY1G,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAgCxD,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,gBAAgB;YA8CV,WAAW;IAuEzB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,OAAO;CAIhB"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
};
|
|
34
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
35
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
36
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
37
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
38
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
39
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
40
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.PermissionFetcher = void 0;
|
|
48
|
+
require("dotenv/config");
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const hardhat_1 = require("hardhat");
|
|
51
|
+
const lodash_1 = require("lodash");
|
|
52
|
+
const path_1 = __importDefault(require("path"));
|
|
53
|
+
const typescript_retry_decorator_1 = require("typescript-retry-decorator");
|
|
54
|
+
const config_1 = require("./config");
|
|
55
|
+
const types_1 = require("./types");
|
|
56
|
+
class PermissionFetcher {
|
|
57
|
+
constructor(network, bnbPermissionFile, chunkSize) {
|
|
58
|
+
this.network = network;
|
|
59
|
+
this.bnbPermissionFile = bnbPermissionFile;
|
|
60
|
+
this.chunkSize = chunkSize;
|
|
61
|
+
this.permissionsMap = {};
|
|
62
|
+
this.missingRoleMap = {};
|
|
63
|
+
this.mdFilePath = path_1.default.join(__dirname, "networks", this.network, "permissions.md");
|
|
64
|
+
this.jsonFilePath = path_1.default.join(__dirname, "networks", this.network, "permissions.json");
|
|
65
|
+
this.roleHashTable = this.getRoleHashTable(this.bnbPermissionFile);
|
|
66
|
+
this.missingRoleFile = path_1.default.join(__dirname, "networks", this.network, "BNBMissingRole.json");
|
|
67
|
+
const { permissions: existingPermissions } = this.getPermissionsJson();
|
|
68
|
+
this.existingPermissions = existingPermissions;
|
|
69
|
+
this.blocksParsed = parseInt(this.getPermissionsJson().height, 10);
|
|
70
|
+
this.addPrevPermissionsInMap();
|
|
71
|
+
}
|
|
72
|
+
getPastEvents(startBlock, endBlock) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const fromBlock = startBlock ? startBlock : config_1.startingBlockForACM[this.network];
|
|
75
|
+
const toBlock = endBlock ? endBlock : yield hardhat_1.ethers.provider.getBlockNumber();
|
|
76
|
+
if (fromBlock >= toBlock) {
|
|
77
|
+
throw new Error(`From block ${fromBlock} cannot be more than to block ${toBlock}`);
|
|
78
|
+
}
|
|
79
|
+
let start = fromBlock;
|
|
80
|
+
const lastStoredBlock = this.blocksParsed;
|
|
81
|
+
console.log("StartBlock:", lastStoredBlock);
|
|
82
|
+
if (start < lastStoredBlock) {
|
|
83
|
+
start = lastStoredBlock + 1;
|
|
84
|
+
}
|
|
85
|
+
while (start <= toBlock) {
|
|
86
|
+
const endBlock = Math.min(start + this.chunkSize - 1, toBlock);
|
|
87
|
+
const events = yield this.fetchEvents(start, endBlock);
|
|
88
|
+
this.processEvents(events);
|
|
89
|
+
this.blocksParsed = endBlock;
|
|
90
|
+
this.storeInJson();
|
|
91
|
+
console.log(`Fetched events from block ${start} to ${endBlock}`);
|
|
92
|
+
start = endBlock + 1;
|
|
93
|
+
}
|
|
94
|
+
this.updateMDPermissionFile();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
processEvents(events) {
|
|
98
|
+
events.forEach(event => {
|
|
99
|
+
const hash = this.getHash(event.contractAddress, event.functionSignature);
|
|
100
|
+
if (!this.permissionsMap[hash]) {
|
|
101
|
+
this.permissionsMap[hash] = {
|
|
102
|
+
contractAddress: event.contractAddress,
|
|
103
|
+
functionSignature: event.functionSignature,
|
|
104
|
+
role: hash,
|
|
105
|
+
addresses: [],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const permission = this.permissionsMap[hash];
|
|
109
|
+
if (event.type === types_1.PermissionsEnum.Granted) {
|
|
110
|
+
permission.addresses = (0, lodash_1.union)(permission.addresses, [event.account]);
|
|
111
|
+
}
|
|
112
|
+
else if (event.type === types_1.PermissionsEnum.Revoked) {
|
|
113
|
+
(0, lodash_1.remove)(permission.addresses, address => address === event.account);
|
|
114
|
+
}
|
|
115
|
+
this.permissionsMap[hash].addresses = permission.addresses;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
updateMDPermissionFile() {
|
|
119
|
+
try {
|
|
120
|
+
const jsonData = fs.readFileSync(this.jsonFilePath, "utf8");
|
|
121
|
+
const data = JSON.parse(jsonData);
|
|
122
|
+
let mdContent = "# Permissions\n\n";
|
|
123
|
+
data.permissions.forEach((permission) => {
|
|
124
|
+
mdContent += `## Contract Address: ${permission.contractAddress}\n`;
|
|
125
|
+
mdContent += `- **Function Signature**: \`${permission.functionSignature}\`\n`;
|
|
126
|
+
mdContent += `- **Addresses**:\n`;
|
|
127
|
+
permission.addresses.forEach((address) => {
|
|
128
|
+
mdContent += ` - \`${config_1.addressMap[this.network][address] || address}\`\n`;
|
|
129
|
+
});
|
|
130
|
+
mdContent += "\n";
|
|
131
|
+
});
|
|
132
|
+
fs.writeFileSync(this.mdFilePath, mdContent, "utf8");
|
|
133
|
+
console.log(`Markdown file has been written to ${this.mdFilePath}`);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error(`Error writing to MD file ${this.jsonFilePath}:`, error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
addPrevPermissionsInMap() {
|
|
140
|
+
this.existingPermissions.forEach(permission => {
|
|
141
|
+
const hash = this.getHash(permission.contractAddress, permission.functionSignature);
|
|
142
|
+
this.permissionsMap[hash] = permission;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
storeInJson() {
|
|
146
|
+
const snapshot = {
|
|
147
|
+
permissions: Object.values(this.permissionsMap).filter(permission => permission.addresses.length > 0),
|
|
148
|
+
height: this.blocksParsed,
|
|
149
|
+
};
|
|
150
|
+
try {
|
|
151
|
+
fs.writeFileSync(this.jsonFilePath, JSON.stringify(snapshot, null, 2), "utf8");
|
|
152
|
+
console.log(`Snapshot successfully written to ${this.jsonFilePath}`);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.error(`Error writing JSON to ${this.jsonFilePath}:`, error);
|
|
156
|
+
throw new Error(`Error writing JSON to ${this.jsonFilePath}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
decodeLogs(data) {
|
|
160
|
+
const abiCoder = new hardhat_1.ethers.utils.AbiCoder();
|
|
161
|
+
const decodedData = abiCoder.decode(["address", "address", "string"], data);
|
|
162
|
+
return { account: decodedData[0], contractAddress: decodedData[1], functionSignature: decodedData[2] };
|
|
163
|
+
}
|
|
164
|
+
getRoleHashTable(filePath) {
|
|
165
|
+
const jsonData = fs.readFileSync(filePath, "utf8");
|
|
166
|
+
const data = JSON.parse(jsonData);
|
|
167
|
+
if (typeof data !== "object" || data === null || !Array.isArray(data.contracts)) {
|
|
168
|
+
throw new Error("Invalid Json");
|
|
169
|
+
}
|
|
170
|
+
for (const contract of data.contracts) {
|
|
171
|
+
if (typeof contract !== "object" || contract === null) {
|
|
172
|
+
throw new Error("Invalid Json");
|
|
173
|
+
}
|
|
174
|
+
if (!Array.isArray(contract.address) || !Array.isArray(contract.functions)) {
|
|
175
|
+
throw new Error("Invalid Json");
|
|
176
|
+
}
|
|
177
|
+
if (!contract.address.every((addr) => typeof addr === "string" && addr === addr.trim())) {
|
|
178
|
+
throw new Error("Invalid Json");
|
|
179
|
+
}
|
|
180
|
+
if (!contract.functions.every((func) => typeof func === "string" && func === func.trim())) {
|
|
181
|
+
throw new Error("Invalid Json");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const hashTable = {};
|
|
185
|
+
for (const contract of data.contracts) {
|
|
186
|
+
for (const address of contract.address) {
|
|
187
|
+
for (const funcSig of contract.functions) {
|
|
188
|
+
const role = this.getHash(address, funcSig);
|
|
189
|
+
hashTable[role] = {
|
|
190
|
+
contractAddress: address,
|
|
191
|
+
functionSignature: funcSig,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return hashTable;
|
|
197
|
+
}
|
|
198
|
+
fetchEvents(start, endBlock) {
|
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
const acm = yield hardhat_1.ethers.getContract("AccessControlManager");
|
|
201
|
+
const acmAddress = acm.address;
|
|
202
|
+
const topics = this.network === "bscmainnet"
|
|
203
|
+
? [
|
|
204
|
+
hardhat_1.ethers.utils.id("RoleGranted(bytes32,address,address)"),
|
|
205
|
+
hardhat_1.ethers.utils.id("RoleRevoked(bytes32,address,address)"),
|
|
206
|
+
]
|
|
207
|
+
: [
|
|
208
|
+
hardhat_1.ethers.utils.id("PermissionGranted(address,address,string)"),
|
|
209
|
+
hardhat_1.ethers.utils.id("PermissionRevoked(address,address,string)"),
|
|
210
|
+
];
|
|
211
|
+
const eventFilter = {
|
|
212
|
+
acmAddress,
|
|
213
|
+
topics: [topics],
|
|
214
|
+
};
|
|
215
|
+
const events = yield acm.queryFilter(eventFilter, start, endBlock);
|
|
216
|
+
if (this.network === "bscmainnet") {
|
|
217
|
+
let contractAddress;
|
|
218
|
+
let functionSig;
|
|
219
|
+
const newEvents = [];
|
|
220
|
+
events.forEach(event => {
|
|
221
|
+
const role = hardhat_1.ethers.utils.defaultAbiCoder.decode(["bytes32"], event.topics[1])[0];
|
|
222
|
+
const account = hardhat_1.ethers.utils.defaultAbiCoder.decode(["address"], event.topics[2])[0];
|
|
223
|
+
const defaultAdminRole = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
224
|
+
if (this.roleHashTable[role] !== undefined || role === defaultAdminRole) {
|
|
225
|
+
if (role === defaultAdminRole) {
|
|
226
|
+
contractAddress = acm.address;
|
|
227
|
+
functionSig = "DFAULT_ADMIN_ROLE";
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
contractAddress = this.roleHashTable[role].contractAddress;
|
|
231
|
+
functionSig = this.roleHashTable[role].functionSignature;
|
|
232
|
+
}
|
|
233
|
+
const eventType = event.topics[0] === eventFilter.topics[0][0] ? types_1.PermissionsEnum.Granted : types_1.PermissionsEnum.Revoked;
|
|
234
|
+
newEvents.push({
|
|
235
|
+
contractAddress: contractAddress,
|
|
236
|
+
functionSignature: functionSig,
|
|
237
|
+
account: account,
|
|
238
|
+
type: eventType,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
this.addMissingRole(role, event.transactionHash);
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
return newEvents;
|
|
246
|
+
}
|
|
247
|
+
return events.map(event => {
|
|
248
|
+
const data = event.data;
|
|
249
|
+
const { account, contractAddress, functionSignature } = this.decodeLogs(data);
|
|
250
|
+
const eventType = event.topics[0] === eventFilter.topics[0][0] ? types_1.PermissionsEnum.Granted : types_1.PermissionsEnum.Revoked;
|
|
251
|
+
return {
|
|
252
|
+
contractAddress: contractAddress,
|
|
253
|
+
functionSignature: functionSignature,
|
|
254
|
+
account: account,
|
|
255
|
+
type: eventType,
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
getPermissionsJson() {
|
|
261
|
+
try {
|
|
262
|
+
if (!fs.existsSync(this.jsonFilePath)) {
|
|
263
|
+
return { permissions: [], height: config_1.startingBlockForACM[this.network].toString() };
|
|
264
|
+
}
|
|
265
|
+
const fileContent = fs.readFileSync(this.jsonFilePath, "utf8");
|
|
266
|
+
if (!fileContent.trim()) {
|
|
267
|
+
return { permissions: [], height: config_1.startingBlockForACM[this.network].toString() };
|
|
268
|
+
}
|
|
269
|
+
return JSON.parse(fileContent);
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
console.error(`Error parsing JSON file:`, error);
|
|
273
|
+
throw new Error("Error parsing JSON file");
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
addMissingRole(role, transaction) {
|
|
277
|
+
let data = {};
|
|
278
|
+
try {
|
|
279
|
+
if (fs.existsSync(this.missingRoleFile)) {
|
|
280
|
+
const fileContent = fs.readFileSync(this.missingRoleFile, "utf8").trim();
|
|
281
|
+
if (fileContent) {
|
|
282
|
+
try {
|
|
283
|
+
data = JSON.parse(fileContent);
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error("Error parsing JSON:", error);
|
|
287
|
+
throw new Error("Error parsing JSON");
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (!data[role]) {
|
|
292
|
+
data[role] = { transactions: [] };
|
|
293
|
+
}
|
|
294
|
+
if (!data[role].transactions.includes(transaction)) {
|
|
295
|
+
data[role].transactions.push(transaction);
|
|
296
|
+
}
|
|
297
|
+
fs.writeFileSync(this.missingRoleFile, JSON.stringify(data, null, 2), "utf8");
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
console.error("Error adding missing role:", error);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
getHash(contractAddress, functionSignature) {
|
|
304
|
+
const hash = hardhat_1.ethers.utils.solidityKeccak256(["address", "string"], [contractAddress, functionSignature]);
|
|
305
|
+
return hash;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
__decorate([
|
|
309
|
+
(0, typescript_retry_decorator_1.Retryable)({
|
|
310
|
+
maxAttempts: 5,
|
|
311
|
+
backOffPolicy: typescript_retry_decorator_1.BackOffPolicy.ExponentialBackOffPolicy,
|
|
312
|
+
backOff: 5000,
|
|
313
|
+
exponentialOption: { maxInterval: 60000, multiplier: 2 },
|
|
314
|
+
}),
|
|
315
|
+
__metadata("design:type", Function),
|
|
316
|
+
__metadata("design:paramtypes", [Number, Number]),
|
|
317
|
+
__metadata("design:returntype", Promise)
|
|
318
|
+
], PermissionFetcher.prototype, "fetchEvents", null);
|
|
319
|
+
exports.PermissionFetcher = PermissionFetcher;
|
|
320
|
+
//# sourceMappingURL=PermissionFetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionFetcher.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/PermissionFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBtD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6IzE,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addressMap = exports.startingBlockForACM = void 0;
|
|
4
|
+
exports.startingBlockForACM = {
|
|
5
|
+
bscmainnet: 21968139,
|
|
6
|
+
bsctestnet: 26711168,
|
|
7
|
+
ethereum: 18641314,
|
|
8
|
+
sepolia: 4204345,
|
|
9
|
+
opbnbmainnet: 10895878,
|
|
10
|
+
opbnbtestnet: 14542763,
|
|
11
|
+
arbitrumone: 201597544,
|
|
12
|
+
arbitrumsepolia: 25350320,
|
|
13
|
+
zksyncmainnet: 42301367,
|
|
14
|
+
zksyncsepolia: 3452622,
|
|
15
|
+
opmainnet: 125490540,
|
|
16
|
+
opsepolia: 14150254,
|
|
17
|
+
basemainnet: 23212004,
|
|
18
|
+
basesepolia: 16737042,
|
|
19
|
+
unichainsepolia: 3358050,
|
|
20
|
+
unichainmainnet: 8106529,
|
|
21
|
+
};
|
|
22
|
+
exports.addressMap = {
|
|
23
|
+
hardhat: {
|
|
24
|
+
"0x0000000000000000000000000000000000000000": "AddressZero",
|
|
25
|
+
},
|
|
26
|
+
bscmainnet: {
|
|
27
|
+
"0x939bD8d64c0A9583A7Dcea9933f7b21697ab6396": "NormalTimelock",
|
|
28
|
+
"0x555ba73dB1b006F3f2C7dB7126d6e4343aDBce02": "FastTrackTimelock",
|
|
29
|
+
"0x213c446ec11e45b15a6E29C1C1b402B8897f606d": "CriticalTimelock",
|
|
30
|
+
"0x7B1AE5Ea599bC56734624b95589e7E8E64C351c9": "Guardian 1",
|
|
31
|
+
"0x1C2CAc6ec528c20800B2fe734820D87b581eAA6B": "Guardian 2",
|
|
32
|
+
"0x3a3284dC0FaFfb0b5F0d074c4C704D14326C98cF": "Guardian 3",
|
|
33
|
+
"0x9F7b01A536aFA00EF10310A162877fd792cD0666": "PoolRegistry",
|
|
34
|
+
},
|
|
35
|
+
bsctestnet: {
|
|
36
|
+
"0xce10739590001705F7FF231611ba4A48B2820327": "NormalTimelock",
|
|
37
|
+
"0x3CFf21b7AF8390fE68799D58727d3b4C25a83cb6": "FastTrackTimelock",
|
|
38
|
+
"0x23B893a7C45a5Eb8c8C062b9F32d0D2e43eD286D": "CriticalTimelock",
|
|
39
|
+
"0x2Ce1d0ffD7E869D9DF33e28552b12DdDed326706": "Guardian",
|
|
40
|
+
"0xC85491616Fa949E048F3aAc39fbf5b0703800667": "PoolRegistry",
|
|
41
|
+
},
|
|
42
|
+
ethereum: {
|
|
43
|
+
"0xd969E79406c35E80750aAae061D402Aab9325714": "NormalTimelock",
|
|
44
|
+
"0x8764F50616B62a99A997876C2DEAaa04554C5B2E": "FastTrackTimelock",
|
|
45
|
+
"0xeB9b85342c34F65af734C7bd4a149c86c472bC00": "CriticalTimelock",
|
|
46
|
+
"0x285960C5B22fD66A736C7136967A3eB15e93CC67": "Guardian",
|
|
47
|
+
"0x61CAff113CCaf05FFc6540302c37adcf077C5179": "PoolRegistry",
|
|
48
|
+
"0x888E317606b4c590BBAD88653863e8B345702633": "XVSBridgeDest",
|
|
49
|
+
},
|
|
50
|
+
sepolia: {
|
|
51
|
+
"0xc332F7D8D5eA72cf760ED0E1c0485c8891C6E0cF": "NormalTimelock",
|
|
52
|
+
"0x7F043F43Adb392072a3Ba0cC9c96e894C6f7e182": "FastTrackTimelock",
|
|
53
|
+
"0xA24A7A65b8968a749841988Bd7d05F6a94329fDe": "CriticalTimelock",
|
|
54
|
+
"0x94fa6078b6b8a26F0B6EDFFBE6501B22A10470fB": "Guardian",
|
|
55
|
+
"0x758f5715d817e02857Ba40889251201A5aE3E186": "PoolRegistry",
|
|
56
|
+
"0xc340b7d3406502F43dC11a988E4EC5bbE536E642": "XVSBridgeDest",
|
|
57
|
+
},
|
|
58
|
+
opbnbmainnet: {
|
|
59
|
+
"0x10f504e939b912569Dca611851fDAC9E3Ef86819": "NormalTimelock",
|
|
60
|
+
"0xEdD04Ecef0850e834833789576A1d435e7207C0d": "FastTrackTimelock",
|
|
61
|
+
"0xA7DD2b15B24377296F11c702e758cd9141AB34AA": "CriticalTimelock",
|
|
62
|
+
"0xC46796a21a3A9FAB6546aF3434F2eBfFd0604207": "Guardian",
|
|
63
|
+
"0x345a030Ad22e2317ac52811AC41C1A63cfa13aEe": "PoolRegistry",
|
|
64
|
+
"0x100D331C1B5Dcd41eACB1eCeD0e83DCEbf3498B2": "XVSBridgeDest",
|
|
65
|
+
},
|
|
66
|
+
opbnbtestnet: {
|
|
67
|
+
"0x1c4e015Bd435Efcf4f58D82B0d0fBa8fC4F81120": "NormalTimelock",
|
|
68
|
+
"0xB2E6268085E75817669479b22c73C2AfEaADF7A6": "FastTrackTimelock",
|
|
69
|
+
"0xBd06aCDEF38230F4EdA0c6FD392905Ad463e42E3": "CriticalTimelock",
|
|
70
|
+
"0xb15f6EfEbC276A3b9805df81b5FB3D50C2A62BDf": "Guardian",
|
|
71
|
+
"0x560eA4e1cC42591E9f5F5D83Ad2fd65F30128951": "PoolRegistry",
|
|
72
|
+
"0xA03205bC635A772E533E7BE36b5701E331a70ea3": "XVSBridgeDest",
|
|
73
|
+
},
|
|
74
|
+
arbitrumone: {
|
|
75
|
+
"0x4b94589Cc23F618687790036726f744D602c4017": "NormalTimelock",
|
|
76
|
+
"0x2286a9B2a5246218f2fC1F380383f45BDfCE3E04": "FastTrackTimelock",
|
|
77
|
+
"0x181E4f8F21D087bF02Ea2F64D5e550849FBca674": "CriticalTimelock",
|
|
78
|
+
"0x14e0E151b33f9802b3e75b621c1457afc44DcAA0": "Guardian",
|
|
79
|
+
"0x382238f07Bc4Fe4aA99e561adE8A4164b5f815DA": "PoolRegistry",
|
|
80
|
+
"0x20cEa49B5F7a6DBD78cAE772CA5973eF360AA1e6": "XVSBridgeDest",
|
|
81
|
+
},
|
|
82
|
+
arbitrumsepolia: {
|
|
83
|
+
"0x794BCA78E606f3a462C31e5Aba98653Efc1322F8": "NormalTimelock",
|
|
84
|
+
"0x14642991184F989F45505585Da52ca6A6a7dD4c8": "FastTrackTimelock",
|
|
85
|
+
"0x0b32Be083f7041608E023007e7802430396a2123": "CriticalTimelock",
|
|
86
|
+
"0x1426A5Ae009c4443188DA8793751024E358A61C2": "Guardian",
|
|
87
|
+
"0xf93Df3135e0D555185c0BC888073374cA551C5fE": "PoolRegistry",
|
|
88
|
+
"0xFdC5cEC63FD167DA46cF006585b30D03B104eFD4": "XVSBridgeDest",
|
|
89
|
+
},
|
|
90
|
+
zksyncmainnet: {
|
|
91
|
+
"0x093565Bc20AA326F4209eBaF3a26089272627613": "NormalTimelock",
|
|
92
|
+
"0x32f71c95BC8F9d996f89c642f1a84d06B2484AE9": "FastTrackTimelock",
|
|
93
|
+
"0xbfbc79D4198963e4a66270F3EfB1fdA0F382E49c": "CriticalTimelock",
|
|
94
|
+
"0x751Aa759cfBB6CE71A43b48e40e1cCcFC66Ba4aa": "Guardian",
|
|
95
|
+
"0xFD96B926298034aed9bBe0Cca4b651E41eB87Bc4": "PoolRegistry",
|
|
96
|
+
"0x16a62B534e09A7534CD5847CFE5Bf6a4b0c1B116": "XVSBridgeDest",
|
|
97
|
+
},
|
|
98
|
+
zksyncsepolia: {
|
|
99
|
+
"0x1730527a0f0930269313D77A317361b42971a67E": "NormalTimelock",
|
|
100
|
+
"0xb055e028b27d53a455a6c040a6952e44E9E615c4": "FastTrackTimelock",
|
|
101
|
+
"0x0E6138bE0FA1915efC73670a20A10EFd720a6Cc8": "CriticalTimelock",
|
|
102
|
+
"0xa2f83de95E9F28eD443132C331B6a9C9B7a9F866": "Guardian",
|
|
103
|
+
"0x1401404e6279BB8C06E5E3999eCA3e2008B46A76": "PoolRegistry",
|
|
104
|
+
"0x760461ccB2508CAAa2ECe0c28af3a4707b853043": "XVSBridgeDest",
|
|
105
|
+
},
|
|
106
|
+
opmainnet: {
|
|
107
|
+
"0x0C6f1E6B4fDa846f63A0d5a8a73EB811E0e0C04b": "NormalTimelock",
|
|
108
|
+
"0x508bD9C31E8d6760De04c70fe6c2b24B3cDea7E7": "FastTrackTimelock",
|
|
109
|
+
"0xB82479bc345CAA7326D7d21306972033226fC185": "CriticalTimelock",
|
|
110
|
+
"0x2e94dd14E81999CdBF5deDE31938beD7308354b3": "Guardian",
|
|
111
|
+
"0x147780799840d541C1d7c998F0cbA996d11D62bb": "PoolRegistry",
|
|
112
|
+
"0xbBe46bAec851355c3FC4856914c47eB6Cea0B8B4": "XVSBridgeDest",
|
|
113
|
+
},
|
|
114
|
+
opsepolia: {
|
|
115
|
+
"0xdDe31d7eEEAD7Cf9790F833C4FF4c6e61404402a": "NormalTimelock",
|
|
116
|
+
"0xe0Fa35b6279dd802C382ae54c50C8B16deaC0885": "FastTrackTimelock",
|
|
117
|
+
"0x45d2263c6E0dbF84eBffB1Ee0b80aC740607990B": "CriticalTimelock",
|
|
118
|
+
"0xd57365EE4E850e881229e2F8Aa405822f289e78d": "Guardian",
|
|
119
|
+
"0x6538C861C7A6997602311342657b9143dD9E8152": "PoolRegistry",
|
|
120
|
+
"0x79a36dc9a43D05Db4747c59c02F48ed500e47dF1": "XVSBridgeDest",
|
|
121
|
+
},
|
|
122
|
+
basemainnet: {
|
|
123
|
+
"0x21c12f2946a1a66cBFf7eb997022a37167eCf517": "NormalTimelock",
|
|
124
|
+
"0x209F73Ee2Fa9A72aF3Fa6aF1933A3B58ed3De5D7": "FastTrackTimelock",
|
|
125
|
+
"0x47F65466392ff2aE825d7a170889F7b5b9D8e60D": "CriticalTimelock",
|
|
126
|
+
"0x1803Cf1D3495b43cC628aa1d8638A981F8CD341C": "Guardian",
|
|
127
|
+
"0xeef902918DdeCD773D4B422aa1C6e1673EB9136F": "PoolRegistry",
|
|
128
|
+
"0x3dd92fb51a5d381ae78e023dfb5dd1d45d2426cd": "XVSBridgeDest",
|
|
129
|
+
},
|
|
130
|
+
basesepolia: {
|
|
131
|
+
"0xCc84f6122649eDc48f4a426814e6b6C6fF9bBe0a": "NormalTimelock",
|
|
132
|
+
"0x3dFA652D3aaDcb93F9EA7d160d674C441AaA8EE2": "FastTrackTimelock",
|
|
133
|
+
"0xbeDb7F2d0617292364bA4D73cf016c0f6BB5542E": "CriticalTimelock",
|
|
134
|
+
"0xdf3b635d2b535f906BB02abb22AED71346E36a00": "Guardian",
|
|
135
|
+
"0xCa330282BEeb07a81963336d0bf8f5f34317916c": "PoolRegistry",
|
|
136
|
+
"0xD5Cd1fD17B724a391C1bce55Eb9d88E3205eED60": "XVSBridgeDest",
|
|
137
|
+
},
|
|
138
|
+
unichainmainnet: {
|
|
139
|
+
"0x918532A78d22419Da4091930d472bDdf532BE89a": "NormalTimelock",
|
|
140
|
+
"0x4121995b87f9EE8bA0a89e87470255e2E0fe48c7": "FastTrackTimelock",
|
|
141
|
+
"0x1b05eCb489842786776a9A10e91AAb56e2CFe15e": "CriticalTimelock",
|
|
142
|
+
"0x1803Cf1D3495b43cC628aa1d8638A981F8CD341C": "Guardian",
|
|
143
|
+
"0x0C52403E16BcB8007C1e54887E1dFC1eC9765D7C": "PoolRegistry",
|
|
144
|
+
"0x9c95f8aa28fFEB7ECdC0c407B9F632419c5daAF8": "XVSBridgeDest",
|
|
145
|
+
},
|
|
146
|
+
unichainsepolia: {
|
|
147
|
+
"0x5e20F5A2e23463D39287185DF84607DF7068F314": "NormalTimelock",
|
|
148
|
+
"0x668cDb1A414006D0a26e9e13881D4Cd30B8b2a4A": "FastTrackTimelock",
|
|
149
|
+
"0x86C093266e824FA4345484a7B9109e9567923DA6": "CriticalTimelock",
|
|
150
|
+
"0x9831D3A641E8c7F082EEA75b8249c99be9D09a34": "Guardian",
|
|
151
|
+
"0x9027cF782515F3184bbF7A6cD7a33052dc52E439": "PoolRegistry",
|
|
152
|
+
"0xCAF833318a6663bb23aa7f218e597c2F7970b4D2": "XVSBridgeDest",
|
|
153
|
+
},
|
|
154
|
+
berachainbartio: {},
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchNonGuardianPermissions.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/fetchNonGuardianPermissions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const hardhat_1 = __importDefault(require("hardhat"));
|
|
40
|
+
const path_1 = __importDefault(require("path"));
|
|
41
|
+
const deploymentUtils_1 = require("../../helpers/deploy/deploymentUtils");
|
|
42
|
+
const config_1 = require("./config");
|
|
43
|
+
function isTimelockAndNotGuardian(addresses, guardianAddress, network) {
|
|
44
|
+
const TIMELOCK = ["NormalTimelock", "FastTrackTimelock", "CriticalTimelock"];
|
|
45
|
+
const BSCGUARDIANS = ["Guardian 1", "Guardian 2", "Guardian 3"];
|
|
46
|
+
let hasTimelock = false;
|
|
47
|
+
let hasGuardian = false;
|
|
48
|
+
for (const address of addresses) {
|
|
49
|
+
const resolvedName = config_1.addressMap[network][address];
|
|
50
|
+
if (!hasTimelock) {
|
|
51
|
+
hasTimelock = TIMELOCK.includes(resolvedName);
|
|
52
|
+
}
|
|
53
|
+
if (!hasGuardian) {
|
|
54
|
+
hasGuardian = network === "bscmainnet" ? BSCGUARDIANS.includes(resolvedName) : address === guardianAddress;
|
|
55
|
+
}
|
|
56
|
+
if (hasTimelock && hasGuardian)
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
return hasTimelock && !hasGuardian;
|
|
60
|
+
}
|
|
61
|
+
function exportNonGuardianTimelockPermissions() {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
try {
|
|
64
|
+
const network = hardhat_1.default.network.name;
|
|
65
|
+
const guardianAddress = yield (0, deploymentUtils_1.guardian)(network);
|
|
66
|
+
const inputFilePath = path_1.default.join(__dirname, "networks", network, "permissions.json");
|
|
67
|
+
const outputFilePath = path_1.default.join(__dirname, "networks", network, "nonGuardianPermissions.json");
|
|
68
|
+
if (!fs.existsSync(inputFilePath)) {
|
|
69
|
+
throw new Error(`Permissions file not found for network: ${network}`);
|
|
70
|
+
}
|
|
71
|
+
const permissionsData = fs.readFileSync(inputFilePath, "utf8");
|
|
72
|
+
const parsedPermissions = JSON.parse(permissionsData);
|
|
73
|
+
const filteredPermissions = parsedPermissions.permissions
|
|
74
|
+
.filter((permission) => isTimelockAndNotGuardian(permission.addresses, guardianAddress, network))
|
|
75
|
+
.map((permission) => {
|
|
76
|
+
const addressNames = permission.addresses.map((address) => config_1.addressMap[network][address] || address);
|
|
77
|
+
return Object.assign(Object.assign({}, permission), { addressNames });
|
|
78
|
+
});
|
|
79
|
+
fs.writeFileSync(outputFilePath, JSON.stringify(filteredPermissions, null, 2));
|
|
80
|
+
console.log(`Filtered permissions written to: ${outputFilePath}`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error("Failed to export non-guardian permissions:", error);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
exportNonGuardianTimelockPermissions();
|
|
88
|
+
//# sourceMappingURL=fetchNonGuardianPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchNonGuardianPermissions.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/fetchNonGuardianPermissions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,sDAA0B;AAG1B,gDAAwB;AAExB,0EAAgE;AAChE,qCAAsC;AAMtC,SAAS,wBAAwB,CAAC,SAAmB,EAAE,eAAuB,EAAE,OAA2B;IACzG,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;QAC/B,MAAM,YAAY,GAAG,mBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC;SAC5G;QACD,IAAI,WAAW,IAAI,WAAW;YAAE,MAAM;KACvC;IAED,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC;AACrC,CAAC;AAMD,SAAe,oCAAoC;;QACjD,IAAI;YACF,MAAM,OAAO,GAAG,iBAAG,CAAC,OAAO,CAAC,IAA0B,CAAC;YACvD,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACpF,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,CAAC;YAEhG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;aACvE;YAED,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC/D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAEtD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,WAAW;iBACtD,MAAM,CAAC,CAAC,UAAsB,EAAE,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;iBAC5G,GAAG,CAAC,CAAC,UAAsB,EAAE,EAAE;gBAC9B,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,mBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;gBAC7G,uCAAY,UAAU,KAAE,YAAY,IAAG;YACzC,CAAC,CAAC,CAAC;YAEL,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,oCAAoC,cAAc,EAAE,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;SACpE;IACH,CAAC;CAAA;AAGD,oCAAoC,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const hardhat_1 = __importDefault(require("hardhat"));
|
|
16
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
17
|
+
const PermissionFetcher_1 = require("./PermissionFetcher");
|
|
18
|
+
const config_1 = require("./config");
|
|
19
|
+
const network = hardhat_1.default.network.name;
|
|
20
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
const params = yield inquirer_1.default.prompt([
|
|
22
|
+
{
|
|
23
|
+
name: "BNBFunctionSignatureFile",
|
|
24
|
+
message: "Please enter path of the .json file containing contract addresses and function signatures of BNB mainnet {optional}",
|
|
25
|
+
default: "scripts/ACMPermissions/networks/bscmainnet/BNBPermissions.json",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "chunkSize",
|
|
29
|
+
message: "Please enter the block chunk size for fetching the events. This is important as some RPCs fail to return logs for a large chunk of blocks",
|
|
30
|
+
default: 40000,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "startBlock",
|
|
34
|
+
message: "Please enter starting block of given network from which you want the logs. Will be ignored if permissions.json is already created. Log fetching start from the previous stored block {optional}",
|
|
35
|
+
default: config_1.startingBlockForACM[network],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "endBlock",
|
|
39
|
+
message: "Please enter ending block of given network till which you want the logs {optional}",
|
|
40
|
+
default: "latest",
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
const startingBlock = parseInt(params.startBlock, 10);
|
|
44
|
+
const endingBlock = parseInt(params.endBlock, 10);
|
|
45
|
+
const permissionFetcher = new PermissionFetcher_1.PermissionFetcher(network, params.BNBFunctionSignatureFile, params.chunkSize);
|
|
46
|
+
yield permissionFetcher.getPastEvents(startingBlock, endingBlock);
|
|
47
|
+
}))();
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA0B;AAE1B,wDAAgC;AAEhC,2DAAwD;AACxD,qCAA+C;AAE/C,MAAM,OAAO,GAAG,iBAAG,CAAC,OAAO,CAAC,IAA0B,CAAC;AAEvD,CAAC,GAAS,EAAE;IACV,MAAM,MAAM,GACV,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAEpB;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EACL,qHAAqH;YACvH,OAAO,EAAE,gEAAgE;SAC1E;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EACL,2IAA2I;YAC7I,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EACL,iMAAiM;YACnM,OAAO,EAAE,4BAAmB,CAAC,OAAO,CAAC;SACtC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oFAAoF;YAC7F,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5G,MAAM,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACpE,CAAC,CAAA,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface Event {
|
|
2
|
+
contractAddress: string;
|
|
3
|
+
functionSignature: string;
|
|
4
|
+
account: string;
|
|
5
|
+
type: PermissionsEnum;
|
|
6
|
+
}
|
|
7
|
+
export interface MissingRoleMap {
|
|
8
|
+
[role: string]: {
|
|
9
|
+
transactions: string[];
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface Permission {
|
|
13
|
+
contractAddress: string;
|
|
14
|
+
functionSignature: string;
|
|
15
|
+
addresses: string[];
|
|
16
|
+
role?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare enum PermissionsEnum {
|
|
19
|
+
Granted = "Granted",
|
|
20
|
+
Revoked = "Revoked"
|
|
21
|
+
}
|
|
22
|
+
export interface Role {
|
|
23
|
+
contractAddress: string;
|
|
24
|
+
functionSignature: string;
|
|
25
|
+
}
|
|
26
|
+
export interface Snapshot {
|
|
27
|
+
permissions: Permission[];
|
|
28
|
+
height: number;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../scripts/ACMPermissions/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,KAAK;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,eAAe;IACzB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PermissionsEnum = void 0;
|
|
4
|
+
var PermissionsEnum;
|
|
5
|
+
(function (PermissionsEnum) {
|
|
6
|
+
PermissionsEnum["Granted"] = "Granted";
|
|
7
|
+
PermissionsEnum["Revoked"] = "Revoked";
|
|
8
|
+
})(PermissionsEnum = exports.PermissionsEnum || (exports.PermissionsEnum = {}));
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../scripts/ACMPermissions/types.ts"],"names":[],"mappings":";;;AAsBA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venusprotocol/governance-contracts",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "2.11.0
|
|
4
|
+
"version": "2.11.0",
|
|
5
5
|
"author": "",
|
|
6
6
|
"files": [
|
|
7
7
|
"artifacts",
|
|
@@ -77,6 +77,8 @@
|
|
|
77
77
|
"@types/chai": "^4.3.4",
|
|
78
78
|
"@types/debug": "^4.1.12",
|
|
79
79
|
"@types/fs-extra": "^9.0.13",
|
|
80
|
+
"@types/inquirer": "^9.0.7",
|
|
81
|
+
"@types/lodash": "^4.17.6",
|
|
80
82
|
"@types/mocha": "^10.0.0",
|
|
81
83
|
"@types/node": "^18.16.3",
|
|
82
84
|
"@typescript-eslint/eslint-plugin": "^5.44.0",
|
|
@@ -115,6 +117,7 @@
|
|
|
115
117
|
"tsconfig-paths": "^4.1.2",
|
|
116
118
|
"typechain": "^8.1.1",
|
|
117
119
|
"typescript": "^4.9.3",
|
|
120
|
+
"typescript-retry-decorator": "^2.4.2",
|
|
118
121
|
"zksync-ethers": "^5.9.1"
|
|
119
122
|
},
|
|
120
123
|
"_moduleAliases": {
|