diff --git a/components/brave_wallet/browser/blockchain_list_parser.cc b/components/brave_wallet/browser/blockchain_list_parser.cc index 3dac591fc8b8..f4d2d77ce5b6 100644 --- a/components/brave_wallet/browser/blockchain_list_parser.cc +++ b/components/brave_wallet/browser/blockchain_list_parser.cc @@ -675,9 +675,6 @@ std::optional ParseDappLists(const std::string& json) { AddDappListToMap( GetTokenListKey(mojom::CoinType::ETH, mojom::kOptimismMainnetChainId), dapp_lists_from_component->optimism, &dapp_lists); - AddDappListToMap( - GetTokenListKey(mojom::CoinType::ETH, mojom::kAuroraMainnetChainId), - dapp_lists_from_component->aurora, &dapp_lists); AddDappListToMap( GetTokenListKey(mojom::CoinType::ETH, mojom::kAvalancheMainnetChainId), dapp_lists_from_component->avalanche, &dapp_lists); diff --git a/components/brave_wallet/browser/blockchain_list_parser_unittest.cc b/components/brave_wallet/browser/blockchain_list_parser_unittest.cc index 87182f44de81..a71ef3cf7c4c 100644 --- a/components/brave_wallet/browser/blockchain_list_parser_unittest.cc +++ b/components/brave_wallet/browser/blockchain_list_parser_unittest.cc @@ -440,9 +440,9 @@ TEST(BlockchainListParseUnitTest, ParseDappLists) { std::optional dapp_list_map = ParseDappLists(dapp_list); ASSERT_TRUE(dapp_list_map); - // There should be eight lists, for Ethereum, Solana, Polygon, Binance Smart - // Chain, Optimism, Aurora, Avalanche, and Fantom - ASSERT_EQ(8u, dapp_list_map->size()); + // There should be seven lists, for Ethereum, Solana, Polygon, Binance Smart + // Chain, Optimism, Avalanche, and Fantom + ASSERT_EQ(7u, dapp_list_map->size()); // There should be one dapp in the Ethereum list auto it = dapp_list_map->find( diff --git a/components/brave_wallet/browser/brave_wallet_p3a_unittest.cc b/components/brave_wallet/browser/brave_wallet_p3a_unittest.cc index 949e6c8001f3..724d99d2f9f4 100644 --- a/components/brave_wallet/browser/brave_wallet_p3a_unittest.cc +++ b/components/brave_wallet/browser/brave_wallet_p3a_unittest.cc @@ -601,14 +601,14 @@ TEST_F(BraveWalletP3AUnitTest, EthTransactionSentObservation) { std::string tx_meta_id; EXPECT_TRUE(AddUnapprovedEvmTransaction( mojom::NewEvmTransactionParams::New( - mojom::kAuroraMainnetChainId, eth_from(), + mojom::kBnbSmartChainMainnetChainId, eth_from(), "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000", "0x0974", std::vector()), &tx_meta_id)); // Approve the ETH transaction - EXPECT_TRUE(ApproveTransaction(mojom::CoinType::ETH, - mojom::kAuroraMainnetChainId, tx_meta_id)); + EXPECT_TRUE(ApproveTransaction( + mojom::CoinType::ETH, mojom::kBnbSmartChainMainnetChainId, tx_meta_id)); // Verify EthTransactionSent histogram_tester_->ExpectUniqueSample(kEthTransactionSentHistogramName, 1, 1); diff --git a/components/brave_wallet/browser/brave_wallet_prefs.cc b/components/brave_wallet/browser/brave_wallet_prefs.cc index 3e8dfa17b6c8..2abf739fc39c 100644 --- a/components/brave_wallet/browser/brave_wallet_prefs.cc +++ b/components/brave_wallet/browser/brave_wallet_prefs.cc @@ -297,6 +297,9 @@ void RegisterProfilePrefsForMigration( // Added 08/2024 registry->RegisterBooleanPref(kBraveWalletIsSPLTokenProgramMigrated, false); + + // Added 11/2024 + registry->RegisterBooleanPref(kBraveWalletAuroraMainnetMigrated, false); } void ClearJsonRpcServiceProfilePrefs(PrefService* prefs) { @@ -359,6 +362,10 @@ void MigrateObsoleteProfilePrefs(PrefService* prefs) { // Added 07/2024 to set active ETH chain to Sepolia if Goerli is selected. BraveWalletService::MigrateGoerliNetwork(prefs); + + // Added 11/2024 to set active ETH chain to Aurora mainnet if Aurora is + // selected. + BraveWalletService::MigrateAuroraMainnetAsCustomNetwork(prefs); } } // namespace brave_wallet diff --git a/components/brave_wallet/browser/brave_wallet_service.cc b/components/brave_wallet/browser/brave_wallet_service.cc index 504a384c84dd..796f290fd913 100644 --- a/components/brave_wallet/browser/brave_wallet_service.cc +++ b/components/brave_wallet/browser/brave_wallet_service.cc @@ -791,52 +791,54 @@ bool ShouldMigrateRemovedPreloadedNetwork(PrefService* prefs, base::ToLowerASCII(*selected_chain_id) == chain_id; } -void BraveWalletService::MigrateFantomMainnetAsCustomNetwork( - PrefService* prefs) { - if (prefs->GetBoolean(kBraveWalletCustomNetworksFantomMainnetMigrated)) { +// Migrate preloaded network to custom network. +void BraveWalletService::MigrateAsCustomNetwork( + PrefService* prefs, + const mojom::NetworkInfo& network, + bool is_eip1559, + std::string_view pref_key) { + if (prefs->GetBoolean(pref_key)) { return; } - if (ShouldMigrateRemovedPreloadedNetwork(prefs, mojom::CoinType::ETH, - mojom::kFantomMainnetChainId)) { + if (ShouldMigrateRemovedPreloadedNetwork(prefs, network.coin, + network.chain_id)) { NetworkManager network_manager(prefs); - mojom::NetworkInfo network( - mojom::kFantomMainnetChainId, "Fantom Opera", {"https://ftmscan.com"}, - {}, 0, {GURL("https://rpc.ftm.tools")}, "FTM", "Fantom", 18, - mojom::CoinType::ETH, - GetSupportedKeyringsForNetwork(mojom::CoinType::ETH, - mojom::kFantomMainnetChainId)); network_manager.AddCustomNetwork(network); - network_manager.SetEip1559ForCustomChain(mojom::kFantomMainnetChainId, - true); + network_manager.SetEip1559ForCustomChain(network.chain_id, is_eip1559); EnsureNativeTokenForNetwork(prefs, network); } - prefs->SetBoolean(kBraveWalletCustomNetworksFantomMainnetMigrated, true); + prefs->SetBoolean(pref_key, true); } -void BraveWalletService::MigrateGoerliNetwork(PrefService* prefs) { - if (prefs->GetBoolean(kBraveWalletGoerliNetworkMigrated)) { +// Migrate dead network to fallback network. +void BraveWalletService::MigrateDeadNetwork( + PrefService* prefs, + const std::string& chain_id, + const std::string& fallback_chain_id, + std::string_view pref_key) { + if (prefs->GetBoolean(pref_key)) { return; } NetworkManager network_manager(prefs); - // Migrate current chain id to Sepolia for default origin. + // Migrate current chain id for default origin if (network_manager.GetCurrentChainId(mojom::CoinType::ETH, std::nullopt) == - "0x5") { + chain_id) { network_manager.SetCurrentChainId(mojom::CoinType::ETH, std::nullopt, - mojom::kSepoliaChainId); + fallback_chain_id); } - // Migrate current chain id to Sepolia for all origins. + // Migrate current chain id for all origins const auto& selected_networks = prefs->GetDict(kBraveWalletSelectedNetworksPerOrigin); const auto* coin_dict = selected_networks.FindDict(GetPrefKeyForCoinType(mojom::CoinType::ETH)); if (!coin_dict) { - prefs->SetBoolean(kBraveWalletGoerliNetworkMigrated, true); + prefs->SetBoolean(pref_key, true); return; } @@ -846,14 +848,43 @@ void BraveWalletService::MigrateGoerliNetwork(PrefService* prefs) { continue; } - if (base::ToLowerASCII(*chain_id_each) == "0x5") { + if (base::ToLowerASCII(*chain_id_each) == chain_id) { network_manager.SetCurrentChainId(mojom::CoinType::ETH, url::Origin::Create(GURL(origin.first)), - mojom::kSepoliaChainId); + fallback_chain_id); } } - prefs->SetBoolean(kBraveWalletGoerliNetworkMigrated, true); + prefs->SetBoolean(pref_key, true); +} + +void BraveWalletService::MigrateFantomMainnetAsCustomNetwork( + PrefService* prefs) { + mojom::NetworkInfo network( + mojom::kFantomMainnetChainId, "Fantom Opera", {"https://ftmscan.com"}, {}, + 0, {GURL("https://rpc.ftm.tools")}, "FTM", "Fantom", 18, + mojom::CoinType::ETH, + GetSupportedKeyringsForNetwork(mojom::CoinType::ETH, + mojom::kFantomMainnetChainId)); + MigrateAsCustomNetwork(prefs, network, true, + kBraveWalletCustomNetworksFantomMainnetMigrated); +} + +void BraveWalletService::MigrateGoerliNetwork(PrefService* prefs) { + MigrateDeadNetwork(prefs, "0x5", mojom::kSepoliaChainId, + kBraveWalletGoerliNetworkMigrated); +} + +void BraveWalletService::MigrateAuroraMainnetAsCustomNetwork( + PrefService* prefs) { + mojom::NetworkInfo network( + mojom::kAuroraMainnetChainId, "Aurora Mainnet", {"https://aurora.dev"}, + {}, 0, {GURL("https://mainnet.aurora.dev")}, "ETH", "Aurora", 18, + mojom::CoinType::ETH, + GetSupportedKeyringsForNetwork(mojom::CoinType::ETH, + mojom::kAuroraMainnetChainId)); + MigrateAsCustomNetwork(prefs, network, false, + kBraveWalletAuroraMainnetMigrated); } void BraveWalletService::MigrateAssetsPrefToList(PrefService* prefs) { diff --git a/components/brave_wallet/browser/brave_wallet_service.h b/components/brave_wallet/browser/brave_wallet_service.h index 84b9e899b46c..02b0bbd544d0 100644 --- a/components/brave_wallet/browser/brave_wallet_service.h +++ b/components/brave_wallet/browser/brave_wallet_service.h @@ -81,8 +81,17 @@ class BraveWalletService : public KeyedService, void Bind(mojo::PendingReceiver receiver); static void MigrateHiddenNetworks(PrefService* profile_prefs); + static void MigrateDeadNetwork(PrefService* prefs, + const std::string& chain_id, + const std::string& fallback_chain_id, + std::string_view pref_key); + static void MigrateAsCustomNetwork(PrefService* prefs, + const mojom::NetworkInfo& network, + bool is_eip1559, + std::string_view pref_key); static void MigrateFantomMainnetAsCustomNetwork(PrefService* prefs); static void MigrateGoerliNetwork(PrefService* prefs); + static void MigrateAuroraMainnetAsCustomNetwork(PrefService* prefs); static void MigrateAssetsPrefToList(PrefService* prefs); static void MigrateEip1559ForCustomNetworks(PrefService* prefs); void MaybeMigrateCompressedNfts(); diff --git a/components/brave_wallet/browser/eth_tx_manager_unittest.cc b/components/brave_wallet/browser/eth_tx_manager_unittest.cc index 429781fab619..f6adfd3a8c77 100644 --- a/components/brave_wallet/browser/eth_tx_manager_unittest.cc +++ b/components/brave_wallet/browser/eth_tx_manager_unittest.cc @@ -541,7 +541,7 @@ TEST_F(EthTxManagerUnitTest, AddUnapprovedEvmTransaction) { // Known non-Eip1559 chain. { auto params = mojom::NewEvmTransactionParams::New( - mojom::kAuroraMainnetChainId, from(), + mojom::kBnbSmartChainMainnetChainId, from(), "0xbe862ad9abfe6f22bcb087716c7d89a26051f74c", "0x016345785d8a0000", "0x0974", data_); EXPECT_FALSE(*network_manager_->IsEip1559Chain(params->chain_id)); diff --git a/components/brave_wallet/browser/json_rpc_service_unittest.cc b/components/brave_wallet/browser/json_rpc_service_unittest.cc index d2525cb24a73..16116c52d764 100644 --- a/components/brave_wallet/browser/json_rpc_service_unittest.cc +++ b/components/brave_wallet/browser/json_rpc_service_unittest.cc @@ -2110,7 +2110,7 @@ TEST_F(JsonRpcServiceUnitTest, GetKnownNetworks) { UpdateCustomNetworks(prefs(), &values); EXPECT_CALL(callback, - Run(ElementsAreArray({"0x1", "0x4e454152", "0x89", "0x38", "0xa", + Run(ElementsAreArray({"0x1", "0x2105", "0x89", "0x38", "0xa", "0xa86a", "0x13a", "0xe9ac0d6", "0xaa36a7", "0x4cb2f", "0x539"}))); json_rpc_service_->GetKnownNetworks(mojom::CoinType::ETH, callback.Get()); diff --git a/components/brave_wallet/browser/network_manager.cc b/components/brave_wallet/browser/network_manager.cc index cd23301be00c..0c838904a2df 100644 --- a/components/brave_wallet/browser/network_manager.cc +++ b/components/brave_wallet/browser/network_manager.cc @@ -48,7 +48,7 @@ std::optional GetEip1559ForKnownChain(std::string_view chain_id_lwr) { {mojom::kFilecoinEthereumMainnetChainId, true}, {mojom::kFilecoinEthereumTestnetChainId, true}, {mojom::kBnbSmartChainMainnetChainId, false}, - {mojom::kAuroraMainnetChainId, false}, + {mojom::kBaseMainnetChainId, true}, {mojom::kNeonEVMMainnetChainId, false}, {mojom::kLocalhostChainId, false}, }); @@ -74,7 +74,7 @@ const std::string GetChainSubdomain(std::string_view chain_id) { {mojom::kSepoliaChainId, "ethereum-sepolia"}, {mojom::kPolygonMainnetChainId, "polygon-mainnet"}, {mojom::kOptimismMainnetChainId, "optimism-mainnet"}, - {mojom::kAuroraMainnetChainId, "aurora-mainnet"}, + {mojom::kBaseMainnetChainId, "base-mainnet"}, {mojom::kAvalancheMainnetChainId, "avalanche-mainnet"}, {mojom::kBnbSmartChainMainnetChainId, "bsc-mainnet"}, @@ -196,14 +196,14 @@ const mojom::NetworkInfo* GetOptimismMainnet() { return network_info.get(); } -const mojom::NetworkInfo* GetAuroraMainnet() { +const mojom::NetworkInfo* GetBaseMainnet() { const auto coin = mojom::CoinType::ETH; - const auto* chain_id = mojom::kAuroraMainnetChainId; + const auto* chain_id = mojom::kBaseMainnetChainId; static base::NoDestructor network_info( {chain_id, - "Aurora Mainnet", - {"https://aurorascan.dev"}, + "Base", + {"https://basescan.org"}, {}, 0, {GetURLForKnownChainId(chain_id).value()}, @@ -315,7 +315,7 @@ const std::vector& GetKnownEthNetworks() { static base::NoDestructor> networks({ // clang-format off GetEthMainnet(), - GetAuroraMainnet(), + GetBaseMainnet(), GetPolygonMainnet(), GetBscMainnet(), GetOptimismMainnet(), diff --git a/components/brave_wallet/browser/network_manager_unittest.cc b/components/brave_wallet/browser/network_manager_unittest.cc index 092e75bb489d..a79cbbcccba2 100644 --- a/components/brave_wallet/browser/network_manager_unittest.cc +++ b/components/brave_wallet/browser/network_manager_unittest.cc @@ -417,10 +417,10 @@ TEST_F(NetworkManagerUnitTest, GetNetworkURLForKnownChains) { // GetNetworkURL for these known chains should resolve to brave subdomain. base::flat_set known_chains = { brave_wallet::mojom::kMainnetChainId, + brave_wallet::mojom::kBaseMainnetChainId, brave_wallet::mojom::kPolygonMainnetChainId, brave_wallet::mojom::kBnbSmartChainMainnetChainId, brave_wallet::mojom::kOptimismMainnetChainId, - brave_wallet::mojom::kAuroraMainnetChainId, brave_wallet::mojom::kAvalancheMainnetChainId, brave_wallet::mojom::kSepoliaChainId}; @@ -472,12 +472,6 @@ TEST_F(NetworkManagerUnitTest, GetZCashSubdomainForKnownChainId) { } TEST_F(NetworkManagerUnitTest, GetKnownChain) { - const base::flat_set non_eip1559_networks = { - brave_wallet::mojom::kLocalhostChainId, - brave_wallet::mojom::kBnbSmartChainMainnetChainId, - brave_wallet::mojom::kAuroraMainnetChainId, - brave_wallet::mojom::kNeonEVMMainnetChainId}; - auto known_chains = NetworkManager::GetAllKnownChains(mojom::CoinType::ETH); ASSERT_FALSE(known_chains.empty()); for (const auto& chain : known_chains) { @@ -654,7 +648,7 @@ TEST_F(NetworkManagerUnitTest, Eip1559Chain) { {mojom::kFilecoinEthereumMainnetChainId, true}, {mojom::kFilecoinEthereumTestnetChainId, true}, {mojom::kBnbSmartChainMainnetChainId, false}, - {mojom::kAuroraMainnetChainId, false}, + {mojom::kBaseMainnetChainId, true}, {mojom::kNeonEVMMainnetChainId, false}, {mojom::kLocalhostChainId, false}}; for (auto& [chain_id, value] : known_states) { diff --git a/components/brave_wallet/browser/pref_names.h b/components/brave_wallet/browser/pref_names.h index 33e6b1f0a3b7..3d59eac0a09d 100644 --- a/components/brave_wallet/browser/pref_names.h +++ b/components/brave_wallet/browser/pref_names.h @@ -105,6 +105,9 @@ inline constexpr char kBraveWalletEip1559ForCustomNetworksMigrated[] = // 06/2024 to mark existing compressed Solana NFTs as compressed. inline constexpr char kBraveWalletIsCompressedNftMigrated[] = "brave.wallet.is_compressed_nft_migrated"; +// Added 11/2024 to mark Aurora mainnet as migrated. +inline constexpr char kBraveWalletAuroraMainnetMigrated[] = + "brave.wallet.aurora_mainnet_migrated"; // 08/2024 to mark fix existign SPL tokens marked as unsupported inline constexpr char kBraveWalletIsSPLTokenProgramMigrated[] =