From f370ca396fe33716dd43431b9b8a95317c9cbdf9 Mon Sep 17 00:00:00 2001 From: Fernando Paredes Garcia Date: Fri, 17 Jan 2025 17:13:38 -0500 Subject: [PATCH 01/11] Update Syscoin and Rollux integration. --- README.md | 2 +- .../providers/etherscan/configs.ts | 4 +- .../libs/assets-handlers/assetinfo-mew.ts | 9 ++- .../libs/assets-handlers/blockscout.ts | 80 +++++++++++++++++++ .../libs/assets-handlers/token-lists.ts | 2 + .../assets-handlers/types/tokenbalance-mew.ts | 5 +- .../src/providers/ethereum/networks/index.ts | 12 +-- .../src/providers/ethereum/networks/sys.ts | 26 ------ .../ethereum/networks/syscoin/nevm-testnet.ts | 24 ++++++ .../ethereum/networks/syscoin/nevm.ts | 28 +++++++ .../{trlx.ts => syscoin/rollux-testnet.ts} | 6 +- .../networks/{rlx.ts => syscoin/rollux.ts} | 7 +- .../src/providers/ethereum/networks/tsys.ts | 24 ------ packages/types/src/networks.ts | 4 +- 14 files changed, 164 insertions(+), 69 deletions(-) create mode 100644 packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts delete mode 100644 packages/extension/src/providers/ethereum/networks/sys.ts create mode 100644 packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts create mode 100644 packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts rename packages/extension/src/providers/ethereum/networks/{trlx.ts => syscoin/rollux-testnet.ts} (79%) rename packages/extension/src/providers/ethereum/networks/{rlx.ts => syscoin/rollux.ts} (76%) delete mode 100644 packages/extension/src/providers/ethereum/networks/tsys.ts diff --git a/README.md b/README.md index 43c3415c9..bd39c7fec 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Enkrypt is a web3 wallet built from the ground up to support the multi-chain fut - Shiden - Shiden EVM - Sepolia -- Syscoin +- Syscoin NEVM - Telos EVM - Unique - Vara Network diff --git a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts index aca1303eb..5f2513a98 100644 --- a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts +++ b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts @@ -51,8 +51,8 @@ const NetworkEndpoints: Record = { [NetworkNames.FormTestnet]: 'https://testnet-explorer.form.network/', [NetworkNames.ArtheraTest]: 'https://explorer-test.arthera.net/', [NetworkNames.Arthera]: 'https://explorer.arthera.net/', - [NetworkNames.SyscoinTest]: 'https://tanenbaum.io/', - [NetworkNames.Syscoin]: 'https://explorer.syscoin.org/', + [NetworkNames.SyscoinNEVMTest]: 'https://explorer.tanenbaum.io/', + [NetworkNames.SyscoinNEVM]: 'https://explorer.syscoin.org/', [NetworkNames.RolluxTest]: 'https://rollux.tanenbaum.io/', [NetworkNames.Rollux]: 'https://explorer.rollux.com/', [NetworkNames.Blast]: 'https://api.blastscan.io/', diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts index 5ff6cc7e1..666437094 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts @@ -20,6 +20,7 @@ import { EvmNetwork } from '../../types/evm-network'; import { getKnownNetworkTokens } from './token-lists'; import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { NATIVE_TOKEN_ADDRESS } from '../common'; +import getBlockscoutBalances from "./blockscout"; import getTomoBalances from './tomochain'; import getSolBalances from './solanachain'; import { CoinGeckoTokenMarket } from '@/libs/market-data/types'; @@ -120,9 +121,13 @@ const supportedNetworks: Record = { tbName: 'shib', cgPlatform: CoingeckoPlatform.Shibarium, }, + [NetworkNames.SyscoinNEVM]: { + cgPlatform: CoingeckoPlatform.Syscoin, + bsEndpoint: true, + }, [NetworkNames.Rollux]: { - tbName: 'rollux', cgPlatform: CoingeckoPlatform.Rollux, + bsEndpoint: true, }, [NetworkNames.Telos]: { tbName: 'tlos', @@ -191,6 +196,8 @@ const getTokens = ( return getTomoBalances(chain, address); } else if (chain === NetworkNames.Solana) { return getSolBalances(network, address); + } else if (supportedNetworks[chain].bsEndpoint) { + return getBlockscoutBalances(chain, address); } let url = ''; if (chain === NetworkNames.Ethereum || chain === NetworkNames.Binance) diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts new file mode 100644 index 000000000..9259a1996 --- /dev/null +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts @@ -0,0 +1,80 @@ +import { SupportedNetworkNames, TokenBalance } from "./types/tokenbalance-mew"; +import { NetworkEndpoints } from "@/providers/ethereum/libs/activity-handlers/providers/etherscan/configs"; +import { NATIVE_TOKEN_ADDRESS } from "../common"; +import { numberToHex } from "web3-utils"; + +interface TokenBalanceType { + token: string; + quantity: string; + error?: unknown; +} + +interface TokenResponseItem { + token: { + address: string; + decimals: string; + name: string; + symbol: string; + }; + value: string; +} + +interface TokenResponse { + items: TokenResponseItem[]; +} + +const getBlockscoutBalances = ( + chain: SupportedNetworkNames, + address: string +): Promise => { + const nativeTokenUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${address}`; + const tokenBalancesUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${address}/tokens?type=ERC-20`; + + return Promise.all([ + fetch(nativeTokenUrl).then((res) => res.json()), + fetch(tokenBalancesUrl).then((res) => res.json()), + ]) + .then(([nativeResponse, tokenResponse]: [any, TokenResponse]) => { + if (!nativeResponse || !tokenResponse) { + return Promise.reject("Error fetching balance data"); + } + + // Map native token balance + const nativeBalance: TokenBalanceType = { + token: NATIVE_TOKEN_ADDRESS, + quantity: nativeResponse.coin_balance, + }; + + // Map token balances + const tokenBalances: TokenBalanceType[] = Array.isArray( + tokenResponse?.items + ) + ? tokenResponse.items + .filter( + (item) => + item?.token?.address && + typeof item.token.address === "string" && + item.value !== undefined + ) + .map((item) => ({ + token: item.token.address.toLowerCase(), + quantity: item.value, + })) + : []; + + // Merge native token and token balances + const allBalances = [nativeBalance, ...tokenBalances]; + + // Convert to TokenBalance format + return allBalances.map((tb) => ({ + contract: tb.token, + balance: numberToHex(tb.quantity), // Convert to hex format + })); + }) + .catch((error) => { + console.error("Error fetching balances:", error); + throw error; + }); +}; + +export default getBlockscoutBalances; diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts index 82e3abfd0..2ccd4527a 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts @@ -3,6 +3,8 @@ import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { CGToken, SupportedNetworkNames } from './types/tokenbalance-mew'; const TOKEN_FETCH_TTL = 1000 * 60 * 60; const TokenList: Record = { + [NetworkNames.SyscoinNEVM]: `https://tokens.coingecko.com/${CoingeckoPlatform.Syscoin}/all.json`, + [NetworkNames.Rollux]: `https://tokens.coingecko.com/${CoingeckoPlatform.Rollux}/all.json`, [NetworkNames.Binance]: `https://tokens.coingecko.com/${CoingeckoPlatform.Binance}/all.json`, [NetworkNames.Ethereum]: `https://tokens.coingecko.com/${CoingeckoPlatform.Ethereum}/all.json`, [NetworkNames.Matic]: `https://tokens.coingecko.com/${CoingeckoPlatform.Matic}/all.json`, diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts index 557141bec..4eef5eb16 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts @@ -5,8 +5,9 @@ export interface TokenBalance { balance: string; } export interface SupportedNetwork { - tbName: string; + tbName?: string; cgPlatform?: string; + bsEndpoint?: boolean; } export interface CGToken { chainId: `0x${string}`; @@ -26,6 +27,8 @@ export interface ZkSyncBalanceType { } export type SupportedNetworkNames = + | NetworkNames.SyscoinNEVM + | NetworkNames.Rollux | NetworkNames.Binance | NetworkNames.Ethereum | NetworkNames.Matic diff --git a/packages/extension/src/providers/ethereum/networks/index.ts b/packages/extension/src/providers/ethereum/networks/index.ts index 8a5a6f8d1..261bec0a3 100755 --- a/packages/extension/src/providers/ethereum/networks/index.ts +++ b/packages/extension/src/providers/ethereum/networks/index.ts @@ -34,10 +34,10 @@ import shibNode from './shib'; import artheraNode from './aa'; import formTestnet from './form-testnet'; import artheraTestNode from './aat'; -import syscoinTestNode from './tsys'; -import syscoinNode from './sys'; -import rolluxTestNode from './trlx'; -import rolluxNode from './rlx'; +import syscoinNEVMTestNode from './syscoin/nevm-testnet'; +import syscoinNEVMNode from './syscoin/nevm'; +import rolluxTestNode from './syscoin/rollux-testnet'; +import rolluxNode from './syscoin/rollux'; import cagaAnkara from './cagaAnkara'; import telosNode from './tlos'; import blastNode from './blast'; @@ -108,8 +108,8 @@ export default { arthera: artheraNode, formTestnet: formTestnet, artheraTest: artheraTestNode, - syscoinTest: syscoinTestNode, - syscoin: syscoinNode, + syscoinNEVMTest: syscoinNEVMTestNode, + syscoinNEVM: syscoinNEVMNode, rolluxTest: rolluxTestNode, rollux: rolluxNode, cagaAnkara: cagaAnkara, diff --git a/packages/extension/src/providers/ethereum/networks/sys.ts b/packages/extension/src/providers/ethereum/networks/sys.ts deleted file mode 100644 index 40a60de35..000000000 --- a/packages/extension/src/providers/ethereum/networks/sys.ts +++ /dev/null @@ -1,26 +0,0 @@ -import icon from './icons/sys_nevm.svg'; -import { NetworkNames, CoingeckoPlatform } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; - -const syscoinOptions: EvmNetworkOptions = { - name: NetworkNames.Syscoin, - name_long: 'Syscoin NEVM', - homePage: 'https://www.syscoin.org/', - blockExplorerTX: 'https://explorer.syscoin.org/tx/[[txHash]]', - blockExplorerAddr: 'https://explorer.syscoin.org/address/[[address]]', - chainID: '0x39', - isTestNetwork: false, - currencyName: 'SYS', - currencyNameLong: 'Syscoin', - node: 'wss://rpc.syscoin.org/wss', - icon, - coingeckoID: 'syscoin', - coingeckoPlatform: CoingeckoPlatform.Syscoin, - activityHandler: wrapActivityHandler(EtherscanActivity), -}; - -const syscoin = new EvmNetwork(syscoinOptions); - -export default syscoin; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts new file mode 100644 index 000000000..cd7338261 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts @@ -0,0 +1,24 @@ +import icon from '../icons/tsys_nevm.svg'; +import { NetworkNames } from '@enkryptcom/types'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import { EtherscanActivity } from '../../libs/activity-handlers'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; + +const syscoinNEVMTestOptions: EvmNetworkOptions = { + name: NetworkNames.SyscoinNEVMTest, + name_long: 'Syscoin NEVM Testnet', + homePage: 'https://www.syscoin.org/', + blockExplorerTX: 'https://explorer.tanenbaum.io/tx/[[txHash]]', + blockExplorerAddr: 'https://explorer.tanenbaum.io/address/[[address]]', + chainID: '0x1644', + isTestNetwork: true, + currencyName: 'TSYS', + currencyNameLong: 'Test Syscoin', + node: 'wss://rpc.tanenbaum.io/wss', + icon, + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const syscoinNEVMTest = new EvmNetwork(syscoinNEVMTestOptions); + +export default syscoinNEVMTest; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts new file mode 100644 index 000000000..3f41f4e63 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts @@ -0,0 +1,28 @@ +import icon from '../icons/sys_nevm.svg'; +import { CoingeckoPlatform, NetworkNames } from "@enkryptcom/types"; +import { EvmNetwork, EvmNetworkOptions } from "../../types/evm-network"; +import assetsInfoHandler from "@/providers/ethereum/libs/assets-handlers/assetinfo-mew"; +import { EtherscanActivity } from "../../libs/activity-handlers"; +import wrapActivityHandler from "@/libs/activity-state/wrap-activity-handler"; + +const syscoinNEVMOptions: EvmNetworkOptions = { + name: NetworkNames.SyscoinNEVM, + name_long: "Syscoin NEVM", + homePage: "https://www.syscoin.org/", + blockExplorerTX: "https://explorer.syscoin.org/tx/[[txHash]]", + blockExplorerAddr: "https://explorer.syscoin.org/address/[[address]]", + chainID: "0x39", + isTestNetwork: false, + currencyName: "SYS", + currencyNameLong: "Syscoin", + node: "wss://rpc.syscoin.org/wss", + coingeckoID: "syscoin", + coingeckoPlatform: CoingeckoPlatform.Syscoin, + icon, + assetsInfoHandler, + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const syscoinNEVM = new EvmNetwork(syscoinNEVMOptions); + +export default syscoinNEVM; diff --git a/packages/extension/src/providers/ethereum/networks/trlx.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts similarity index 79% rename from packages/extension/src/providers/ethereum/networks/trlx.ts rename to packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts index 4ba7d93d6..0f557b2b5 100644 --- a/packages/extension/src/providers/ethereum/networks/trlx.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts @@ -1,7 +1,7 @@ -import icon from './icons/tsys_rollux.svg'; +import icon from '../icons/tsys_rollux.svg'; import { NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import { EtherscanActivity } from '../../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; const rolluxTestOptions: EvmNetworkOptions = { diff --git a/packages/extension/src/providers/ethereum/networks/rlx.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts similarity index 76% rename from packages/extension/src/providers/ethereum/networks/rlx.ts rename to packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts index 234d4953d..612b7c4e9 100644 --- a/packages/extension/src/providers/ethereum/networks/rlx.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts @@ -1,7 +1,8 @@ -import icon from './icons/sys_rollux.svg'; +import icon from '../icons/sys_rollux.svg'; import { NetworkNames, CoingeckoPlatform } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import assetsInfoHandler from "@/providers/ethereum/libs/assets-handlers/assetinfo-mew"; +import { EtherscanActivity } from '../../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; diff --git a/packages/extension/src/providers/ethereum/networks/tsys.ts b/packages/extension/src/providers/ethereum/networks/tsys.ts deleted file mode 100644 index 85c7beab6..000000000 --- a/packages/extension/src/providers/ethereum/networks/tsys.ts +++ /dev/null @@ -1,24 +0,0 @@ -import icon from './icons/tsys_nevm.svg'; -import { NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; - -const syscoinTestOptions: EvmNetworkOptions = { - name: NetworkNames.SyscoinTest, - name_long: 'Syscoin NEVM Testnet', - homePage: 'https://www.syscoin.org/', - blockExplorerTX: 'https://tanenbaum.io/tx/[[txHash]]', - blockExplorerAddr: 'https://tanenbaum.io/address/[[address]]', - chainID: '0x1644', - isTestNetwork: true, - currencyName: 'TSYS', - currencyNameLong: 'Test Syscoin', - node: 'wss://rpc.tanenbaum.io/wss', - icon, - activityHandler: wrapActivityHandler(EtherscanActivity), -}; - -const syscoinTest = new EvmNetwork(syscoinTestOptions); - -export default syscoinTest; diff --git a/packages/types/src/networks.ts b/packages/types/src/networks.ts index a93524fa2..99065f34f 100755 --- a/packages/types/src/networks.ts +++ b/packages/types/src/networks.ts @@ -68,8 +68,8 @@ export enum NetworkNames { FormTestnet = "FormTestnet", AssetHubDOT = "AssetHubDOT", AssetHubKSM = "AssetHubKSM", - SyscoinTest = "TSYS", - Syscoin = "SYS", + SyscoinNEVMTest = "TSYS", + SyscoinNEVM = "SYS", RolluxTest = "TRLX", Rollux = "RLX", CagaAnkara = "CagaAnkara", From 0b8b607343b61e1c69a272f570d4ef9e078d4184 Mon Sep 17 00:00:00 2001 From: Fernando Paredes Garcia Date: Mon, 20 Jan 2025 15:11:00 -0500 Subject: [PATCH 02/11] Remove duplicates and improve error handling of blockscout client. --- .../providers/ethereum/libs/assets-handlers/blockscout.ts | 6 +++++- .../ethereum/libs/assets-handlers/types/tokenbalance-mew.ts | 3 +-- .../src/providers/ethereum/networks/syscoin/rollux.ts | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts index 9259a1996..1eff55094 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts @@ -35,10 +35,14 @@ const getBlockscoutBalances = ( fetch(tokenBalancesUrl).then((res) => res.json()), ]) .then(([nativeResponse, tokenResponse]: [any, TokenResponse]) => { - if (!nativeResponse || !tokenResponse) { + if (!nativeResponse?.coin_balance || !tokenResponse?.items) { return Promise.reject("Error fetching balance data"); } + if (isNaN(Number(nativeResponse.coin_balance))) { + return Promise.reject("Invalid native token balance"); + } + // Map native token balance const nativeBalance: TokenBalanceType = { token: NATIVE_TOKEN_ADDRESS, diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts index 4eef5eb16..6e24ff7a2 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts @@ -27,8 +27,6 @@ export interface ZkSyncBalanceType { } export type SupportedNetworkNames = - | NetworkNames.SyscoinNEVM - | NetworkNames.Rollux | NetworkNames.Binance | NetworkNames.Ethereum | NetworkNames.Matic @@ -53,6 +51,7 @@ export type SupportedNetworkNames = | NetworkNames.Celo | NetworkNames.ZkSync | NetworkNames.Telos + | NetworkNames.SyscoinNEVM | NetworkNames.Rollux | NetworkNames.Sanko | NetworkNames.Degen diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts index 612b7c4e9..213b1aadd 100644 --- a/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts @@ -4,7 +4,6 @@ import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; import assetsInfoHandler from "@/providers/ethereum/libs/assets-handlers/assetinfo-mew"; import { EtherscanActivity } from '../../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; -import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; const rolluxOptions: EvmNetworkOptions = { name: NetworkNames.Rollux, From 6c6360e1fd342ce2c840817be9937177a57a9a30 Mon Sep 17 00:00:00 2001 From: Fernando Paredes Garcia Date: Mon, 20 Jan 2025 15:18:12 -0500 Subject: [PATCH 03/11] Refactor blockscout client's address handler. --- .../providers/ethereum/libs/assets-handlers/blockscout.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts index 1eff55094..8dd95047b 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts @@ -27,8 +27,9 @@ const getBlockscoutBalances = ( chain: SupportedNetworkNames, address: string ): Promise => { - const nativeTokenUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${address}`; - const tokenBalancesUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${address}/tokens?type=ERC-20`; + const encodedAddress = encodeURIComponent(address); + const nativeTokenUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}`; + const tokenBalancesUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}/tokens?type=ERC-20`; return Promise.all([ fetch(nativeTokenUrl).then((res) => res.json()), @@ -39,7 +40,7 @@ const getBlockscoutBalances = ( return Promise.reject("Error fetching balance data"); } - if (isNaN(Number(nativeResponse.coin_balance))) { + if (Number.isNaN(Number(nativeResponse.coin_balance))) { return Promise.reject("Invalid native token balance"); } From 59e021b5fd29bc8e2b58be5f8a659250e59f11c6 Mon Sep 17 00:00:00 2001 From: dung5ire Date: Tue, 21 Jan 2025 14:31:40 +0700 Subject: [PATCH 04/11] feat: add 5ireChain Signed-off-by: dung5ire --- README.md | 1 + .../src/providers/ethereum/networks/5ire.ts | 31 +++++++++++++++++++ .../ethereum/networks/icons/5ire.svg | 3 ++ packages/types/src/networks.ts | 2 ++ 4 files changed, 37 insertions(+) create mode 100644 packages/extension/src/providers/ethereum/networks/5ire.ts create mode 100644 packages/extension/src/providers/ethereum/networks/icons/5ire.svg diff --git a/README.md b/README.md index 43c3415c9..7e5039ed3 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ Enkrypt is a web3 wallet built from the ground up to support the multi-chain fut - ZChains - zkSync - zkSync Goerli +- 5ireChain - More coming soon! Looking to add your project? [Contact us!](https://mewwallet.typeform.com/enkrypt-inquiry?typeform-source=www.enkrypt.com) diff --git a/packages/extension/src/providers/ethereum/networks/5ire.ts b/packages/extension/src/providers/ethereum/networks/5ire.ts new file mode 100644 index 000000000..f0930f4c5 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/5ire.ts @@ -0,0 +1,31 @@ +import icon from './icons/5ire.svg'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; +import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; +import { EtherscanActivity } from '../libs/activity-handlers'; +import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; +import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; + +const fireOptions: EvmNetworkOptions = { + name: NetworkNames.Fire, + name_long: '5ireChain', + homePage: 'https://www.5ire.org', + blockExplorerTX: 'https://5irescan.io/tx/[[txHash]]', + blockExplorerAddr: 'https://5irescan.io/address/[[address]]', + chainID: '0x3e3', + isTestNetwork: false, + currencyName: '5IRE', + currencyNameLong: '5ire', + node: 'https://rpc.5ire.network', + icon, + coingeckoID: '5ire', + coingeckoPlatform: CoingeckoPlatform.Fire, + assetsInfoHandler, + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const fire = new EvmNetwork(fireOptions); + +export default fire; + + + diff --git a/packages/extension/src/providers/ethereum/networks/icons/5ire.svg b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg new file mode 100644 index 000000000..21fd95d1d --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/types/src/networks.ts b/packages/types/src/networks.ts index a93524fa2..b4997920e 100755 --- a/packages/types/src/networks.ts +++ b/packages/types/src/networks.ts @@ -96,6 +96,7 @@ export enum NetworkNames { Holesky = "HOLESKY", Bitrock = "bitrock", Fraxtal = "fraxtal", + Fire = "5ire", } export enum CoingeckoPlatform { @@ -154,4 +155,5 @@ export enum CoingeckoPlatform { Scroll = "scroll", Bitrock = "bitrock", Fraxtal = "fraxtal", + Fire = "5ire", } From de523f0381c67364b74272724f35fccb7b127489 Mon Sep 17 00:00:00 2001 From: Fernando Paredes Garcia Date: Tue, 21 Jan 2025 12:10:13 -0500 Subject: [PATCH 05/11] Add links to faucet and on-ramp. --- .../ethereum/networks/syscoin/nevm-testnet.ts | 1 + .../ethereum/networks/syscoin/nevm.ts | 1 + .../networks/syscoin/rollux-testnet.ts | 1 + .../ethereum/networks/syscoin/rollux.ts | 1 + .../providers/ethereum/types/evm-network.ts | 2 ++ packages/extension/src/ui/action/App.vue | 21 +++++++++++++++---- 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts index cd7338261..254a541d5 100644 --- a/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts @@ -16,6 +16,7 @@ const syscoinNEVMTestOptions: EvmNetworkOptions = { currencyNameLong: 'Test Syscoin', node: 'wss://rpc.tanenbaum.io/wss', icon, + buyLink: 'https://faucet.syscoin.org', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts index 3f41f4e63..72901f021 100644 --- a/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts @@ -20,6 +20,7 @@ const syscoinNEVMOptions: EvmNetworkOptions = { coingeckoPlatform: CoingeckoPlatform.Syscoin, icon, assetsInfoHandler, + buyLink: 'https://trade.coinify.com/syscoin?defaultCryptoCurrency=SYSEVM&cryptoCurrencies=SYSROLLUX,SYSEVM,SYS&targetPage=buy', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts index 0f557b2b5..933f65ace 100644 --- a/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts @@ -16,6 +16,7 @@ const rolluxTestOptions: EvmNetworkOptions = { currencyNameLong: 'Test Syscoin', node: 'wss://rpc-tanenbaum.rollux.com/wss', icon, + buyLink: 'https://faucet.rollux.com', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts index 213b1aadd..bf3e2e3b9 100644 --- a/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts @@ -20,6 +20,7 @@ const rolluxOptions: EvmNetworkOptions = { coingeckoPlatform: CoingeckoPlatform.Rollux, icon, assetsInfoHandler, + buyLink: 'https://trade.coinify.com/syscoin?defaultCryptoCurrency=SYSROLLUX&cryptoCurrencies=SYSROLLUX,SYSEVM,SYS&targetPage=buy', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/types/evm-network.ts b/packages/extension/src/providers/ethereum/types/evm-network.ts index 10a4158f2..a584cb701 100644 --- a/packages/extension/src/providers/ethereum/types/evm-network.ts +++ b/packages/extension/src/providers/ethereum/types/evm-network.ts @@ -34,6 +34,7 @@ export interface EvmNetworkOptions { currencyNameLong: string; node: string; icon: string; + buyLink?: string | undefined; coingeckoID?: string; coingeckoPlatform?: CoingeckoPlatform; basePath?: string; @@ -98,6 +99,7 @@ export class EvmNetwork extends BaseNetwork { baseOptions.customTokens = baseOptions.customTokens ?? true; super(baseOptions); + this.options = options; this.chainID = options.chainID; this.assetsInfoHandler = options.assetsInfoHandler; diff --git a/packages/extension/src/ui/action/App.vue b/packages/extension/src/ui/action/App.vue index fabe95aeb..f49dcd81e 100644 --- a/packages/extension/src/ui/action/App.vue +++ b/packages/extension/src/ui/action/App.vue @@ -362,14 +362,27 @@ const toggleDepositWindow = () => { showDepositWindow.value = !showDepositWindow.value; }; const openBuyPage = () => { - const buyLink = - currentNetwork.value.name === NetworkNames.KadenaTestnet - ? (currentNetwork.value as KadenaNetwork).options.buyLink - : `https://ccswap.myetherwallet.com/?to=${currentNetwork.value.displayAddress( + const buyLink = (() => { + console.log([currentNetwork.value, (currentNetwork.value as EvmNetwork).options]); + switch (currentNetwork.value.name) { + case NetworkNames.KadenaTestnet: + return (currentNetwork.value as KadenaNetwork).options.buyLink; + case NetworkNames.SyscoinNEVM: + case NetworkNames.Rollux: + return `${(currentNetwork.value as EvmNetwork).options.buyLink}&address=${currentNetwork.value.displayAddress( + accountHeaderData.value.selectedAccount!.address + )}`; + case NetworkNames.SyscoinNEVMTest: + case NetworkNames.RolluxTest: + return (currentNetwork.value as EvmNetwork).options.buyLink; + default: + return `https://ccswap.myetherwallet.com/?to=${currentNetwork.value.displayAddress( accountHeaderData.value.selectedAccount!.address, )}&network=${currentNetwork.value.name}&crypto=${ currentNetwork.value.currencyName }&platform=enkrypt`; + } + })(); Browser.tabs.create({ url: buyLink, }); From ffdf96058dec0d79f022f3a07454bc63dfc87e6c Mon Sep 17 00:00:00 2001 From: Fernando Paredes Garcia Date: Tue, 21 Jan 2025 12:18:47 -0500 Subject: [PATCH 06/11] Remove debug console.log statement. --- packages/extension/src/ui/action/App.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/extension/src/ui/action/App.vue b/packages/extension/src/ui/action/App.vue index f49dcd81e..0ade5518e 100644 --- a/packages/extension/src/ui/action/App.vue +++ b/packages/extension/src/ui/action/App.vue @@ -363,7 +363,6 @@ const toggleDepositWindow = () => { }; const openBuyPage = () => { const buyLink = (() => { - console.log([currentNetwork.value, (currentNetwork.value as EvmNetwork).options]); switch (currentNetwork.value.name) { case NetworkNames.KadenaTestnet: return (currentNetwork.value as KadenaNetwork).options.buyLink; From c64ec7b9161beeb5a5b2365b12b5d59037542e8d Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Thu, 23 Jan 2025 12:19:19 -0800 Subject: [PATCH 07/11] devop: 5ire cleanup --- .../extension/src/providers/ethereum/networks/5ire.ts | 11 ++--------- .../extension/src/providers/ethereum/networks/bsc.ts | 1 - packages/types/src/networks.ts | 1 - 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/extension/src/providers/ethereum/networks/5ire.ts b/packages/extension/src/providers/ethereum/networks/5ire.ts index f0930f4c5..a2eb061d3 100644 --- a/packages/extension/src/providers/ethereum/networks/5ire.ts +++ b/packages/extension/src/providers/ethereum/networks/5ire.ts @@ -1,9 +1,7 @@ import icon from './icons/5ire.svg'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; -import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; -import { EtherscanActivity } from '../libs/activity-handlers'; +import { NetworkNames } from '@enkryptcom/types'; import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; const fireOptions: EvmNetworkOptions = { name: NetworkNames.Fire, @@ -18,14 +16,9 @@ const fireOptions: EvmNetworkOptions = { node: 'https://rpc.5ire.network', icon, coingeckoID: '5ire', - coingeckoPlatform: CoingeckoPlatform.Fire, - assetsInfoHandler, - activityHandler: wrapActivityHandler(EtherscanActivity), + activityHandler: wrapActivityHandler(() => Promise.resolve([])), }; const fire = new EvmNetwork(fireOptions); export default fire; - - - diff --git a/packages/extension/src/providers/ethereum/networks/bsc.ts b/packages/extension/src/providers/ethereum/networks/bsc.ts index 7eaebd53c..99f78f546 100644 --- a/packages/extension/src/providers/ethereum/networks/bsc.ts +++ b/packages/extension/src/providers/ethereum/networks/bsc.ts @@ -2,7 +2,6 @@ import icon from './icons/bsc.svg'; import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; -import { EtherscanActivity } from '../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; import shNFTHandler from '@/libs/nft-handlers/simplehash'; diff --git a/packages/types/src/networks.ts b/packages/types/src/networks.ts index b4997920e..ccbefcbe4 100755 --- a/packages/types/src/networks.ts +++ b/packages/types/src/networks.ts @@ -155,5 +155,4 @@ export enum CoingeckoPlatform { Scroll = "scroll", Bitrock = "bitrock", Fraxtal = "fraxtal", - Fire = "5ire", } From d49181612f496931a3ae51beeda732d6d99bf69c Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Thu, 23 Jan 2025 13:36:36 -0800 Subject: [PATCH 08/11] devop: add 5ire, syscoin and form networks --- .../providers/etherscan/configs.ts | 1 + .../libs/assets-handlers/assetinfo-mew.ts | 2 +- .../libs/assets-handlers/blockscout.ts | 41 +++++++++++-------- .../src/providers/ethereum/networks/5ire.ts | 2 +- .../src/providers/ethereum/networks/form.ts | 24 +++++++++++ .../ethereum/networks/icons/5ire.svg | 2 +- .../src/providers/ethereum/networks/index.ts | 4 ++ packages/types/src/networks.ts | 1 + 8 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 packages/extension/src/providers/ethereum/networks/form.ts diff --git a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts index 5f2513a98..9633d5dce 100644 --- a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts +++ b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts @@ -49,6 +49,7 @@ const NetworkEndpoints: Record = { [NetworkNames.Base]: 'https://api.basescan.org/', [NetworkNames.Celo]: 'https://explorer.celo.org/mainnet/', [NetworkNames.FormTestnet]: 'https://testnet-explorer.form.network/', + [NetworkNames.Form]: 'https://explorer.form.network/', [NetworkNames.ArtheraTest]: 'https://explorer-test.arthera.net/', [NetworkNames.Arthera]: 'https://explorer.arthera.net/', [NetworkNames.SyscoinNEVMTest]: 'https://explorer.tanenbaum.io/', diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts index 666437094..b37fb82bd 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts @@ -20,7 +20,7 @@ import { EvmNetwork } from '../../types/evm-network'; import { getKnownNetworkTokens } from './token-lists'; import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { NATIVE_TOKEN_ADDRESS } from '../common'; -import getBlockscoutBalances from "./blockscout"; +import getBlockscoutBalances from './blockscout'; import getTomoBalances from './tomochain'; import getSolBalances from './solanachain'; import { CoinGeckoTokenMarket } from '@/libs/market-data/types'; diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts index 8dd95047b..b78b132a0 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts @@ -1,7 +1,7 @@ -import { SupportedNetworkNames, TokenBalance } from "./types/tokenbalance-mew"; -import { NetworkEndpoints } from "@/providers/ethereum/libs/activity-handlers/providers/etherscan/configs"; -import { NATIVE_TOKEN_ADDRESS } from "../common"; -import { numberToHex } from "web3-utils"; +import { SupportedNetworkNames, TokenBalance } from './types/tokenbalance-mew'; +import { NetworkEndpoints } from '@/providers/ethereum/libs/activity-handlers/providers/etherscan/configs'; +import { NATIVE_TOKEN_ADDRESS } from '../common'; +import { numberToHex } from 'web3-utils'; interface TokenBalanceType { token: string; @@ -25,23 +25,23 @@ interface TokenResponse { const getBlockscoutBalances = ( chain: SupportedNetworkNames, - address: string + address: string, ): Promise => { const encodedAddress = encodeURIComponent(address); const nativeTokenUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}`; const tokenBalancesUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}/tokens?type=ERC-20`; return Promise.all([ - fetch(nativeTokenUrl).then((res) => res.json()), - fetch(tokenBalancesUrl).then((res) => res.json()), + fetch(nativeTokenUrl).then(res => res.json()), + fetch(tokenBalancesUrl).then(res => res.json()), ]) .then(([nativeResponse, tokenResponse]: [any, TokenResponse]) => { if (!nativeResponse?.coin_balance || !tokenResponse?.items) { - return Promise.reject("Error fetching balance data"); + return Promise.reject('Error fetching balance data'); } if (Number.isNaN(Number(nativeResponse.coin_balance))) { - return Promise.reject("Invalid native token balance"); + return Promise.reject('Invalid native token balance'); } // Map native token balance @@ -52,16 +52,16 @@ const getBlockscoutBalances = ( // Map token balances const tokenBalances: TokenBalanceType[] = Array.isArray( - tokenResponse?.items + tokenResponse?.items, ) ? tokenResponse.items .filter( - (item) => + item => item?.token?.address && - typeof item.token.address === "string" && - item.value !== undefined + typeof item.token.address === 'string' && + item.value !== undefined, ) - .map((item) => ({ + .map(item => ({ token: item.token.address.toLowerCase(), quantity: item.value, })) @@ -71,14 +71,19 @@ const getBlockscoutBalances = ( const allBalances = [nativeBalance, ...tokenBalances]; // Convert to TokenBalance format - return allBalances.map((tb) => ({ + return allBalances.map(tb => ({ contract: tb.token, balance: numberToHex(tb.quantity), // Convert to hex format })); }) - .catch((error) => { - console.error("Error fetching balances:", error); - throw error; + .catch(error => { + console.error('Error fetching balances:', error); + return [ + { + contract: NATIVE_TOKEN_ADDRESS, + balance: '0x0', + }, + ]; }); }; diff --git a/packages/extension/src/providers/ethereum/networks/5ire.ts b/packages/extension/src/providers/ethereum/networks/5ire.ts index a2eb061d3..afe93c387 100644 --- a/packages/extension/src/providers/ethereum/networks/5ire.ts +++ b/packages/extension/src/providers/ethereum/networks/5ire.ts @@ -5,7 +5,7 @@ import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; const fireOptions: EvmNetworkOptions = { name: NetworkNames.Fire, - name_long: '5ireChain', + name_long: '5ire Chain', homePage: 'https://www.5ire.org', blockExplorerTX: 'https://5irescan.io/tx/[[txHash]]', blockExplorerAddr: 'https://5irescan.io/address/[[address]]', diff --git a/packages/extension/src/providers/ethereum/networks/form.ts b/packages/extension/src/providers/ethereum/networks/form.ts new file mode 100644 index 000000000..2990dd8d1 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/form.ts @@ -0,0 +1,24 @@ +import icon from './icons/form.png'; +import { NetworkNames } from '@enkryptcom/types'; +import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; +import { EtherscanActivity } from '../libs/activity-handlers'; + +const formOptions: EvmNetworkOptions = { + name: NetworkNames.Form, + name_long: 'Form Mainnet', + homePage: 'https://docs.form.network', + blockExplorerTX: 'https://explorer.form.network/tx/[[txHash]]', + blockExplorerAddr: 'https://explorer.form.network/address/[[address]]', + chainID: '0x1de', + isTestNetwork: false, + currencyName: 'ETH', + currencyNameLong: 'Ethereum', + node: 'wss://rpc.form.network/ws', + icon, + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const form = new EvmNetwork(formOptions); + +export default form; diff --git a/packages/extension/src/providers/ethereum/networks/icons/5ire.svg b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg index 21fd95d1d..1e2c0b952 100644 --- a/packages/extension/src/providers/ethereum/networks/icons/5ire.svg +++ b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/extension/src/providers/ethereum/networks/index.ts b/packages/extension/src/providers/ethereum/networks/index.ts index 261bec0a3..9fa93a266 100755 --- a/packages/extension/src/providers/ethereum/networks/index.ts +++ b/packages/extension/src/providers/ethereum/networks/index.ts @@ -33,6 +33,7 @@ import celoNode from './celo'; import shibNode from './shib'; import artheraNode from './aa'; import formTestnet from './form-testnet'; +import formNode from './form'; import artheraTestNode from './aat'; import syscoinNEVMTestNode from './syscoin/nevm-testnet'; import syscoinNEVMNode from './syscoin/nevm'; @@ -61,6 +62,7 @@ import cotiDevnetNode from './coti-devnet'; import holeskyNode from './holesky'; import bitrockNode from './bitrock'; import fraxtalNode from './fraxtal'; +import _5ireNode from './5ire'; export default { sepolia: sepoliaNode, @@ -107,6 +109,7 @@ export default { shib: shibNode, arthera: artheraNode, formTestnet: formTestnet, + form: formNode, artheraTest: artheraTestNode, syscoinNEVMTest: syscoinNEVMTestNode, syscoinNEVM: syscoinNEVMNode, @@ -135,4 +138,5 @@ export default { holesky: holeskyNode, bitrock: bitrockNode, frax: fraxtalNode, + '5ire': _5ireNode, }; diff --git a/packages/types/src/networks.ts b/packages/types/src/networks.ts index bb3477dc1..9b6dd4527 100755 --- a/packages/types/src/networks.ts +++ b/packages/types/src/networks.ts @@ -66,6 +66,7 @@ export enum NetworkNames { ArtheraTest = "AATest", Arthera = "AA", FormTestnet = "FormTestnet", + Form = "Form", AssetHubDOT = "AssetHubDOT", AssetHubKSM = "AssetHubKSM", SyscoinNEVMTest = "TSYS", From f83eb3725f41e8a8f5d21c50ee90e57e99e24d53 Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:32:36 -0800 Subject: [PATCH 09/11] devop: add new network tags --- packages/extension/package.json | 2 +- .../extension/src/providers/common/libs/new-features.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/extension/package.json b/packages/extension/package.json index e7828c5ed..b2d024229 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,6 +1,6 @@ { "name": "@enkryptcom/extension", - "version": "2.1.0", + "version": "2.2.0", "private": true, "type": "module", "scripts": { diff --git a/packages/extension/src/providers/common/libs/new-features.ts b/packages/extension/src/providers/common/libs/new-features.ts index 189011b41..cbaf9a139 100644 --- a/packages/extension/src/providers/common/libs/new-features.ts +++ b/packages/extension/src/providers/common/libs/new-features.ts @@ -1,6 +1,11 @@ import { NetworkNames } from '@enkryptcom/types'; -const newNetworks = [NetworkNames.Bitrock, NetworkNames.Fraxtal]; +const newNetworks = [ + NetworkNames.Form, + NetworkNames.Rollux, + NetworkNames.SyscoinNEVM, + NetworkNames.Fire, +]; const newSwaps: NetworkNames[] = []; export { newNetworks, newSwaps }; From 8fedb673f398b6a39100a7ac6a758c21772f0dcf Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:36:03 -0800 Subject: [PATCH 10/11] devop: add new network tags --- .../src/providers/ethereum/libs/assets-handlers/token-lists.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts index 2ccd4527a..545104ebb 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts @@ -28,7 +28,6 @@ const TokenList: Record = { [NetworkNames.Celo]: `https://tokens.coingecko.com/${CoingeckoPlatform.Celo}/all.json`, [NetworkNames.TomoChain]: `https://tokens.coingecko.com/${CoingeckoPlatform.TomoChain}/all.json`, [NetworkNames.Shibarium]: `https://tokens.coingecko.com/${CoingeckoPlatform.Shibarium}/all.json`, - [NetworkNames.Rollux]: `https://tokens.coingecko.com/${CoingeckoPlatform.Rollux}/all.json`, [NetworkNames.Telos]: `https://tokens.coingecko.com/${CoingeckoPlatform.Telos}/all.json`, [NetworkNames.Blast]: `https://tokens.coingecko.com/${CoingeckoPlatform.Blast}/all.json`, [NetworkNames.Sanko]: `https://tokens.coingecko.com/${CoingeckoPlatform.Sanko}/all.json`, From d24108ae644020a3a5ac1da298139bac4470bc7c Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:19:17 -0800 Subject: [PATCH 11/11] fix: fallback to type 0 txs if basefeepergas array is empty --- .../extension/src/providers/ethereum/libs/transaction/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/extension/src/providers/ethereum/libs/transaction/index.ts b/packages/extension/src/providers/ethereum/libs/transaction/index.ts index 8936a04d0..ea173a58d 100644 --- a/packages/extension/src/providers/ethereum/libs/transaction/index.ts +++ b/packages/extension/src/providers/ethereum/libs/transaction/index.ts @@ -92,7 +92,8 @@ class Transaction { const { isFeeMarketNetwork, feeHistory } = await this.web3 .getFeeHistory(6, 'latest', GAS_PERCENTILES) .then(history => ({ - isFeeMarketNetwork: !!latestBlock.baseFeePerGas, + isFeeMarketNetwork: + !!latestBlock.baseFeePerGas && history.baseFeePerGas.length !== 0, feeHistory: history, })) .catch(() => ({