@skalenetwork/upgrade-tools 3.0.0-linter.3 → 3.0.0-linter.31
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/hardhat.config.d.ts +1 -1
- package/dist/hardhat.config.js +4 -2
- package/dist/hardhat.config.js.map +1 -0
- package/dist/src/abi.d.ts +1 -1
- package/dist/src/abi.js +3 -2
- package/dist/src/abi.js.map +1 -0
- package/dist/src/contractFactory.d.ts +4 -0
- package/dist/src/contractFactory.js +84 -0
- package/dist/src/contractFactory.js.map +1 -0
- package/dist/src/deploy.d.ts +4 -4
- package/dist/src/deploy.js +54 -60
- package/dist/src/deploy.js.map +1 -0
- package/dist/src/exitCodes.d.ts +7 -0
- package/dist/src/exitCodes.js +12 -0
- package/dist/src/exitCodes.js.map +1 -0
- package/dist/src/gnosis-safe.d.ts +1 -1
- package/dist/src/gnosis-safe.js +100 -76
- package/dist/src/gnosis-safe.js.map +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/multiSend.d.ts +10 -2
- package/dist/src/multiSend.js +22 -43
- package/dist/src/multiSend.js.map +1 -0
- package/dist/src/nonceProvider.d.ts +7 -0
- package/dist/src/nonceProvider.js +18 -0
- package/dist/src/nonceProvider.js.map +1 -0
- package/dist/src/submitters/auto-submitter.d.ts +18 -5
- package/dist/src/submitters/auto-submitter.js +103 -89
- package/dist/src/submitters/auto-submitter.js.map +1 -0
- package/dist/src/submitters/eoa-submitter.d.ts +1 -1
- package/dist/src/submitters/eoa-submitter.js +15 -13
- package/dist/src/submitters/eoa-submitter.js.map +1 -0
- package/dist/src/submitters/index.js +1 -0
- package/dist/src/submitters/index.js.map +1 -0
- package/dist/src/submitters/safe-ima-legacy-marionette-submitter.js +12 -18
- package/dist/src/submitters/safe-ima-legacy-marionette-submitter.js.map +1 -0
- package/dist/src/submitters/safe-ima-marionette-submitter.d.ts +2 -2
- package/dist/src/submitters/safe-ima-marionette-submitter.js +10 -13
- package/dist/src/submitters/safe-ima-marionette-submitter.js.map +1 -0
- package/dist/src/submitters/safe-submitter.d.ts +1 -1
- package/dist/src/submitters/safe-submitter.js +3 -2
- package/dist/src/submitters/safe-submitter.js.map +1 -0
- package/dist/src/submitters/safe-to-ima-submitter.d.ts +9 -4
- package/dist/src/submitters/safe-to-ima-submitter.js +15 -12
- package/dist/src/submitters/safe-to-ima-submitter.js.map +1 -0
- package/dist/src/submitters/submitter.d.ts +1 -1
- package/dist/src/submitters/submitter.js +10 -6
- package/dist/src/submitters/submitter.js.map +1 -0
- package/dist/src/submitters/types/marionette.d.ts +1 -2
- package/dist/src/submitters/types/marionette.js +1 -0
- package/dist/src/submitters/types/marionette.js.map +1 -0
- package/dist/src/types/SkaleManifestData.js +1 -0
- package/dist/src/types/SkaleManifestData.js.map +1 -0
- package/dist/src/upgrader.d.ts +22 -4
- package/dist/src/upgrader.js +134 -101
- package/dist/src/upgrader.js.map +1 -0
- package/dist/src/verification.d.ts +2 -2
- package/dist/src/verification.js +53 -28
- package/dist/src/verification.js.map +1 -0
- package/dist/src/version.js +9 -6
- package/dist/src/version.js.map +1 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.js +1 -0
- package/dist/typechain-types/AdminUpgradeabilityProxy.js.map +1 -0
- package/dist/typechain-types/ProxyAdmin.js +1 -0
- package/dist/typechain-types/ProxyAdmin.js.map +1 -0
- package/dist/typechain-types/common.js +1 -0
- package/dist/typechain-types/common.js.map +1 -0
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js +1 -0
- package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js.map +1 -0
- package/dist/typechain-types/factories/ProxyAdmin__factory.js +1 -0
- package/dist/typechain-types/factories/ProxyAdmin__factory.js.map +1 -0
- package/dist/typechain-types/index.js +1 -0
- package/dist/typechain-types/index.js.map +1 -0
- package/package.json +1 -1
package/dist/hardhat.config.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HardhatUserConfig } from "hardhat/config";
|
|
2
1
|
import "@typechain/hardhat";
|
|
3
2
|
import "@nomiclabs/hardhat-ethers";
|
|
4
3
|
import "@openzeppelin/hardhat-upgrades";
|
|
4
|
+
import { HardhatUserConfig } from "hardhat/config";
|
|
5
5
|
declare const config: HardhatUserConfig;
|
|
6
6
|
export default config;
|
package/dist/hardhat.config.js
CHANGED
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
require("@typechain/hardhat");
|
|
4
4
|
require("@nomiclabs/hardhat-ethers");
|
|
5
5
|
require("@openzeppelin/hardhat-upgrades");
|
|
6
|
+
const coreArtifacts = "node_modules/@openzeppelin/upgrades-core/artifacts/[!b]*.json";
|
|
6
7
|
const config = {
|
|
7
8
|
"typechain": {
|
|
8
|
-
"
|
|
9
|
-
"
|
|
9
|
+
"externalArtifacts": [coreArtifacts],
|
|
10
|
+
"target": "ethers-v5"
|
|
10
11
|
}
|
|
11
12
|
};
|
|
12
13
|
exports.default = config;
|
|
14
|
+
//# sourceMappingURL=hardhat.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardhat.config.js","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":";;AAAA,8BAA4B;AAC5B,qCAAmC;AACnC,0CAAwC;AAIxC,MAAM,aAAa,GACf,+DAA+D,CAAC;AAEpE,MAAM,MAAM,GAAsB;IAC9B,WAAW,EAAE;QACT,mBAAmB,EAAE,CAAC,aAAa,CAAC;QACpC,QAAQ,EAAE,WAAW;KACxB;CACJ,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
package/dist/src/abi.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Interface } from "ethers/lib/utils";
|
|
2
|
-
export declare
|
|
2
|
+
export declare const getAbi: (contractInterface: Interface) => [];
|
package/dist/src/abi.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAbi = void 0;
|
|
4
|
-
|
|
4
|
+
const getAbi = (contractInterface) => {
|
|
5
5
|
const abi = JSON.parse(contractInterface.format("json"));
|
|
6
6
|
abi.forEach((obj) => {
|
|
7
7
|
if (obj.type === "function") {
|
|
@@ -15,5 +15,6 @@ function getAbi(contractInterface) {
|
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
return abi;
|
|
18
|
-
}
|
|
18
|
+
};
|
|
19
19
|
exports.getAbi = getAbi;
|
|
20
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/abi.ts"],"names":[],"mappings":";;;AAEO,MAAM,MAAM,GAAG,CAAC,iBAA4B,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAW,CAAO,CAAC;IAEzE,GAAG,CAAC,OAAO,CAAC,CAAC,GAAmB,EAAE,EAAE;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;YACzB,MAAM,IAAI,GAAG,GAKZ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;gBACxD,MAAM,CAAC,MAAM,CACT,MAAM,EACN;oBACI,MAAM,EAAE,EAAE;oBACV,GAAG,MAAM;iBACZ,CACJ,CAAC;YACN,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAxBW,QAAA,MAAM,UAwBjB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LinkReferences } from "hardhat/types";
|
|
2
|
+
import { NonceProvider } from "./nonceProvider";
|
|
3
|
+
export declare const getLibrariesNames: (linkReferences: LinkReferences) => string[];
|
|
4
|
+
export declare const getContractFactoryAndUpdateManifest: (contract: string, nonceProvider?: NonceProvider) => Promise<import("ethers").ContractFactory>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContractFactoryAndUpdateManifest = exports.getLibrariesNames = void 0;
|
|
4
|
+
const hardhat_1 = require("hardhat");
|
|
5
|
+
const deploy_1 = require("./deploy");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const upgrades_core_1 = require("@openzeppelin/upgrades-core");
|
|
8
|
+
const getSkaleManifest = async () => {
|
|
9
|
+
const manifest = JSON.parse(await fs_1.promises.readFile(await (0, deploy_1.getManifestFile)(), "utf-8"));
|
|
10
|
+
if (typeof manifest.libraries === "undefined") {
|
|
11
|
+
manifest.libraries = {};
|
|
12
|
+
}
|
|
13
|
+
return manifest;
|
|
14
|
+
};
|
|
15
|
+
const loadBytesCodes = async (libraryNames) => {
|
|
16
|
+
const byteCodes = new Map();
|
|
17
|
+
(await Promise.
|
|
18
|
+
all(libraryNames.map((libraryName) => (async () => {
|
|
19
|
+
const { bytecode } = await hardhat_1.artifacts.readArtifact(libraryName);
|
|
20
|
+
return [
|
|
21
|
+
libraryName,
|
|
22
|
+
bytecode
|
|
23
|
+
];
|
|
24
|
+
})()))).forEach(([libraryName, bytecode]) => {
|
|
25
|
+
byteCodes.set(libraryName, bytecode);
|
|
26
|
+
});
|
|
27
|
+
return byteCodes;
|
|
28
|
+
};
|
|
29
|
+
const updateManifest = async (manifest, libraries, oldLibraries) => {
|
|
30
|
+
const byteCodes = await loadBytesCodes(Array.from(libraries.keys()));
|
|
31
|
+
for (const [libraryName, libraryAddress] of libraries.entries()) {
|
|
32
|
+
manifest.libraries[libraryName] = {
|
|
33
|
+
"address": libraryAddress,
|
|
34
|
+
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(byteCodes.get(libraryName))
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
Object.assign(libraries, oldLibraries);
|
|
38
|
+
const indentation = 4;
|
|
39
|
+
await fs_1.promises.writeFile(await (0, deploy_1.getManifestFile)(), JSON.stringify(manifest, null, indentation));
|
|
40
|
+
};
|
|
41
|
+
const getLibrariesNames = (linkReferences) => {
|
|
42
|
+
const libraryNames = [];
|
|
43
|
+
for (const libraryFile of Object.values(linkReferences)) {
|
|
44
|
+
libraryNames.push(...Object.keys(libraryFile));
|
|
45
|
+
}
|
|
46
|
+
return libraryNames;
|
|
47
|
+
};
|
|
48
|
+
exports.getLibrariesNames = getLibrariesNames;
|
|
49
|
+
const getLibrariesToUpgrade = async (manifest, linkReferences) => {
|
|
50
|
+
const librariesToUpgrade = [];
|
|
51
|
+
const oldLibraries = {};
|
|
52
|
+
const librariesNames = (0, exports.getLibrariesNames)(linkReferences);
|
|
53
|
+
const byteCodes = await loadBytesCodes(librariesNames);
|
|
54
|
+
for (const libraryName of librariesNames) {
|
|
55
|
+
if (typeof manifest.libraries[libraryName] === "undefined") {
|
|
56
|
+
librariesToUpgrade.push(libraryName);
|
|
57
|
+
}
|
|
58
|
+
else if ((0, upgrades_core_1.hashBytecode)(byteCodes.get(libraryName)) ===
|
|
59
|
+
manifest.libraries[libraryName].bytecodeHash) {
|
|
60
|
+
oldLibraries[libraryName] =
|
|
61
|
+
manifest.libraries[libraryName].address;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
librariesToUpgrade.push(libraryName);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
librariesToUpgrade,
|
|
69
|
+
oldLibraries
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const getContractFactoryAndUpdateManifest = async (contract, nonceProvider) => {
|
|
73
|
+
const { linkReferences } = await hardhat_1.artifacts.readArtifact(contract);
|
|
74
|
+
if (!Object.keys(linkReferences).length) {
|
|
75
|
+
return await hardhat_1.ethers.getContractFactory(contract);
|
|
76
|
+
}
|
|
77
|
+
const manifest = await getSkaleManifest();
|
|
78
|
+
const { librariesToUpgrade, oldLibraries } = await getLibrariesToUpgrade(manifest, linkReferences);
|
|
79
|
+
const libraries = await (0, deploy_1.deployLibraries)(librariesToUpgrade, nonceProvider);
|
|
80
|
+
await updateManifest(manifest, libraries, oldLibraries);
|
|
81
|
+
return await hardhat_1.ethers.getContractFactory(contract, { "libraries": Object.fromEntries(libraries) });
|
|
82
|
+
};
|
|
83
|
+
exports.getContractFactoryAndUpdateManifest = getContractFactoryAndUpdateManifest;
|
|
84
|
+
//# sourceMappingURL=contractFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractFactory.js","sourceRoot":"","sources":["../../src/contractFactory.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,qCAGkB;AAIlB,2BAAkC;AAClC,+DAAyD;AAGzD,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,aAAE,CAAC,QAAQ,CACzC,MAAM,IAAA,wBAAe,GAAE,EACvB,OAAO,CACV,CAAC,CAAC;IACH,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,WAAW,EAAE;QAC3C,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;KAC3B;IACD,OAAO,QAA6B,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,YAAsB,EAAE,EAAE;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,CAAC,MAAM,OAAO;QACV,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO;YACH,WAAW;YACX,QAAQ;SACX,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACjB,WAAW,EACX,QAAQ,CACX,EAAE,EAAE;QACD,SAAS,CAAC,GAAG,CACT,WAAW,EACX,QAAQ,CACX,CAAC;IACN,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EACxB,QAA2B,EAC3B,SAA8B,EAC9B,YAAmC,EACrC,EAAE;IACA,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,CACP,WAAW,EACX,cAAc,CACjB,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;QACtB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG;YAC9B,SAAS,EAAE,cAAc;YACzB,cAAc,EAAE,IAAA,4BAAY,EAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;SACrE,CAAC;KACL;IACD,MAAM,CAAC,MAAM,CACT,SAAS,EACT,YAAY,CACf,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,aAAE,CAAC,SAAS,CACd,MAAM,IAAA,wBAAe,GAAE,EACvB,IAAI,CAAC,SAAS,CACV,QAAQ,EACR,IAAI,EACJ,WAAW,CACd,CACJ,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,cAA8B,EAAE,EAAE;IAChE,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;QACrD,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAClD;IACD,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAC/B,QAA2B,EAC3B,cAA8B,EAChC,EAAE;IACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC9B,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,cAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC;IACvD,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE;QACtC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;YACxD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACxC;aAAM,IACH,IAAA,4BAAY,EAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;YAC9C,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,YAAY,EAClD;YACE,YAAY,CAAC,WAAW,CAAC;gBACjB,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;SACnD;aAAM;YACH,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACxC;KACJ;IACD,OAAO;QACH,kBAAkB;QAClB,YAAY;KACf,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAG,KAAK,EACpD,QAAgB,EAChB,aAA6B,EAC/B,EAAE;IACA,MAAM,EAAC,cAAc,EAAC,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE;QACrC,OAAO,MAAM,gBAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KACpD;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE1C,MAAM,EACF,kBAAkB,EAClB,YAAY,EACf,GAAG,MAAM,qBAAqB,CAC3B,QAAQ,EACR,cAAc,CACjB,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAe,EACnC,kBAAkB,EAClB,aAAa,CAChB,CAAC;IACF,MAAM,cAAc,CAChB,QAAQ,EACR,SAAS,EACT,YAAY,CACf,CAAC;IACF,OAAO,MAAM,gBAAM,CAAC,kBAAkB,CAClC,QAAQ,EACR,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,CAC/C,CAAC;AACN,CAAC,CAAC;AA/BW,QAAA,mCAAmC,uCA+B9C"}
|
package/dist/src/deploy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
1
|
+
import { NonceProvider } from "./nonceProvider";
|
|
2
|
+
export declare const deployLibraries: (libraryNames: string[], nonceProvider?: NonceProvider) => Promise<Map<string, string>>;
|
|
3
|
+
export declare const getManifestFile: () => Promise<string>;
|
|
4
|
+
export declare const getContractFactory: (contract: string) => Promise<import("ethers").ContractFactory>;
|
package/dist/src/deploy.js
CHANGED
|
@@ -1,82 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getContractFactory = exports.getManifestFile = exports.
|
|
3
|
+
exports.getContractFactory = exports.getManifestFile = exports.deployLibraries = void 0;
|
|
4
4
|
const upgrades_core_1 = require("@openzeppelin/upgrades-core");
|
|
5
5
|
const hardhat_1 = require("hardhat");
|
|
6
|
+
const nonceProvider_1 = require("./nonceProvider");
|
|
6
7
|
const fs_1 = require("fs");
|
|
7
|
-
|
|
8
|
+
const contractFactory_1 = require("./contractFactory");
|
|
9
|
+
const deployLibrary = async (libraryName, nonceProvider) => {
|
|
8
10
|
const Library = await hardhat_1.ethers.getContractFactory(libraryName);
|
|
9
|
-
const library = await Library.
|
|
11
|
+
const library = await Library.
|
|
12
|
+
deploy({ "nonce": nonceProvider.reserveNonce() });
|
|
10
13
|
await library.deployed();
|
|
11
14
|
return library.address;
|
|
12
|
-
}
|
|
13
|
-
async
|
|
15
|
+
};
|
|
16
|
+
const deployLibraries = async (libraryNames, nonceProvider) => {
|
|
17
|
+
const [deployer] = await hardhat_1.ethers.getSigners();
|
|
18
|
+
const initializedNonceProvider = nonceProvider ??
|
|
19
|
+
await nonceProvider_1.NonceProvider.createForWallet(deployer);
|
|
14
20
|
const libraries = new Map();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
(await Promise.all(libraryNames.map((libraryName) => (async () => [
|
|
22
|
+
libraryName,
|
|
23
|
+
await deployLibrary(libraryName, initializedNonceProvider)
|
|
24
|
+
])()))).forEach(([libraryName, libraryAddress]) => {
|
|
25
|
+
libraries.set(libraryName, libraryAddress);
|
|
26
|
+
});
|
|
18
27
|
return libraries;
|
|
19
|
-
}
|
|
28
|
+
};
|
|
20
29
|
exports.deployLibraries = deployLibraries;
|
|
21
|
-
function
|
|
22
|
-
let { bytecode } = artifact;
|
|
23
|
-
for (const [, fileReferences] of Object.entries(artifact.linkReferences)) {
|
|
24
|
-
for (const [libName, fixups] of Object.entries(fileReferences)) {
|
|
25
|
-
const addr = libraries.get(libName);
|
|
26
|
-
if (addr === undefined) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
for (const fixup of fixups) {
|
|
30
|
-
bytecode =
|
|
31
|
-
bytecode.substr(0, 2 + fixup.start * 2) +
|
|
32
|
-
addr.substr(2) +
|
|
33
|
-
bytecode.substr(2 + (fixup.start + fixup.length) * 2);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return bytecode;
|
|
38
|
-
}
|
|
39
|
-
async function getLinkedContractFactory(contractName, libraries) {
|
|
40
|
-
const cArtifact = await hardhat_1.artifacts.readArtifact(contractName);
|
|
41
|
-
const linkedBytecode = _linkBytecode(cArtifact, libraries);
|
|
42
|
-
const ContractFactory = await hardhat_1.ethers.getContractFactory(cArtifact.abi, linkedBytecode);
|
|
43
|
-
return ContractFactory;
|
|
44
|
-
}
|
|
45
|
-
exports.getLinkedContractFactory = getLinkedContractFactory;
|
|
46
|
-
async function getManifestFile() {
|
|
30
|
+
const getManifestFile = async function getManifestFile() {
|
|
47
31
|
return (await upgrades_core_1.Manifest.forNetwork(hardhat_1.ethers.provider)).file;
|
|
48
|
-
}
|
|
32
|
+
};
|
|
49
33
|
exports.getManifestFile = getManifestFile;
|
|
50
|
-
async
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
53
|
-
|
|
34
|
+
const updateManifest = async (libraryArtifacts) => {
|
|
35
|
+
const manifest = JSON.parse(await fs_1.promises.readFile(await (0, exports.getManifestFile)(), "utf-8"));
|
|
36
|
+
if (typeof manifest.libraries === "undefined") {
|
|
37
|
+
Object.assign(manifest, { "libraries": libraryArtifacts });
|
|
54
38
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const libraryName = Object.keys(linkReferences[key])[0];
|
|
58
|
-
libraryNames.push(libraryName);
|
|
39
|
+
else {
|
|
40
|
+
Object.assign(libraryArtifacts, manifest.libraries);
|
|
59
41
|
}
|
|
60
|
-
const
|
|
42
|
+
const indentation = 4;
|
|
43
|
+
await fs_1.promises.writeFile(await (0, exports.getManifestFile)(), JSON.stringify(manifest, null, indentation));
|
|
44
|
+
};
|
|
45
|
+
const getLibraryArtifacts = async (libraries) => {
|
|
61
46
|
const libraryArtifacts = {};
|
|
62
|
-
|
|
47
|
+
const getLibraryArtifact = async (libraryName, libraryAddress) => {
|
|
63
48
|
const { bytecode } = await hardhat_1.artifacts.readArtifact(libraryName);
|
|
64
|
-
|
|
49
|
+
return {
|
|
65
50
|
"address": libraryAddress,
|
|
66
|
-
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode)
|
|
51
|
+
"bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode),
|
|
52
|
+
libraryName
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
for (const libraryArtifact of await Promise.
|
|
56
|
+
all(Array.from(libraries.entries()).map(([libraryName, libraryAddress]) => getLibraryArtifact(libraryName, libraryAddress)))) {
|
|
57
|
+
libraryArtifacts[libraryArtifact.libraryName] = {
|
|
58
|
+
"address": libraryArtifact.address,
|
|
59
|
+
"bytecodeHash": libraryArtifact.bytecodeHash
|
|
67
60
|
};
|
|
68
61
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (manifest !== undefined) {
|
|
76
|
-
Object.assign(manifest, { "libraries": libraryArtifacts });
|
|
77
|
-
}
|
|
78
|
-
await fs_1.promises.writeFile(await getManifestFile(), JSON.stringify(manifest, null, 4));
|
|
62
|
+
return libraryArtifacts;
|
|
63
|
+
};
|
|
64
|
+
const getContractFactory = async (contract) => {
|
|
65
|
+
const { linkReferences } = await hardhat_1.artifacts.readArtifact(contract);
|
|
66
|
+
if (!Object.keys(linkReferences).length) {
|
|
67
|
+
return await hardhat_1.ethers.getContractFactory(contract);
|
|
79
68
|
}
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
const libraryNames = (0, contractFactory_1.getLibrariesNames)(linkReferences);
|
|
70
|
+
const libraries = await (0, exports.deployLibraries)(libraryNames);
|
|
71
|
+
const libraryArtifacts = await getLibraryArtifacts(libraries);
|
|
72
|
+
await updateManifest(libraryArtifacts);
|
|
73
|
+
return await hardhat_1.ethers.getContractFactory(contract, { "libraries": Object.fromEntries(libraries) });
|
|
74
|
+
};
|
|
82
75
|
exports.getContractFactory = getContractFactory;
|
|
76
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXIT_CODES = void 0;
|
|
4
|
+
var EXIT_CODES;
|
|
5
|
+
(function (EXIT_CODES) {
|
|
6
|
+
EXIT_CODES[EXIT_CODES["SUCCESS"] = 0] = "SUCCESS";
|
|
7
|
+
EXIT_CODES[EXIT_CODES["BAD_VERSION"] = 1] = "BAD_VERSION";
|
|
8
|
+
EXIT_CODES[EXIT_CODES["NOT_ATOMIC_UPGRADE"] = 2] = "NOT_ATOMIC_UPGRADE";
|
|
9
|
+
EXIT_CODES[EXIT_CODES["UNKNOWN_SAFE_ADDRESS"] = 3] = "UNKNOWN_SAFE_ADDRESS";
|
|
10
|
+
EXIT_CODES[EXIT_CODES["UNKNOWN_IMA"] = 4] = "UNKNOWN_IMA";
|
|
11
|
+
})(EXIT_CODES || (exports.EXIT_CODES = EXIT_CODES = {}));
|
|
12
|
+
//# sourceMappingURL=exitCodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exitCodes.js","sourceRoot":"","sources":["../../src/exitCodes.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAMX;AAND,WAAY,UAAU;IAClB,iDAAO,CAAA;IACP,yDAAW,CAAA;IACX,uEAAkB,CAAA;IAClB,2EAAoB,CAAA;IACpB,yDAAW,CAAA;AACf,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { UnsignedTransaction } from "ethers";
|
|
2
|
-
export declare
|
|
2
|
+
export declare const createMultiSendTransaction: (safeAddress: string, transactions: UnsignedTransaction[]) => Promise<void>;
|
package/dist/src/gnosis-safe.js
CHANGED
|
@@ -27,77 +27,93 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.createMultiSendTransaction = void 0;
|
|
30
|
+
const safe_core_sdk_types_1 = require("@safe-global/safe-core-sdk-types");
|
|
31
|
+
const protocol_kit_1 = __importStar(require("@safe-global/protocol-kit"));
|
|
32
|
+
const api_kit_1 = __importDefault(require("@safe-global/api-kit"));
|
|
30
33
|
const chalk_1 = __importDefault(require("chalk"));
|
|
31
34
|
const hardhat_1 = require("hardhat");
|
|
32
|
-
const
|
|
33
|
-
const protocol_kit_1 = __importStar(require("@safe-global/protocol-kit"));
|
|
34
|
-
var Network;
|
|
35
|
-
(function (Network) {
|
|
36
|
-
Network[Network["MAINNET"] = 1] = "MAINNET";
|
|
37
|
-
Network[Network["GOERLI"] = 5] = "GOERLI";
|
|
38
|
-
Network[Network["GANACHE"] = 1337] = "GANACHE";
|
|
39
|
-
Network[Network["HARDHAT"] = 31337] = "HARDHAT";
|
|
40
|
-
})(Network || (Network = {}));
|
|
35
|
+
const networks_1 = require("@ethersproject/networks");
|
|
41
36
|
// Constants
|
|
42
37
|
const URLS = {
|
|
43
38
|
"safe_transaction": {
|
|
44
|
-
[
|
|
45
|
-
[
|
|
39
|
+
[(0, networks_1.getNetwork)("mainnet").chainId]: "https://safe-transaction-mainnet.safe.global",
|
|
40
|
+
[(0, networks_1.getNetwork)("goerli").chainId]: "https://safe-transaction-goerli.safe.global"
|
|
46
41
|
}
|
|
47
42
|
};
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
const defaultOptions = {
|
|
44
|
+
/*
|
|
45
|
+
* Gas costs not related to the transaction execution
|
|
46
|
+
* (signature check, refund payment...)
|
|
47
|
+
*/
|
|
48
|
+
"baseGas": "0",
|
|
49
|
+
// Gas price used for the refund calculation
|
|
50
|
+
"gasPrice": "0",
|
|
51
|
+
/*
|
|
52
|
+
* Token address (hold by the Safe)
|
|
53
|
+
* to be used as a refund to the sender,
|
|
54
|
+
* if `null` is Ether
|
|
55
|
+
*/
|
|
56
|
+
"gasToken": hardhat_1.ethers.constants.AddressZero,
|
|
57
|
+
// Address of receiver of gas payment (or `null` if tx.origin)
|
|
58
|
+
"refundReceiver": hardhat_1.ethers.constants.AddressZero,
|
|
59
|
+
// Max gas to use in the transaction
|
|
60
|
+
"safeTxGas": "0"
|
|
61
|
+
};
|
|
62
|
+
// Private functions
|
|
63
|
+
const getSafeTransactionData = (transactions) => {
|
|
50
64
|
const safeTransactionData = [];
|
|
51
65
|
for (const transaction of transactions) {
|
|
52
66
|
safeTransactionData.push({
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"
|
|
57
|
-
? transaction.data.toString()
|
|
58
|
-
: "0x",
|
|
59
|
-
"value": transaction.value
|
|
60
|
-
? transaction.value.toString()
|
|
61
|
-
: "0",
|
|
62
|
-
"operation": 0
|
|
67
|
+
"data": transaction.data?.toString() ?? "0x",
|
|
68
|
+
"operation": safe_core_sdk_types_1.OperationType.Call,
|
|
69
|
+
"to": transaction.to ?? hardhat_1.ethers.constants.AddressZero,
|
|
70
|
+
"value": transaction.value?.toString() ?? "0"
|
|
63
71
|
});
|
|
64
72
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
return safeTransactionData;
|
|
74
|
+
};
|
|
75
|
+
const getEthAdapter = async () => {
|
|
76
|
+
const [safeOwner] = await hardhat_1.ethers.getSigners();
|
|
77
|
+
const ethAdapter = new protocol_kit_1.EthersAdapter({
|
|
78
|
+
ethers: hardhat_1.ethers,
|
|
79
|
+
"signerOrProvider": safeOwner
|
|
80
|
+
});
|
|
81
|
+
return ethAdapter;
|
|
82
|
+
};
|
|
83
|
+
const getSafeTransactionUrl = (chainId) => {
|
|
84
|
+
if (Object.keys(URLS.safe_transaction).includes(chainId.toString())) {
|
|
85
|
+
return URLS.safe_transaction[chainId];
|
|
86
|
+
}
|
|
87
|
+
throw Error("Can't get safe-transaction url" +
|
|
88
|
+
` at network with chainId = ${chainId}`);
|
|
89
|
+
};
|
|
90
|
+
const getSafeService = async () => {
|
|
91
|
+
const { chainId } = await hardhat_1.ethers.provider.getNetwork();
|
|
76
92
|
const ethAdapter = await getEthAdapter();
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
exports.createMultiSendTransaction = createMultiSendTransaction;
|
|
85
|
-
// Private functions
|
|
86
|
-
async function estimateSafeTransaction(safeAddress, safeTransactionData) {
|
|
93
|
+
const safeService = new api_kit_1.default({
|
|
94
|
+
ethAdapter,
|
|
95
|
+
"txServiceUrl": getSafeTransactionUrl(chainId)
|
|
96
|
+
});
|
|
97
|
+
return safeService;
|
|
98
|
+
};
|
|
99
|
+
const estimateSafeTransaction = async (safeAddress, safeTransactionData) => {
|
|
87
100
|
console.log("Estimate gas");
|
|
88
101
|
const safeService = await getSafeService();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
const gasEstimations = await Promise.
|
|
103
|
+
all(safeTransactionData.
|
|
104
|
+
map((transaction) => safeService.estimateSafeTransaction(safeAddress, {
|
|
105
|
+
"data": transaction.data,
|
|
106
|
+
"operation": transaction.operation || safe_core_sdk_types_1.OperationType.Call,
|
|
107
|
+
"to": transaction.to,
|
|
108
|
+
"value": transaction.value
|
|
109
|
+
})));
|
|
110
|
+
for (const estimateResponse of gasEstimations) {
|
|
111
|
+
console.log(chalk_1.default.cyan("Recommend to set gas limit" +
|
|
112
|
+
` to ${estimateResponse.safeTxGas}`));
|
|
97
113
|
}
|
|
98
114
|
console.log(chalk_1.default.green("Send transaction to gnosis safe"));
|
|
99
|
-
}
|
|
100
|
-
async
|
|
115
|
+
};
|
|
116
|
+
const proposeTransaction = async (safeAddress, safeTransaction) => {
|
|
101
117
|
const [safeOwner] = await hardhat_1.ethers.getSigners();
|
|
102
118
|
const ethAdapter = await getEthAdapter();
|
|
103
119
|
const safeSdk = await protocol_kit_1.default.create({ ethAdapter,
|
|
@@ -112,27 +128,35 @@ async function proposeTransaction(safeAddress, safeTransaction) {
|
|
|
112
128
|
"senderAddress": safeOwner.address,
|
|
113
129
|
"senderSignature": senderSignature.data
|
|
114
130
|
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+
};
|
|
132
|
+
// Public functions
|
|
133
|
+
const createMultiSendTransaction = async (safeAddress, transactions) => {
|
|
134
|
+
const safeTransactionData = getSafeTransactionData(transactions);
|
|
135
|
+
const safeService = await getSafeService();
|
|
136
|
+
const nonce = await safeService.getNextNonce(safeAddress);
|
|
137
|
+
console.log("Will send tx to Gnosis with nonce", nonce);
|
|
138
|
+
const options = {
|
|
139
|
+
...defaultOptions,
|
|
140
|
+
...{
|
|
141
|
+
/*
|
|
142
|
+
* Nonce of the Safe,
|
|
143
|
+
* Transaction cannot be executed until
|
|
144
|
+
* Safe's nonce is not equal to this nonce
|
|
145
|
+
*/
|
|
146
|
+
nonce
|
|
147
|
+
}
|
|
148
|
+
};
|
|
126
149
|
const ethAdapter = await getEthAdapter();
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
150
|
+
const safeSdk = await protocol_kit_1.default.create({
|
|
151
|
+
ethAdapter,
|
|
152
|
+
safeAddress
|
|
130
153
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
154
|
+
const safeTransaction = await safeSdk.createTransaction({
|
|
155
|
+
options,
|
|
156
|
+
safeTransactionData
|
|
157
|
+
});
|
|
158
|
+
await estimateSafeTransaction(safeAddress, safeTransactionData);
|
|
159
|
+
await proposeTransaction(safeAddress, safeTransaction);
|
|
160
|
+
};
|
|
161
|
+
exports.createMultiSendTransaction = createMultiSendTransaction;
|
|
162
|
+
//# sourceMappingURL=gnosis-safe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gnosis-safe.js","sourceRoot":"","sources":["../../src/gnosis-safe.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,2CAAyB;AACzB,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B;AAC1B,6CAA2B"}
|
package/dist/src/multiSend.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { BigNumberish, BytesLike } from "ethers";
|
|
2
|
+
import { OperationType } from "@safe-global/safe-core-sdk-types";
|
|
3
|
+
interface Transaction {
|
|
4
|
+
operation: OperationType;
|
|
5
|
+
to: string;
|
|
6
|
+
value: BigNumberish;
|
|
7
|
+
data: BytesLike;
|
|
8
|
+
}
|
|
9
|
+
export declare const encodeTransaction: (transaction: Transaction) => string;
|
|
10
|
+
export {};
|