From b0a17a7e261213bac9c674a7f1bb373df3bb795c Mon Sep 17 00:00:00 2001 From: oisupov Date: Tue, 14 Mar 2023 23:46:01 +0400 Subject: [PATCH] FEVM support Resolves https://github.com/brave/brave-browser/issues/28954 --- .../brave_wallet_prefs_unittest.cc | 9 +++-- .../brave_wallet_service_unittest.cc | 24 +++++++++++++ .../browser/brave_wallet_prefs.cc | 7 ++++ .../browser/brave_wallet_service.cc | 26 ++++++++++++++ .../browser/brave_wallet_service.h | 1 + .../browser/brave_wallet_utils.cc | 34 +++++++++++++++++++ .../browser/brave_wallet_utils_unittest.cc | 14 ++++---- .../brave_wallet/browser/json_rpc_service.cc | 1 + .../browser/json_rpc_service_unittest.cc | 27 ++++++++++----- components/brave_wallet/browser/pref_names.cc | 6 +++- components/brave_wallet/browser/pref_names.h | 4 +++ .../brave_wallet/common/brave_wallet.mojom | 2 ++ components/brave_wallet_ui/constants/types.ts | 3 +- .../utils/block-explorer-utils.ts | 8 +++++ 14 files changed, 147 insertions(+), 19 deletions(-) diff --git a/browser/brave_wallet/brave_wallet_prefs_unittest.cc b/browser/brave_wallet/brave_wallet_prefs_unittest.cc index e906cf23b868..94d5cc91e40c 100644 --- a/browser/brave_wallet/brave_wallet_prefs_unittest.cc +++ b/browser/brave_wallet/brave_wallet_prefs_unittest.cc @@ -232,7 +232,8 @@ TEST_F(BraveWalletPrefsUnitTest, MigrateShowTestNetworksToggle) { // Test networks are hidden by default. EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::ETH), ElementsAreArray({mojom::kGoerliChainId, mojom::kSepoliaChainId, - mojom::kLocalhostChainId})); + mojom::kLocalhostChainId, + mojom::kFilecoinEthereumTestnetChainId})); EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::FIL), ElementsAreArray({mojom::kFilecoinTestnet, mojom::kLocalhostChainId, "0x123"})); @@ -244,7 +245,8 @@ TEST_F(BraveWalletPrefsUnitTest, MigrateShowTestNetworksToggle) { // Still same when nothing to migrate. EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::ETH), ElementsAreArray({mojom::kGoerliChainId, mojom::kSepoliaChainId, - mojom::kLocalhostChainId})); + mojom::kLocalhostChainId, + mojom::kFilecoinEthereumTestnetChainId})); EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::FIL), ElementsAreArray({mojom::kFilecoinTestnet, mojom::kLocalhostChainId, "0x123"})); @@ -258,7 +260,8 @@ TEST_F(BraveWalletPrefsUnitTest, MigrateShowTestNetworksToggle) { // Still same when test networks toggle was explicitly off. EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::ETH), ElementsAreArray({mojom::kGoerliChainId, mojom::kSepoliaChainId, - mojom::kLocalhostChainId})); + mojom::kLocalhostChainId, + mojom::kFilecoinEthereumTestnetChainId})); EXPECT_THAT(GetHiddenNetworks(GetPrefs(), mojom::CoinType::FIL), ElementsAreArray({mojom::kFilecoinTestnet, mojom::kLocalhostChainId, "0x123"})); diff --git a/browser/brave_wallet/brave_wallet_service_unittest.cc b/browser/brave_wallet/brave_wallet_service_unittest.cc index 064560280050..b4f010e05643 100644 --- a/browser/brave_wallet/brave_wallet_service_unittest.cc +++ b/browser/brave_wallet/brave_wallet_service_unittest.cc @@ -1682,6 +1682,30 @@ TEST_F(BraveWalletServiceUnitTest, MigrateUserAssetsAddIsNFT) { EXPECT_TRUE(GetPrefs()->GetBoolean(kBraveWalletUserAssetsAddIsNFTMigrated)); } +TEST_F(BraveWalletServiceUnitTest, MigradeDefaultHiddenNetworks) { + ASSERT_EQ(GetPrefs()->GetInteger(kBraveWalletDefaultHiddenNetworksVersion), + 0); + BraveWalletService::MigrateHiddenNetworks(GetPrefs()); + { + auto* list = + GetPrefs()->GetDict(kBraveWalletHiddenNetworks).FindList("ethereum"); + ASSERT_NE(std::find_if(list->begin(), list->end(), + [](const auto& v) { return v == "0x4cb2f"; }), + list->end()); + } + ASSERT_EQ(GetPrefs()->GetInteger(kBraveWalletDefaultHiddenNetworksVersion), + 1); + RemoveHiddenNetwork(GetPrefs(), mojom::CoinType::ETH, "0x4cb2f"); + BraveWalletService::MigrateHiddenNetworks(GetPrefs()); + { + auto* list = + GetPrefs()->GetDict(kBraveWalletHiddenNetworks).FindList("ethereum"); + ASSERT_EQ(std::find_if(list->begin(), list->end(), + [](const auto& v) { return v == "0x4cb2f"; }), + list->end()); + } +} + TEST_F(BraveWalletServiceUnitTest, RecordWalletNoUse) { EXPECT_EQ(GetLocalState()->GetTime(kBraveWalletP3ALastReportTime), base::Time::Now()); diff --git a/components/brave_wallet/browser/brave_wallet_prefs.cc b/components/brave_wallet/browser/brave_wallet_prefs.cc index 6c22a1099d45..18bb28d1b313 100644 --- a/components/brave_wallet/browser/brave_wallet_prefs.cc +++ b/components/brave_wallet/browser/brave_wallet_prefs.cc @@ -55,6 +55,7 @@ base::Value::Dict GetDefaultHiddenNetworks() { eth_hidden.Append(mojom::kGoerliChainId); eth_hidden.Append(mojom::kSepoliaChainId); eth_hidden.Append(mojom::kLocalhostChainId); + eth_hidden.Append(mojom::kFilecoinEthereumTestnetChainId); hidden_networks.Set(kEthereumPrefKey, std::move(eth_hidden)); base::Value::List fil_hidden; @@ -174,6 +175,9 @@ void RegisterProfilePrefsForMigration( // Added 02/2023 registry->RegisterBooleanPref(kBraveWalletTransactionsChainIdMigrated, false); + + // Added 03/2023 + registry->RegisterIntegerPref(kBraveWalletDefaultHiddenNetworksVersion, 0); } void ClearJsonRpcServiceProfilePrefs(PrefService* prefs) { @@ -219,6 +223,9 @@ void MigrateObsoleteProfilePrefs(PrefService* prefs) { // Added 10/22 to have is_nft set for existing ERC721 tokens. BraveWalletService::MigrateUserAssetsAddIsNFT(prefs); + // Added 03/23 to add filecoin evm support. + BraveWalletService::MigrateHiddenNetworks(prefs); + JsonRpcService::MigrateMultichainNetworks(prefs); if (prefs->HasPrefPath(kBraveWalletWeb3ProviderDeprecated)) { diff --git a/components/brave_wallet/browser/brave_wallet_service.cc b/components/brave_wallet/browser/brave_wallet_service.cc index 5156a583ab85..49ead55f6c7d 100644 --- a/components/brave_wallet/browser/brave_wallet_service.cc +++ b/components/brave_wallet/browser/brave_wallet_service.cc @@ -825,6 +825,10 @@ void BraveWalletService::MigrateUserAssetsAddPreloadingNetworks( } prefs->SetBoolean(kBraveWalletUserAssetsAddPreloadingNetworksMigrated, true); + prefs->ClearPref( + kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated); + prefs->ClearPref( + kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated2); } // static @@ -864,6 +868,28 @@ void BraveWalletService::MigrateUserAssetsAddIsNFT(PrefService* prefs) { prefs->SetBoolean(kBraveWalletUserAssetsAddIsNFTMigrated, true); } +// static +void BraveWalletService::MigrateHiddenNetworks(PrefService* prefs) { + auto previous_version_code = + prefs->GetInteger(kBraveWalletDefaultHiddenNetworksVersion); + if (previous_version_code >= 1) { + return; + } + // Default hidden networks + ScopedDictPrefUpdate update(prefs, kBraveWalletHiddenNetworks); + auto& hidden_networks_pref = update.Get(); + base::Value::List* hidden_eth_networks = + hidden_networks_pref.FindList(kEthereumPrefKey); + auto value = base::Value(mojom::kFilecoinEthereumTestnetChainId); + if (std::find_if(hidden_eth_networks->begin(), hidden_eth_networks->end(), + [&value](auto& v) { return value == v; }) == + hidden_eth_networks->end()) { + hidden_eth_networks->Append(std::move(value)); + } + + prefs->SetInteger(kBraveWalletDefaultHiddenNetworksVersion, 1); +} + // static base::Value::Dict BraveWalletService::GetDefaultEthereumAssets() { base::Value::Dict user_assets; diff --git a/components/brave_wallet/browser/brave_wallet_service.h b/components/brave_wallet/browser/brave_wallet_service.h index f2f8c18d4b00..1f2e0364c65e 100644 --- a/components/brave_wallet/browser/brave_wallet_service.h +++ b/components/brave_wallet/browser/brave_wallet_service.h @@ -80,6 +80,7 @@ class BraveWalletService : public KeyedService, static void MigrateUserAssetsAddPreloadingNetworks( PrefService* profile_prefs); static void MigrateUserAssetsAddIsNFT(PrefService* profile_prefs); + static void MigrateHiddenNetworks(PrefService* profile_prefs); static bool AddUserAsset(mojom::BlockchainTokenPtr token, PrefService* profile_prefs); diff --git a/components/brave_wallet/browser/brave_wallet_utils.cc b/components/brave_wallet/browser/brave_wallet_utils.cc index 04332f0a5730..eb40619d256a 100644 --- a/components/brave_wallet/browser/brave_wallet_utils.cc +++ b/components/brave_wallet/browser/brave_wallet_utils.cc @@ -257,6 +257,38 @@ const mojom::NetworkInfo* GetEthLocalhost() { return network_info.get(); } +const mojom::NetworkInfo* GetFilecoinEthereumMainnet() { + static base::NoDestructor network_info( + {brave_wallet::mojom::kFilecoinEthereumMainnetChainId, + "Filecoin EVM Mainnet", + {"https://filfox.info/en/message"}, + {}, + 0, + {GURL("https://api.node.glif.io/rpc/v1")}, + "FIL", + "Filecoin", + 18, + brave_wallet::mojom::CoinType::ETH, + true}); + return network_info.get(); +} + +const mojom::NetworkInfo* GetFilecoinEthereumTestnet() { + static base::NoDestructor network_info( + {brave_wallet::mojom::kFilecoinEthereumTestnetChainId, + "Filecoin EVM Testnet", + {"https://calibration.filfox.info/en/message"}, + {}, + 0, + {GURL("https://api.calibration.node.glif.io/rpc/v1")}, + "FIL", + "Filecoin", + 18, + brave_wallet::mojom::CoinType::ETH, + true}); + return network_info.get(); +} + // Precompiled networks available in native wallet. const std::vector& GetKnownEthNetworks() { static base::NoDestructor> networks({ @@ -272,6 +304,8 @@ const std::vector& GetKnownEthNetworks() { GetGoerliTestNetwork(), GetSepoliaTestNetwork(), GetEthLocalhost(), + GetFilecoinEthereumMainnet(), + GetFilecoinEthereumTestnet() // clang-format on }); return *networks.get(); diff --git a/components/brave_wallet/browser/brave_wallet_utils_unittest.cc b/components/brave_wallet/browser/brave_wallet_utils_unittest.cc index 33590a43a42b..53ce00954954 100644 --- a/components/brave_wallet/browser/brave_wallet_utils_unittest.cc +++ b/components/brave_wallet/browser/brave_wallet_utils_unittest.cc @@ -522,7 +522,7 @@ TEST(BraveWalletUtilsUnitTest, KnownChainExists) { UpdateCustomNetworks(&prefs, std::move(values), mojom::CoinType::ETH); auto known_chains = GetAllKnownChains(&prefs, mojom::CoinType::ETH); - EXPECT_EQ(known_chains.size(), 11u); + EXPECT_EQ(known_chains.size(), 13u); for (auto& known_chain : known_chains) { EXPECT_TRUE(KnownChainExists(known_chain->chain_id, mojom::CoinType::ETH)); // Test that uppercase chain ID works too @@ -842,7 +842,8 @@ TEST(BraveWalletUtilsUnitTest, GetAllKnownEthNetworkIds) { mojom::kBinanceSmartChainMainnetChainId, mojom::kCeloMainnetChainId, mojom::kAvalancheMainnetChainId, mojom::kFantomMainnetChainId, mojom::kOptimismMainnetChainId, "goerli", "sepolia", - "http://localhost:7545/"}); + "http://localhost:7545/", mojom::kFilecoinEthereumMainnetChainId, + mojom::kFilecoinEthereumTestnetChainId}); ASSERT_EQ(GetAllKnownNetworksForTesting().size(), expected_network_ids.size()); EXPECT_EQ(GetAllKnownEthNetworkIds(), expected_network_ids); @@ -1058,10 +1059,11 @@ TEST(BraveWalletUtilsUnitTest, HiddenNetworks) { sync_preferences::TestingPrefServiceSyncable prefs; RegisterProfilePrefs(prefs.registry()); - EXPECT_THAT(GetHiddenNetworks(&prefs, mojom::CoinType::ETH), - ElementsAreArray({mojom::kGoerliChainId, - mojom::kSepoliaChainId, - mojom::kLocalhostChainId})); + EXPECT_THAT( + GetHiddenNetworks(&prefs, mojom::CoinType::ETH), + ElementsAreArray( + {mojom::kGoerliChainId, mojom::kSepoliaChainId, + mojom::kLocalhostChainId, mojom::kFilecoinEthereumTestnetChainId})); EXPECT_THAT(GetHiddenNetworks(&prefs, mojom::CoinType::FIL), ElementsAreArray( {mojom::kFilecoinTestnet, mojom::kLocalhostChainId})); diff --git a/components/brave_wallet/browser/json_rpc_service.cc b/components/brave_wallet/browser/json_rpc_service.cc index c1a2d329459b..8dceac38008d 100644 --- a/components/brave_wallet/browser/json_rpc_service.cc +++ b/components/brave_wallet/browser/json_rpc_service.cc @@ -323,6 +323,7 @@ void JsonRpcService::MigrateShowTestNetworksToggle(PrefService* prefs) { eth_list->EraseValue(base::Value(mojom::kGoerliChainId)); eth_list->EraseValue(base::Value(mojom::kSepoliaChainId)); eth_list->EraseValue(base::Value(mojom::kLocalhostChainId)); + eth_list->EraseValue(base::Value(mojom::kFilecoinEthereumTestnetChainId)); auto* fil_list = dict.EnsureList(kFilecoinPrefKey); fil_list->EraseValue(base::Value(mojom::kFilecoinTestnet)); diff --git a/components/brave_wallet/browser/json_rpc_service_unittest.cc b/components/brave_wallet/browser/json_rpc_service_unittest.cc index 4916106cd3f6..bacb66a5ceaf 100644 --- a/components/brave_wallet/browser/json_rpc_service_unittest.cc +++ b/components/brave_wallet/browser/json_rpc_service_unittest.cc @@ -1697,7 +1697,7 @@ TEST_F(JsonRpcServiceUnitTest, GetKnownNetworks) { EXPECT_CALL(callback, Run(ElementsAreArray({"0x1", "0x4e454152", "0x89", "0x38", "0xa4ec", "0xa86a", "0xfa", "0xa", "0x5", - "0xaa36a7", "0x539"}))); + "0xaa36a7", "0x539", "0x13a", "0x4cb2f"}))); json_rpc_service_->GetKnownNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); } @@ -1709,39 +1709,50 @@ TEST_F(JsonRpcServiceUnitTest, GetHiddenNetworks) { // kLocalhostChainId is active so not listed as hidden. EXPECT_CALL( callback, - Run(ElementsAreArray({mojom::kGoerliChainId, mojom::kSepoliaChainId}))); + Run(ElementsAreArray({mojom::kGoerliChainId, mojom::kSepoliaChainId, + mojom::kFilecoinEthereumTestnetChainId}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); // Remove network hidden by default. RemoveHiddenNetwork(prefs(), mojom::CoinType::ETH, mojom::kGoerliChainId); - EXPECT_CALL(callback, Run(ElementsAreArray({mojom::kSepoliaChainId}))); + EXPECT_CALL(callback, + Run(ElementsAreArray({mojom::kSepoliaChainId, + mojom::kFilecoinEthereumTestnetChainId}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); // Making custom network hidden. AddHiddenNetwork(prefs(), mojom::CoinType::ETH, "0x123"); - EXPECT_CALL(callback, - Run(ElementsAreArray({mojom::kSepoliaChainId, "0x123"}))); + EXPECT_CALL( + callback, + Run(ElementsAreArray({mojom::kSepoliaChainId, + mojom::kFilecoinEthereumTestnetChainId, "0x123"}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); // Making custom network visible. RemoveHiddenNetwork(prefs(), mojom::CoinType::ETH, "0x123"); - EXPECT_CALL(callback, Run(ElementsAreArray({mojom::kSepoliaChainId}))); + EXPECT_CALL(callback, + Run(ElementsAreArray({mojom::kSepoliaChainId, + mojom::kFilecoinEthereumTestnetChainId}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); // Change active network so kLocalhostChainId becomes hidden. SetNetwork(mojom::kMainnetChainId, mojom::CoinType::ETH); - EXPECT_CALL(callback, Run(ElementsAreArray({mojom::kSepoliaChainId, - mojom::kLocalhostChainId}))); + EXPECT_CALL( + callback, + Run(ElementsAreArray({mojom::kSepoliaChainId, mojom::kLocalhostChainId, + mojom::kFilecoinEthereumTestnetChainId}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); // Remove all hidden networks. RemoveHiddenNetwork(prefs(), mojom::CoinType::ETH, mojom::kSepoliaChainId); RemoveHiddenNetwork(prefs(), mojom::CoinType::ETH, mojom::kLocalhostChainId); + RemoveHiddenNetwork(prefs(), mojom::CoinType::ETH, + mojom::kFilecoinEthereumTestnetChainId); EXPECT_CALL(callback, Run(ElementsAreArray({}))); json_rpc_service_->GetHiddenNetworks(mojom::CoinType::ETH, callback.Get()); testing::Mock::VerifyAndClearExpectations(&callback); diff --git a/components/brave_wallet/browser/pref_names.cc b/components/brave_wallet/browser/pref_names.cc index 1008bb1bea1c..e14606faa6cf 100644 --- a/components/brave_wallet/browser/pref_names.cc +++ b/components/brave_wallet/browser/pref_names.cc @@ -36,9 +36,11 @@ const char kBraveWalletUserAssets[] = "brave.wallet.wallet_user_assets"; const char kBraveWalletUserAssetEthContractAddressMigrated[] = "brave.wallet.user.asset.eth_contract_address_migrated"; const char kBraveWalletUserAssetsAddPreloadingNetworksMigrated[] = - "brave.wallet.user.assets.add_preloading_networks_migrated_2"; + "brave.wallet.user.assets.add_preloading_networks_migrated_3"; const char kBraveWalletUserAssetsAddIsNFTMigrated[] = "brave.wallet.user.assets.add_is_nft_migrated"; +const char kBraveWalletDefaultHiddenNetworksVersion[] = + "brave.wallet.user.assets.default_hidden_networks_version"; const char kBraveWalletDeprecateEthereumTestNetworksMigrated[] = "brave.wallet.deprecated_ethereum_test_networks_migrated"; const char kBraveWalletAutoLockMinutes[] = "brave.wallet.auto_lock_minutes"; @@ -74,5 +76,7 @@ const char kBraveWalletCurrentChainId[] = const char kBraveWalletUserAssetsDeprecated[] = "brave.wallet.user_assets"; const char kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated[] = "brave.wallet.user.assets.add_preloading_networks_migrated"; +const char kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated2[] = + "brave.wallet.user.assets.add_preloading_networks_migrated_2"; const char kPinnedNFTAssets[] = "brave.wallet.user_pin_data"; const char kAutoPinEnabled[] = "brave.wallet.auto_pin_enabled"; diff --git a/components/brave_wallet/browser/pref_names.h b/components/brave_wallet/browser/pref_names.h index aaf93c4186a8..52c66516866f 100644 --- a/components/brave_wallet/browser/pref_names.h +++ b/components/brave_wallet/browser/pref_names.h @@ -30,6 +30,8 @@ extern const char kBraveWalletUserAssetEthContractAddressMigrated[]; extern const char kBraveWalletUserAssetsAddPreloadingNetworksMigrated[]; // Added 10/2022 to set is_nft = true for existing ERC721 tokens. extern const char kBraveWalletUserAssetsAddIsNFTMigrated[]; +// Added 03/2023 to add networks hidden by default +extern const char kBraveWalletDefaultHiddenNetworksVersion[]; // Added 10/2022 to replace ETH selected network with mainnet if selected // network is one of the Ethereum testnets deprecated on 10/5/2022. extern const char kBraveWalletDeprecateEthereumTestNetworksMigrated[]; @@ -62,6 +64,8 @@ extern const char kBraveWalletCurrentChainId[]; extern const char kBraveWalletUserAssetsDeprecated[]; extern const char kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated[]; +extern const char + kBraveWalletUserAssetsAddPreloadingNetworksMigratedDeprecated2[]; extern const char kPinnedNFTAssets[]; extern const char kAutoPinEnabled[]; diff --git a/components/brave_wallet/common/brave_wallet.mojom b/components/brave_wallet/common/brave_wallet.mojom index 102a58058228..74b681b67ed5 100644 --- a/components/brave_wallet/common/brave_wallet.mojom +++ b/components/brave_wallet/common/brave_wallet.mojom @@ -943,6 +943,8 @@ const string kCeloMainnetChainId = "0xa4ec"; const string kOptimismMainnetChainId = "0xa"; const string kAuroraMainnetChainId = "0x4e454152"; const string kArbitrumMainnetChainId = "0xa4b1"; +const string kFilecoinEthereumMainnetChainId = "0x13a"; // Filecoin eth mainnet +const string kFilecoinEthereumTestnetChainId = "0x4cb2f"; // Filecoin eth calibration const string kSolanaMainnet = "0x65"; const string kSolanaTestnet = "0x66"; const string kSolanaDevnet = "0x67"; diff --git a/components/brave_wallet_ui/constants/types.ts b/components/brave_wallet_ui/constants/types.ts index 788702252c22..c924c41783f6 100644 --- a/components/brave_wallet_ui/constants/types.ts +++ b/components/brave_wallet_ui/constants/types.ts @@ -884,7 +884,8 @@ export const SupportedTestNetworks = [ BraveWallet.LOCALHOST_CHAIN_ID, BraveWallet.SOLANA_DEVNET, BraveWallet.SOLANA_TESTNET, - BraveWallet.FILECOIN_TESTNET + BraveWallet.FILECOIN_TESTNET, + BraveWallet.FILECOIN_ETHEREUM_TESTNET_CHAIN_ID ] export enum CoinTypesMap { diff --git a/components/brave_wallet_ui/utils/block-explorer-utils.ts b/components/brave_wallet_ui/utils/block-explorer-utils.ts index eb61625a144a..e1948fafda97 100644 --- a/components/brave_wallet_ui/utils/block-explorer-utils.ts +++ b/components/brave_wallet_ui/utils/block-explorer-utils.ts @@ -34,6 +34,10 @@ export const buildExplorerUrl = ( network.chainId === BraveWallet.FILECOIN_TESTNET || network.chainId === BraveWallet.FILECOIN_MAINNET + const isFileCoinEvmNet = + network.chainId === BraveWallet.FILECOIN_ETHEREUM_MAINNET_CHAIN_ID || + network.chainId === BraveWallet.FILECOIN_ETHEREUM_TESTNET_CHAIN_ID + const isSolanaMainNet = network.chainId === BraveWallet.SOLANA_MAINNET const isSolanaDevOrTestNet = @@ -44,6 +48,10 @@ export const buildExplorerUrl = ( return `${explorerURL}?cid=${value}` } + if (isFileCoinEvmNet) { + return `${explorerURL}/${value}` + } + if (isSolanaMainNet && type === 'token') { return `${explorerURL}/address/${value}` }