Skip to content

Commit 1b0132b

Browse files
authored
Ts cli support mega (#242)
* add megaeth * add megaeth * add megaeth
1 parent bb72a8b commit 1b0132b

File tree

8 files changed

+81
-4
lines changed

8 files changed

+81
-4
lines changed

cli-typescript/src/cmds/mainMenu.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
berachain,
1010
bsc,
1111
eth,
12+
megaeth,
1213
monad,
1314
polygon,
1415
sei,
@@ -35,6 +36,7 @@ export const mainMenu = async () => {
3536
program.addCommand(arbitrum);
3637
program.addCommand(abstract);
3738
program.addCommand(avalanche);
39+
program.addCommand(megaeth);
3840
program.addCommand(monad);
3941

4042
await program.parseAsync(process.argv);

cli-typescript/src/cmds/networks/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import base from './base';
66
import berachain from './berachain';
77
import bsc from './bsc';
88
import eth from './eth';
9+
import megaeth from './megaeth';
910
import monad from './monad';
1011
import polygon from './polygon';
1112
import sei from './sei';
@@ -19,6 +20,7 @@ export {
1920
berachain,
2021
bsc,
2122
eth,
23+
megaeth,
2224
monad,
2325
polygon,
2426
sei,
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { SUPPORTED_CHAINS } from '../../utils/constants';
2+
import { createEvmCommand } from '../createCommand';
3+
import { EvmPlatform } from '../../utils/evmUtils';
4+
import { getSymbolFromChainId } from '../../utils/getters';
5+
6+
// Supported chain names
7+
export enum MegaETHChains {
8+
MAINNET = 'mainnet',
9+
}
10+
11+
// Chain ids by the chain names
12+
export const megaethChainIdsByName = new Map([
13+
[MegaETHChains.MAINNET, SUPPORTED_CHAINS.MEGAETH],
14+
]);
15+
16+
const megaethPlatform = new EvmPlatform(
17+
'MegaETH',
18+
getSymbolFromChainId(SUPPORTED_CHAINS.MEGAETH),
19+
megaethChainIdsByName,
20+
MegaETHChains.MAINNET,
21+
);
22+
23+
export const megaeth = createEvmCommand({
24+
platform: megaethPlatform,
25+
commandAliases: [
26+
getSymbolFromChainId(SUPPORTED_CHAINS.MEGAETH).toLowerCase(),
27+
'mega',
28+
],
29+
});
30+
31+
export default megaeth;

cli-typescript/src/utils/constants.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ export const MONAD_FACTORY_ADDRESS =
4343
'0x00000000bEa935F8315156894Aa4a45D3c7a0075';
4444
export const DEFAULT_FACTORY_ADDRESS =
4545
'0x000000009e44eBa131196847C685F20Cd4b68aC4';
46+
export const MEGAETH_FACTORY_ADDRESS =
47+
'0x00000000bEa935F8315156894Aa4a45D3c7a0075';
4648

4749
export const ABSTRACT_REGISTRY_ADDRESS =
4850
'0x9b60ad31F145ec7EE3c559153bB57928B65C0F87';
@@ -52,6 +54,8 @@ export const MONAD_REGISTRY_ADDRESS =
5254
'0x000000000e447e71b2EC36CD62048Dd2a1Cd0a57';
5355
export const DEFAULT_REGISTRY_ADDRESS =
5456
'0x00000000caF1E3978e291c5Fb53FeedB957eC146';
57+
export const MEGAETH_REGISTRY_ADDRESS =
58+
'0x000000000e447e71b2EC36CD62048Dd2a1Cd0a57';
5559

5660
export const ICREATOR_TOKEN_INTERFACE_ID = '0xad0d7f6c'; // type(ICreatorToken).interfaceId
5761
export const TRUE_HEX =
@@ -83,6 +87,7 @@ export enum SUPPORTED_CHAINS {
8387
ABSTRACT = 2741,
8488
BERACHAIN = 80094,
8589
MONAD = 143,
90+
MEGAETH = 4326,
8691
}
8792

8893
export const supportedChainNames: { [key in SUPPORTED_CHAINS]: string } = {
@@ -98,6 +103,7 @@ export const supportedChainNames: { [key in SUPPORTED_CHAINS]: string } = {
98103
[SUPPORTED_CHAINS.ABSTRACT]: 'abstract',
99104
[SUPPORTED_CHAINS.BERACHAIN]: 'berachain',
100105
[SUPPORTED_CHAINS.MONAD]: 'monad',
106+
[SUPPORTED_CHAINS.MEGAETH]: 'megaeth',
101107
};
102108

103109
export const rpcUrls: { [chainId in SUPPORTED_CHAINS]: string } = {
@@ -123,6 +129,8 @@ export const rpcUrls: { [chainId in SUPPORTED_CHAINS]: string } = {
123129
'https://evm-router.magiceden.io/monad/mainnet/me2024', // Monad
124130
[SUPPORTED_CHAINS.AVALANCHE]:
125131
'https://evm-router.magiceden.io/avalanche/mainnet/me2024', // Avalanche
132+
[SUPPORTED_CHAINS.MEGAETH]:
133+
'https://evm-router.magiceden.io/megaeth/mainnet/me2024', // MegaETH
126134
};
127135

128136
export const explorerUrls: { [chainId in SUPPORTED_CHAINS]: string } = {
@@ -138,6 +146,7 @@ export const explorerUrls: { [chainId in SUPPORTED_CHAINS]: string } = {
138146
[SUPPORTED_CHAINS.BERACHAIN]: 'https://berascan.com', // Berachain
139147
[SUPPORTED_CHAINS.MONAD]: 'https://monadvision.com', // Monad
140148
[SUPPORTED_CHAINS.AVALANCHE]: 'https://snowtrace.io', // Avalanche
149+
[SUPPORTED_CHAINS.MEGAETH]: 'https://TBD', // MegaETH
141150
};
142151

143152
export const DEFAULT_TOKEN_URI_SUFFIX = '.json';

cli-typescript/src/utils/getters.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import {
1919
ME_TRANSFER_VALIDATOR_V3,
2020
MONAD_FACTORY_ADDRESS,
2121
MONAD_REGISTRY_ADDRESS,
22+
MEGAETH_FACTORY_ADDRESS,
23+
MEGAETH_REGISTRY_ADDRESS,
2224
SUPPORTED_CHAINS,
2325
supportedChainNames,
2426
TOKEN_STANDARD,
@@ -40,6 +42,21 @@ import {
4042
} from 'viem/chains';
4143
import { Hex } from 'viem';
4244
import { setBaseDir } from './setters';
45+
import { defineChain } from 'viem';
46+
47+
export const megaeth = defineChain({
48+
id: 4326,
49+
name: 'MegaETH',
50+
nativeCurrency: { name: 'MEGA', symbol: 'MEGA', decimals: 18 },
51+
rpcUrls: {
52+
default: {
53+
http: ['https://evm-router.magiceden.io/megaeth/mainnet/me2024'],
54+
},
55+
},
56+
blockExplorers: {
57+
default: { name: 'MegaETH Explorer', url: 'https://TBD' },
58+
},
59+
});
4360

4461
/**
4562
* Retrieves the transfer validator address based on the network (chain ID).
@@ -65,6 +82,7 @@ export const getTransferValidatorAddress = (chainId: SUPPORTED_CHAINS): Hex => {
6582
return LIMITBREAK_TRANSFER_VALIDATOR_V3_BERACHAIN;
6683

6784
case SUPPORTED_CHAINS.MONAD:
85+
case SUPPORTED_CHAINS.MEGAETH:
6886
return LIMITBREAK_TRANSFER_VALIDATOR_V5;
6987

7088
default:
@@ -115,6 +133,8 @@ export const getSymbolFromChainId = (chainId: SUPPORTED_CHAINS): string => {
115133
return 'MON';
116134
case SUPPORTED_CHAINS.AVALANCHE:
117135
return 'AVAX';
136+
case SUPPORTED_CHAINS.MEGAETH:
137+
return 'MEGA';
118138
default:
119139
return 'Unknown';
120140
}
@@ -166,14 +186,12 @@ export const getViemChainByChainId = (chainId: SUPPORTED_CHAINS) => {
166186
return berachain;
167187
case SUPPORTED_CHAINS.SEPOLIA:
168188
return sepolia;
169-
case SUPPORTED_CHAINS.ARBITRUM:
170-
return arbitrum;
171189
case SUPPORTED_CHAINS.ABSTRACT:
172190
return abstract;
173191
case SUPPORTED_CHAINS.MONAD:
174192
return monad;
175-
case SUPPORTED_CHAINS.AVALANCHE:
176-
return avalanche;
193+
case SUPPORTED_CHAINS.MEGAETH:
194+
return megaeth;
177195
default:
178196
throw new Error(`Unsupported chain ID: ${chainId}`);
179197
}
@@ -257,6 +275,10 @@ export const getFactoryAddress = (chainId: SUPPORTED_CHAINS): `0x${string}` => {
257275
return MONAD_FACTORY_ADDRESS;
258276
}
259277

278+
if (chainId === SUPPORTED_CHAINS.MEGAETH) {
279+
return MEGAETH_FACTORY_ADDRESS;
280+
}
281+
260282
return DEFAULT_FACTORY_ADDRESS;
261283
};
262284

@@ -275,6 +297,10 @@ export const getRegistryAddress = (
275297
return MONAD_REGISTRY_ADDRESS;
276298
}
277299

300+
if (chainId === SUPPORTED_CHAINS.MEGAETH) {
301+
return MEGAETH_REGISTRY_ADDRESS;
302+
}
303+
278304
return DEFAULT_REGISTRY_ADDRESS;
279305
};
280306

@@ -306,6 +332,7 @@ export const getImplId = (
306332
case SUPPORTED_CHAINS.AVALANCHE:
307333
return 6;
308334
case SUPPORTED_CHAINS.MONAD:
335+
case SUPPORTED_CHAINS.MEGAETH:
309336
return 2;
310337
default:
311338
return 8;

cli/cmds/utils

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ set_rpc_url() {
1818
80094) RPC_URL="https://rpc.berachain.com" ;; # Berachain
1919
43114) RPC_URL="https://api.avax.network/ext/bc/C/rpc" ;; # Avalanche
2020
143) RPC_URL="https://evm-router.magiceden.io/monad/mainnet/me2024" ;; # Monad
21+
4326) RPC_URL="https://evm-router.magiceden.io/megaeth/mainnet/me2024" ;; # MegaETH
2122
*) echo "Unsupported chain id"; exit 1 ;;
2223
esac
2324

@@ -40,6 +41,7 @@ chain_id_to_symbol() {
4041
10143) echo "MON" ;;
4142
43114) echo "AVAX" ;;
4243
143) echo "MON" ;;
44+
4326) echo "MEGA" ;;
4345
*) echo "Unknown" ;;
4446
esac
4547
}
@@ -60,6 +62,7 @@ chain_id_to_explorer_url() {
6062
10143) echo "https://testnet.monadexplorer.com" ;;
6163
43114) echo "https://snowtrace.io" ;;
6264
143) echo "https://monadvision.com" ;;
65+
4326) echo "https://TBD" ;;
6366
*) echo "Unknown" ;;
6467
esac
6568
}

foundry.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ berachain = {key = "${VERIFICATION_API_KEY_BERACHAIN}", chain = 80094, url = "ht
1919
abstract = {key = "${VERIFICATION_API_KEY_ABSTRACT}", chain = 2741, url = "https://api.abscan.org/api"}
2020
avalanche = {key = "${VERIFICATION_API_KEY_AVALANCHE}", chain = 43114, url = "https://api.routescan.io/v2/network/mainnet/evm/43114/etherscan"}
2121
monad = {key = "${VERIFICATION_API_KEY_MONAD}", chain = 143, url = "https://sourcify-api-monad.blockvision.org"}
22+
megaeth = {key = "${VERIFICATION_API_KEY_MEGAETH}", chain = 4326, url = "https://TBD"}

scripts-foundry/common/utils

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ set_rpc_url() {
1414
80094) RPC_URL="https://rpc.berachain.com" ;; # Berachain
1515
2741) RPC_URL="https://api.mainnet.abs.xyz" ;; # Abstract
1616
143) RPC_URL="https://evm-router.magiceden.io/monad/mainnet/me2024" ;; # Monad
17+
4326) RPC_URL="https://evm-router.magiceden.io/megaeth/mainnet/me2024" ;; # MegaETH
1718
*) echo "Unsupported chain id"; exit 1 ;;
1819
esac
1920

@@ -35,6 +36,7 @@ set_etherscan_api_key() {
3536
2741) ETHERSCAN_API_KEY=$VERIFICATION_API_KEY_ABSTRACT ;;
3637
43114) ETHERSCAN_API_KEY=$VERIFICATION_API_KEY_AVALANCHE ;;
3738
143) ETHERSCAN_API_KEY=$VERIFICATION_API_KEY_MONAD ;;
39+
4326) ETHERSCAN_API_KEY=$VERIFICATION_API_KEY_MEGAETH ;; # MegaETH
3840
*) echo "Unsupported chain id"; exit 1 ;;
3941
esac
4042

0 commit comments

Comments
 (0)