Skip to content

Commit ebde8df

Browse files
committed
feat: add sepeth (Sepolia) EVM chain support [CECHO-1729]
Adds Sepolia testnet chain support to eth-multisig-v4 and deploys V4 wallet + Batcher contracts on testnet.
1 parent 0de51e1 commit ebde8df

5 files changed

Lines changed: 23 additions & 4 deletions

File tree

.github/workflows/deploy_and_release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
result-encoding: string
8686
script: |
8787
const tag = process.env.GITHUB_REF_NAME;
88-
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|zksyncera|tzksyncera|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth|okb|tokb|ftm|morpheth|tmorpheth|arcusdc|tarcusdc|chiliz|tchiliz|unichain|tunichain|hpp|thpp|hoodeth|thoodeth|inketh|tinketh|h|th|usdt0|tusdt0|xtzevm|txtzevm|hemieth|themieth|abstracteth|tabstracteth|katanaeth|tkatanaeth|tbobaeth|bobaeth|gasevm|tgasevm)$/;
88+
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|zksyncera|tzksyncera|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth|okb|tokb|ftm|morpheth|tmorpheth|arcusdc|tarcusdc|chiliz|tchiliz|unichain|tunichain|hpp|thpp|hoodeth|thoodeth|inketh|tinketh|h|th|usdt0|tusdt0|xtzevm|txtzevm|hemieth|themieth|abstracteth|tabstracteth|katanaeth|tkatanaeth|tbobaeth|bobaeth|gasevm|tgasevm|sepeth)$/;
8989
const network = tag.match(regex);
9090
return network ? network[1] : "hteth";
9191
preview:
@@ -118,7 +118,7 @@ jobs:
118118
deploy-to-test:
119119
runs-on: ubuntu-latest
120120
needs: [lint-and-test, get-network, preview]
121-
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 == 'tzksyncera') || (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 == 'tarcusdc') || (needs.get-network.outputs.network == 'tmorpheth') || (needs.get-network.outputs.network == 'tchiliz') || (needs.get-network.outputs.network == 'tunichain') || (needs.get-network.outputs.network == 'thpp') || (needs.get-network.outputs.network == 'th') || (needs.get-network.outputs.network == 'thoodeth') || (needs.get-network.outputs.network == 'tinketh') || (needs.get-network.outputs.network == 'tusdt0' ) || (needs.get-network.outputs.network == 'txtzevm' ) || (needs.get-network.outputs.network == 'themieth' ) || (needs.get-network.outputs.network == 'tabstracteth' ) || (needs.get-network.outputs.network == 'tkatanaeth' ) || (needs.get-network.outputs.network == 'tbobaeth' ) || (needs.get-network.outputs.network == 'tgasevm' )}}
121+
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 == 'tzksyncera') || (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 == 'tarcusdc') || (needs.get-network.outputs.network == 'tmorpheth') || (needs.get-network.outputs.network == 'tchiliz') || (needs.get-network.outputs.network == 'tunichain') || (needs.get-network.outputs.network == 'thpp') || (needs.get-network.outputs.network == 'th') || (needs.get-network.outputs.network == 'thoodeth') || (needs.get-network.outputs.network == 'tinketh') || (needs.get-network.outputs.network == 'tusdt0' ) || (needs.get-network.outputs.network == 'txtzevm' ) || (needs.get-network.outputs.network == 'themieth' ) || (needs.get-network.outputs.network == 'tabstracteth' ) || (needs.get-network.outputs.network == 'tkatanaeth' ) || (needs.get-network.outputs.network == 'tbobaeth' ) || (needs.get-network.outputs.network == 'tgasevm' ) || (needs.get-network.outputs.network == 'sepeth' )}}
122122
environment: testnet
123123
steps:
124124
- uses: actions/checkout@v2

.github/workflows/deploy_batcher_contract.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
result-encoding: string
8383
script: |
8484
const tag = process.env.GITHUB_REF_NAME;
85-
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|zksyncera|tzksyncera|tog|og|tflow|flow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|jovayeth|tjovayeth|okb|tokb|morpheth|tmorpheth|arcusdc|tarcusdc|chiliz|tchiliz|unichain|tunichain|hpp|thpp|hoodeth|thoodeth|inketh|tinketh|h|th|usdt0|tusdt0|xtzevm|txtzevm|hemieth|themieth|abstracteth|tabstracteth|katanaeth|tkatanaeth|tbobaeth|bobaeth|gasevm|tgasevm)$/;
85+
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|zksyncera|tzksyncera|tog|og|tflow|flow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|jovayeth|tjovayeth|okb|tokb|morpheth|tmorpheth|arcusdc|tarcusdc|chiliz|tchiliz|unichain|tunichain|hpp|thpp|hoodeth|thoodeth|inketh|tinketh|h|th|usdt0|tusdt0|xtzevm|txtzevm|hemieth|themieth|abstracteth|tabstracteth|katanaeth|tkatanaeth|tbobaeth|bobaeth|gasevm|tgasevm|sepeth)$/;
8686
const matchedNetwork = tag.match(regex);
8787
if (!matchedNetwork) {
8888
console.log("No match found for the network name, defaulting to 'hteth'.");
@@ -113,7 +113,7 @@ jobs:
113113
deploy-batcher-contract-to-test:
114114
runs-on: ubuntu-latest
115115
needs: [lint-and-test, get-network, preview]
116-
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 == 'tzksyncera') || (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 == 'tmorpheth') || (needs.get-network.outputs.network == 'tarcusdc') || (needs.get-network.outputs.network == 'tchiliz') || (needs.get-network.outputs.network == 'tunichain') || (needs.get-network.outputs.network == 'thpp') || (needs.get-network.outputs.network == 'th') || (needs.get-network.outputs.network == 'thoodeth') || (needs.get-network.outputs.network == 'tinketh') || (needs.get-network.outputs.network == 'tusdt0') || (needs.get-network.outputs.network == 'txtzevm' ) || (needs.get-network.outputs.network == 'themieth' ) || (needs.get-network.outputs.network == 'tabstracteth' ) || (needs.get-network.outputs.network == 'tkatanaeth' ) || (needs.get-network.outputs.network == 'tbobaeth' ) || (needs.get-network.outputs.network == 'tgasevm' )}}
116+
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 == 'tzksyncera') || (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 == 'tmorpheth') || (needs.get-network.outputs.network == 'tarcusdc') || (needs.get-network.outputs.network == 'tchiliz') || (needs.get-network.outputs.network == 'tunichain') || (needs.get-network.outputs.network == 'thpp') || (needs.get-network.outputs.network == 'th') || (needs.get-network.outputs.network == 'thoodeth') || (needs.get-network.outputs.network == 'tinketh') || (needs.get-network.outputs.network == 'tusdt0') || (needs.get-network.outputs.network == 'txtzevm' ) || (needs.get-network.outputs.network == 'themieth' ) || (needs.get-network.outputs.network == 'tabstracteth' ) || (needs.get-network.outputs.network == 'tkatanaeth' ) || (needs.get-network.outputs.network == 'tbobaeth' ) || (needs.get-network.outputs.network == 'tgasevm' ) || (needs.get-network.outputs.network == 'sepeth' )}}
117117
environment: testnet
118118
steps:
119119
- uses: actions/checkout@v4

config/chainIds.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export const CHAIN_IDS = {
22
// Mainnet Networks
33
HOODI: 560048,
4+
SEPETH: 11155111,
45
ARBITRUM_SEPOLIA: 421614,
56
OPTIMISM_SEPOLIA: 11155420,
67
POLYGON_AMOY: 80002,

hardhat.config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ const config: HardhatUserConfig = {
118118
`${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}`
119119
]
120120
},
121+
sepeth: {
122+
url: `https://ethereum-sepolia-rpc.publicnode.com`,
123+
accounts: [
124+
`${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`,
125+
`${PLACEHOLDER_KEY}`,
126+
`${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}`
127+
]
128+
},
121129
matic: {
122130
url: `https://polygon-rpc.com/`,
123131
accounts: [
@@ -1081,6 +1089,7 @@ const config: HardhatUserConfig = {
10811089
mainnet: `${ETHERSCAN_API_KEY}`,
10821090
goerli: `${ETHERSCAN_API_KEY}`,
10831091
hoodi: `${ETHERSCAN_API_KEY}`,
1092+
sepolia: `${ETHERSCAN_API_KEY}`,
10841093
//polygon
10851094
polygon: `${POLYGONSCAN_API_KEY}`,
10861095
polygonAmoy: `${POLYGONSCAN_API_KEY}`,
@@ -1281,6 +1290,14 @@ const config: HardhatUserConfig = {
12811290
browserURL: 'https://hoodi.etherscan.io'
12821291
}
12831292
},
1293+
{
1294+
network: 'sepolia',
1295+
chainId: CHAIN_IDS.SEPETH,
1296+
urls: {
1297+
apiURL: 'https://api-sepolia.etherscan.io/api',
1298+
browserURL: 'https://sepolia.etherscan.io'
1299+
}
1300+
},
12841301
{
12851302
network: 'arbitrumSepolia',
12861303
chainId: CHAIN_IDS.ARBITRUM_SEPOLIA,

scripts/chainConfig.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export async function getChainConfig(chainId: number): Promise<ChainConfig> {
5858
contractPath = `contracts/${walletImplementationContractName}.sol:${walletImplementationContractName}`;
5959
break;
6060
case CHAIN_IDS.HOODI:
61+
case CHAIN_IDS.SEPETH:
6162
forwarderContractName = 'ForwarderV4';
6263
forwarderFactoryContractName = 'ForwarderFactoryV4';
6364
contractPath = `contracts/${walletImplementationContractName}.sol:${walletImplementationContractName}`;

0 commit comments

Comments
 (0)