| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /// 与 Web `evmRecharge.ts` 对齐:根据 protocol / networkName 解析 EVM chainId。
- int? resolveEvmChainId(String protocol, String networkName) {
- final p = protocol.toLowerCase().trim();
- final n = networkName.toLowerCase().trim();
- if (p.contains('tron') || n == 'trc20') {
- return null;
- }
- if (n == 'bep20' || p.contains('bsc') || p.contains('bnb')) {
- return 56;
- }
- if ((n == 'erc20' || n == 'erc-20') && p.contains('arbitrum')) {
- return 42161;
- }
- if ((n == 'erc20' || n == 'erc-20') &&
- (p.contains('polygon') || p.contains('matic'))) {
- return 137;
- }
- if ((n == 'erc20' || n == 'erc-20') && p.contains('base')) {
- return 8453;
- }
- if ((n == 'erc20' || n == 'erc-20') && p.contains('optimism')) {
- return 10;
- }
- if (n == 'erc20' || n == 'erc-20' || p.contains('ethereum') || p == 'eth') {
- return 1;
- }
- if (p.contains('polygon') || p.contains('matic')) {
- return 137;
- }
- if (p.contains('arbitrum')) {
- return 42161;
- }
- if (p.contains('base')) {
- return 8453;
- }
- if (p.contains('optimism')) {
- return 10;
- }
- return null;
- }
- /// USDT 精度:主网 6,其它常见链 18(与 Web 一致)。
- int erc20DecimalsForChain(int chainId) {
- if (chainId == 1) {
- return 6;
- }
- return 18;
- }
- String chainIdToCaip2(int chainId) => 'eip155:$chainId';
- String chainIdHex(int chainId) => '0x${chainId.toRadixString(16)}';
|