From 5edf5b9f388143cc270a569d851d073b6eaff653 Mon Sep 17 00:00:00 2001 From: irubido Date: Fri, 19 Jan 2024 14:35:31 +0100 Subject: [PATCH 1/4] fix: deployment network type and naming --- .../src/MultichainHardhatRuntimeEnvironmentField.ts | 12 ++++++------ packages/plugin/src/types.ts | 8 +++++--- packages/plugin/src/utils.ts | 11 ++++------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts b/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts index 7ece4eb..5a90ae2 100644 --- a/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts +++ b/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts @@ -10,14 +10,14 @@ import Web3, { import { getConfigEnvironmentVariable, getNetworkChainId, - mapNetworkArgs, + validateNetworkArgs, sumedFees, } from "./utils"; import { AdapterABI } from "./adapterABI"; import { DeployOptions, NetworkArguments } from "./types"; export class MultichainHardhatRuntimeEnvironmentField { - private isValidated: boolean = false; + private isInitiated: boolean = false; private domains: Domain[] = []; private readonly web3: Web3 | null; @@ -31,7 +31,7 @@ export class MultichainHardhatRuntimeEnvironmentField { //current Sygma hardcoded gasLimit private gasLimit = 1000000; - private async validateConfig(): Promise { + private async initConfig(): Promise { const originChainId = await getNetworkChainId( this.hre.network.name, this.hre @@ -43,7 +43,7 @@ export class MultichainHardhatRuntimeEnvironmentField { this.domains = config.getDomains(); - this.isValidated = true; + this.isInitiated = true; } public static encodeInitData( @@ -88,7 +88,7 @@ export class MultichainHardhatRuntimeEnvironmentField { networkArgs: NetworkArguments, options?: DeployOptions ): Promise { - if (!this.isValidated) await this.validateConfig(); + if (!this.isInitiated) await this.initConfig(); if (!this.web3) return; //optional params @@ -101,7 +101,7 @@ export class MultichainHardhatRuntimeEnvironmentField { this.ADAPTER_ADDRESS ); - const { constructorArgs, initDatas, deployDomainIDs } = mapNetworkArgs( + const { constructorArgs, initDatas, deployDomainIDs } = validateNetworkArgs( contractBytecode, contractAbi, networkArgs, diff --git a/packages/plugin/src/types.ts b/packages/plugin/src/types.ts index e4823e4..66c1492 100644 --- a/packages/plugin/src/types.ts +++ b/packages/plugin/src/types.ts @@ -5,12 +5,14 @@ import { NonPayableCallOptions, } from "web3"; -export interface NetworkArguments { - [network: string]: { +export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai"; + +export type NetworkArguments = { + [network in DeploymentNetwork]: { args: ContractConstructorArgs; initData?: string; }; -} +}; export interface DeployOptions { salt?: MatchPrimitiveType<"bytes32", unknown>; diff --git a/packages/plugin/src/utils.ts b/packages/plugin/src/utils.ts index f3831b0..16ea224 100644 --- a/packages/plugin/src/utils.ts +++ b/packages/plugin/src/utils.ts @@ -49,7 +49,7 @@ export function sumedFees(fees: Numbers[]): string { return sumOfFees.toString(); } -export function mapNetworkArgs( +export function validateNetworkArgs( contractBytecode: string, contractAbi: Abi, networkArgs: Record< @@ -81,15 +81,11 @@ export function mapNetworkArgs( else { throw new HardhatPluginError( "@chainsafe/hardhat-plugin-multichain-deploy", - `Unavailable Networks in networkArgs: The following network ${networkName} is not supported as destination network. - Available networks: ${domains - .map((domain): string => `${domain.name}`) - .join(", ") - .replace(/, ([^,]*)$/, "")}\n - ` + `Unavailable Networks in networkArgs: The following network ${networkName} is not supported as destination network.` ); } + //encodes constructor args in bytes const encodedDeployMethod = contract .deploy({ data: contractBytecode, @@ -103,6 +99,7 @@ export function mapNetworkArgs( constructorArgs.push(argsInBytes); + //pushes encoded initData if provided if (networkArgs[networkName].initData) { initDatas.push(networkArgs[networkName].initData as Bytes); } else { From 07706bebbd1fd06a481d7c7ac45435f321fa79f8 Mon Sep 17 00:00:00 2001 From: irubido Date: Mon, 22 Jan 2024 13:28:43 +0100 Subject: [PATCH 2/4] naming and type fix --- .../plugin/src/MultichainHardhatRuntimeEnvironmentField.ts | 4 ++-- packages/plugin/src/types.ts | 2 +- packages/plugin/src/utils.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts b/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts index 5a90ae2..e70a43c 100644 --- a/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts +++ b/packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts @@ -10,7 +10,7 @@ import Web3, { import { getConfigEnvironmentVariable, getNetworkChainId, - validateNetworkArgs, + formatNetworkArgs, sumedFees, } from "./utils"; import { AdapterABI } from "./adapterABI"; @@ -101,7 +101,7 @@ export class MultichainHardhatRuntimeEnvironmentField { this.ADAPTER_ADDRESS ); - const { constructorArgs, initDatas, deployDomainIDs } = validateNetworkArgs( + const { constructorArgs, initDatas, deployDomainIDs } = formatNetworkArgs( contractBytecode, contractAbi, networkArgs, diff --git a/packages/plugin/src/types.ts b/packages/plugin/src/types.ts index 66c1492..c29c98e 100644 --- a/packages/plugin/src/types.ts +++ b/packages/plugin/src/types.ts @@ -5,7 +5,7 @@ import { NonPayableCallOptions, } from "web3"; -export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai"; +export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai" | string; export type NetworkArguments = { [network in DeploymentNetwork]: { diff --git a/packages/plugin/src/utils.ts b/packages/plugin/src/utils.ts index 16ea224..c5ac5f5 100644 --- a/packages/plugin/src/utils.ts +++ b/packages/plugin/src/utils.ts @@ -49,7 +49,7 @@ export function sumedFees(fees: Numbers[]): string { return sumOfFees.toString(); } -export function validateNetworkArgs( +export function formatNetworkArgs( contractBytecode: string, contractAbi: Abi, networkArgs: Record< From 4c74b0ade727a562b14ae2c43b064d78e1738b0c Mon Sep 17 00:00:00 2001 From: irubido Date: Mon, 22 Jan 2024 13:30:17 +0100 Subject: [PATCH 3/4] added goerli and holesky as deployment network option --- packages/plugin/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin/src/types.ts b/packages/plugin/src/types.ts index c29c98e..df01219 100644 --- a/packages/plugin/src/types.ts +++ b/packages/plugin/src/types.ts @@ -5,7 +5,7 @@ import { NonPayableCallOptions, } from "web3"; -export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai" | string; +export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai" | "goerli" | "holesky" | string; export type NetworkArguments = { [network in DeploymentNetwork]: { From 7562eb4a024aa6d3d9b09267603f8dcac5054e9a Mon Sep 17 00:00:00 2001 From: irubido Date: Mon, 22 Jan 2024 14:49:00 +0100 Subject: [PATCH 4/4] lint fix --- packages/plugin/src/types.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/plugin/src/types.ts b/packages/plugin/src/types.ts index df01219..17e9301 100644 --- a/packages/plugin/src/types.ts +++ b/packages/plugin/src/types.ts @@ -5,7 +5,13 @@ import { NonPayableCallOptions, } from "web3"; -export type DeploymentNetwork = "ethereum" | "sepolia" | "mumbai" | "goerli" | "holesky" | string; +export type DeploymentNetwork = + | "ethereum" + | "sepolia" + | "mumbai" + | "goerli" + | "holesky" + | string; export type NetworkArguments = { [network in DeploymentNetwork]: {