@skalenetwork/upgrade-tools 4.0.0-update-verify.6 → 4.0.0-update-gnosis-service.1
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 +24 -12
- package/dist/src/contractVerifier.js +47 -43
- package/dist/src/contractVerifier.js.map +1 -1
- package/dist/src/gnosis-safe.js +6 -37
- package/dist/src/gnosis-safe.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -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/proxyUpgrader.d.ts +18 -0
- package/dist/src/proxyUpgrader.js +72 -0
- package/dist/src/proxyUpgrader.js.map +1 -0
- package/dist/src/upgrader.d.ts +11 -6
- package/dist/src/upgrader.js +61 -61
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/upgraders/abstractTransparentProxyUpgrader.d.ts +19 -0
- package/dist/src/upgraders/abstractTransparentProxyUpgrader.js +57 -0
- package/dist/src/upgraders/abstractTransparentProxyUpgrader.js.map +1 -0
- package/dist/src/upgraders/beaconUpgrader.d.ts +8 -0
- package/dist/src/upgraders/beaconUpgrader.js +37 -0
- package/dist/src/upgraders/beaconUpgrader.js.map +1 -0
- package/dist/src/upgraders/transparentProxyUpgrader.d.ts +5 -0
- package/dist/src/upgraders/transparentProxyUpgrader.js +20 -0
- package/dist/src/upgraders/transparentProxyUpgrader.js.map +1 -0
- package/dist/src/upgraders/v4TransparentProxyUpgrader.d.ts +5 -0
- package/dist/src/upgraders/v4TransparentProxyUpgrader.js +19 -0
- package/dist/src/upgraders/v4TransparentProxyUpgrader.js.map +1 -0
- package/dist/src/verification.d.ts +2 -17
- package/dist/src/verification.js +60 -210
- package/dist/src/verification.js.map +1 -1
- package/dist/src/verifiers/blockscoutVerifier.d.ts +11 -0
- package/dist/src/verifiers/blockscoutVerifier.js +69 -0
- package/dist/src/verifiers/blockscoutVerifier.js.map +1 -0
- package/dist/src/verifiers/etherscanVerifier.d.ts +19 -0
- package/dist/src/verifiers/etherscanVerifier.js +105 -0
- package/dist/src/verifiers/etherscanVerifier.js.map +1 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.d.ts +7 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.js +60 -0
- package/dist/src/verifiers/skaleBlockscoutVerifier.js.map +1 -0
- package/package.json +5 -5
- package/dist/src/proxyAdmin.d.ts +0 -4
- package/dist/src/proxyAdmin.js +0 -56
- package/dist/src/proxyAdmin.js.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Cspell:words apiurl blockexplorer chainname
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.EtherscanVerifier = void 0;
|
|
8
|
+
const contractVerifier_1 = require("../contractVerifier");
|
|
9
|
+
const etherscan_1 = require("@nomicfoundation/hardhat-verify/etherscan");
|
|
10
|
+
const semaphore_async_await_1 = __importDefault(require("semaphore-async-await"));
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const hardhat_1 = require("hardhat");
|
|
13
|
+
const MAX_CONCURRENCY = 1;
|
|
14
|
+
const DEFAULT_RETRIES_AMOUNT = 5;
|
|
15
|
+
const BLOCKS_TO_WAIT = 5;
|
|
16
|
+
const ZERO_ATTEMPTS = 0;
|
|
17
|
+
const ONE_ATTEMPT = 1;
|
|
18
|
+
const lock = new semaphore_async_await_1.default(MAX_CONCURRENCY);
|
|
19
|
+
class EtherscanVerifier extends contractVerifier_1.ContractVerifier {
|
|
20
|
+
constructor(apiKey, chainId) {
|
|
21
|
+
super();
|
|
22
|
+
this.name = "Etherscan";
|
|
23
|
+
this.etherscan = new etherscan_1.Etherscan(apiKey,
|
|
24
|
+
// API url is set automatically because chainId is provided
|
|
25
|
+
"", "https://etherscan.io", Number(chainId));
|
|
26
|
+
}
|
|
27
|
+
static async isChainSupported(chainId) {
|
|
28
|
+
const supportedChains = await EtherscanVerifier.loadEtherscanSupportedChains();
|
|
29
|
+
return supportedChains.some(config => config.chainId === Number(chainId));
|
|
30
|
+
}
|
|
31
|
+
// Protected
|
|
32
|
+
async isAlreadyVerified(verificationTarget) {
|
|
33
|
+
return await this.etherscan.isVerified(verificationTarget.contractAddress);
|
|
34
|
+
}
|
|
35
|
+
async submitVerificationRequest(target, params, retries = DEFAULT_RETRIES_AMOUNT) {
|
|
36
|
+
try {
|
|
37
|
+
await lock.acquire();
|
|
38
|
+
return await this.etherscan.verify(target.contractAddress, params.solcInputJson, params.fullContractName, params.compilerVersion, target.constructorArguments || "");
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof Error && error.name === 'ContractVerificationMissingBytecodeError') {
|
|
42
|
+
lock.release();
|
|
43
|
+
return await this.processContractVerificationMissingBytecodeError(error, { params, target }, retries);
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
lock.release();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getContractUrl(verificationTarget) {
|
|
52
|
+
return this.etherscan.getContractUrl(verificationTarget.contractAddress);
|
|
53
|
+
}
|
|
54
|
+
async getVerifyParameters(contractName) {
|
|
55
|
+
const parameters = await super.getVerifyParameters(contractName);
|
|
56
|
+
return { ...parameters, compilerVersion: `v${parameters.compilerVersion}` };
|
|
57
|
+
}
|
|
58
|
+
// Private
|
|
59
|
+
static async loadEtherscanSupportedChains() {
|
|
60
|
+
await lock.acquire();
|
|
61
|
+
try {
|
|
62
|
+
const resp = await fetch("https://api.etherscan.io/v2/chainlist");
|
|
63
|
+
if (!resp.ok) {
|
|
64
|
+
throw new Error(`Etherscan API error: ${resp.status} ${resp.statusText}`);
|
|
65
|
+
}
|
|
66
|
+
const data = await resp.json();
|
|
67
|
+
return data.result.map((element) => ({
|
|
68
|
+
chainId: parseInt(element.chainid, 10),
|
|
69
|
+
network: element.chainname,
|
|
70
|
+
urls: {
|
|
71
|
+
apiURL: element.apiurl,
|
|
72
|
+
browserURL: element.blockexplorer
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
lock.release();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async processContractVerificationMissingBytecodeError(error, data, retries) {
|
|
81
|
+
if (retries > ZERO_ATTEMPTS) {
|
|
82
|
+
console.log(chalk_1.default.gray(error.message));
|
|
83
|
+
console.log(chalk_1.default.gray(`Waiting for ${BLOCKS_TO_WAIT} blocks before retrying...`));
|
|
84
|
+
await EtherscanVerifier.waitForBlocks(BLOCKS_TO_WAIT);
|
|
85
|
+
return this.submitVerificationRequest(data.target, data.params, retries - ONE_ATTEMPT);
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
static waitForBlocks(numBlocks) {
|
|
90
|
+
return new Promise((resolve) => {
|
|
91
|
+
hardhat_1.ethers.provider.getBlockNumber().then((currentBlockNumber) => {
|
|
92
|
+
const targetBlock = currentBlockNumber + numBlocks;
|
|
93
|
+
const listener = (blockNumber) => {
|
|
94
|
+
if (blockNumber >= targetBlock) {
|
|
95
|
+
hardhat_1.ethers.provider.removeListener("block", listener);
|
|
96
|
+
resolve();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
hardhat_1.ethers.provider.on("block", listener);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.EtherscanVerifier = EtherscanVerifier;
|
|
105
|
+
//# sourceMappingURL=etherscanVerifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"etherscanVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/etherscanVerifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BlockscoutVerifier } from "./blockscoutVerifier";
|
|
2
|
+
export declare class SkaleBlockscoutVerifier extends BlockscoutVerifier {
|
|
3
|
+
name: string;
|
|
4
|
+
static createFromEndpoint(endpoint: string): Promise<SkaleBlockscoutVerifier | null>;
|
|
5
|
+
private static parseEndpoint;
|
|
6
|
+
private static pingExplorer;
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Cspell:words skalenodes
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SkaleBlockscoutVerifier = void 0;
|
|
5
|
+
const blockscoutVerifier_1 = require("./blockscoutVerifier");
|
|
6
|
+
const BASE_EXPLORER_URLS = {
|
|
7
|
+
legacy: "legacy-explorer.skalenodes.com",
|
|
8
|
+
mainnet: "explorer.mainnet.skalenodes.com",
|
|
9
|
+
testnet: "explorer.testnet.skalenodes.com"
|
|
10
|
+
};
|
|
11
|
+
class SkaleBlockscoutVerifier extends blockscoutVerifier_1.BlockscoutVerifier {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.name = "SKALE Blockscout";
|
|
15
|
+
}
|
|
16
|
+
static async createFromEndpoint(endpoint) {
|
|
17
|
+
const { schainName, networkType } = SkaleBlockscoutVerifier.parseEndpoint(endpoint);
|
|
18
|
+
const browserURL = `https://${schainName}.${BASE_EXPLORER_URLS[networkType]}`;
|
|
19
|
+
const apiURL = `${browserURL}/api`;
|
|
20
|
+
if (!await SkaleBlockscoutVerifier.pingExplorer(browserURL)) {
|
|
21
|
+
throw new Error(`SKALE block explorer (${browserURL}) is not reachable, set EXPLORER_URL`);
|
|
22
|
+
}
|
|
23
|
+
return new SkaleBlockscoutVerifier(apiURL, browserURL);
|
|
24
|
+
}
|
|
25
|
+
// Private
|
|
26
|
+
static parseEndpoint(endpoint) {
|
|
27
|
+
const { host, pathname } = new URL(endpoint);
|
|
28
|
+
const schainName = pathname.split("/").filter(Boolean).pop();
|
|
29
|
+
let networkType = "mainnet";
|
|
30
|
+
if (host.includes("mainnet.skalenodes")) {
|
|
31
|
+
networkType = "mainnet";
|
|
32
|
+
}
|
|
33
|
+
else if (host.includes("testnet.skalenodes")) {
|
|
34
|
+
networkType = "testnet";
|
|
35
|
+
}
|
|
36
|
+
else if (host.includes("legacy-proxy.")) {
|
|
37
|
+
networkType = "legacy";
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new Error(`The chain is not supported by SKALE block explorer or unknown network in ENDPOINT: ${endpoint}`);
|
|
41
|
+
}
|
|
42
|
+
return { networkType, schainName };
|
|
43
|
+
}
|
|
44
|
+
static async pingExplorer(baseUrl) {
|
|
45
|
+
const url = `${baseUrl}/api/health`;
|
|
46
|
+
try {
|
|
47
|
+
const res = await fetch(url);
|
|
48
|
+
if (!res.ok) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const jsonResponse = await res.json();
|
|
52
|
+
return jsonResponse.healthy;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.SkaleBlockscoutVerifier = SkaleBlockscoutVerifier;
|
|
60
|
+
//# sourceMappingURL=skaleBlockscoutVerifier.js.map
|
|
@@ -0,0 +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,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-update-
|
|
3
|
+
"version": "4.0.0-update-gnosis-service.1",
|
|
4
4
|
"description": "Scripts to support upgrades of smart contracts",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"@nomicfoundation/hardhat-verify": "2.0.14",
|
|
43
43
|
"@openzeppelin/hardhat-upgrades": "^3.1.1",
|
|
44
44
|
"@openzeppelin/upgrades-core": "^1.27.1",
|
|
45
|
-
"@safe-global/api-kit": "^
|
|
46
|
-
"@safe-global/protocol-kit": "^
|
|
47
|
-
"@safe-global/safe-core-sdk-types": "^5.0
|
|
48
|
-
"@skalenetwork/skale-contracts-ethers-v6": "^2.0.0-develop.
|
|
45
|
+
"@safe-global/api-kit": "^4.0.1",
|
|
46
|
+
"@safe-global/protocol-kit": "^6.1.2",
|
|
47
|
+
"@safe-global/safe-core-sdk-types": "^5.1.0",
|
|
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",
|
package/dist/src/proxyAdmin.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { AddressLike, Contract, Transaction } from "ethers";
|
|
2
|
-
export declare const getProxyAdmin: (proxy: AddressLike) => Promise<Contract>;
|
|
3
|
-
export declare const isNewProxyAdmin: (proxyAdmin: Contract) => Promise<boolean>;
|
|
4
|
-
export declare const getUpgradeTransaction: (proxy: AddressLike, implementation: AddressLike) => Promise<Transaction>;
|
package/dist/src/proxyAdmin.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
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.getUpgradeTransaction = exports.isNewProxyAdmin = exports.getProxyAdmin = void 0;
|
|
7
|
-
const ethers_1 = require("ethers");
|
|
8
|
-
const hardhat_1 = require("hardhat");
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
-
const getProxyAdmin = async (proxy) => {
|
|
11
|
-
const proxyAdminAddress = await hardhat_1.upgrades.erc1967.getAdminAddress(await hardhat_1.ethers.resolveAddress(proxy));
|
|
12
|
-
const generalProxyAdminAbi = [
|
|
13
|
-
"function UPGRADE_INTERFACE_VERSION() view returns (string)",
|
|
14
|
-
"function upgrade(address,address)",
|
|
15
|
-
"function upgradeAndCall(address,address,bytes) payable",
|
|
16
|
-
"function owner() view returns (address)"
|
|
17
|
-
];
|
|
18
|
-
return new hardhat_1.ethers.Contract(proxyAdminAddress, generalProxyAdminAbi, await hardhat_1.ethers.provider.getSigner());
|
|
19
|
-
};
|
|
20
|
-
exports.getProxyAdmin = getProxyAdmin;
|
|
21
|
-
const isNewProxyAdmin = async (proxyAdmin) => {
|
|
22
|
-
try {
|
|
23
|
-
console.log(chalk_1.default.gray(`ProxyAdmin version ${
|
|
24
|
-
// This function name is set in external library
|
|
25
|
-
// eslint-disable-next-line new-cap
|
|
26
|
-
await proxyAdmin.UPGRADE_INTERFACE_VERSION()}`));
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
console.log(chalk_1.default.gray("Use old ProxyAdmin"));
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
exports.isNewProxyAdmin = isNewProxyAdmin;
|
|
35
|
-
const getUpgradeTransaction = async (proxy, implementation) => {
|
|
36
|
-
const proxyAdmin = await (0, exports.getProxyAdmin)(proxy);
|
|
37
|
-
if (await (0, exports.isNewProxyAdmin)(proxyAdmin)) {
|
|
38
|
-
return ethers_1.Transaction.from({
|
|
39
|
-
"data": proxyAdmin.interface.encodeFunctionData("upgradeAndCall", [
|
|
40
|
-
await hardhat_1.ethers.resolveAddress(proxy),
|
|
41
|
-
await hardhat_1.ethers.resolveAddress(implementation),
|
|
42
|
-
"0x"
|
|
43
|
-
]),
|
|
44
|
-
"to": await hardhat_1.ethers.resolveAddress(proxyAdmin)
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return ethers_1.Transaction.from({
|
|
48
|
-
"data": proxyAdmin.interface.encodeFunctionData("upgrade", [
|
|
49
|
-
await hardhat_1.ethers.resolveAddress(proxy),
|
|
50
|
-
await hardhat_1.ethers.resolveAddress(implementation),
|
|
51
|
-
]),
|
|
52
|
-
"to": await hardhat_1.ethers.resolveAddress(proxyAdmin)
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
exports.getUpgradeTransaction = getUpgradeTransaction;
|
|
56
|
-
//# sourceMappingURL=proxyAdmin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxyAdmin.js","sourceRoot":"","sources":["../../src/proxyAdmin.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA0D;AAC1D,qCAAyC;AACzC,kDAA0B;AAEnB,MAAM,aAAa,GAAG,KAAK,EAAE,KAAkB,EAAE,EAAE;IACtD,MAAM,iBAAiB,GAAG,MAAM,kBAAQ,CAAC,OAAO,CAAC,eAAe,CAC5D,MAAM,gBAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CACrC,CAAC;IACF,MAAM,oBAAoB,GAAG;QACzB,4DAA4D;QAC5D,mCAAmC;QACnC,wDAAwD;QACxD,yCAAyC;KAC5C,CAAC;IACF,OAAO,IAAI,gBAAM,CAAC,QAAQ,CACtB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,gBAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CACpC,CAAC;AACN,CAAC,CAAA;AAfY,QAAA,aAAa,iBAezB;AAEM,MAAM,eAAe,GAAG,KAAK,EAAE,UAAoB,EAAE,EAAE;IAC1D,IAAI,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB;QACzC,gDAAgD;QAChD,mCAAmC;QACnC,MAAM,UAAU,CAAC,yBAAyB,EAC9C,EAAE,CAAC,CAAC,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B;AAEM,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAkB,EAAE,cAA2B,EAAE,EAAE;IAC3F,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,MAAM,IAAA,uBAAe,EAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,oBAAW,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAC3C,gBAAgB,EAChB;gBACI,MAAM,gBAAM,CAAC,cAAc,CAAC,KAAK,CAAC;gBAClC,MAAM,gBAAM,CAAC,cAAc,CAAC,cAAc,CAAC;gBAC3C,IAAI;aACP,CACJ;YACD,IAAI,EAAE,MAAM,gBAAM,CAAC,cAAc,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;IACP,CAAC;IACD,OAAO,oBAAW,CAAC,IAAI,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAC3C,SAAS,EACT;YACI,MAAM,gBAAM,CAAC,cAAc,CAAC,KAAK,CAAC;YAClC,MAAM,gBAAM,CAAC,cAAc,CAAC,cAAc,CAAC;SAC9C,CACJ;QACD,IAAI,EAAE,MAAM,gBAAM,CAAC,cAAc,CAAC,UAAU,CAAC;KAChD,CAAC,CAAC;AACP,CAAC,CAAA;AAzBY,QAAA,qBAAqB,yBAyBjC"}
|