Skip to content

Commit e08894e

Browse files
Merge pull request #250 from BitGo/WIN-6641
feat: deploy and verify contracts for plasma
2 parents ae7f9cb + f50bc6e commit e08894e

File tree

5 files changed

+47
-9
lines changed

5 files changed

+47
-9
lines changed

.github/workflows/deploy_and_release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ jobs:
7373
result-encoding: string
7474
script: |
7575
const tag = process.env.GITHUB_REF_NAME;
76-
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)$/;
76+
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)$/;
7777
const network = tag.match(regex);
7878
return network ? network[1] : "hteth";
7979
deploy-to-test:
8080
runs-on: ubuntu-latest
8181
needs: [lint-and-test, get-network]
82-
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' )}}
82+
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' )}}
8383
environment: testnet
8484
steps:
8585
- uses: actions/checkout@v2
@@ -164,7 +164,7 @@ jobs:
164164
deploy-to-prod:
165165
runs-on: ubuntu-latest
166166
needs: [lint-and-test, get-network]
167-
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' )}}
167+
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' )}}
168168
environment: mainnet
169169
steps:
170170
- uses: actions/checkout@v2

.github/workflows/deploy_batcher_contract.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
result-encoding: string
7272
script: |
7373
const tag = process.env.GITHUB_REF_NAME;
74-
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)$/;
74+
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|tplasma|plasma)$/;
7575
const matchedNetwork = tag.match(regex);
7676
if (!matchedNetwork) {
7777
console.log("No match found for the network name, defaulting to 'hteth'.");
@@ -81,7 +81,7 @@ jobs:
8181
deploy-batcher-contract-to-test:
8282
runs-on: ubuntu-latest
8383
needs: [lint-and-test, get-network]
84-
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' )}}
84+
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' )}}
8585
environment: testnet
8686
steps:
8787
- uses: actions/checkout@v4
@@ -143,7 +143,7 @@ jobs:
143143
deploy-batcher-contract-to-prod:
144144
runs-on: ubuntu-latest
145145
needs: [lint-and-test, get-network]
146-
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' )}}
146+
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' )}}
147147
environment: mainnet
148148
steps:
149149
- uses: actions/checkout@v4

config/chainIds.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export const CHAIN_IDS = {
3737
IRYS: 1270,
3838
LINEAETH: 59144,
3939
IP: 1514,
40-
40+
PLASMA_MAINNET: 9746, // Replace with actual mainnet chain ID when available
4141
// Testnet Networks
4242
BSC_TESTNET: 97,
4343
BERA_TESTNET: 80094,
@@ -63,5 +63,6 @@ export const CHAIN_IDS = {
6363
KAIA_TESTNET: 1001,
6464
IRYS_TESTNET: 1270,
6565
LINEAETH_TESTNET: 59141,
66-
IP_TESTNET: 1315
66+
IP_TESTNET: 1315,
67+
PLASMA_TESTNET: 9746
6768
} as const;

hardhat.config.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,22 @@ const config: HardhatUserConfig = {
567567
`${PLACEHOLDER_KEY}`,
568568
`${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}`
569569
]
570+
},
571+
plasma: {
572+
url: `https://testnet-rpc.plasma.to`, // TODO: Update with mainnet URL when available
573+
accounts: [
574+
`${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`,
575+
`${PLACEHOLDER_KEY}`,
576+
`${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}`
577+
]
578+
},
579+
tplasma: {
580+
url: `https://testnet-rpc.plasma.to`,
581+
accounts: [
582+
`${PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT}`,
583+
`${PLACEHOLDER_KEY}`,
584+
`${PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT}`
585+
]
570586
}
571587
},
572588
gasReporter: {
@@ -661,7 +677,10 @@ const config: HardhatUserConfig = {
661677
lineaethMainnet: `${ETHERSCAN_API_KEY}`,
662678
//STORY IP
663679
ipTestnet: `${IP_EXPLORER_API_KEY}`,
664-
ipMainnet: `${IP_EXPLORER_API_KEY}`
680+
ipMainnet: `${IP_EXPLORER_API_KEY}`,
681+
//PLASMA
682+
plasmaTestnet: `${ETHERSCAN_API_KEY}`,
683+
plasmaMainnet: `${ETHERSCAN_API_KEY}`
665684
},
666685
customChains: [
667686
{
@@ -1086,6 +1105,22 @@ const config: HardhatUserConfig = {
10861105
apiURL: 'https://inst-1.cloud.blockscout.com/api', // TODO: Update with mainnet URL when available
10871106
browserURL: 'https://testnet-explorer.irys.xyz/'
10881107
}
1108+
},
1109+
{
1110+
network: 'plasmaTestnet',
1111+
chainId: CHAIN_IDS.PLASMA_TESTNET,
1112+
urls: {
1113+
apiURL: 'https://testnet.plasmaexplorer.io/api',
1114+
browserURL: 'https://testnet.plasmaexplorer.io/'
1115+
}
1116+
},
1117+
{
1118+
network: 'plasmaMainnet',
1119+
chainId: CHAIN_IDS.PLASMA_MAINNET,
1120+
urls: {
1121+
apiURL: 'https://testnet.plasmaexplorer.io/api',
1122+
browserURL: 'https://testnet.plasmaexplorer.io/'
1123+
}
10891124
}
10901125
]
10911126
},

scripts/chainConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ export async function getChainConfig(chainId: number): Promise<ChainConfig> {
8989

9090
case CHAIN_IDS.BERA:
9191
case CHAIN_IDS.BERA_TESTNET:
92+
case CHAIN_IDS.PLASMA_MAINNET:
93+
case CHAIN_IDS.PLASMA_TESTNET:
9294
case CHAIN_IDS.SONIC:
9395
case CHAIN_IDS.SONIC_TESTNET:
9496
case CHAIN_IDS.SEIEVM:

0 commit comments

Comments
 (0)