@skalenetwork/upgrade-tools 4.0.0-develop.4 → 4.0.0-develop.5
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/dist/src/contractVerifier.d.ts +1 -0
- package/dist/src/contractVerifier.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/ownership-transfer/constants.d.ts +8 -0
- package/dist/src/ownership-transfer/constants.js +33 -0
- package/dist/src/ownership-transfer/constants.js.map +1 -0
- package/dist/src/ownership-transfer/contractAdmin.d.ts +55 -0
- package/dist/src/ownership-transfer/contractAdmin.js +206 -0
- package/dist/src/ownership-transfer/contractAdmin.js.map +1 -0
- package/dist/src/ownership-transfer/instanceAdmin.d.ts +51 -0
- package/dist/src/ownership-transfer/instanceAdmin.js +223 -0
- package/dist/src/ownership-transfer/instanceAdmin.js.map +1 -0
- package/dist/src/ownership-transfer/permission-utils.d.ts +32 -0
- package/dist/src/ownership-transfer/permission-utils.js +192 -0
- package/dist/src/ownership-transfer/permission-utils.js.map +1 -0
- package/dist/src/ownership-transfer/utils.d.ts +19 -0
- package/dist/src/ownership-transfer/utils.js +201 -0
- package/dist/src/ownership-transfer/utils.js.map +1 -0
- package/dist/src/verification.d.ts +1 -1
- package/dist/src/verification.js +2 -1
- package/dist/src/verification.js.map +1 -1
- package/dist/src/verifiers/blockscoutVerifier.js +4 -0
- package/dist/src/verifiers/blockscoutVerifier.js.map +1 -1
- package/dist/src/verifiers/etherscanVerifier.js +1 -1
- package/dist/src/verifiers/etherscanVerifier.js.map +1 -1
- package/dist/src/verifiers/skaleBlockscoutVerifier.js +2 -2
- package/dist/src/verifiers/skaleBlockscoutVerifier.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instanceAdmin.js","sourceRoot":"","sources":["../../../src/ownership-transfer/instanceAdmin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AddressLike, Transaction } from "ethers";
|
|
2
|
+
export declare enum PermissionModel {
|
|
3
|
+
OWNABLE = "OWNABLE",
|
|
4
|
+
ROLE_BASED = "ROLE_BASED",
|
|
5
|
+
ACCESS_MANAGED = "ACCESS_MANAGED",
|
|
6
|
+
ACCESS_MANAGER = "ACCESS_MANAGER"
|
|
7
|
+
}
|
|
8
|
+
export declare const isOwnable: (contractAddress: AddressLike) => Promise<boolean>;
|
|
9
|
+
export declare const isAccessControl: (contractAddress: AddressLike) => Promise<boolean>;
|
|
10
|
+
export declare const isAccessManager: (contractAddress: AddressLike) => Promise<boolean>;
|
|
11
|
+
export declare const isAccessManaged: (contractAddress: AddressLike) => Promise<boolean>;
|
|
12
|
+
export declare const transferOwnership: (contractAddress: string, newOwner: string, oldOwner: string) => Promise<Transaction | false>;
|
|
13
|
+
export declare const grantRole: (input: {
|
|
14
|
+
contractAddress: string;
|
|
15
|
+
role: string;
|
|
16
|
+
newAccount: AddressLike;
|
|
17
|
+
oldAccount: AddressLike;
|
|
18
|
+
}) => Promise<Transaction | false>;
|
|
19
|
+
export declare const renounceRole: (contractAddress: string, role: string, oldAccount: AddressLike) => Promise<Transaction | boolean>;
|
|
20
|
+
export declare const getPermissionModels: (address: AddressLike) => Promise<PermissionModel[]>;
|
|
21
|
+
export declare const grantAccessManagerRole: (input: {
|
|
22
|
+
contractAddress: string;
|
|
23
|
+
role: bigint;
|
|
24
|
+
newAccount: AddressLike;
|
|
25
|
+
oldAccount: AddressLike;
|
|
26
|
+
}) => Promise<Transaction | false>;
|
|
27
|
+
export declare const renounceAccessManagerRole: (input: {
|
|
28
|
+
contractAddress: string;
|
|
29
|
+
role: bigint;
|
|
30
|
+
newAccount: AddressLike;
|
|
31
|
+
oldAccount: AddressLike;
|
|
32
|
+
}) => Promise<Transaction | boolean>;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renounceAccessManagerRole = exports.grantAccessManagerRole = exports.getPermissionModels = exports.renounceRole = exports.grantRole = exports.transferOwnership = exports.isAccessManaged = exports.isAccessManager = exports.isAccessControl = exports.isOwnable = exports.PermissionModel = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const hardhat_1 = require("hardhat");
|
|
8
|
+
var PermissionModel;
|
|
9
|
+
(function (PermissionModel) {
|
|
10
|
+
// Does not fully complete the process of Ownable2Step
|
|
11
|
+
PermissionModel["OWNABLE"] = "OWNABLE";
|
|
12
|
+
PermissionModel["ROLE_BASED"] = "ROLE_BASED";
|
|
13
|
+
PermissionModel["ACCESS_MANAGED"] = "ACCESS_MANAGED";
|
|
14
|
+
PermissionModel["ACCESS_MANAGER"] = "ACCESS_MANAGER";
|
|
15
|
+
})(PermissionModel || (exports.PermissionModel = PermissionModel = {}));
|
|
16
|
+
const ZERO = 0;
|
|
17
|
+
const MIN_ROLE_HOLDERS = 2n;
|
|
18
|
+
const verifyOwnableInterface = async (contract, contractAddress) => {
|
|
19
|
+
const owner = await contract.owner();
|
|
20
|
+
return owner !== hardhat_1.ethers.ZeroAddress &&
|
|
21
|
+
await (0, utils_1.hasFunctionSelector)(contractAddress, "transferOwnership(address)");
|
|
22
|
+
};
|
|
23
|
+
const isOwnable = async (contractAddress) => {
|
|
24
|
+
try {
|
|
25
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
26
|
+
if (!await (0, utils_1.isContractAddress)(resolvedAddress)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const contract = new ethers_1.Contract(resolvedAddress, constants_1.OWNABLE_ABI, hardhat_1.ethers.provider);
|
|
30
|
+
return await verifyOwnableInterface(contract, resolvedAddress);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.isOwnable = isOwnable;
|
|
37
|
+
const verifyAccessControlInterface = async (contract, contractAddress) => {
|
|
38
|
+
await contract.hasRole(hardhat_1.ethers.ZeroHash, hardhat_1.ethers.ZeroAddress);
|
|
39
|
+
return await (0, utils_1.hasFunctionSelector)(contractAddress, "grantRole(bytes32,address)") &&
|
|
40
|
+
await (0, utils_1.hasFunctionSelector)(contractAddress, "renounceRole(bytes32,address)");
|
|
41
|
+
};
|
|
42
|
+
const isAccessControl = async (contractAddress) => {
|
|
43
|
+
try {
|
|
44
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
45
|
+
if (!await (0, utils_1.isContractAddress)(resolvedAddress)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const contract = new ethers_1.Contract(resolvedAddress, constants_1.ACCESS_CONTROL_ABI, hardhat_1.ethers.provider);
|
|
49
|
+
return await verifyAccessControlInterface(contract, resolvedAddress);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.isAccessControl = isAccessControl;
|
|
56
|
+
const verifyAccessManagerInterface = async (contract, contractAddress) => {
|
|
57
|
+
const zeroRole = 0n;
|
|
58
|
+
await contract.hasRole(zeroRole, hardhat_1.ethers.ZeroAddress);
|
|
59
|
+
return await (0, utils_1.hasFunctionSelector)(contractAddress, "grantRole(uint64,address,uint32)") &&
|
|
60
|
+
await (0, utils_1.hasFunctionSelector)(contractAddress, "renounceRole(uint64,address)");
|
|
61
|
+
};
|
|
62
|
+
const isAccessManager = async (contractAddress) => {
|
|
63
|
+
try {
|
|
64
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
65
|
+
if (!await (0, utils_1.isContractAddress)(resolvedAddress)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const contract = new ethers_1.Contract(resolvedAddress, constants_1.ACCESS_MANAGER_ABI, hardhat_1.ethers.provider);
|
|
69
|
+
return await verifyAccessManagerInterface(contract, resolvedAddress);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.isAccessManager = isAccessManager;
|
|
76
|
+
const isAccessManaged = async (contractAddress) => {
|
|
77
|
+
try {
|
|
78
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
79
|
+
if (!await (0, utils_1.isContractAddress)(resolvedAddress)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const contract = new ethers_1.Contract(resolvedAddress, constants_1.ACCESS_MANAGED_ABI, hardhat_1.ethers.provider);
|
|
83
|
+
const authorityAddress = await contract.authority();
|
|
84
|
+
return await (0, exports.isAccessManager)(authorityAddress);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.isAccessManaged = isAccessManaged;
|
|
91
|
+
const transferOwnership = async (contractAddress, newOwner, oldOwner) => {
|
|
92
|
+
const contract = new ethers_1.Contract(contractAddress, constants_1.OWNABLE_ABI, hardhat_1.ethers.provider);
|
|
93
|
+
if (await contract.owner() === newOwner) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (await contract.owner() !== oldOwner) {
|
|
97
|
+
throw new Error(`Current owner of contract ${contractAddress} does not match the provided old owner address.`);
|
|
98
|
+
}
|
|
99
|
+
const data = contract.interface.encodeFunctionData("transferOwnership", [newOwner]);
|
|
100
|
+
const transaction = new ethers_1.Transaction();
|
|
101
|
+
transaction.to = contractAddress;
|
|
102
|
+
transaction.data = data;
|
|
103
|
+
return transaction;
|
|
104
|
+
};
|
|
105
|
+
exports.transferOwnership = transferOwnership;
|
|
106
|
+
const grantRole = async (input) => {
|
|
107
|
+
const contract = new ethers_1.Contract(input.contractAddress, constants_1.ACCESS_CONTROL_ABI, hardhat_1.ethers.provider);
|
|
108
|
+
// If new account already has role or old account never had it in the first place - no action
|
|
109
|
+
if (await contract.hasRole(input.role, input.newAccount) || !await contract.hasRole(input.role, input.oldAccount)) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (!await contract.hasRole(hardhat_1.ethers.ZeroHash, input.oldAccount)) {
|
|
113
|
+
// Currently we do not support roleAdmins - must be ran by owner
|
|
114
|
+
throw new Error(`Account ${input.oldAccount} does not have permission to grant roles on contract ${input.contractAddress}.`);
|
|
115
|
+
}
|
|
116
|
+
const data = contract.interface.encodeFunctionData("grantRole", [input.role, input.newAccount]);
|
|
117
|
+
const transaction = new ethers_1.Transaction();
|
|
118
|
+
transaction.to = input.contractAddress;
|
|
119
|
+
transaction.data = data;
|
|
120
|
+
return transaction;
|
|
121
|
+
};
|
|
122
|
+
exports.grantRole = grantRole;
|
|
123
|
+
const renounceRole = async (contractAddress, role, oldAccount) => {
|
|
124
|
+
const contract = new ethers_1.Contract(contractAddress, constants_1.ACCESS_CONTROL_ABI, hardhat_1.ethers.provider);
|
|
125
|
+
if (!await contract.hasRole(role, oldAccount)) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
// Prevent revoking last role holder of default admin role
|
|
129
|
+
if (role === hardhat_1.ethers.ZeroHash && (await contract.getRoleMemberCount(role)) < MIN_ROLE_HOLDERS) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
const data = contract.interface.encodeFunctionData("renounceRole", [role, oldAccount]);
|
|
133
|
+
const transaction = new ethers_1.Transaction();
|
|
134
|
+
transaction.to = contractAddress;
|
|
135
|
+
transaction.data = data;
|
|
136
|
+
return transaction;
|
|
137
|
+
};
|
|
138
|
+
exports.renounceRole = renounceRole;
|
|
139
|
+
const getPermissionModels = async (address) => {
|
|
140
|
+
const checks = [
|
|
141
|
+
{ check: exports.isOwnable, model: PermissionModel.OWNABLE },
|
|
142
|
+
{ check: exports.isAccessControl, model: PermissionModel.ROLE_BASED },
|
|
143
|
+
{ check: exports.isAccessManager, model: PermissionModel.ACCESS_MANAGER },
|
|
144
|
+
{ check: exports.isAccessManaged, model: PermissionModel.ACCESS_MANAGED }
|
|
145
|
+
];
|
|
146
|
+
const models = [];
|
|
147
|
+
// Change to await in loop if rate-limiting becomes an issue
|
|
148
|
+
await Promise.all(checks.map(async ({ check, model }) => {
|
|
149
|
+
if (await check(address)) {
|
|
150
|
+
models.push(model);
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
if (models.includes(PermissionModel.ACCESS_MANAGER) && models.includes(PermissionModel.ROLE_BASED)) {
|
|
154
|
+
throw new Error(`Address ${address} cannot be both ACCESS_MANAGER and ROLE_BASED permission models.`);
|
|
155
|
+
}
|
|
156
|
+
return models;
|
|
157
|
+
};
|
|
158
|
+
exports.getPermissionModels = getPermissionModels;
|
|
159
|
+
const grantAccessManagerRole = async (input) => {
|
|
160
|
+
const contract = new ethers_1.Contract(input.contractAddress, constants_1.ACCESS_MANAGER_ABI, hardhat_1.ethers.provider);
|
|
161
|
+
// If new account already has role or old account never had it in the first place - no action
|
|
162
|
+
if (await contract.hasRole(input.role, input.newAccount) || !await contract.hasRole(input.role, input.oldAccount)) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
if (!await contract.hasRole(ZERO, input.oldAccount)) {
|
|
166
|
+
// Currently we do not support roleAdmins - must be ran by owner
|
|
167
|
+
throw new Error(`Account ${input.oldAccount} does not have permission to grant roles on contract ${input.contractAddress}.`);
|
|
168
|
+
}
|
|
169
|
+
const data = contract.interface.encodeFunctionData("grantRole", [input.role, input.newAccount, ZERO]);
|
|
170
|
+
const transaction = new ethers_1.Transaction();
|
|
171
|
+
transaction.to = input.contractAddress;
|
|
172
|
+
transaction.data = data;
|
|
173
|
+
return transaction;
|
|
174
|
+
};
|
|
175
|
+
exports.grantAccessManagerRole = grantAccessManagerRole;
|
|
176
|
+
const renounceAccessManagerRole = async (input) => {
|
|
177
|
+
const contract = new ethers_1.Contract(input.contractAddress, constants_1.ACCESS_MANAGER_ABI, hardhat_1.ethers.provider);
|
|
178
|
+
if (!await contract.hasRole(input.role, input.oldAccount)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
// Ensure role was granted to newAccount before renouncing
|
|
182
|
+
if (input.role === BigInt(ZERO) && !(await contract.hasRole(input.role, input.newAccount))) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
const data = contract.interface.encodeFunctionData("renounceRole", [input.role, input.oldAccount]);
|
|
186
|
+
const transaction = new ethers_1.Transaction();
|
|
187
|
+
transaction.to = input.contractAddress;
|
|
188
|
+
transaction.data = data;
|
|
189
|
+
return transaction;
|
|
190
|
+
};
|
|
191
|
+
exports.renounceAccessManagerRole = renounceAccessManagerRole;
|
|
192
|
+
//# sourceMappingURL=permission-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/permission-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AddressLike } from "ethers";
|
|
2
|
+
import { TransactionData } from "./contractAdmin";
|
|
3
|
+
export declare enum Pattern {
|
|
4
|
+
TUPP = "TUPP",
|
|
5
|
+
BEACON = "BEACON",
|
|
6
|
+
REGULAR = "REGULAR"
|
|
7
|
+
}
|
|
8
|
+
export declare const isContractAddress: (address: string) => Promise<boolean>;
|
|
9
|
+
export declare const extractAddressFromSlot: (slotValue: string) => string;
|
|
10
|
+
export declare const getAdminAddress: (address: string) => Promise<string>;
|
|
11
|
+
export declare const getTUPPImplementationAddress: (address: string) => Promise<string>;
|
|
12
|
+
export declare const isTUPPPattern: (address: string) => Promise<boolean>;
|
|
13
|
+
export declare const hasFunctionSelector: (address: string, signature: string) => Promise<boolean>;
|
|
14
|
+
export declare const isMultisig: (contractAddress: AddressLike) => Promise<boolean>;
|
|
15
|
+
export declare const isBeaconPattern: (address: string) => Promise<boolean>;
|
|
16
|
+
export declare const identifyProxyPattern: (address: string) => Promise<Pattern>;
|
|
17
|
+
export declare const promptUserConfirmation: (message?: string) => Promise<boolean>;
|
|
18
|
+
export declare const detectPattern: (address: AddressLike) => Promise<Pattern>;
|
|
19
|
+
export declare const removeDuplicateTransactions: (items: TransactionData[]) => TransactionData[];
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.removeDuplicateTransactions = exports.detectPattern = exports.promptUserConfirmation = exports.identifyProxyPattern = exports.isBeaconPattern = exports.isMultisig = exports.hasFunctionSelector = exports.isTUPPPattern = exports.getTUPPImplementationAddress = exports.getAdminAddress = exports.extractAddressFromSlot = exports.isContractAddress = exports.Pattern = void 0;
|
|
7
|
+
// Cspell:words TUPP
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const hardhat_1 = require("hardhat");
|
|
11
|
+
const readline_1 = __importDefault(require("readline"));
|
|
12
|
+
/*
|
|
13
|
+
* Ethereum addresses are 20 bytes = 40 hex characters
|
|
14
|
+
* Used for extracting addresses from 32-byte storage slots
|
|
15
|
+
*/
|
|
16
|
+
const ADDRESS_HEX_LENGTH = 40;
|
|
17
|
+
var Pattern;
|
|
18
|
+
(function (Pattern) {
|
|
19
|
+
Pattern["TUPP"] = "TUPP";
|
|
20
|
+
Pattern["BEACON"] = "BEACON";
|
|
21
|
+
Pattern["REGULAR"] = "REGULAR";
|
|
22
|
+
})(Pattern || (exports.Pattern = Pattern = {}));
|
|
23
|
+
const isContractAddress = async (address) => {
|
|
24
|
+
const code = await hardhat_1.ethers.provider.getCode(address);
|
|
25
|
+
return code !== "0x" && code !== "0x0";
|
|
26
|
+
};
|
|
27
|
+
exports.isContractAddress = isContractAddress;
|
|
28
|
+
const extractAddressFromSlot = (slotValue) => {
|
|
29
|
+
const addressHex = `0x${slotValue.slice(-ADDRESS_HEX_LENGTH)}`;
|
|
30
|
+
return hardhat_1.ethers.getAddress(addressHex);
|
|
31
|
+
};
|
|
32
|
+
exports.extractAddressFromSlot = extractAddressFromSlot;
|
|
33
|
+
const getAdminAddress = async (address) => {
|
|
34
|
+
const adminSlotValue = await hardhat_1.ethers.provider.getStorage(address, constants_1.ERC1967_ADMIN_SLOT);
|
|
35
|
+
return (0, exports.extractAddressFromSlot)(adminSlotValue);
|
|
36
|
+
};
|
|
37
|
+
exports.getAdminAddress = getAdminAddress;
|
|
38
|
+
const getTUPPImplementationAddress = async (address) => {
|
|
39
|
+
const implementationSlotValue = await hardhat_1.ethers.provider.getStorage(address, constants_1.ERC1967_IMPLEMENTATION_SLOT);
|
|
40
|
+
return (0, exports.extractAddressFromSlot)(implementationSlotValue);
|
|
41
|
+
};
|
|
42
|
+
exports.getTUPPImplementationAddress = getTUPPImplementationAddress;
|
|
43
|
+
const validateTUPPProxy = async (proxyAddress, adminAddress) => {
|
|
44
|
+
const isAdminContract = await (0, exports.isContractAddress)(adminAddress);
|
|
45
|
+
if (!isAdminContract) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const implementationAddress = await (0, exports.getTUPPImplementationAddress)(proxyAddress);
|
|
49
|
+
return implementationAddress !== hardhat_1.ethers.ZeroAddress && await (0, exports.isContractAddress)(implementationAddress);
|
|
50
|
+
};
|
|
51
|
+
/*
|
|
52
|
+
* Checks if the contract follows the Transparent Upgradeable Proxy Pattern.
|
|
53
|
+
* A TUPP proxy has an admin address in the ERC1967 admin slot.
|
|
54
|
+
*/
|
|
55
|
+
const isTUPPPattern = async (address) => {
|
|
56
|
+
try {
|
|
57
|
+
const adminAddress = await (0, exports.getAdminAddress)(address);
|
|
58
|
+
if (adminAddress === hardhat_1.ethers.ZeroAddress) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return await validateTUPPProxy(address, adminAddress);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.isTUPPPattern = isTUPPPattern;
|
|
68
|
+
const resolveImplementationAddress = async (address) => {
|
|
69
|
+
if (await (0, exports.isTUPPPattern)(address)) {
|
|
70
|
+
return (0, exports.getTUPPImplementationAddress)(address);
|
|
71
|
+
}
|
|
72
|
+
// Beacon not required because we only change upgradeability ownership - on UpgradeableBeacon
|
|
73
|
+
return address;
|
|
74
|
+
};
|
|
75
|
+
const hasFunctionSelector = async (address, signature) => {
|
|
76
|
+
const iface = new hardhat_1.ethers.Interface([`function ${signature}`]);
|
|
77
|
+
const toSlice = "0x".length;
|
|
78
|
+
const selector = iface.getFunction(signature)?.selector.slice(toSlice).toLowerCase();
|
|
79
|
+
if (!selector) {
|
|
80
|
+
throw new Error(`Invalid function signature: ${signature}`);
|
|
81
|
+
}
|
|
82
|
+
const implementationAddress = await resolveImplementationAddress(address);
|
|
83
|
+
const bytecode = (await hardhat_1.ethers.provider.getCode(implementationAddress)).toLowerCase();
|
|
84
|
+
// May very rarely cause false positives - But user verifies findings
|
|
85
|
+
return bytecode.includes(selector);
|
|
86
|
+
};
|
|
87
|
+
exports.hasFunctionSelector = hasFunctionSelector;
|
|
88
|
+
const isMultisig = async (contractAddress) => {
|
|
89
|
+
try {
|
|
90
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
91
|
+
if (!await (0, exports.isContractAddress)(resolvedAddress)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const contract = new hardhat_1.ethers.Contract(resolvedAddress, constants_1.MULTISIG_ABI, hardhat_1.ethers.provider);
|
|
95
|
+
const owners = await contract.getOwners();
|
|
96
|
+
const threshold = Number(await contract.getThreshold());
|
|
97
|
+
const minOwnersRequired = 1;
|
|
98
|
+
return owners.length >= minOwnersRequired &&
|
|
99
|
+
threshold >= minOwnersRequired &&
|
|
100
|
+
threshold <= owners.length;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// We prefer false negatives here than false positives - user should check Network/RPC issues
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
exports.isMultisig = isMultisig;
|
|
108
|
+
/*
|
|
109
|
+
* Checks if the contract follows the Beacon Proxy Pattern.
|
|
110
|
+
* A Beacon proxy has a beacon address in the ERC1967 beacon slot,
|
|
111
|
+
* or it might be a beacon contract itself with an owner() function.
|
|
112
|
+
*/
|
|
113
|
+
const isBeaconPattern = async (address) => {
|
|
114
|
+
try {
|
|
115
|
+
const contract = new hardhat_1.ethers.Contract(address, constants_1.UPGRADEABLE_BEACON_ABI, hardhat_1.ethers.provider);
|
|
116
|
+
const implementation = await contract.implementation();
|
|
117
|
+
const owner = await contract.owner();
|
|
118
|
+
const interfaceHasUpgradeTo = await (0, exports.hasFunctionSelector)(address, "upgradeTo(address)");
|
|
119
|
+
return owner !== hardhat_1.ethers.ZeroAddress &&
|
|
120
|
+
implementation !== hardhat_1.ethers.ZeroAddress &&
|
|
121
|
+
await (0, exports.isContractAddress)(implementation) &&
|
|
122
|
+
interfaceHasUpgradeTo;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
exports.isBeaconPattern = isBeaconPattern;
|
|
129
|
+
/*
|
|
130
|
+
* Identifies the proxy pattern for a given address by checking:
|
|
131
|
+
* 1. TUPP (Transparent Upgradeable Proxy Pattern)
|
|
132
|
+
* 2. BEACON pattern
|
|
133
|
+
* 3. REGULAR (non-proxy contract)
|
|
134
|
+
*/
|
|
135
|
+
const identifyProxyPattern = async (address) => {
|
|
136
|
+
const isTUPP = await (0, exports.isTUPPPattern)(address);
|
|
137
|
+
if (isTUPP) {
|
|
138
|
+
return Pattern.TUPP;
|
|
139
|
+
}
|
|
140
|
+
const isBeacon = await (0, exports.isBeaconPattern)(address);
|
|
141
|
+
if (isBeacon) {
|
|
142
|
+
return Pattern.BEACON;
|
|
143
|
+
}
|
|
144
|
+
return Pattern.REGULAR;
|
|
145
|
+
};
|
|
146
|
+
exports.identifyProxyPattern = identifyProxyPattern;
|
|
147
|
+
/*
|
|
148
|
+
* Prompts the user for confirmation via command line input.
|
|
149
|
+
* Accepts "yes" or "y" (case-insensitive) as confirmation.
|
|
150
|
+
* Returns a Promise that resolves to true if confirmed, false otherwise.
|
|
151
|
+
*/
|
|
152
|
+
const promptUserConfirmation = (message) => {
|
|
153
|
+
const rl = readline_1.default.createInterface({
|
|
154
|
+
"input": process.stdin,
|
|
155
|
+
"output": process.stdout
|
|
156
|
+
});
|
|
157
|
+
const msg = message || "Do you confirm these findings?";
|
|
158
|
+
return new Promise((resolve) => {
|
|
159
|
+
rl.question(chalk_1.default.yellow(`${msg} (yes/y to confirm): `), (answer) => {
|
|
160
|
+
rl.close();
|
|
161
|
+
const normalizedAnswer = answer.trim().toLowerCase();
|
|
162
|
+
resolve(normalizedAnswer === "yes" || normalizedAnswer === "y");
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
exports.promptUserConfirmation = promptUserConfirmation;
|
|
167
|
+
/*
|
|
168
|
+
* Detects the proxy pattern used by a contract at the given address.
|
|
169
|
+
*/
|
|
170
|
+
const detectPattern = async (address) => {
|
|
171
|
+
try {
|
|
172
|
+
const resolvedAddress = await hardhat_1.ethers.resolveAddress(address);
|
|
173
|
+
const isContract = await (0, exports.isContractAddress)(resolvedAddress);
|
|
174
|
+
if (!isContract) {
|
|
175
|
+
throw new Error(`Address ${address} is not a contract. Stopping...`);
|
|
176
|
+
}
|
|
177
|
+
return await (0, exports.identifyProxyPattern)(resolvedAddress);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error(`Error detecting pattern for address ${address}:`, error);
|
|
181
|
+
return Pattern.REGULAR;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
exports.detectPattern = detectPattern;
|
|
185
|
+
const removeDuplicateTransactions = (items) => {
|
|
186
|
+
const seen = new Set();
|
|
187
|
+
return items.filter((item) => {
|
|
188
|
+
/*
|
|
189
|
+
* Create a unique composite key for the 'to' and 'data' pair.
|
|
190
|
+
* We use a separator ('|') to ensure 'a' + 'bc' doesn't clash with 'ab' + 'c'
|
|
191
|
+
*/
|
|
192
|
+
const uniqueKey = `${item.transaction.to}|${item.transaction.data}`;
|
|
193
|
+
if (seen.has(uniqueKey)) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
seen.add(uniqueKey);
|
|
197
|
+
return true;
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
exports.removeDuplicateTransactions = removeDuplicateTransactions;
|
|
201
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/ownership-transfer/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { AddressLike } from "ethers";
|
|
2
|
-
export declare const verify: (contractName: string, contractAddress: AddressLike) => Promise<void>;
|
|
2
|
+
export declare const verify: (contractName: string, contractAddress: AddressLike, constructorArguments?: string) => Promise<void>;
|
|
3
3
|
export declare const verifyProxy: (contractName: string, proxyAddress: string) => Promise<void>;
|
package/dist/src/verification.js
CHANGED
|
@@ -67,10 +67,11 @@ const setupVerifiers = async () => {
|
|
|
67
67
|
verifiers.push(...candidates.filter(item => item !== null));
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
-
const verify = async (contractName, contractAddress) => {
|
|
70
|
+
const verify = async (contractName, contractAddress, constructorArguments) => {
|
|
71
71
|
await setupVerifiers();
|
|
72
72
|
const contractAddressString = await hardhat_1.ethers.resolveAddress(contractAddress);
|
|
73
73
|
await Promise.all(verifiers.map(verifier => verifier.verify({
|
|
74
|
+
constructorArguments,
|
|
74
75
|
contractAddress: contractAddressString,
|
|
75
76
|
contractName
|
|
76
77
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/verification.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAwC;AAExC,uEAAkE;AAElE,qEAAgE;AAChE,iFAA4E;AAC5E,kDAA0B;AAC1B,+DAAqE;AAGrE,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,MAAM,qCAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,qCAAiB,CACxB,OAAO,CAAC,GAAG,CAAC,SAAS,EACrB,OAAO,CACV,CAAC;QACN,CAAC;QACD,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,sCAAsC,OAAO,uCAAuC,CACvF,CACJ,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,MAAM,CACR,oEAAoE,CACvE,CACJ,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,EAAE;IACxC,MAAM,QAAQ,GAAG,uCAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,OAAO,GAAG,CAAC,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,uCAAkB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,iDAAuB,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxF,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,yEAAyE,CAC5E,CACJ,CAAC;IACN,CAAC;IACD,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,gDAAgD,CACnD,CACJ,CAAC;IACF,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,SAAS,GAAuB,EAAE,CAAC;AACzC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;IAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG;YACf,MAAM,cAAc,CAAC,OAAO,CAAC;YAC7B,eAAe,CAAC,OAAO,CAAC;YACxB,MAAM,UAAU,EAAE;SACrB,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;AACL,CAAC,CAAA;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,YAAoB,EAAE,eAA4B,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/verification.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAwC;AAExC,uEAAkE;AAElE,qEAAgE;AAChE,iFAA4E;AAC5E,kDAA0B;AAC1B,+DAAqE;AAGrE,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,MAAM,qCAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,qCAAiB,CACxB,OAAO,CAAC,GAAG,CAAC,SAAS,EACrB,OAAO,CACV,CAAC;QACN,CAAC;QACD,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,sCAAsC,OAAO,uCAAuC,CACvF,CACJ,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,MAAM,CACR,oEAAoE,CACvE,CACJ,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,EAAE;IACxC,MAAM,QAAQ,GAAG,uCAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,OAAO,GAAG,CAAC,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,uCAAkB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,iDAAuB,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxF,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,yEAAyE,CAC5E,CACJ,CAAC;IACN,CAAC;IACD,OAAO,CAAC,GAAG,CACP,eAAK,CAAC,IAAI,CACN,gDAAgD,CACnD,CACJ,CAAC;IACF,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,MAAM,SAAS,GAAuB,EAAE,CAAC;AACzC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;IAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,gBAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG;YACf,MAAM,cAAc,CAAC,OAAO,CAAC;YAC7B,eAAe,CAAC,OAAO,CAAC;YACxB,MAAM,UAAU,EAAE;SACrB,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;AACL,CAAC,CAAA;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,YAAoB,EAAE,eAA4B,EAAE,oBAA6B,EAAE,EAAE;IAC9G,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,qBAAqB,GAAG,MAAM,gBAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC3E,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxD,oBAAoB;QACpB,eAAe,EAAE,qBAAqB;QACtC,YAAY;KACf,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,CAAC;AARW,QAAA,MAAM,UAQjB;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,YAAoB,EAAE,YAAoB,EAAE,EAAE;IAC5E,MAAM,IAAA,cAAM,EACR,YAAY,EACZ,MAAM,IAAA,wCAAwB,EAC1B,iBAAO,CAAC,QAAQ,EAChB,YAAY,CACf,CACJ,CAAC;IACF,MAAM,IAAA,cAAM,EAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC,CAAC;AATW,QAAA,WAAW,eAStB"}
|
|
@@ -55,6 +55,10 @@ class BlockscoutVerifier extends contractVerifier_1.ContractVerifier {
|
|
|
55
55
|
return await this.blockscout.isVerified(verificationTarget.contractAddress);
|
|
56
56
|
}
|
|
57
57
|
async submitVerificationRequest(target, params) {
|
|
58
|
+
if (target.constructorArguments) {
|
|
59
|
+
// TODO: remove this exception when Blockscout supports constructor arguments
|
|
60
|
+
throw new Error("Constructor arguments are not supported for Blockscout verification.");
|
|
61
|
+
}
|
|
58
62
|
return await this.blockscout.verify(target.contractAddress, params.solcInputJson, params.fullContractName, params.compilerVersion);
|
|
59
63
|
}
|
|
60
64
|
getContractUrl(verificationTarget) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockscoutVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/blockscoutVerifier.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;AAE7B,0DAAwG;AACxG,2EAAsE;AAItE,MAAM,iBAAiB,GAAkB;IACrC;QACI,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,gCAAgC;YACxC,UAAU,EAAE,4BAA4B;SAC3C;KACJ;IACD;QACI,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE,oCAAoC;SACnD;KACJ;IACD;QACI,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE,oCAAoC;SACnD;KACJ;IACD;QACI,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACF,MAAM,EAAE,sCAAsC;YAC9C,UAAU,EAAE,kCAAkC;SACjD;KACJ;CACJ,CAAA;AAED,MAAa,kBAAmB,SAAQ,mCAAgB;IAIpD,YAAY,MAAc,EAAE,UAAkB;QAC1C,KAAK,EAAE,CAAC;QAJL,SAAI,GAAG,YAAY,CAAC;QAKvB,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,kBAAsC;QACpE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAES,KAAK,CAAC,yBAAyB,CAAC,MAA0B,EAAE,MAAqC;QACvG,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC/B,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,eAAe,CACzB,CAAC;IACN,CAAC;IAES,cAAc,CAAC,kBAAsC;QAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"blockscoutVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/blockscoutVerifier.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;AAE7B,0DAAwG;AACxG,2EAAsE;AAItE,MAAM,iBAAiB,GAAkB;IACrC;QACI,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,gCAAgC;YACxC,UAAU,EAAE,4BAA4B;SAC3C;KACJ;IACD;QACI,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE,oCAAoC;SACnD;KACJ;IACD;QACI,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE;YACF,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE,oCAAoC;SACnD;KACJ;IACD;QACI,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACF,MAAM,EAAE,sCAAsC;YAC9C,UAAU,EAAE,kCAAkC;SACjD;KACJ;CACJ,CAAA;AAED,MAAa,kBAAmB,SAAQ,mCAAgB;IAIpD,YAAY,MAAc,EAAE,UAAkB;QAC1C,KAAK,EAAE,CAAC;QAJL,SAAI,GAAG,YAAY,CAAC;QAKvB,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,kBAAsC;QACpE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAES,KAAK,CAAC,yBAAyB,CAAC,MAA0B,EAAE,MAAqC;QACvG,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,6EAA6E;YAC7E,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC/B,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,eAAe,CACzB,CAAC;IACN,CAAC;IAES,cAAc,CAAC,kBAAsC;QAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;CACJ;AArCD,gDAqCC"}
|
|
@@ -35,7 +35,7 @@ class EtherscanVerifier extends contractVerifier_1.ContractVerifier {
|
|
|
35
35
|
async submitVerificationRequest(target, params, retries = DEFAULT_RETRIES_AMOUNT) {
|
|
36
36
|
try {
|
|
37
37
|
await lock.acquire();
|
|
38
|
-
return await this.etherscan.verify(target.contractAddress, params.solcInputJson, params.fullContractName, params.compilerVersion, "");
|
|
38
|
+
return await this.etherscan.verify(target.contractAddress, params.solcInputJson, params.fullContractName, params.compilerVersion, target.constructorArguments || "");
|
|
39
39
|
}
|
|
40
40
|
catch (error) {
|
|
41
41
|
if (error instanceof Error && error.name === 'ContractVerificationMissingBytecodeError') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etherscanVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/etherscanVerifier.ts"],"names":[],"mappings":";AAAA,8CAA8C;;;;;;AAE9C,0DAAwG;AAGxG,yEAAoE;AACpE,kFAA8C;AAE9C,kDAA0B;AAC1B,qCAA+B;AAG/B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,GAAG,IAAI,+BAAS,CAAC,eAAe,CAAC,CAAC;AAO5C,MAAa,iBAAkB,SAAQ,mCAAgB;IAKnD,YAAY,MAAc,EAAE,OAAe;QACvC,KAAK,EAAE,CAAC;QALI,SAAI,GAAG,WAAW,CAAC;QAM/B,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAC1B,MAAM;QACN,2DAA2D;QAC3D,EAAE,EACF,sBAAsB,EACtB,MAAM,CAAC,OAAO,CAAC,CAClB,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAChD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;QAC/E,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY;IAEF,KAAK,CAAC,iBAAiB,CAAC,kBAAsC;QACpE,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC/E,CAAC;IAES,KAAK,CAAC,yBAAyB,CACrC,MAA0B,EAC1B,MAAqC,EACrC,OAAO,GAAG,sBAAsB;QAEhC,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAC9B,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,eAAe,EACtB,EAAE,
|
|
1
|
+
{"version":3,"file":"etherscanVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/etherscanVerifier.ts"],"names":[],"mappings":";AAAA,8CAA8C;;;;;;AAE9C,0DAAwG;AAGxG,yEAAoE;AACpE,kFAA8C;AAE9C,kDAA0B;AAC1B,qCAA+B;AAG/B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,GAAG,IAAI,+BAAS,CAAC,eAAe,CAAC,CAAC;AAO5C,MAAa,iBAAkB,SAAQ,mCAAgB;IAKnD,YAAY,MAAc,EAAE,OAAe;QACvC,KAAK,EAAE,CAAC;QALI,SAAI,GAAG,WAAW,CAAC;QAM/B,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAC1B,MAAM;QACN,2DAA2D;QAC3D,EAAE,EACF,sBAAsB,EACtB,MAAM,CAAC,OAAO,CAAC,CAClB,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAChD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;QAC/E,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY;IAEF,KAAK,CAAC,iBAAiB,CAAC,kBAAsC;QACpE,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC/E,CAAC;IAES,KAAK,CAAC,yBAAyB,CACrC,MAA0B,EAC1B,MAAqC,EACrC,OAAO,GAAG,sBAAsB;QAEhC,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAC9B,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,oBAAoB,IAAI,EAAE,CACpC,CAAC;QACN,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,0CAA0C,EAAE,CAAC;gBACtF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO,MAAM,IAAI,CAAC,+CAA+C,CAC7D,KAAiD,EACjD,EAAC,MAAM,EAAE,MAAM,EAAC,EAChB,OAAO,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;IAES,cAAc,CAAC,kBAAsC;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7E,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,YAAoB;QACpD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACjE,OAAO,EAAC,GAAG,UAAU,EAAE,eAAe,EAAE,IAAI,UAAU,CAAC,eAAe,EAAE,EAAC,CAAC;IAC9E,CAAC;IAED,UAAU;IAEF,MAAM,CAAC,KAAK,CAAC,4BAA4B;QAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAClB,CAAC,OAKA,EAAE,EAAE,CAAC,CAAC;gBACC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtC,OAAO,EAAE,OAAO,CAAC,SAAS;gBAC1B,IAAI,EAAE;oBACF,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,OAAO,CAAC,aAAa;iBACpC;aACY,CAAA,CACxB,CAAC;QACN,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,+CAA+C,CACzD,KAA+C,EAC/C,IAA6B,EAC7B,OAAe;QACX,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,cAAc,4BAA4B,CAAC,CAAC,CAAC;YACnF,MAAM,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,KAAK,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,SAAiB;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,gBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,EAAE;gBACzD,MAAM,WAAW,GAAG,kBAAkB,GAAG,SAAS,CAAC;gBAEnD,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE;oBACrC,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;wBAC7B,gBAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAClD,OAAO,EAAE,CAAC;oBACd,CAAC;gBACL,CAAC,CAAC;gBAEF,gBAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA3HD,8CA2HC"}
|
|
@@ -27,10 +27,10 @@ class SkaleBlockscoutVerifier extends blockscoutVerifier_1.BlockscoutVerifier {
|
|
|
27
27
|
const { host, pathname } = new URL(endpoint);
|
|
28
28
|
const schainName = pathname.split("/").filter(Boolean).pop();
|
|
29
29
|
let networkType = "mainnet";
|
|
30
|
-
if (host.includes("mainnet.")) {
|
|
30
|
+
if (host.includes("mainnet.skalenodes")) {
|
|
31
31
|
networkType = "mainnet";
|
|
32
32
|
}
|
|
33
|
-
else if (host.includes("testnet.")) {
|
|
33
|
+
else if (host.includes("testnet.skalenodes")) {
|
|
34
34
|
networkType = "testnet";
|
|
35
35
|
}
|
|
36
36
|
else if (host.includes("legacy-proxy.")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skaleBlockscoutVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/skaleBlockscoutVerifier.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,6DAAwD;AAExD,MAAM,kBAAkB,GAAG;IACvB,MAAM,EAAE,gCAAgC;IACxC,OAAO,EAAE,iCAAiC;IAC1C,OAAO,EAAE,iCAAiC;CAC7C,CAAC;AAEF,MAAa,uBAAwB,SAAQ,uCAAkB;IAA/D;;QACW,SAAI,GAAG,kBAAkB,CAAC;IA6CrC,CAAC;IA3CU,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACnD,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,uBAAuB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,WAAW,UAAU,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,GAAG,UAAU,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,uBAAuB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,sCAAsC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;IAEF,MAAM,CAAC,aAAa,CAAC,QAAgB;QACzC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAG,CAAC;QAE9D,IAAI,WAAW,GAAoC,SAAS,CAAC;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"skaleBlockscoutVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/skaleBlockscoutVerifier.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,6DAAwD;AAExD,MAAM,kBAAkB,GAAG;IACvB,MAAM,EAAE,gCAAgC;IACxC,OAAO,EAAE,iCAAiC;IAC1C,OAAO,EAAE,iCAAiC;CAC7C,CAAC;AAEF,MAAa,uBAAwB,SAAQ,uCAAkB;IAA/D;;QACW,SAAI,GAAG,kBAAkB,CAAC;IA6CrC,CAAC;IA3CU,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACnD,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,uBAAuB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,WAAW,UAAU,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,GAAG,UAAU,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,uBAAuB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,sCAAsC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;IAEF,MAAM,CAAC,aAAa,CAAC,QAAgB;QACzC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAG,CAAC;QAE9D,IAAI,WAAW,GAAoC,SAAS,CAAC;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACtC,WAAW,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC7C,WAAW,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACxC,WAAW,GAAG,QAAQ,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CACX,sFAAsF,QAAQ,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAE,OAAe;QAC9C,MAAM,GAAG,GAAG,GAAG,OAAO,aAAa,CAAC;QACpC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,YAAY,CAAC,OAAO,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AA9CD,0DA8CC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skalenetwork/upgrade-tools",
|
|
3
|
-
"version": "4.0.0-develop.
|
|
3
|
+
"version": "4.0.0-develop.5",
|
|
4
4
|
"description": "Scripts to support upgrades of smart contracts",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@safe-global/api-kit": "^2.4.1",
|
|
46
46
|
"@safe-global/protocol-kit": "^5.0.1",
|
|
47
47
|
"@safe-global/safe-core-sdk-types": "^5.0.1",
|
|
48
|
-
"@skalenetwork/skale-contracts-ethers-v6": "^2.0.0-develop.
|
|
48
|
+
"@skalenetwork/skale-contracts-ethers-v6": "^2.0.0-develop.6",
|
|
49
49
|
"@types/mocha": "^9.1.0",
|
|
50
50
|
"axios": "^1.4.0",
|
|
51
51
|
"ethereumjs-util": "^7.1.4",
|