@skalenetwork/upgrade-tools 3.0.0-linter.6 → 3.0.0-linter.8

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.
@@ -64,17 +64,14 @@ const getContractFactory = async (contract) => {
64
64
  "bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode)
65
65
  };
66
66
  }
67
- let manifest;
68
- try {
69
- manifest = JSON.parse(await fs_1.promises.readFile(await (0, exports.getManifestFile)(), "utf-8"));
70
- Object.assign(libraryArtifacts, manifest.libraries);
67
+ const manifest = JSON.parse(await fs_1.promises.readFile(await (0, exports.getManifestFile)(), "utf-8"));
68
+ if (manifest.libraries === undefined) {
69
+ Object.assign(manifest, { "libraries": libraryArtifacts });
71
70
  }
72
- finally {
73
- if (manifest !== undefined) {
74
- Object.assign(manifest, { "libraries": libraryArtifacts });
75
- }
76
- await fs_1.promises.writeFile(await (0, exports.getManifestFile)(), JSON.stringify(manifest, null, 4));
71
+ else {
72
+ Object.assign(libraryArtifacts, manifest.libraries);
77
73
  }
74
+ await fs_1.promises.writeFile(await (0, exports.getManifestFile)(), JSON.stringify(manifest, null, 4));
78
75
  return await (0, exports.getLinkedContractFactory)(contract, libraries);
79
76
  };
80
77
  exports.getContractFactory = getContractFactory;
@@ -66,12 +66,18 @@ const createMultiSendTransaction = async (safeAddress, transactions) => {
66
66
  const nonce = await safeService.getNextNonce(safeAddress);
67
67
  console.log("Will send tx to Gnosis with nonce", nonce);
68
68
  const options = {
69
+ // Max gas to use in the transaction
69
70
  "safeTxGas": "0",
71
+ // Gas costs not related to the transaction execution (signature check, refund payment...)
70
72
  "baseGas": "0",
73
+ // Gas price used for the refund calculation
71
74
  "gasPrice": "0",
75
+ // Token address (hold by the Safe) to be used as a refund to the sender, if `null` is Ether
72
76
  "gasToken": hardhat_1.ethers.constants.AddressZero,
77
+ // Address of receiver of gas payment (or `null` if tx.origin)
73
78
  "refundReceiver": hardhat_1.ethers.constants.AddressZero,
74
- nonce // Nonce of the Safe, transaction cannot be executed until Safe's nonce is not equal to this nonce
79
+ // Nonce of the Safe, transaction cannot be executed until Safe's nonce is not equal to this nonce
80
+ nonce
75
81
  };
76
82
  const ethAdapter = await getEthAdapter();
77
83
  const safeSdk = await protocol_kit_1.default.create({ ethAdapter,
@@ -9,7 +9,7 @@ const encodeTransaction = (operation, to, value, data) => {
9
9
  // / value as a uint256 (=> 32 bytes),
10
10
  // / data length as a uint256 (=> 32 bytes),
11
11
  // / data as bytes.
12
- let _operation;
12
+ let _operation = "";
13
13
  if (operation === 0) {
14
14
  _operation = "00";
15
15
  }
@@ -3,6 +3,7 @@ import { Submitter } from "./submitter";
3
3
  export declare class AutoSubmitter extends Submitter {
4
4
  name: string;
5
5
  submit(transactions: Transaction[]): Promise<void>;
6
+ private static getSubmitter;
6
7
  private static _getImaInstance;
7
8
  private static _getSafeAddress;
8
9
  private static _getSchainHash;
@@ -43,56 +43,54 @@ class AutoSubmitter extends submitter_1.Submitter {
43
43
  }
44
44
  async submit(transactions) {
45
45
  console.log(`Submit via ${this.name}`);
46
- let submitter;
46
+ const submitter = await AutoSubmitter.getSubmitter();
47
+ await submitter.submit(transactions);
48
+ }
49
+ // Private
50
+ static async getSubmitter() {
47
51
  // TODO: remove unknown when move everything to ethers 6
48
52
  const proxyAdmin = await (0, admin_1.getManifestAdmin)(hardhat_1.default);
49
53
  const owner = await proxyAdmin.owner();
50
54
  if (await hardhat_1.default.ethers.provider.getCode(owner) === "0x") {
51
55
  console.log("Owner is not a contract");
52
- submitter = new eoa_submitter_1.EoaSubmitter();
56
+ return new eoa_submitter_1.EoaSubmitter();
53
57
  }
54
- else {
55
- console.log("Owner is a contract");
56
- if (hardhat_1.ethers.utils.getAddress(owner) === hardhat_1.ethers.utils.getAddress(marionette_1.MARIONETTE_ADDRESS)) {
57
- console.log("Marionette owner is detected");
58
- const imaInstance = await AutoSubmitter._getImaInstance();
59
- const mainnetChainId = AutoSubmitter._getMainnetChainId();
60
- const safeAddress = AutoSubmitter._getSafeAddress();
61
- const schainHash = AutoSubmitter._getSchainHash();
62
- /*
63
- * TODO: after marionette has multiSend functionality
64
- * query version and properly select a submitter
65
- * based on it
66
- *
67
- * if (await this._versionFunctionExists()) {
68
- * console.log("version() function was found. Use normal Marionette")
69
- * submitter = new SafeImaMarionetteSubmitter(
70
- * safeAddress,
71
- * imaAbi,
72
- * schainHash,
73
- * mainnetChainId
74
- * )
75
- * } else {
76
- * console.log("No version() function was found. Use legacy Marionette")
77
- * submitter = new SafeImaLegacyMarionetteSubmitter(
78
- * safeAddress,
79
- * imaAbi,
80
- * schainHash,
81
- * mainnetChainId
82
- * )
83
- * }
84
- */
85
- submitter = new safe_ima_legacy_marionette_submitter_1.SafeImaLegacyMarionetteSubmitter(safeAddress, imaInstance, schainHash, mainnetChainId);
86
- }
87
- else {
88
- // Assuming owner is a Gnosis Safe
89
- console.log("Using Gnosis Safe");
90
- submitter = new safe_submitter_1.SafeSubmitter(owner);
91
- }
58
+ console.log("Owner is a contract");
59
+ if (hardhat_1.ethers.utils.getAddress(owner) === hardhat_1.ethers.utils.getAddress(marionette_1.MARIONETTE_ADDRESS)) {
60
+ console.log("Marionette owner is detected");
61
+ const imaInstance = await AutoSubmitter._getImaInstance();
62
+ const mainnetChainId = AutoSubmitter._getMainnetChainId();
63
+ const safeAddress = AutoSubmitter._getSafeAddress();
64
+ const schainHash = AutoSubmitter._getSchainHash();
65
+ /*
66
+ * TODO: after marionette has multiSend functionality
67
+ * query version and properly select a submitter
68
+ * based on it
69
+ *
70
+ * if (await this._versionFunctionExists()) {
71
+ * console.log("version() function was found. Use normal Marionette")
72
+ * submitter = new SafeImaMarionetteSubmitter(
73
+ * safeAddress,
74
+ * imaAbi,
75
+ * schainHash,
76
+ * mainnetChainId
77
+ * )
78
+ * } else {
79
+ * console.log("No version() function was found. Use legacy Marionette")
80
+ * submitter = new SafeImaLegacyMarionetteSubmitter(
81
+ * safeAddress,
82
+ * imaAbi,
83
+ * schainHash,
84
+ * mainnetChainId
85
+ * )
86
+ * }
87
+ */
88
+ return new safe_ima_legacy_marionette_submitter_1.SafeImaLegacyMarionetteSubmitter(safeAddress, imaInstance, schainHash, mainnetChainId);
92
89
  }
93
- await submitter.submit(transactions);
90
+ // Assuming owner is a Gnosis Safe
91
+ console.log("Using Gnosis Safe");
92
+ return new safe_submitter_1.SafeSubmitter(owner);
94
93
  }
95
- // Private
96
94
  static async _getImaInstance() {
97
95
  if (!process.env.IMA) {
98
96
  console.log(chalk_1.default.red("Set target IMA alias to IMA environment variable"));
@@ -1,6 +1,6 @@
1
1
  import { ManifestData } from "@openzeppelin/upgrades-core";
2
2
  export interface SkaleManifestData extends ManifestData {
3
- libraries: {
3
+ libraries?: {
4
4
  [libraryName: string]: {
5
5
  address: string;
6
6
  bytecodeHash: string;
@@ -109,7 +109,7 @@ class Upgrader {
109
109
  const librariesToUpgrade = [];
110
110
  const oldLibraries = {};
111
111
  if (manifest.libraries === undefined) {
112
- Object.assign(manifest, { "libraries": {} });
112
+ manifest.libraries = {};
113
113
  }
114
114
  for (const key of Object.keys(linkReferences)) {
115
115
  const libraryName = Object.keys(linkReferences[key])[0];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skalenetwork/upgrade-tools",
3
- "version": "3.0.0-linter.6",
3
+ "version": "3.0.0-linter.8",
4
4
  "description": "Scripts to support upgrades of smart contracts",
5
5
  "files": [
6
6
  "dist/**/*"