@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.
Files changed (57) hide show
  1. package/dist/src/contractVerifier.d.ts +24 -12
  2. package/dist/src/contractVerifier.js +47 -43
  3. package/dist/src/contractVerifier.js.map +1 -1
  4. package/dist/src/gnosis-safe.js +6 -37
  5. package/dist/src/gnosis-safe.js.map +1 -1
  6. package/dist/src/index.d.ts +4 -0
  7. package/dist/src/index.js +4 -0
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/ownership-transfer/constants.d.ts +8 -0
  10. package/dist/src/ownership-transfer/constants.js +33 -0
  11. package/dist/src/ownership-transfer/constants.js.map +1 -0
  12. package/dist/src/ownership-transfer/contractAdmin.d.ts +55 -0
  13. package/dist/src/ownership-transfer/contractAdmin.js +206 -0
  14. package/dist/src/ownership-transfer/contractAdmin.js.map +1 -0
  15. package/dist/src/ownership-transfer/instanceAdmin.d.ts +51 -0
  16. package/dist/src/ownership-transfer/instanceAdmin.js +223 -0
  17. package/dist/src/ownership-transfer/instanceAdmin.js.map +1 -0
  18. package/dist/src/ownership-transfer/permission-utils.d.ts +32 -0
  19. package/dist/src/ownership-transfer/permission-utils.js +192 -0
  20. package/dist/src/ownership-transfer/permission-utils.js.map +1 -0
  21. package/dist/src/ownership-transfer/utils.d.ts +19 -0
  22. package/dist/src/ownership-transfer/utils.js +201 -0
  23. package/dist/src/ownership-transfer/utils.js.map +1 -0
  24. package/dist/src/proxyUpgrader.d.ts +18 -0
  25. package/dist/src/proxyUpgrader.js +72 -0
  26. package/dist/src/proxyUpgrader.js.map +1 -0
  27. package/dist/src/upgrader.d.ts +11 -6
  28. package/dist/src/upgrader.js +61 -61
  29. package/dist/src/upgrader.js.map +1 -1
  30. package/dist/src/upgraders/abstractTransparentProxyUpgrader.d.ts +19 -0
  31. package/dist/src/upgraders/abstractTransparentProxyUpgrader.js +57 -0
  32. package/dist/src/upgraders/abstractTransparentProxyUpgrader.js.map +1 -0
  33. package/dist/src/upgraders/beaconUpgrader.d.ts +8 -0
  34. package/dist/src/upgraders/beaconUpgrader.js +37 -0
  35. package/dist/src/upgraders/beaconUpgrader.js.map +1 -0
  36. package/dist/src/upgraders/transparentProxyUpgrader.d.ts +5 -0
  37. package/dist/src/upgraders/transparentProxyUpgrader.js +20 -0
  38. package/dist/src/upgraders/transparentProxyUpgrader.js.map +1 -0
  39. package/dist/src/upgraders/v4TransparentProxyUpgrader.d.ts +5 -0
  40. package/dist/src/upgraders/v4TransparentProxyUpgrader.js +19 -0
  41. package/dist/src/upgraders/v4TransparentProxyUpgrader.js.map +1 -0
  42. package/dist/src/verification.d.ts +2 -17
  43. package/dist/src/verification.js +60 -210
  44. package/dist/src/verification.js.map +1 -1
  45. package/dist/src/verifiers/blockscoutVerifier.d.ts +11 -0
  46. package/dist/src/verifiers/blockscoutVerifier.js +69 -0
  47. package/dist/src/verifiers/blockscoutVerifier.js.map +1 -0
  48. package/dist/src/verifiers/etherscanVerifier.d.ts +19 -0
  49. package/dist/src/verifiers/etherscanVerifier.js +105 -0
  50. package/dist/src/verifiers/etherscanVerifier.js.map +1 -0
  51. package/dist/src/verifiers/skaleBlockscoutVerifier.d.ts +7 -0
  52. package/dist/src/verifiers/skaleBlockscoutVerifier.js +60 -0
  53. package/dist/src/verifiers/skaleBlockscoutVerifier.js.map +1 -0
  54. package/package.json +5 -5
  55. package/dist/src/proxyAdmin.d.ts +0 -4
  56. package/dist/src/proxyAdmin.js +0 -56
  57. package/dist/src/proxyAdmin.js.map +0 -1
@@ -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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"}
@@ -0,0 +1,18 @@
1
+ import { AddressLike, Transaction } from "ethers";
2
+ import { NonceProvider } from "./nonceProvider";
3
+ export declare abstract class ProxyUpgrader {
4
+ protected proxyAddress: AddressLike;
5
+ protected newImplementationAddress: AddressLike | null;
6
+ private contractName;
7
+ private nonceProvider?;
8
+ constructor(contractName: string, proxyAddress: AddressLike, nonceProvider?: NonceProvider);
9
+ deployNewImplementation(): Promise<void>;
10
+ needsUpgrade(): boolean;
11
+ getUpgradeTransaction(): Promise<Transaction>;
12
+ getContractName(): string;
13
+ getNewImplementationAddress(): AddressLike;
14
+ abstract getOwner(): Promise<string>;
15
+ protected abstract makeUpgradeTransaction(): Promise<Transaction>;
16
+ protected abstract getCurrentImplementationAddress(): Promise<AddressLike>;
17
+ private prepareUpgrade;
18
+ }
@@ -0,0 +1,72 @@
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.ProxyUpgrader = void 0;
7
+ const hardhat_1 = require("hardhat");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const contractFactory_1 = require("./contractFactory");
10
+ // 10 minutes
11
+ const deployTimeout = 60e4;
12
+ class ProxyUpgrader {
13
+ constructor(contractName, proxyAddress, nonceProvider) {
14
+ this.newImplementationAddress = null;
15
+ this.contractName = contractName;
16
+ this.proxyAddress = proxyAddress;
17
+ this.nonceProvider = nonceProvider;
18
+ }
19
+ // Public
20
+ async deployNewImplementation() {
21
+ const contractFactory = await (0, contractFactory_1.getContractFactoryAndUpdateManifest)(this.contractName, this.nonceProvider);
22
+ console.log(`Prepare upgrade of ${this.contractName}`);
23
+ return this.prepareUpgrade(contractFactory);
24
+ }
25
+ needsUpgrade() {
26
+ return this.newImplementationAddress !== null;
27
+ }
28
+ async getUpgradeTransaction() {
29
+ if (this.newImplementationAddress === null) {
30
+ throw new Error(`Upgrade of ${this.contractName} is not prepared or not needed`);
31
+ }
32
+ const infoMessage = `Prepare transaction to upgrade ${this.contractName}` +
33
+ ` at ${this.proxyAddress}` +
34
+ ` to ${this.newImplementationAddress}`;
35
+ console.log(chalk_1.default.yellowBright(infoMessage));
36
+ return await this.makeUpgradeTransaction();
37
+ }
38
+ getContractName() {
39
+ return this.contractName;
40
+ }
41
+ getNewImplementationAddress() {
42
+ if (this.newImplementationAddress === null) {
43
+ throw new Error(`There is no new implementation address for ${this.contractName}`);
44
+ }
45
+ return this.newImplementationAddress;
46
+ }
47
+ // Private
48
+ async prepareUpgrade(contractFactory) {
49
+ const currentImplementationAddress = await this.getCurrentImplementationAddress();
50
+ const nonce = this.nonceProvider?.reserveNonce();
51
+ const newImplementationAddress = await hardhat_1.upgrades.prepareUpgrade(await hardhat_1.ethers.resolveAddress(this.proxyAddress), contractFactory, {
52
+ "timeout": deployTimeout,
53
+ "txOverrides": {
54
+ nonce
55
+ },
56
+ "unsafeAllowLinkedLibraries": true,
57
+ "unsafeAllowRenames": true
58
+ });
59
+ if (newImplementationAddress === currentImplementationAddress) {
60
+ console.log(chalk_1.default.gray(`Contract ${this.contractName} is up to date`));
61
+ // Release only if no upgrade is needed
62
+ if (nonce) {
63
+ this.nonceProvider?.releaseNonce(nonce);
64
+ }
65
+ }
66
+ else {
67
+ this.newImplementationAddress = newImplementationAddress;
68
+ }
69
+ }
70
+ }
71
+ exports.ProxyUpgrader = ProxyUpgrader;
72
+ //# sourceMappingURL=proxyUpgrader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyUpgrader.js","sourceRoot":"","sources":["../../src/proxyUpgrader.ts"],"names":[],"mappings":";;;;;;AACA,qCAAyC;AAEzC,kDAA0B;AAC1B,uDAAsE;AAGtE,gCAAgC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,MAAsB,aAAa;IAM/B,YACI,YAAoB,EACpB,YAAyB,EACzB,aAA6B;QAPvB,6BAAwB,GAAuB,IAAI,CAAC;QAS1D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,SAAS;IAEF,KAAK,CAAC,uBAAuB;QAChC,MAAM,eAAe,GAAG,MAAM,IAAA,qDAAmC,EAC7D,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACrB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,wBAAwB,KAAK,IAAI,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAC9B,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACX,cAAc,IAAI,CAAC,YAAY,gCAAgC,CAClE,CAAC;QACN,CAAC;QACD,MAAM,WAAW,GACb,kCAAkC,IAAI,CAAC,YAAY,EAAE;YACrD,OAAO,IAAI,CAAC,YAAY,EAAE;YAC1B,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7C,OAAO,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/C,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEM,2BAA2B;QAC9B,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACX,8CAA8C,IAAI,CAAC,YAAY,EAAE,CACpE,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACzC,CAAC;IASD,UAAU;IAEF,KAAK,CAAC,cAAc,CAAC,eAAgC;QACzD,MAAM,4BAA4B,GAAG,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAElF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;QAEjD,MAAM,wBAAwB,GAAG,MAAM,kBAAQ,CAAC,cAAc,CAC1D,MAAM,gBAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAC9C,eAAe,EACf;YACI,SAAS,EAAE,aAAa;YACxB,aAAa,EAAE;gBACX,KAAK;aACR;YACD,4BAA4B,EAAE,IAAI;YAClC,oBAAoB,EAAE,IAAI;SAC7B,CACW,CAAC;QACjB,IAAI,wBAAwB,KAAK,4BAA4B,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,gBAAgB,CAAC,CAAC,CAAC;YACvE,uCAAuC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QAC7D,CAAC;IACL,CAAC;CACJ;AA9FD,sCA8FC"}
@@ -1,14 +1,17 @@
1
- import { Transaction } from "ethers";
2
- import { Project } from "./types/upgrader";
3
1
  import { Instance } from "@skalenetwork/skale-contracts-ethers-v6";
2
+ import { NonceProvider } from "./nonceProvider";
3
+ import { Project } from "./types/upgrader";
4
+ import { ProxyUpgrader } from "./proxyUpgrader";
4
5
  import { Submitter } from "./submitters/submitter";
6
+ import { Transaction } from "ethers";
5
7
  export declare abstract class Upgrader {
6
8
  private targetVersion;
7
9
  private contractNamesToUpgrade;
8
10
  private projectName;
9
11
  private submitter;
10
- private nonceProvider?;
11
12
  private deploySemaphore;
13
+ private proxyUpgraders;
14
+ protected nonceProvider?: NonceProvider;
12
15
  protected instance: Instance;
13
16
  protected transactions: Transaction[];
14
17
  constructor(project: Project, submitter?: Submitter);
@@ -16,18 +19,20 @@ export declare abstract class Upgrader {
16
19
  abstract setVersion: (newVersion: string) => Promise<void>;
17
20
  deployNewContracts?: () => Promise<void>;
18
21
  initialize?: () => Promise<void>;
22
+ protected createProxyUpgrader(contractName: string): Promise<ProxyUpgrader>;
19
23
  upgrade(): Promise<void>;
20
24
  getOwner(): Promise<string>;
25
+ private upgradeOldContracts;
26
+ private getChangedContracts;
27
+ private createProxyUpgraders;
21
28
  private callInitialize;
22
29
  private callDeployNewContracts;
23
30
  private prepareVersion;
24
31
  private writeTransactions;
25
- private static verify;
32
+ private verify;
26
33
  private switchToNewImplementations;
27
34
  private deployNewImplementations;
28
35
  private protectedDeployNewImplementation;
29
- private deployNewImplementation;
30
- private prepareUpgrade;
31
36
  private getNormalizedDeployedVersion;
32
37
  private checkVersion;
33
38
  }
@@ -5,25 +5,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Upgrader = void 0;
7
7
  const hardhat_1 = require("hardhat");
8
- const proxyAdmin_1 = require("./proxyAdmin");
8
+ const abstractTransparentProxyUpgrader_1 = require("./upgraders/abstractTransparentProxyUpgrader");
9
9
  const auto_submitter_1 = require("./submitters/auto-submitter");
10
10
  const exitCodes_1 = require("./exitCodes");
11
11
  const nonceProvider_1 = require("./nonceProvider");
12
12
  const semaphore_async_await_1 = __importDefault(require("semaphore-async-await"));
13
+ const transparentProxyUpgrader_1 = require("./upgraders/transparentProxyUpgrader");
14
+ const v4TransparentProxyUpgrader_1 = require("./upgraders/v4TransparentProxyUpgrader");
13
15
  const chalk_1 = __importDefault(require("chalk"));
14
16
  const fs_1 = require("fs");
15
- const contractFactory_1 = require("./contractFactory");
16
- const upgrades_core_1 = require("@openzeppelin/upgrades-core");
17
17
  const version_1 = require("./version");
18
18
  const verification_1 = require("./verification");
19
19
  const withoutNull = (array) => array.
20
20
  filter((element) => element !== null);
21
21
  // TODO: Set to 8 when upgrade plugins become thread safe
22
22
  const maxSimultaneousDeployments = 1;
23
- // 10 minutes
24
- const deployTimeout = 60e4;
25
23
  class Upgrader {
26
24
  constructor(project, submitter) {
25
+ this.proxyUpgraders = [];
27
26
  this.targetVersion = project.version;
28
27
  if (!project.version.includes("-")) {
29
28
  this.targetVersion = `${project.version}-stable.0`;
@@ -35,24 +34,46 @@ class Upgrader {
35
34
  this.submitter = submitter ?? new auto_submitter_1.AutoSubmitter(this);
36
35
  this.deploySemaphore = new semaphore_async_await_1.default(maxSimultaneousDeployments);
37
36
  }
37
+ async createProxyUpgrader(contractName) {
38
+ const proxyAddress = await this.instance.getContractAddress(contractName);
39
+ const proxyAdmin = await abstractTransparentProxyUpgrader_1.AbstractTransparentProxyUpgrader.getProxyAdmin(proxyAddress);
40
+ const proxyAdminVersion = await abstractTransparentProxyUpgrader_1.AbstractTransparentProxyUpgrader.getProxyAdminVersion(proxyAdmin);
41
+ const defaultProxyAdminVersion = "5.0.0";
42
+ if (proxyAdminVersion === defaultProxyAdminVersion) {
43
+ console.log(chalk_1.default.gray(`${contractName} uses ProxyAdmin version ${proxyAdminVersion}`));
44
+ return new transparentProxyUpgrader_1.TransparentProxyUpgrader({
45
+ contractName,
46
+ nonceProvider: this.nonceProvider,
47
+ proxyAddress,
48
+ proxyAdmin
49
+ });
50
+ }
51
+ else if (proxyAdminVersion === null) {
52
+ console.log(chalk_1.default.gray(`${contractName} uses old ProxyAdmin (v4 or lower)`));
53
+ return new v4TransparentProxyUpgrader_1.V4TransparentProxyUpgrader({
54
+ contractName,
55
+ nonceProvider: this.nonceProvider,
56
+ proxyAddress,
57
+ proxyAdmin
58
+ });
59
+ }
60
+ throw new Error(`Unsupported ProxyAdmin version: ${proxyAdminVersion}`);
61
+ }
38
62
  // Public
39
63
  async upgrade() {
40
64
  const version = await this.prepareVersion();
41
65
  await this.callDeployNewContracts();
42
- const contractsToUpgrade = await this.deployNewImplementations();
43
- await this.switchToNewImplementations(contractsToUpgrade);
66
+ await this.upgradeOldContracts();
44
67
  await this.callInitialize();
45
68
  // Write version
46
69
  await this.setVersion(version);
47
70
  await this.writeTransactions(version);
48
71
  await this.submitter.submit(this.transactions);
49
- await Upgrader.verify(contractsToUpgrade);
72
+ await this.verify();
50
73
  console.log("Done");
51
74
  }
52
75
  async getOwner() {
53
- const proxyAddresses = await Promise.all(this.contractNamesToUpgrade.map((contract) => this.instance.getContractAddress(contract), this));
54
- const admins = await Promise.all(proxyAddresses.map((proxy) => (0, proxyAdmin_1.getProxyAdmin)(proxy)));
55
- const owners = await Promise.all(admins.map((admin) => admin.owner()));
76
+ const owners = await Promise.all(this.proxyUpgraders.map((upgrader) => upgrader.getOwner()));
56
77
  return owners.reduce((owner1, owner2) => {
57
78
  if (owner1 !== owner2) {
58
79
  throw Error("Proxies have different owners");
@@ -60,9 +81,26 @@ class Upgrader {
60
81
  return owner1;
61
82
  });
62
83
  }
84
+ async upgradeOldContracts() {
85
+ await this.createProxyUpgraders();
86
+ await this.deployNewImplementations();
87
+ await this.switchToNewImplementations();
88
+ }
63
89
  // Private
90
+ getChangedContracts() {
91
+ return this.proxyUpgraders.filter((upgrader) => upgrader.needsUpgrade());
92
+ }
93
+ async createProxyUpgraders() {
94
+ const [deployer] = await hardhat_1.ethers.getSigners();
95
+ this.nonceProvider ?? (this.nonceProvider = await nonceProvider_1.NonceProvider.createForWallet(deployer));
96
+ this.proxyUpgraders = await Promise.all(this.contractNamesToUpgrade.map(this.createProxyUpgrader, this));
97
+ }
64
98
  async callInitialize() {
65
- if (typeof this.initialize !== "undefined") {
99
+ if (typeof this.initialize === "undefined") {
100
+ console.log(chalk_1.default.gray("No initialize function defined, skipping"));
101
+ }
102
+ else {
103
+ console.log("Generating initialize transaction(s)");
66
104
  await this.initialize();
67
105
  }
68
106
  }
@@ -82,72 +120,34 @@ class Upgrader {
82
120
  const indentation = 4;
83
121
  await fs_1.promises.writeFile(`data/transactions-${version}-${hardhat_1.network.name}.json`, JSON.stringify(this.transactions, null, indentation));
84
122
  }
85
- static async verify(contractsToUpgrade) {
123
+ async verify() {
86
124
  if (process.env.NO_VERIFY) {
87
125
  console.log("Skip verification");
88
126
  }
89
127
  else {
90
128
  console.log("Start verification");
91
- await Promise.all(contractsToUpgrade.map((contract) => (0, verification_1.verify)(contract.name, contract.implementationAddress)));
129
+ await Promise.all(this.getChangedContracts().map((upgrader) => (0, verification_1.verify)(upgrader.getContractName(), upgrader.getNewImplementationAddress())));
92
130
  }
93
131
  }
94
- async switchToNewImplementations(contractsToUpgrade) {
95
- const upgradeTransactions = await Promise.all(contractsToUpgrade.map((contract) => (0, proxyAdmin_1.getUpgradeTransaction)(contract.proxyAddress, contract.implementationAddress)));
96
- contractsToUpgrade.forEach((contract, index) => {
97
- const infoMessage = `Prepare transaction to upgrade ${contract.name}` +
98
- ` at ${contract.proxyAddress}` +
99
- ` to ${contract.implementationAddress}`;
100
- console.log(chalk_1.default.yellowBright(infoMessage));
101
- this.transactions.push(upgradeTransactions[index]);
102
- });
132
+ async switchToNewImplementations() {
133
+ this.transactions = [
134
+ ...this.transactions,
135
+ ...await Promise.all(this.getChangedContracts().map((upgrader) => upgrader.getUpgradeTransaction()))
136
+ ];
103
137
  }
104
138
  async deployNewImplementations() {
105
- const [deployer] = await hardhat_1.ethers.getSigners();
106
- this.nonceProvider ?? (this.nonceProvider = await nonceProvider_1.NonceProvider.createForWallet(deployer));
107
- const contracts = await Promise.all(this.contractNamesToUpgrade.
108
- map(this.protectedDeployNewImplementation, this));
139
+ const contracts = await Promise.all(this.proxyUpgraders.
140
+ map((upgrader) => this.protectedDeployNewImplementation(upgrader), this));
109
141
  return withoutNull(contracts);
110
142
  }
111
- async protectedDeployNewImplementation(contract) {
143
+ async protectedDeployNewImplementation(upgrader) {
112
144
  await this.deploySemaphore.acquire();
113
- let result = null;
114
145
  try {
115
- result = await this.deployNewImplementation(contract);
146
+ await upgrader.deployNewImplementation();
116
147
  }
117
148
  finally {
118
149
  this.deploySemaphore.release();
119
150
  }
120
- return result;
121
- }
122
- async deployNewImplementation(contract) {
123
- const contractFactory = await (0, contractFactory_1.getContractFactoryAndUpdateManifest)(contract, this.nonceProvider);
124
- const proxyAddress = await (await this.instance.getContract(contract)).getAddress();
125
- console.log(`Prepare upgrade of ${contract}`);
126
- return this.prepareUpgrade(contract, proxyAddress, contractFactory);
127
- }
128
- async prepareUpgrade(contractName, proxyAddress, contractFactory) {
129
- const currentImplementationAddress = await (0, upgrades_core_1.getImplementationAddress)(hardhat_1.network.provider, proxyAddress);
130
- const nonce = this.nonceProvider?.reserveNonce();
131
- const newImplementationAddress = await hardhat_1.upgrades.prepareUpgrade(proxyAddress, contractFactory, {
132
- "timeout": deployTimeout,
133
- "txOverrides": {
134
- nonce
135
- },
136
- "unsafeAllowLinkedLibraries": true,
137
- "unsafeAllowRenames": true
138
- });
139
- if (newImplementationAddress !== currentImplementationAddress) {
140
- return {
141
- "implementationAddress": newImplementationAddress,
142
- "name": contractName,
143
- proxyAddress
144
- };
145
- }
146
- console.log(chalk_1.default.gray(`Contract ${contractName} is up to date`));
147
- if (nonce) {
148
- this.nonceProvider?.releaseNonce(nonce);
149
- }
150
- return null;
151
151
  }
152
152
  async getNormalizedDeployedVersion() {
153
153
  const deployedVersion = await this.getDeployedVersion();
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { AddressLike, Contract } from "ethers";
2
+ import { NonceProvider } from "../nonceProvider";
3
+ import { ProxyUpgrader } from "../proxyUpgrader";
4
+ interface TransparentProxyUpgraderConstructorArguments {
5
+ contractName: string;
6
+ proxyAddress: AddressLike;
7
+ proxyAdmin: Contract;
8
+ nonceProvider?: NonceProvider;
9
+ }
10
+ export declare abstract class AbstractTransparentProxyUpgrader extends ProxyUpgrader {
11
+ protected proxyAdmin: Contract;
12
+ constructor(options: TransparentProxyUpgraderConstructorArguments);
13
+ getOwner(): Promise<string>;
14
+ static getProxyAdmin(proxy: AddressLike): Promise<Contract>;
15
+ static getProxyAdminVersion(proxyAdmin: Contract): Promise<string | null>;
16
+ static isNewProxyAdmin(proxyAdmin: Contract): Promise<boolean>;
17
+ protected getCurrentImplementationAddress(): Promise<AddressLike>;
18
+ }
19
+ export {};