From f68919da187925b70eb4fc49aa1f8da8bbc1f88d Mon Sep 17 00:00:00 2001 From: Shubham Damkondwar Date: Tue, 30 Dec 2025 00:17:14 +0530 Subject: [PATCH] feat: added config for morph contract deployment WIN-8073 --- .github/workflows/deploy_and_release.yml | 6 +-- .github/workflows/deploy_batcher_contract.yml | 6 +-- config/chainIds.ts | 4 +- hardhat.config.ts | 43 +++++++++++++++++-- scripts/chainConfig.ts | 10 +++++ 5 files changed, 59 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deploy_and_release.yml b/.github/workflows/deploy_and_release.yml index f117980..566df4b 100644 --- a/.github/workflows/deploy_and_release.yml +++ b/.github/workflows/deploy_and_release.yml @@ -79,7 +79,7 @@ jobs: result-encoding: string script: | const tag = process.env.GITHUB_REF_NAME; - const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|tflr|flr|tsgb|sgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|world|tworld|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|tlineaeth|lineaeth|ip|tip|plasma|tplasma|kavaevm|tkavaevm|plume|tplume|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth|okb|tokb)$/; + const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|tflr|flr|tsgb|sgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|world|tworld|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|tlineaeth|lineaeth|ip|tip|plasma|tplasma|kavaevm|tkavaevm|plume|tplume|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth|okb|tokb|morph|tmorph)$/; const network = tag.match(regex); return network ? network[1] : "hteth"; preview: @@ -112,7 +112,7 @@ jobs: deploy-to-test: runs-on: ubuntu-latest needs: [lint-and-test, get-network, preview] - if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' )|| (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tflow') || (needs.get-network.outputs.network == 'tmegaeth') || (needs.get-network.outputs.network == 'thbarevm') || (needs.get-network.outputs.network == 'tfluenteth') || (needs.get-network.outputs.network == 'tmantle') || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'topBNB') || (needs.get-network.outputs.network == 'tjovayeth') || (needs.get-network.outputs.network == 'tokb')}} + if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' )|| (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tflow') || (needs.get-network.outputs.network == 'tmegaeth') || (needs.get-network.outputs.network == 'thbarevm') || (needs.get-network.outputs.network == 'tfluenteth') || (needs.get-network.outputs.network == 'tmantle') || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'topBNB') || (needs.get-network.outputs.network == 'tjovayeth') || (needs.get-network.outputs.network == 'tokb') || (needs.get-network.outputs.network == 'tmorph')}} environment: testnet steps: - uses: actions/checkout@v2 @@ -203,7 +203,7 @@ jobs: deploy-to-prod: runs-on: ubuntu-latest needs: [lint-and-test, get-network, preview] - if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume') || (needs.get-network.outputs.network == 'flow') || (needs.get-network.outputs.network == 'megaeth') || (needs.get-network.outputs.network == 'hbarevm') || (needs.get-network.outputs.network == 'fluenteth') || (needs.get-network.outputs.network == 'mantle') || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'opBNB') || (needs.get-network.outputs.network == 'jovayeth') || (needs.get-network.outputs.network == 'okb')}} + if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume') || (needs.get-network.outputs.network == 'flow') || (needs.get-network.outputs.network == 'megaeth') || (needs.get-network.outputs.network == 'hbarevm') || (needs.get-network.outputs.network == 'fluenteth') || (needs.get-network.outputs.network == 'mantle') || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'opBNB') || (needs.get-network.outputs.network == 'jovayeth') || (needs.get-network.outputs.network == 'okb') || (needs.get-network.outputs.network == 'morph')}} environment: mainnet steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/deploy_batcher_contract.yml b/.github/workflows/deploy_batcher_contract.yml index 10afb72..c00ef85 100644 --- a/.github/workflows/deploy_batcher_contract.yml +++ b/.github/workflows/deploy_batcher_contract.yml @@ -76,7 +76,7 @@ jobs: result-encoding: string script: | const tag = process.env.GITHUB_REF_NAME; - const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|flr|tflr|sgb|tsgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|tworld|world|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|lineaeth|tlineaeth|tip|ip|tplasma|plasma|kavaevm|tkavaevm|plume|tplume|tog|og|tflow|flow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|jovayeth|tjovayeth|okb|tokb)$/; + const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|flr|tflr|sgb|tsgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|tworld|world|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|lineaeth|tlineaeth|tip|ip|tplasma|plasma|kavaevm|tkavaevm|plume|tplume|tog|og|tflow|flow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|jovayeth|tjovayeth|okb|tokb|morph|tmorph)$/; const matchedNetwork = tag.match(regex); if (!matchedNetwork) { console.log("No match found for the network name, defaulting to 'hteth'."); @@ -107,7 +107,7 @@ jobs: deploy-batcher-contract-to-test: runs-on: ubuntu-latest needs: [lint-and-test, get-network, preview] - if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' ) || (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tflow' ) || (needs.get-network.outputs.network == 'tmegaeth' ) || (needs.get-network.outputs.network == 'thbarevm' ) || (needs.get-network.outputs.network == 'tfluenteth' ) || (needs.get-network.outputs.network == 'tmantle' ) || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'tjovayeth') || (needs.get-network.outputs.network == 'tokb')}} + if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' ) || (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tflow' ) || (needs.get-network.outputs.network == 'tmegaeth' ) || (needs.get-network.outputs.network == 'thbarevm' ) || (needs.get-network.outputs.network == 'tfluenteth' ) || (needs.get-network.outputs.network == 'tmantle' ) || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'tjovayeth') || (needs.get-network.outputs.network == 'tokb') || (needs.get-network.outputs.network == 'tmorph')}} environment: testnet steps: - uses: actions/checkout@v4 @@ -174,7 +174,7 @@ jobs: deploy-batcher-contract-to-prod: runs-on: ubuntu-latest needs: [lint-and-test, get-network, preview] - if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume' ) || (needs.get-network.outputs.network == 'flow' ) || (needs.get-network.outputs.network == 'megaeth' ) || (needs.get-network.outputs.network == 'hbarevm' ) || (needs.get-network.outputs.network == 'fluenteth' ) || (needs.get-network.outputs.network == 'mantle' ) || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'jovayeth') || (needs.get-network.outputs.network == 'okb')}} + if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume' ) || (needs.get-network.outputs.network == 'flow' ) || (needs.get-network.outputs.network == 'megaeth' ) || (needs.get-network.outputs.network == 'hbarevm' ) || (needs.get-network.outputs.network == 'fluenteth' ) || (needs.get-network.outputs.network == 'mantle' ) || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'jovayeth') || (needs.get-network.outputs.network == 'okb') || (needs.get-network.outputs.network == 'morph')}} environment: mainnet steps: - uses: actions/checkout@v4 diff --git a/config/chainIds.ts b/config/chainIds.ts index b065352..99a8fd1 100644 --- a/config/chainIds.ts +++ b/config/chainIds.ts @@ -49,6 +49,7 @@ export const CHAIN_IDS = { opBNB: 204, JOVAYETH: 5734951, OKB: 196, + MORPH: 2818, // Testnet Networks BSC_TESTNET: 97, @@ -88,5 +89,6 @@ export const CHAIN_IDS = { DOGEOS_TESTNET: 6281971, opBNB_TESTNET: 5611, JOVAYETH_TESTNET: 2019775, - OKB_TESTNET: 1952 + OKB_TESTNET: 1952, + MORPH_TESTNET: 2910, } as const; diff --git a/hardhat.config.ts b/hardhat.config.ts index 2005f3c..15ad71e 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -54,7 +54,8 @@ const { FLOW_EXPLORER_API_KEY, MEGAETH_EXPLORER_API_KEY, HBAREVM_EXPLORER_API_KEY, - DOGEOS_EXPLORER_API_KEY + DOGEOS_EXPLORER_API_KEY, + MORPH_EXPLORER_API_KEY } = process.env; const PLACEHOLDER_KEY: string = @@ -781,7 +782,23 @@ const config: HardhatUserConfig = { `${PLACEHOLDER_KEY}`, `${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}` ] - } + }, + morph: { + url: 'https://rpc-quicknode.morphl2.io/', + accounts: [ + `${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`, + `${PLACEHOLDER_KEY}`, + `${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}` + ] + }, + tmorph: { + url: 'https://rpc-hoodi.morphl2.io', + accounts: [ + `${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`, + `${PLACEHOLDER_KEY}`, + `${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}` + ] + }, }, gasReporter: { enabled: process.env.REPORT_GAS !== undefined, @@ -922,7 +939,11 @@ const config: HardhatUserConfig = { // X Layer OKB okbTestnet: `${ETHERSCAN_API_KEY}`, - okbMainnet: `${ETHERSCAN_API_KEY}` + okbMainnet: `${ETHERSCAN_API_KEY}`, + + // MORPH + morphTestnet: `${ETHERSCAN_API_KEY}`, + morphMainnet: `${ETHERSCAN_API_KEY}` }, customChains: [ { @@ -1549,6 +1570,22 @@ const config: HardhatUserConfig = { apiURL: `${ETHERSCAN_V2_URL}${CHAIN_IDS.OKB}`, browserURL: 'https://www.okx.com/web3/explorer/xlayer' } + }, + { + network: 'morphTestnet', + chainId: CHAIN_IDS.MORPH_TESTNET, + urls: { + apiURL: 'https://explorer-api-hoodi.morph.network/api', + browserURL: 'https://explorer-hoodi.morphl2.io/' + } + }, + { + network: 'morphMainnet', + chainId: CHAIN_IDS.MORPH, + urls: { + apiURL: 'https://explorer-api.morphl2.io/api/v2', + browserURL: 'https://explorer.morphl2.io/' + } } ] }, diff --git a/scripts/chainConfig.ts b/scripts/chainConfig.ts index 12e3c37..6e1b402 100644 --- a/scripts/chainConfig.ts +++ b/scripts/chainConfig.ts @@ -283,6 +283,16 @@ export async function getChainConfig(chainId: number): Promise { forwarderContractName = 'ForwarderV4'; forwarderFactoryContractName = 'ForwarderFactoryV4'; break; + + case CHAIN_IDS.MORPH_TESTNET: + case CHAIN_IDS.MORPH: + gasParams = { + gasPrice: feeData.gasPrice ?? 0n, + gasLimit: 7_000_000 + }; + forwarderContractName = 'ForwarderV4'; + forwarderFactoryContractName = 'ForwarderFactoryV4'; + break; } return {