diff --git a/.github/workflows/update-known-good.yml b/.github/workflows/update-known-good.yml index 02be62049..7f649cfe1 100644 --- a/.github/workflows/update-known-good.yml +++ b/.github/workflows/update-known-good.yml @@ -51,8 +51,10 @@ jobs: - name: Upload Artifact uses: actions/upload-artifact@v4 with: - name: KNOWN_GOOD_BLOCK_NUMBERS.env - path: KNOWN_GOOD_BLOCK_NUMBERS.env + name: KNOWN_GOOD_BLOCK_NUMBERS + path: | + KNOWN_GOOD_BLOCK_NUMBERS_POLKADOT.env + KNOWN_GOOD_BLOCK_NUMBERS_KUSAMA.env retention-days: 1 tests: needs: define-matrix @@ -73,7 +75,7 @@ jobs: - name: Download a single artifact uses: actions/download-artifact@v4 with: - name: KNOWN_GOOD_BLOCK_NUMBERS.env + name: KNOWN_GOOD_BLOCK_NUMBERS - run: yarn test packages/${{ matrix.tests }} save: needs: tests @@ -91,14 +93,14 @@ jobs: - name: Download a single artifact uses: actions/download-artifact@v4 with: - name: KNOWN_GOOD_BLOCK_NUMBERS.env + name: KNOWN_GOOD_BLOCK_NUMBERS - name: Commit and push changes run: | git config --global user.name 'github-actions[bot]' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' - git add KNOWN_GOOD_BLOCK_NUMBERS.env + git add -A 'KNOWN_GOOD_BLOCK_NUMBERS_*.env' if ! git diff --cached --quiet; then - git commit -m "[ci skip] Update KNOWN_GOOD_BLOCK_NUMBERS" + git commit -m "[ci skip] Update known good block numbers" git push else echo "No changes to commit" diff --git a/.github/workflows/update-snapshot.yml b/.github/workflows/update-snapshot.yml index 5667b1456..a25225ad6 100644 --- a/.github/workflows/update-snapshot.yml +++ b/.github/workflows/update-snapshot.yml @@ -14,6 +14,10 @@ jobs: update: runs-on: ubuntu-latest timeout-minutes: 180 + strategy: + fail-fast: false + matrix: + network: [polkadot, kusama] steps: - uses: actions/checkout@v4 - name: setup node env @@ -23,22 +27,35 @@ jobs: cache: 'yarn' - run: yarn --immutable - run: yarn update-known-good - - run: yarn test -u + - run: yarn test:${{ matrix.network }} -u - name: Commit and Create PR uses: actions/github-script@v6 with: script: | - const branchName = `update-snapshots-${context.sha.slice(0, 7)}` - await exec.exec(`git config --global user.name 'github-actions[bot]'`) - await exec.exec(`git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com'"`) - await exec.exec(`git checkout -b ${branchName}`) - await exec.exec(`git`, ['commit', '-am', 'update snapshots']) - await exec.exec(`git push origin HEAD:${branchName}`) + const { network } = context.payload.inputs || { network: '${{ matrix.network }}' }; + const branchName = `update-snapshots-${network}-${context.sha.slice(0, 7)}`; + const upperNetwork = network.toUpperCase(); + + await exec.exec(`git config --global user.name 'github-actions[bot]'`); + await exec.exec(`git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com'`); + + const { stdout: status } = await exec.getExecOutput('git', ['status', '--porcelain']); + if (!status) { + console.log('No changes to commit.'); + return; + } + + await exec.exec(`git checkout -b ${branchName}`); + await exec.exec('git', ['add', '-A', `packages/${network}`]); + await exec.exec('git', ['add', '-A', `KNOWN_GOOD_BLOCK_NUMBERS_${upperNetwork}.env`]); + await exec.exec('git', ['commit', '-m', `Update snapshots for ${network}`]); + await exec.exec(`git push origin HEAD:${branchName}`); + await github.rest.pulls.create({ owner: context.repo.owner, repo: context.repo.repo, - title: 'Update Snapshots', + title: `Update Snapshots for ${network}`, head: branchName, base: 'master', - body: 'Update Snapshots\n\nClose and reopen this PR to trigger CI.', - }) + body: `Update Snapshots for ${network}\n\nClose and reopen this PR to trigger CI.`, + }); diff --git a/KNOWN_GOOD_BLOCK_NUMBERS_KUSAMA.env b/KNOWN_GOOD_BLOCK_NUMBERS_KUSAMA.env new file mode 100644 index 000000000..6917322bf --- /dev/null +++ b/KNOWN_GOOD_BLOCK_NUMBERS_KUSAMA.env @@ -0,0 +1,11 @@ +ASSETHUBKUSAMA_BLOCK_NUMBER=11440430 +BASILISK_BLOCK_NUMBER=11766570 +BRIDGEHUBKUSAMA_BLOCK_NUMBER=6853847 +CORETIMEKUSAMA_BLOCK_NUMBER=3797454 +ENCOINTERKUSAMA_BLOCK_NUMBER=11282840 +INTEGRITEEKUSAMA_BLOCK_NUMBER=8814593 +KARURA_BLOCK_NUMBER=10277414 +KUSAMA_BLOCK_NUMBER=30742540 +MOONRIVER_BLOCK_NUMBER=13730033 +PEOPLEKUSAMA_BLOCK_NUMBER=6351475 +SHIDEN_BLOCK_NUMBER=12413318 diff --git a/KNOWN_GOOD_BLOCK_NUMBERS.env b/KNOWN_GOOD_BLOCK_NUMBERS_POLKADOT.env similarity index 50% rename from KNOWN_GOOD_BLOCK_NUMBERS.env rename to KNOWN_GOOD_BLOCK_NUMBERS_POLKADOT.env index cf5c0f6e2..4eee8e442 100644 --- a/KNOWN_GOOD_BLOCK_NUMBERS.env +++ b/KNOWN_GOOD_BLOCK_NUMBERS_POLKADOT.env @@ -1,22 +1,11 @@ ACALA_BLOCK_NUMBER=9758901 -ASSETHUBKUSAMA_BLOCK_NUMBER=11440430 ASSETHUBPOLKADOT_BLOCK_NUMBER=10182413 ASTAR_BLOCK_NUMBER=10844357 -BASILISK_BLOCK_NUMBER=11766570 -BRIDGEHUBKUSAMA_BLOCK_NUMBER=6853847 BRIDGEHUBPOLKADOT_BLOCK_NUMBER=6288286 COLLECTIVESPOLKADOT_BLOCK_NUMBER=7486109 -CORETIMEKUSAMA_BLOCK_NUMBER=3797454 CORETIMEPOLKADOT_BLOCK_NUMBER=2898364 -ENCOINTERKUSAMA_BLOCK_NUMBER=11282840 HYDRATION_BLOCK_NUMBER=9861942 -INTEGRITEEKUSAMA_BLOCK_NUMBER=8814593 INTEGRITEEPOLKADOT_BLOCK_NUMBER=5616683 -KARURA_BLOCK_NUMBER=10277414 -KUSAMA_BLOCK_NUMBER=30742540 MOONBEAM_BLOCK_NUMBER=13149240 -MOONRIVER_BLOCK_NUMBER=13730033 -PEOPLEKUSAMA_BLOCK_NUMBER=6351475 PEOPLEPOLKADOT_BLOCK_NUMBER=3225266 POLKADOT_BLOCK_NUMBER=28414859 -SHIDEN_BLOCK_NUMBER=12413318 diff --git a/package.json b/package.json index 059d43a37..f7a008411 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "lint": "tsc --noEmit && biome check .", "fix": "biome check --write .", "test": "vitest", + "test:polkadot": "vitest packages/polkadot", + "test:kusama": "vitest packages/kusama", "test:ui": "vitest --ui", "update-env": "tsx scripts/update-env.ts", "update-known-good": "tsx scripts/update-env.ts --update-known-good", diff --git a/packages/networks/src/chains/acala.ts b/packages/networks/src/chains/acala.ts index 924b1455d..14d9eaa7c 100644 --- a/packages/networks/src/chains/acala.ts +++ b/packages/networks/src/chains/acala.ts @@ -68,6 +68,7 @@ export const acala = defineChain({ name: 'acala', endpoint: 'wss://acala-rpc.n.dwellir.com', paraId: 2000, + networkGroup: 'polkadot', custom: custom.acala, initStorages: getInitStorages(custom.acala), }) @@ -76,6 +77,7 @@ export const karura = defineChain({ name: 'karura', endpoint: 'wss://karura-rpc.n.dwellir.com', paraId: 2000, + networkGroup: 'kusama', custom: custom.karura, initStorages: getInitStorages(custom.karura), }) diff --git a/packages/networks/src/chains/assethub.ts b/packages/networks/src/chains/assethub.ts index beac550e3..a3c4bb367 100644 --- a/packages/networks/src/chains/assethub.ts +++ b/packages/networks/src/chains/assethub.ts @@ -67,6 +67,7 @@ export const assetHubPolkadot = defineChain({ name: 'assetHubPolkadot', endpoint: 'wss://polkadot-asset-hub-rpc.polkadot.io', paraId: 1000, + networkGroup: 'polkadot', custom: custom.assetHubPolkadot, initStorages: getInitStorages(custom.assetHubPolkadot), }) @@ -75,6 +76,7 @@ export const assetHubKusama = defineChain({ name: 'assetHubKusama', endpoint: 'wss://sys.ibp.network/asset-hub-kusama', paraId: 1000, + networkGroup: 'kusama', custom: custom.assetHubKusama, initStorages: getInitStorages(custom.assetHubKusama), }) diff --git a/packages/networks/src/chains/astar.ts b/packages/networks/src/chains/astar.ts index 5222917cf..f1863f36c 100644 --- a/packages/networks/src/chains/astar.ts +++ b/packages/networks/src/chains/astar.ts @@ -47,6 +47,7 @@ export const astar = defineChain({ name: 'astar', paraId: 2006, endpoint: 'wss://astar-rpc.n.dwellir.com', + networkGroup: 'polkadot', custom: custom.astar, initStorages: getInitStorages(custom.astar), }) @@ -55,6 +56,7 @@ export const shiden = defineChain({ name: 'shiden', paraId: 2007, endpoint: 'wss://shiden-rpc.n.dwellir.com', + networkGroup: 'kusama', custom: custom.shiden, initStorages: getInitStorages(custom.shiden), }) diff --git a/packages/networks/src/chains/bridgehub.ts b/packages/networks/src/chains/bridgehub.ts index 2366dc9fa..2ffeff325 100644 --- a/packages/networks/src/chains/bridgehub.ts +++ b/packages/networks/src/chains/bridgehub.ts @@ -24,6 +24,7 @@ export const bridgeHubPolkadot = defineChain({ name: 'bridgeHubPolkadot', endpoint: 'wss://sys.ibp.network/bridgehub-polkadot', paraId: 1002, + networkGroup: 'polkadot', custom: custom.bridgeHubPolkadot, initStorages: getInitStorages(custom.bridgeHubPolkadot), }) @@ -32,6 +33,7 @@ export const bridgeHubKusama = defineChain({ name: 'bridgeHubKusama', endpoint: 'wss://kusama-bridge-hub-rpc.polkadot.io', paraId: 1002, + networkGroup: 'kusama', custom: custom.bridgeHubKusama, initStorages: getInitStorages(custom.bridgeHubKusama), }) diff --git a/packages/networks/src/chains/collectives.ts b/packages/networks/src/chains/collectives.ts index f52711535..d03a3b94d 100644 --- a/packages/networks/src/chains/collectives.ts +++ b/packages/networks/src/chains/collectives.ts @@ -22,6 +22,7 @@ export const collectivesPolkadot = defineChain({ name: 'collectivesPolkadot', endpoint: 'wss://collectives-polkadot-rpc.n.dwellir.com', paraId: 1001, + networkGroup: 'polkadot', custom: custom.collectivesPolkadot, initStorages: getInitStorages(custom.collectivesPolkadot), }) diff --git a/packages/networks/src/chains/coretime.ts b/packages/networks/src/chains/coretime.ts index c5bc1c6c3..ac59d9ba7 100644 --- a/packages/networks/src/chains/coretime.ts +++ b/packages/networks/src/chains/coretime.ts @@ -24,6 +24,7 @@ export const coretimePolkadot = defineChain({ name: 'coretimePolkadot', endpoint: 'wss://polkadot-coretime-rpc.polkadot.io', paraId: 1005, + networkGroup: 'polkadot', custom: custom.coretimePolkadot, initStorages: getInitStorages(custom.coretimePolkadot), }) @@ -32,6 +33,7 @@ export const coretimeKusama = defineChain({ name: 'coretimeKusama', endpoint: 'wss://kusama-coretime-rpc.polkadot.io', paraId: 1005, + networkGroup: 'kusama', custom: custom.coretimeKusama, initStorages: getInitStorages(custom.coretimeKusama), }) diff --git a/packages/networks/src/chains/encointer.ts b/packages/networks/src/chains/encointer.ts index 3559fc1f5..8c86801d3 100644 --- a/packages/networks/src/chains/encointer.ts +++ b/packages/networks/src/chains/encointer.ts @@ -20,6 +20,7 @@ export const encointerKusama = defineChain({ name: 'encointerKusama', endpoint: 'wss://kusama.api.encointer.org', paraId: 1001, + networkGroup: 'kusama', custom: custom.encointerKusama, initStorages: getInitStorages(custom.encointerKusama), }) diff --git a/packages/networks/src/chains/hydration.ts b/packages/networks/src/chains/hydration.ts index df679101f..b8055ea7c 100644 --- a/packages/networks/src/chains/hydration.ts +++ b/packages/networks/src/chains/hydration.ts @@ -30,6 +30,7 @@ export const hydration = defineChain({ name: 'hydration', paraId: 2034, endpoint: 'wss://rpc.hydradx.cloud', + networkGroup: 'polkadot', custom: custom.hydration, initStorages: getInitStorages(custom.hydration), }) @@ -38,6 +39,7 @@ export const basilisk = defineChain({ name: 'basilisk', paraId: 2090, endpoint: 'wss://basilisk-rpc.n.dwellir.com', + networkGroup: 'kusama', custom: custom.basilisk, initStorages: getInitStorages(custom.basilisk), }) diff --git a/packages/networks/src/chains/integritee.ts b/packages/networks/src/chains/integritee.ts index 0544c27d2..2e3d03b6d 100644 --- a/packages/networks/src/chains/integritee.ts +++ b/packages/networks/src/chains/integritee.ts @@ -42,6 +42,7 @@ export const integriteePolkadot = defineChain({ name: 'integritee-polkadot', paraId: 2039, endpoint: 'wss://polkadot.api.integritee.network', + networkGroup: 'polkadot', custom: custom.integriteePolkadot, initStorages: getInitStorages(custom.integriteePolkadot), }) @@ -50,6 +51,7 @@ export const integriteeKusama = defineChain({ name: 'integritee-kusama', paraId: 2015, endpoint: 'wss://kusama.api.integritee.network', + networkGroup: 'kusama', custom: custom.integriteeKusama, initStorages: getInitStorages(custom.integriteeKusama), }) diff --git a/packages/networks/src/chains/moonbeam.ts b/packages/networks/src/chains/moonbeam.ts index 7d6b10bd4..32a4f2123 100644 --- a/packages/networks/src/chains/moonbeam.ts +++ b/packages/networks/src/chains/moonbeam.ts @@ -47,6 +47,7 @@ export const moonbeam = defineChain({ name: 'moonbeam', paraId: 2004, endpoint: 'wss://wss.api.moonbeam.network', + networkGroup: 'polkadot', custom: custom.moonbeam, initStorages: getInitStorages(), }) @@ -55,6 +56,7 @@ export const moonriver = defineChain({ name: 'moonriver', paraId: 2023, endpoint: 'wss://wss.api.moonriver.moonbeam.network', + networkGroup: 'kusama', custom: custom.moonriver, initStorages: getInitStorages(), }) diff --git a/packages/networks/src/chains/people.ts b/packages/networks/src/chains/people.ts index 496732289..aa3c6ad20 100644 --- a/packages/networks/src/chains/people.ts +++ b/packages/networks/src/chains/people.ts @@ -42,6 +42,7 @@ export const peoplePolkadot = defineChain({ name: 'peoplePolkadot', endpoint: 'wss://polkadot-people-rpc.polkadot.io', paraId: 1004, + networkGroup: 'polkadot', custom: custom.peoplePolkadot, initStorages: getInitStorages(custom.peoplePolkadot), }) @@ -50,6 +51,7 @@ export const peopleKusama = defineChain({ name: 'peopleKusama', endpoint: 'wss://kusama-people-rpc.polkadot.io', paraId: 1004, + networkGroup: 'kusama', custom: custom.peopleKusama, initStorages: getInitStorages(custom.peopleKusama), }) diff --git a/packages/networks/src/chains/polkadot.ts b/packages/networks/src/chains/polkadot.ts index cc351e274..392ab528a 100644 --- a/packages/networks/src/chains/polkadot.ts +++ b/packages/networks/src/chains/polkadot.ts @@ -34,6 +34,7 @@ export const polkadot = defineChain({ custom: custom.polkadot, initStorages: getInitStorages(), isRelayChain: true, + networkGroup: 'polkadot', }) export const kusama = defineChain({ @@ -42,4 +43,5 @@ export const kusama = defineChain({ custom: custom.kusama, initStorages: getInitStorages(), isRelayChain: true, + networkGroup: 'kusama', }) diff --git a/packages/networks/src/types.ts b/packages/networks/src/types.ts index 494d2e253..ecc0e9281 100644 --- a/packages/networks/src/types.ts +++ b/packages/networks/src/types.ts @@ -14,6 +14,7 @@ type ChainConfigBase = { name: string endpoint: string | string[] isRelayChain?: boolean + networkGroup: 'polkadot' | 'kusama' } & (ChainConfigRelaychain | ChainConfigParachain) export type ChainConfig< diff --git a/scripts/update-env.ts b/scripts/update-env.ts index ca79e9862..0e6c728e5 100644 --- a/scripts/update-env.ts +++ b/scripts/update-env.ts @@ -12,12 +12,15 @@ import * as chains from '@e2e-test/networks/chains' import { ApiPromise, HttpProvider, WsProvider } from '@polkadot/api' const isUpdateKnownGood = process.argv.includes('--update-known-good') -const envFile = isUpdateKnownGood ? 'KNOWN_GOOD_BLOCK_NUMBERS.env' : '.env' -const envPath = path.resolve(dirname(__filename), '../', envFile) -const readEnvFile = () => { +const getEnvPath = (networkGroup?: 'polkadot' | 'kusama') => { + const envFile = isUpdateKnownGood ? `KNOWN_GOOD_BLOCK_NUMBERS_${networkGroup?.toUpperCase()}.env` : '.env' + return path.resolve(dirname(__filename), '../', envFile) +} + +const readEnvFile = (networkGroup?: 'polkadot' | 'kusama') => { try { - return fs.readFileSync(envPath, 'utf8').toString() + return fs.readFileSync(getEnvPath(networkGroup), 'utf8').toString() } catch (_err) { return '' } @@ -26,57 +29,104 @@ const readEnvFile = () => { const main = async () => { await cryptoWaitReady() - const envFileContent = readEnvFile() - const currentEnv = dotenv.parse(envFileContent) - - const blockNumberPromises = Object.entries(chains).map(async ([name, chain]) => { - const fetchBlockNumber = async () => { - const api = await ApiPromise.create({ - provider: - Array.isArray(chain.endpoint) || chain.endpoint.startsWith('ws') - ? new WsProvider(chain.endpoint) - : new HttpProvider(chain.endpoint), - noInitWarn: true, - }) - try { - const header = await api.rpc.chain.getHeader() - const blockNumber = header.number.toNumber() - return `${name.toUpperCase()}_BLOCK_NUMBER=${blockNumber}` - } finally { - await api.disconnect() - } - } + if (isUpdateKnownGood) { + for (const networkGroup of ['polkadot', 'kusama'] as const) { + const envFileContent = readEnvFile(networkGroup) + const currentEnv = dotenv.parse(envFileContent) - const timeout = new Promise((_, reject) => - setTimeout(() => reject(new Error(`Timeout fetching block number for ${name}`)), 60000), - ) - - try { - return await Promise.race([fetchBlockNumber(), timeout]) - } catch (error: any) { - console.error(`Failed to fetch block number for ${name}: ${error.message}`) - const fallback = currentEnv[`${name.toUpperCase()}_BLOCK_NUMBER`] - if (fallback) { - console.log(`Using fallback for ${name}: ${fallback}`) - return `${name.toUpperCase()}_BLOCK_NUMBER=${fallback}` - } - return null - } - }) + const chainsInGroup = Object.entries(chains).filter(([, chain]) => chain.networkGroup === networkGroup) - const results = await Promise.all(blockNumberPromises) - const newBlockNumbers = results.filter((x): x is string => x !== null).join('\n') + const blockNumberPromises = chainsInGroup.map(async ([name, chain]) => { + const fetchBlockNumber = async () => { + const api = await ApiPromise.create({ + provider: + Array.isArray(chain.endpoint) || chain.endpoint.startsWith('ws') + ? new WsProvider(chain.endpoint) + : new HttpProvider(chain.endpoint), + noInitWarn: true, + }) + try { + const header = await api.rpc.chain.getHeader() + const blockNumber = header.number.toNumber() + return `${name.toUpperCase()}_BLOCK_NUMBER=${blockNumber}` + } finally { + await api.disconnect() + } + } - let newEnvFileContent: string - if (isUpdateKnownGood) { - newEnvFileContent = `${newBlockNumbers}\n` + const timeout = new Promise((_, reject) => + setTimeout(() => reject(new Error(`Timeout fetching block number for ${name}`)), 60000), + ) + + try { + return await Promise.race([fetchBlockNumber(), timeout]) + } catch (error: any) { + console.error(`Failed to fetch block number for ${name}: ${error.message}`) + const fallback = currentEnv[`${name.toUpperCase()}_BLOCK_NUMBER`] + if (fallback) { + console.log(`Using fallback for ${name}: ${fallback}`) + return `${name.toUpperCase()}_BLOCK_NUMBER=${fallback}` + } + return null + } + }) + + const results = await Promise.all(blockNumberPromises) + const newBlockNumbers = results + .filter((x): x is string => x !== null) + .sort() + .join('\n') + + const newEnvFileContent = `${newBlockNumbers}\n` + console.log(`Updated ${networkGroup} block numbers:\n${newBlockNumbers}`) + fs.writeFileSync(getEnvPath(networkGroup), newEnvFileContent) + } } else { + // Local development: create a single .env file + const envFileContent = readEnvFile() + const currentEnv = dotenv.parse(envFileContent) + const blockNumberPromises = Object.entries(chains).map(async ([name, chain]) => { + const fetchBlockNumber = async () => { + const api = await ApiPromise.create({ + provider: + Array.isArray(chain.endpoint) || chain.endpoint.startsWith('ws') + ? new WsProvider(chain.endpoint) + : new HttpProvider(chain.endpoint), + noInitWarn: true, + }) + try { + const header = await api.rpc.chain.getHeader() + const blockNumber = header.number.toNumber() + return `${name.toUpperCase()}_BLOCK_NUMBER=${blockNumber}` + } finally { + await api.disconnect() + } + } + const timeout = new Promise((_, reject) => + setTimeout(() => reject(new Error(`Timeout fetching block number for ${name}`)), 60000), + ) + try { + return await Promise.race([fetchBlockNumber(), timeout]) + } catch (error: any) { + console.error(`Failed to fetch block number for ${name}: ${error.message}`) + const fallback = currentEnv[`${name.toUpperCase()}_BLOCK_NUMBER`] + if (fallback) { + console.log(`Using fallback for ${name}: ${fallback}`) + return `${name.toUpperCase()}_BLOCK_NUMBER=${fallback}` + } + return null + } + }) + const results = await Promise.all(blockNumberPromises) + const newBlockNumbers = results + .filter((x): x is string => x !== null) + .sort() + .join('\n') const commentedOldContent = envFileContent.replaceAll(/(^[A-Z0-9]+_BLOCK_NUMBER=\d+)/gm, '# $1') - newEnvFileContent = `${newBlockNumbers}\n\n${commentedOldContent}` + const newEnvFileContent = `${newBlockNumbers}\n\n${commentedOldContent}` + console.log(newBlockNumbers) + fs.writeFileSync(getEnvPath(), newEnvFileContent) } - - console.log(newBlockNumbers) - fs.writeFileSync(envPath, newEnvFileContent) } main() diff --git a/vitest.config.mts b/vitest.config.mts index b4efd073e..50f69d680 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -6,7 +6,8 @@ import swc from 'unplugin-swc' import tsconfigPaths from 'vite-tsconfig-paths' dotenv.config() -dotenv.config({ path: resolve(__dirname, 'KNOWN_GOOD_BLOCK_NUMBERS.env') }) +dotenv.config({ path: resolve(__dirname, 'KNOWN_GOOD_BLOCK_NUMBERS_KUSAMA.env') }) +dotenv.config({ path: resolve(__dirname, 'KNOWN_GOOD_BLOCK_NUMBERS_POLKADOT.env') }) if (process.env.LOG_LEVEL === undefined) { process.env.LOG_LEVEL = 'error' }