@skalenetwork/upgrade-tools 4.0.0-ownership-helpers.1 → 4.0.0-ownership-helpers.3

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.
@@ -1,14 +1,37 @@
1
1
  import { Instance } from "@skalenetwork/skale-contracts-ethers-v6";
2
+ interface OwnershipAdminOptions {
3
+ newOwner?: string;
4
+ readonly?: boolean;
5
+ rolesToCheck?: string[];
6
+ managerRolesToCheck?: number[];
7
+ }
2
8
  export declare class OwnershipAdmin {
3
9
  private instance;
4
10
  private contractMetadata;
5
11
  private contractNames;
6
12
  private isMetadataLoaded;
13
+ private transactionsByContractName;
14
+ private transactions;
15
+ private bytes32RolesToCheck;
16
+ private managerRolesToCheck;
17
+ private newOwner;
18
+ private newOwnerConfirmed;
7
19
  private readonly;
8
- constructor(instance: Instance, contractNames: string[], readonly?: boolean);
20
+ constructor(instance: Instance, contractNames: string[], options?: OwnershipAdminOptions);
9
21
  loadContractMetadata(confirmFindings?: boolean): Promise<void>;
22
+ createNecessaryTransactions(): Promise<void>;
10
23
  private confirmMetadata;
11
- private displayFindings;
24
+ private getColumnWidths;
25
+ private displayPatternGroup;
26
+ private displayMetadataFindings;
12
27
  private handleUserRejection;
13
28
  private groupMetadataByPattern;
29
+ private createTUPPOwnershipTransaction;
30
+ private createOwnableOwnershipTransaction;
31
+ private createAssignRolesTransactions;
32
+ private createTxsToChangeContractOwnership;
33
+ private promptConfirmNewOwner;
34
+ private promptConfirmTransactions;
35
+ private isDuplicateTransaction;
14
36
  }
37
+ export {};
@@ -4,19 +4,49 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OwnershipAdmin = void 0;
7
+ /* eslint-disable max-lines */
8
+ // Cspell:words TUPP keccak
7
9
  const utils_1 = require("./utils");
8
10
  const permission_utils_1 = require("./permission-utils");
9
11
  const chalk_1 = __importDefault(require("chalk"));
12
+ const hardhat_1 = require("hardhat");
13
+ const ZERO = 0;
10
14
  class OwnershipAdmin {
11
- constructor(instance, contractNames, readonly = true) {
15
+ // eslint-disable-next-line max-statements
16
+ constructor(instance, contractNames, options = {}) {
17
+ this.transactions = [];
18
+ this.bytes32RolesToCheck = [];
19
+ this.managerRolesToCheck = [];
20
+ this.newOwnerConfirmed = false;
12
21
  this.instance = instance;
13
22
  this.contractMetadata = new Map();
14
23
  this.isMetadataLoaded = false;
24
+ this.transactionsByContractName = new Map();
15
25
  // If true, does not allow to send transactions to blockchain
16
- this.readonly = readonly;
26
+ this.readonly = options.readonly ?? true;
27
+ this.newOwner = options.newOwner ?? "MOCK_NEW_OWNER_ADDRESS";
28
+ this.bytes32RolesToCheck = (options.rolesToCheck ?? []).map(role =>
29
+ // Convert to keccak256 hash
30
+ hardhat_1.ethers.id(role));
31
+ // Always check DEFAULT_ADMIN_ROLE at the end!
32
+ this.bytes32RolesToCheck.push(hardhat_1.ethers.ZeroHash);
33
+ this.managerRolesToCheck = options.managerRolesToCheck ?? [];
34
+ this.managerRolesToCheck.forEach(role => {
35
+ if (typeof role !== "number" || !Number.isInteger(role) || role < ZERO) {
36
+ throw new Error(`Invalid manager role: ${role}. Must be a non-negative integer.`);
37
+ }
38
+ });
39
+ this.managerRolesToCheck.push(ZERO);
40
+ if (!this.readonly && this.newOwner === "MOCK_NEW_OWNER_ADDRESS") {
41
+ throw new Error("New owner address must be provided in options when in write mode.");
42
+ }
17
43
  this.contractNames = contractNames;
18
44
  }
19
45
  async loadContractMetadata(confirmFindings = true) {
46
+ if (this.isMetadataLoaded) {
47
+ console.log(chalk_1.default.yellow("Contract metadata is already loaded. Skipping reload."));
48
+ return;
49
+ }
20
50
  await Promise.all(this.contractNames.map(async (contractName) => {
21
51
  // Already checks the contractName is in the instance
22
52
  const address = await this.instance.getContractAddress(contractName);
@@ -39,33 +69,62 @@ class OwnershipAdmin {
39
69
  await this.confirmMetadata();
40
70
  }
41
71
  }
72
+ async createNecessaryTransactions() {
73
+ // Clear previous transactions
74
+ console.log(chalk_1.default.grey("INFO: The next Following steps will NOT submit any transactions to the blockchain."));
75
+ if (!this.readonly) {
76
+ await this.promptConfirmNewOwner();
77
+ }
78
+ for (const contract of this.contractMetadata.values()) {
79
+ // eslint-disable-next-line no-await-in-loop
80
+ const txs = await this.createTxsToChangeContractOwnership(contract);
81
+ this.transactionsByContractName.set(contract.name, txs);
82
+ txs.forEach(txData => this.transactions.push(txData.transaction));
83
+ }
84
+ }
42
85
  async confirmMetadata() {
43
- this.displayFindings();
86
+ this.displayMetadataFindings();
44
87
  const userConfirmed = await (0, utils_1.promptUserConfirmation)();
45
88
  if (!userConfirmed) {
46
89
  this.handleUserRejection();
47
90
  }
48
91
  console.log(chalk_1.default.green("\nUser confirmed. Proceeding...\n"));
49
92
  }
50
- displayFindings() {
93
+ getColumnWidths() {
94
+ let maxNameWidth = 0;
95
+ let maxAddressWidth = 0;
96
+ for (const contract of this.contractMetadata.values()) {
97
+ maxNameWidth = Math.max(maxNameWidth, contract.name.length);
98
+ maxAddressWidth = Math.max(maxAddressWidth, contract.address.length);
99
+ }
100
+ return { maxAddressWidth, maxNameWidth };
101
+ }
102
+ displayPatternGroup(pattern, contracts) {
103
+ const { maxNameWidth, maxAddressWidth } = this.getColumnWidths();
104
+ console.log(chalk_1.default.bold(`\n${pattern} Pattern (${contracts.length} contracts):`));
105
+ for (const contract of contracts) {
106
+ const name = contract.name.padEnd(maxNameWidth);
107
+ const address = contract.address.padEnd(maxAddressWidth);
108
+ const permissions = contract.permissionModel?.join(", ") || "None";
109
+ console.log(chalk_1.default.gray(` ${name} ${address} ${permissions}`));
110
+ }
111
+ }
112
+ displayMetadataFindings() {
51
113
  console.log(chalk_1.default.cyan("\n=== Contract Pattern Detection Results ===\n"));
52
114
  const groupedByPattern = this.groupMetadataByPattern();
53
115
  for (const [pattern, contracts] of Object.entries(groupedByPattern)) {
54
- const minContractsToDisplay = 0;
55
- if (contracts.length > minContractsToDisplay) {
56
- console.log(chalk_1.default.bold(`\n${pattern} Pattern (${contracts.length} contracts):`));
57
- for (const contract of contracts) {
58
- console.log(chalk_1.default.gray(` - ${contract.name} (${contract.address}) - Permission Models: ${contract.permissionModel?.join(", ") || "None"}`));
59
- }
116
+ if (contracts.length) {
117
+ this.displayPatternGroup(pattern, contracts);
60
118
  }
61
119
  }
62
120
  console.log(chalk_1.default.cyan("\n==========================================\n"));
63
121
  }
64
122
  handleUserRejection() {
65
- console.log(chalk_1.default.yellow("\nUser did not confirm. Aborting and clearing metadata..."));
123
+ console.log(chalk_1.default.red("User did not confirm. Aborting and clearing all data..."));
66
124
  this.contractMetadata.clear();
125
+ this.transactions.length = 0;
67
126
  this.isMetadataLoaded = false;
68
- throw new Error("User aborted the operation. Metadata has been cleared.");
127
+ throw new Error("User aborted the operation. Data has been cleared.");
69
128
  }
70
129
  groupMetadataByPattern() {
71
130
  const grouped = Object.values(utils_1.Pattern).
@@ -78,6 +137,140 @@ class OwnershipAdmin {
78
137
  }
79
138
  return grouped;
80
139
  }
140
+ async createTUPPOwnershipTransaction(contractData) {
141
+ const admin = await (0, utils_1.getAdminAddress)(contractData.address);
142
+ const tx = await (0, permission_utils_1.transferOwnership)(admin, this.newOwner);
143
+ if (typeof tx === "boolean" && tx) {
144
+ console.log(chalk_1.default.gray(` -> Owner of ProxyAdmin of ${contractData.address} is already ${this.newOwner}.`));
145
+ return true;
146
+ }
147
+ else if (this.isDuplicateTransaction(tx)) {
148
+ console.log(chalk_1.default.gray(` -> Transaction to change Owner of Proxy Admin of ${contractData.name} was already prepared.`));
149
+ console.log(chalk_1.default.gray(` NOTE: It's likely ${contractData.name} shares the same Proxy Admin of another contract.`));
150
+ return true;
151
+ }
152
+ console.log(chalk_1.default.yellow(` -> Tx to change Proxy Admin at ${admin} of ${contractData.name} created.`));
153
+ return {
154
+ description: `-> Tx to change Proxy Admin at ${admin} to ${this.newOwner}`,
155
+ transaction: tx
156
+ };
157
+ }
158
+ async createOwnableOwnershipTransaction(contractData) {
159
+ const tx = await (0, permission_utils_1.transferOwnership)(contractData.address, this.newOwner);
160
+ if (typeof tx === "boolean" && tx) {
161
+ console.log(chalk_1.default.gray(` -> Owner of ${contractData.name} at ${contractData.address} is already ${this.newOwner}.`));
162
+ return true;
163
+ }
164
+ else if (this.isDuplicateTransaction(tx)) {
165
+ throw new Error(`Error: Transaction to change Owner of ${contractData.name} was already created.`);
166
+ }
167
+ console.log(chalk_1.default.yellow(` -> Tx to change Owner of ${contractData.name} at ${contractData.address} created.`));
168
+ return {
169
+ description: `-> Tx to change Owner of ${contractData.name} at ${contractData.address} to ${this.newOwner} created`,
170
+ transaction: tx
171
+ };
172
+ }
173
+ async createAssignRolesTransactions(contractData) {
174
+ const txs = [];
175
+ for (const role of this.bytes32RolesToCheck) {
176
+ // eslint-disable-next-line no-await-in-loop
177
+ const tx = await (0, permission_utils_1.grantRole)(contractData.address, role, this.newOwner);
178
+ if (typeof tx === "boolean" && tx) {
179
+ console.log(chalk_1.default.gray(` -> Role ${role} already granted to ${this.newOwner} in ${contractData.name}.`));
180
+ }
181
+ else if (this.isDuplicateTransaction(tx)) {
182
+ throw new Error(`Error: Transaction to grant role ${role} in ${contractData.name} was already created.`);
183
+ }
184
+ else {
185
+ console.log(chalk_1.default.yellow(` -> Tx to grant role ${role} to ${this.newOwner} in ${contractData.name} created.`));
186
+ txs.push({
187
+ description: `-> Tx to grant role ${role} to ${this.newOwner} in ${contractData.name}`,
188
+ transaction: tx
189
+ });
190
+ }
191
+ }
192
+ return txs;
193
+ }
194
+ // TODO: Remove this
195
+ // eslint-disable-next-line max-statements
196
+ async createTxsToChangeContractOwnership(contractData) {
197
+ console.log(chalk_1.default.white(`* Creating Transactions to change Ownership of ${contractData.name}.`));
198
+ const txs = [];
199
+ if (contractData.pattern === utils_1.Pattern.TUPP) {
200
+ const tx = await this.createTUPPOwnershipTransaction(contractData);
201
+ if (tx !== true) {
202
+ txs.push(tx);
203
+ }
204
+ }
205
+ if (contractData.permissionModel?.includes(permission_utils_1.PermissionModel.OWNABLE)) {
206
+ const tx = await this.createOwnableOwnershipTransaction(contractData);
207
+ if (tx !== true) {
208
+ txs.push(tx);
209
+ }
210
+ }
211
+ if (contractData.permissionModel?.includes(permission_utils_1.PermissionModel.ROLE_BASED)) {
212
+ const txList = await this.createAssignRolesTransactions(contractData);
213
+ if (txList.length) {
214
+ txList.forEach(tx => txs.push(tx));
215
+ }
216
+ }
217
+ if (contractData.permissionModel?.includes(permission_utils_1.PermissionModel.ACCESS_MANAGER)) {
218
+ console.log(chalk_1.default.yellow("Not implemented yet: Access Manager role assignments."));
219
+ }
220
+ return txs;
221
+ }
222
+ // eslint-disable-next-line max-statements
223
+ async promptConfirmNewOwner() {
224
+ if (this.newOwnerConfirmed) {
225
+ console.log(chalk_1.default.white("INFO: New owner already confirmed. Skipping confirmation."));
226
+ return;
227
+ }
228
+ const message1 = `You have specified the new owner address as ${this.newOwner}.`;
229
+ let message2 = "";
230
+ let message3 = "";
231
+ const isContract = await (0, utils_1.isContractAddress)(this.newOwner);
232
+ if (isContract) {
233
+ message2 = chalk_1.default.green(`INFO: It appears to be a contract address.`);
234
+ const { owners, threshold } = await (0, permission_utils_1.tryGetMultiSigInfo)(this.newOwner);
235
+ if (owners) {
236
+ const ownersList = owners.join(", ");
237
+ message3 = chalk_1.default.green(`INFO: Found owners of new Owner Multi-Sig: ${ownersList}`);
238
+ }
239
+ else {
240
+ message3 = chalk_1.default.red(`WARNING: The script was unable to collect owners details.`);
241
+ }
242
+ if (threshold) {
243
+ message3 += chalk_1.default.green(`INFO: Multi-Sig threshold is set to ${threshold}.`);
244
+ }
245
+ else {
246
+ message3 += chalk_1.default.red(`WARNING: The script was unable to determine the Multi-Sig threshold.`);
247
+ }
248
+ }
249
+ const message = `${message1}\n${message2 || ""}\n${message3 || ""}\nDo you confirm this is correct?`;
250
+ const userConfirmed = await (0, utils_1.promptUserConfirmation)(message);
251
+ if (!userConfirmed) {
252
+ throw new Error("User did not confirm the new owner address. Aborting...");
253
+ }
254
+ this.newOwnerConfirmed = true;
255
+ }
256
+ // TODO: Remove disable
257
+ // eslint-disable-next-line class-methods-use-this
258
+ async promptConfirmTransactions(transactions) {
259
+ if (!transactions.length) {
260
+ return true;
261
+ }
262
+ console.log(chalk_1.default.white("\n=== Prepared Following Ownership Transfer Transactions ===\n"));
263
+ transactions.forEach((txData, index) => {
264
+ console.log(chalk_1.default.gray(` - Transaction ${index}: ${txData.description || "No description"}`));
265
+ });
266
+ const msg = "Do you confirm these transactions? They will NOT be sent to the blockchain yet.";
267
+ const userConfirmed = await (0, utils_1.promptUserConfirmation)(msg);
268
+ return userConfirmed;
269
+ }
270
+ isDuplicateTransaction(transaction) {
271
+ return this.transactions.some((existingTx) => existingTx.to === transaction.to &&
272
+ existingTx.data === transaction.data);
273
+ }
81
274
  }
82
275
  exports.OwnershipAdmin = OwnershipAdmin;
83
276
  //# sourceMappingURL=ownershipAdmin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownershipAdmin.js","sourceRoot":"","sources":["../../../src/ownership-transfer/ownershipAdmin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownershipAdmin.js","sourceRoot":"","sources":["../../../src/ownership-transfer/ownershipAdmin.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
- import { AddressLike } from "ethers";
1
+ import { AddressLike, Transaction } from "ethers";
2
2
  export declare enum PermissionModel {
3
3
  OWNABLE = "OWNABLE",
4
4
  ROLE_BASED = "ROLE_BASED",
5
- ACCESS_MANAGED = "ACCESS_MANAGED"
5
+ ACCESS_MANAGED = "ACCESS_MANAGED",
6
+ ACCESS_MANAGER = "ACCESS_MANAGER"
6
7
  }
7
8
  export declare const isOwnable: (contractAddress: AddressLike) => Promise<boolean>;
8
9
  export declare const isAccessControl: (contractAddress: AddressLike) => Promise<boolean>;
10
+ export declare const isAccessManager: (contractAddress: AddressLike) => Promise<boolean>;
9
11
  export declare const isAccessManaged: (contractAddress: AddressLike) => Promise<boolean>;
10
- export declare const transferOwnership: (contractAddress: AddressLike, newOwner: AddressLike) => Promise<{
11
- to: string;
12
- data: string;
13
- } | boolean>;
12
+ export declare const tryGetMultiSigInfo: (contractAddress: string) => Promise<{
13
+ owners: string[] | null;
14
+ threshold: bigint | null;
15
+ }>;
16
+ export declare const transferOwnership: (contractAddress: string, newOwner: string) => Promise<Transaction | true>;
17
+ export declare const grantRole: (contractAddress: AddressLike, role: string, account: AddressLike) => Promise<Transaction | true>;
14
18
  export declare const getPermissionModels: (address: AddressLike) => Promise<PermissionModel[]>;
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPermissionModels = exports.transferOwnership = exports.isAccessManaged = exports.isAccessControl = exports.isOwnable = exports.PermissionModel = void 0;
6
+ exports.getPermissionModels = exports.grantRole = exports.transferOwnership = exports.tryGetMultiSigInfo = exports.isAccessManaged = exports.isAccessManager = exports.isAccessControl = exports.isOwnable = exports.PermissionModel = void 0;
7
+ /* eslint-disable max-lines */
7
8
  const ethers_1 = require("ethers");
8
9
  const utils_1 = require("./utils");
9
10
  const chalk_1 = __importDefault(require("chalk"));
@@ -12,9 +13,10 @@ var PermissionModel;
12
13
  (function (PermissionModel) {
13
14
  // Does not fully complete the process of Ownable2Step
14
15
  PermissionModel["OWNABLE"] = "OWNABLE";
15
- // This works also for ACCESS_MANAGER contracts - i.e they are ROLE_BASED
16
+ // This does NOT work for ACCESS_MANAGER contracts
16
17
  PermissionModel["ROLE_BASED"] = "ROLE_BASED";
17
18
  PermissionModel["ACCESS_MANAGED"] = "ACCESS_MANAGED";
19
+ PermissionModel["ACCESS_MANAGER"] = "ACCESS_MANAGER";
18
20
  })(PermissionModel || (exports.PermissionModel = PermissionModel = {}));
19
21
  /*
20
22
  * ABI for Ownable interface - includes owner() function
@@ -31,12 +33,24 @@ const ACCESS_CONTROL_ABI = [
31
33
  "function grantRole(bytes32 role, address account)",
32
34
  "function revokeRole(bytes32 role, address account)"
33
35
  ];
36
+ const ACCESS_MANAGER_ABI = [
37
+ "function hasRole(uint64 role, address account) view returns (bool)",
38
+ "function grantRole(uint64 role, address account, uint32 executionDelay)",
39
+ "function revokeRole(uint64 role, address account)"
40
+ ];
34
41
  /*
35
42
  * ABI for AccessManaged interface - includes authority() function
36
43
  */
37
44
  const ACCESS_MANAGED_ABI = [
38
45
  "function authority() view returns (address)"
39
46
  ];
47
+ /*
48
+ * ABI for Gnosis Safe MultiSig interface
49
+ */
50
+ const MULTISIG_ABI = [
51
+ "function getOwners() view returns (address[])",
52
+ "function getThreshold() view returns (uint256)"
53
+ ];
40
54
  const verifyOwnableInterface = async (contract, contractAddress) => {
41
55
  /*
42
56
  * Verify owner() exists and returns non-zero address
@@ -105,6 +119,42 @@ const isAccessControl = async (contractAddress) => {
105
119
  }
106
120
  };
107
121
  exports.isAccessControl = isAccessControl;
122
+ const verifyAccessManagerInterface = async (contract, contractAddress) => {
123
+ /*
124
+ * Verify hasRole(uint64,address) view function exists
125
+ * AccessManager uses uint64 for roleId instead of bytes32
126
+ */
127
+ const zeroRole = 0n;
128
+ await contract.hasRole(zeroRole, hardhat_1.ethers.ZeroAddress);
129
+ /*
130
+ * Verify grantRole(uint64,address,uint32) exists by checking bytecode
131
+ * AccessManager's grantRole includes an executionDelay parameter
132
+ */
133
+ return await (0, utils_1.hasFunctionSelector)(contractAddress, "grantRole(uint64,address,uint32)") &&
134
+ await (0, utils_1.hasFunctionSelector)(contractAddress, "revokeRole(uint64,address)");
135
+ };
136
+ /*
137
+ * Checks if a contract implements the AccessManager interface.
138
+ * A contract is considered AccessManager if it has hasRole(uint64,address) and
139
+ * grantRole(uint64,address,uint32) functions with uint64 role parameter.
140
+ *
141
+ * @param contractAddress - The address of the contract to check
142
+ * @returns true if the contract is AccessManager, false otherwise
143
+ */
144
+ const isAccessManager = async (contractAddress) => {
145
+ try {
146
+ const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
147
+ if (!await (0, utils_1.isContractAddress)(resolvedAddress)) {
148
+ return false;
149
+ }
150
+ const contract = new ethers_1.Contract(resolvedAddress, ACCESS_MANAGER_ABI, hardhat_1.ethers.provider);
151
+ return await verifyAccessManagerInterface(contract, resolvedAddress);
152
+ }
153
+ catch {
154
+ return false;
155
+ }
156
+ };
157
+ exports.isAccessManager = isAccessManager;
108
158
  /*
109
159
  * Checks if a contract implements the AccessManaged interface.
110
160
  * A contract is considered AccessManaged if it has an authority() function
@@ -133,6 +183,29 @@ const isAccessManaged = async (contractAddress) => {
133
183
  }
134
184
  };
135
185
  exports.isAccessManaged = isAccessManaged;
186
+ /*
187
+ * Checks if a contract is a MultiSig (Gnosis Safe).
188
+ * A contract is considered a MultiSig if it has both getOwners() and getThreshold() functions
189
+ * and returns valid data (at least one owner and threshold > 0).
190
+ *
191
+ * @param contractAddress - The address of the contract to check
192
+ * @returns An object containing owners and threshold if the contract is a MultiSig, null otherwise
193
+ */
194
+ const tryGetMultiSigInfo = async (contractAddress) => {
195
+ let owners = null;
196
+ let threshold = null;
197
+ try {
198
+ const contract = new ethers_1.Contract(contractAddress, MULTISIG_ABI, hardhat_1.ethers.provider);
199
+ owners = await contract.getOwners();
200
+ threshold = await contract.getThreshold();
201
+ return { owners, threshold };
202
+ }
203
+ catch (err) {
204
+ console.warn(`Error calling usual Multi-sig getter functions: ${err}`);
205
+ return { owners, threshold };
206
+ }
207
+ };
208
+ exports.tryGetMultiSigInfo = tryGetMultiSigInfo;
136
209
  /*
137
210
  * Transfers ownership of an Ownable contract to a new owner.
138
211
  * This function encodes the transferOwnership call data for the transaction.
@@ -144,21 +217,50 @@ exports.isAccessManaged = isAccessManaged;
144
217
  *
145
218
  * @dev The address must have already been verified as an Ownable contract before calling this function.
146
219
  */
220
+ // eslint-disable-next-line max-statements
147
221
  const transferOwnership = async (contractAddress, newOwner) => {
148
- const resolvedContractAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
149
- const resolvedNewOwner = await hardhat_1.ethers.resolveAddress(newOwner);
150
- const contract = new ethers_1.Contract(resolvedContractAddress, OWNABLE_ABI, hardhat_1.ethers.provider);
151
- if (await contract.owner() === resolvedNewOwner) {
222
+ const contract = new ethers_1.Contract(contractAddress, OWNABLE_ABI, hardhat_1.ethers.provider);
223
+ if (await contract.owner() === newOwner) {
152
224
  return true;
153
225
  }
154
- const data = contract.interface.encodeFunctionData("transferOwnership", [resolvedNewOwner]);
155
- console.log(chalk_1.default.green(`Prepared transferOwnership transaction for ${resolvedContractAddress} to new owner ${resolvedNewOwner}`));
156
- return {
157
- data,
158
- "to": resolvedContractAddress
159
- };
226
+ const data = contract.interface.encodeFunctionData("transferOwnership", [newOwner]);
227
+ console.log(chalk_1.default.green(`Prepared transferOwnership transaction for ${contractAddress} to new owner ${newOwner}`));
228
+ const transaction = new ethers_1.Transaction();
229
+ transaction.to = contractAddress;
230
+ transaction.data = data;
231
+ return transaction;
160
232
  };
161
233
  exports.transferOwnership = transferOwnership;
234
+ /*
235
+ * Grants a role to an address in a ROLE_BASED (AccessControl) contract.
236
+ * This function encodes the grantRole call data for the transaction.
237
+ *
238
+ * @param contractAddress - The address of the AccessControl contract
239
+ * @param role - The bytes32 role identifier to grant
240
+ * @param account - The address to grant the role to
241
+ * @returns Transaction object with the encoded grantRole call or true
242
+ * if the account already has the role
243
+ *
244
+ * @dev The contract address must be a ROLE_BASED contract (not validated by this function)
245
+ */
246
+ const grantRole = async (contractAddress, role, account) => {
247
+ const resolvedContractAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
248
+ const resolvedAccount = await hardhat_1.ethers.resolveAddress(account);
249
+ const contract = new ethers_1.Contract(resolvedContractAddress, ACCESS_CONTROL_ABI, hardhat_1.ethers.provider);
250
+ /*
251
+ * Check if the account already has the role
252
+ */
253
+ if (await contract.hasRole(role, resolvedAccount)) {
254
+ return true;
255
+ }
256
+ const data = contract.interface.encodeFunctionData("grantRole", [role, resolvedAccount]);
257
+ const transaction = new ethers_1.Transaction();
258
+ transaction.to = resolvedContractAddress;
259
+ transaction.data = data;
260
+ return transaction;
261
+ };
262
+ exports.grantRole = grantRole;
263
+ // eslint-disable-next-line max-statements
162
264
  const getPermissionModels = async (address) => {
163
265
  const models = [];
164
266
  if (await (0, exports.isOwnable)(address)) {
@@ -167,9 +269,15 @@ const getPermissionModels = async (address) => {
167
269
  if (await (0, exports.isAccessControl)(address)) {
168
270
  models.push(PermissionModel.ROLE_BASED);
169
271
  }
272
+ if (await (0, exports.isAccessManager)(address)) {
273
+ models.push(PermissionModel.ACCESS_MANAGER);
274
+ }
170
275
  if (await (0, exports.isAccessManaged)(address)) {
171
276
  models.push(PermissionModel.ACCESS_MANAGED);
172
277
  }
278
+ if (models.includes(PermissionModel.ACCESS_MANAGER) && models.includes(PermissionModel.ROLE_BASED)) {
279
+ throw new Error(`Address ${address} cannot be both ACCESS_MANAGER and ROLE_BASED permission models.`);
280
+ }
173
281
  return models;
174
282
  };
175
283
  exports.getPermissionModels = getPermissionModels;
@@ -1 +1 @@
1
- {"version":3,"file":"permission-utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/permission-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/permission-utils.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,6 @@ export declare const getImplementationAddress: (address: string) => Promise<stri
11
11
  export declare const isTUPPPattern: (address: string) => Promise<boolean>;
12
12
  export declare const isBeaconPattern: (address: string) => Promise<boolean>;
13
13
  export declare const identifyProxyPattern: (address: string) => Promise<Pattern>;
14
- export declare const promptUserConfirmation: () => Promise<boolean>;
14
+ export declare const promptUserConfirmation: (message?: string) => Promise<boolean>;
15
15
  export declare const detectPattern: (address: AddressLike) => Promise<Pattern>;
16
16
  export declare const hasFunctionSelector: (address: string, signature: string) => Promise<boolean>;
@@ -120,13 +120,14 @@ exports.identifyProxyPattern = identifyProxyPattern;
120
120
  * Accepts "yes" or "y" (case-insensitive) as confirmation.
121
121
  * Returns a Promise that resolves to true if confirmed, false otherwise.
122
122
  */
123
- const promptUserConfirmation = () => {
123
+ const promptUserConfirmation = (message) => {
124
124
  const rl = readline_1.default.createInterface({
125
125
  "input": process.stdin,
126
126
  "output": process.stdout
127
127
  });
128
+ const msg = message || "Do you confirm these findings?";
128
129
  return new Promise((resolve) => {
129
- rl.question(chalk_1.default.yellow("Do you confirm these findings? (yes/y to confirm): "), (answer) => {
130
+ rl.question(chalk_1.default.yellow(`${msg} (yes/y to confirm): `), (answer) => {
130
131
  rl.close();
131
132
  const normalizedAnswer = answer.trim().toLowerCase();
132
133
  resolve(normalizedAnswer === "yes" || normalizedAnswer === "y");
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/utils.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAC1B,qCAA+B;AAC/B,wDAAgC;AAEhC,MAAM,kBAAkB,GAAG,oEAAoE,CAAC;AAChG,MAAM,2BAA2B,GAAG,oEAAoE,CAAC;AACzG,MAAM,mBAAmB,GAAG,oEAAoE,CAAC;AAGjG,MAAM,cAAc,GAAG;IACnB,yCAAyC;IACzC,kDAAkD;CACrD,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,IAAY,OAIX;AAJD,WAAY,OAAO;IACf,wBAAa,CAAA;IACb,4BAAiB,CAAA;IACjB,8BAAmB,CAAA;AACvB,CAAC,EAJW,OAAO,uBAAP,OAAO,QAIlB;AAEM,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAoB,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAEK,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAChE,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/D,OAAO,gBAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC,CAAC;AAHW,QAAA,sBAAsB,0BAGjC;AAEK,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IACtE,MAAM,cAAc,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,UAAU,CACnD,OAAO,EACP,kBAAkB,CACrB,CAAC;IACF,OAAO,IAAA,8BAAsB,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAC/E,MAAM,uBAAuB,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,UAAU,CAC5D,OAAO,EACP,2BAA2B,CAC9B,CAAC;IACF,OAAO,IAAA,8BAAsB,EAAC,uBAAuB,CAAC,CAAC;AAC3D,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC3B,YAAoB,EACpB,YAAoB,EACJ,EAAE;IAClB,MAAM,eAAe,GAAG,MAAM,IAAA,yBAAiB,EAAC,YAAY,CAAC,CAAC;IAE9D,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,qBAAqB,GAAG,MAAM,IAAA,gCAAwB,EAAC,YAAY,CAAC,CAAC;IAC3E,OAAO,qBAAqB,KAAK,gBAAM,CAAC,WAAW,IAAI,MAAM,IAAA,yBAAiB,EAAC,qBAAqB,CAAC,CAAC;AAC1G,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAoB,EAAE;IACrE,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,YAAY,KAAK,gBAAM,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB;AAEF;;;;GAIG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAoB,EAAE;IACvE,IAAI,CAAC;QACD,oBAAoB;QACpB,MAAM,eAAe,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,UAAU,CACpD,OAAO,EACP,mBAAmB,CACtB,CAAC;QAEF,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,eAAe,CAAC,CAAC;QAE9D,IAAI,aAAa,KAAK,gBAAM,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,gBAAM,CAAC,QAAQ,CAChC,OAAO,EACP,cAAc,EACd,gBAAM,CAAC,QAAQ,CAClB,CAAC;QAEF,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,QAAQ,CAAC,KAAK,EAAE;YAChB,QAAQ,CAAC,cAAc,EAAE;SAC5B,CAAC,CAAC;QAEH,OAAO,KAAK,KAAK,gBAAM,CAAC,WAAW;YAC/B,cAAc,KAAK,aAAa;YAChC,MAAM,IAAA,yBAAiB,EAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AA/BW,QAAA,eAAe,mBA+B1B;AAEF;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAoB,EAAE;IAC5E,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEF;;;;GAIG;AACI,MAAM,sBAAsB,GAAG,GAAqB,EAAE;IACzD,MAAM,EAAE,GAAG,kBAAQ,CAAC,eAAe,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC,KAAK;QACtB,QAAQ,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CACP,eAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,EACnE,CAAC,MAAM,EAAE,EAAE;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrD,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,GAAG,CAAC,CAAC;QACpE,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAGF;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,OAAoB,EAAoB,EAAE;IAC1E,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,gBAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAiB,EAAC,eAAe,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,iCAAiC,CAAC,CAAA;QACxE,CAAC;QAED,OAAO,MAAM,IAAA,4BAAoB,EAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,uCAAuC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;AACL,CAAC,CAAA;AAdY,QAAA,aAAa,iBAczB;AAEM,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAoB,EAAE;IAC9F,MAAM,KAAK,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC;QACD,uEAAuE;QACvE,MAAM,MAAM,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,OAAO;SACd,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,sDAAsD;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAA;AAtBY,QAAA,mBAAmB,uBAsB/B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skalenetwork/upgrade-tools",
3
- "version": "4.0.0-ownership-helpers.1",
3
+ "version": "4.0.0-ownership-helpers.3",
4
4
  "description": "Scripts to support upgrades of smart contracts",
5
5
  "files": [
6
6
  "dist/**/*"