Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use only filecoin mainnet by default #13732

Merged
merged 4 commits into from
Jun 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions browser/brave_wallet/filecoin_keyring_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ TEST(FilecoinKeyring, ImportFilecoinSECP) {
ASSERT_FALSE(input_key.empty());
std::vector<uint8_t> private_key(input_key.begin(), input_key.end());

FilecoinKeyring keyring(brave_wallet::mojom::kLocalhostChainId);
FilecoinKeyring keyring;
auto address =
keyring.ImportFilecoinAccount(private_key, mojom::kFilecoinTestnet,
mojom::FilecoinAddressProtocol::SECP256K1);
Expand All @@ -116,7 +116,7 @@ TEST(FilecoinKeyring, ImportFilecoinBLS) {
ASSERT_TRUE(FilecoinKeyring::DecodeImportPayload(private_key_hex,
&private_key, &protocol));
EXPECT_EQ(protocol, mojom::FilecoinAddressProtocol::BLS);
FilecoinKeyring keyring(brave_wallet::mojom::kLocalhostChainId);
FilecoinKeyring keyring;
std::string address = keyring.ImportFilecoinAccount(
private_key, mojom::kFilecoinTestnet, protocol);
EXPECT_EQ(address,
Expand Down Expand Up @@ -168,7 +168,7 @@ TEST(FilecoinKeyring, fil_private_key_public_key) {
}

TEST(FilecoinKeyring, SignTransaction) {
FilecoinKeyring keyring(brave_wallet::mojom::kLocalhostChainId);
FilecoinKeyring keyring;
EXPECT_FALSE(keyring.SignTransaction(nullptr));

auto transaction = FilTransaction::FromTxData(mojom::FilTxData::New(
Expand Down
313 changes: 13 additions & 300 deletions browser/brave_wallet/keyring_service_unittest.cc

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions components/brave_wallet/browser/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ source_set("hd_keyring") {

deps = [
":transaction",
":utils",
"internal:hd_key",
"//base",
"//brave/components/brave_wallet/common",
Expand Down
70 changes: 52 additions & 18 deletions components/brave_wallet/browser/brave_wallet_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "base/environment.h"
#include "base/feature_list.h"
#include "base/logging.h"
#include "base/metrics/field_trial_params.h"
#include "base/notreached.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
Expand Down Expand Up @@ -247,6 +248,18 @@ const brave_wallet::mojom::NetworkInfo kKnownSolNetworks[] = {
nullptr}};

const brave_wallet::mojom::NetworkInfo kKnownFilNetworks[] = {
{brave_wallet::mojom::kFilecoinMainnet,
"Filecoin Mainnet",
{"https://filscan.io/tipset/message-detail"},
{},
{"https://api.node.glif.io/rpc/v0"},
"FIL",
"Filecoin",
18,
brave_wallet::mojom::CoinType::FIL,
nullptr}};

const brave_wallet::mojom::NetworkInfo kKnownFilNetworksWithTestnet[] = {
{brave_wallet::mojom::kFilecoinMainnet,
"Filecoin Mainnet",
{"https://filscan.io/tipset/message-detail"},
Expand Down Expand Up @@ -278,6 +291,27 @@ const brave_wallet::mojom::NetworkInfo kKnownFilNetworks[] = {
brave_wallet::mojom::CoinType::FIL,
nullptr}};

const std::vector<brave_wallet::mojom::NetworkInfoPtr>&
GetActualFilNetworksInfo() {
static const base::NoDestructor<
std::vector<brave_wallet::mojom::NetworkInfoPtr>>
networks_info([] {
std::vector<brave_wallet::mojom::NetworkInfoPtr> networks_info;
if (IsFilecoinTestnetEnabled()) {
for (const auto& a : kKnownFilNetworksWithTestnet) {
networks_info.push_back(a.Clone());
}
} else {
for (const auto& a : kKnownFilNetworks) {
networks_info.push_back(a.Clone());
}
}
return networks_info;
}());

return *networks_info;
}

const base::flat_map<std::string, std::string> kInfuraSubdomains = {
{brave_wallet::mojom::kMainnetChainId, "mainnet"},
{brave_wallet::mojom::kRinkebyChainId, "rinkeby"},
Expand Down Expand Up @@ -434,8 +468,8 @@ mojom::NetworkInfoPtr GetChain(PrefService* prefs,
}
}
} else if (coin == mojom::CoinType::FIL) {
for (const auto& network : kKnownFilNetworks) {
if (network.chain_id == chain_id) {
for (const auto& network : GetActualFilNetworksInfo()) {
if (network->chain_id == chain_id) {
return network.Clone();
}
}
Expand Down Expand Up @@ -528,6 +562,13 @@ bool IsFilecoinEnabled() {
brave_wallet::features::kBraveWalletFilecoinFeature);
}

// This is needed only for unit tests, not to be used in prod.
bool IsFilecoinTestnetEnabled() {
return base::FeatureList::IsEnabled(
brave_wallet::features::kBraveWalletFilecoinFeature) &&
brave_wallet::features::kFilecoinTestnetEnabled.Get();
}

bool IsDappsSupportEnabled() {
return base::FeatureList::IsEnabled(
brave_wallet::features::kBraveWalletDappsSupportFeature);
Expand Down Expand Up @@ -891,9 +932,9 @@ GURL GetNetworkURL(PrefService* prefs,
}
}
} else if (coin == mojom::CoinType::FIL) {
for (const auto& network : kKnownFilNetworks) {
if (network.chain_id == chain_id && network.rpc_urls.size()) {
return GURL(network.rpc_urls.front());
for (const auto& network : GetActualFilNetworksInfo()) {
if (network->chain_id == chain_id && network->rpc_urls.size()) {
return GURL(network->rpc_urls.front());
}
}
}
Expand All @@ -916,7 +957,7 @@ std::vector<mojom::NetworkInfoPtr> GetAllChains(PrefService* prefs,

std::vector<mojom::NetworkInfoPtr> GetAllKnownFilChains() {
std::vector<mojom::NetworkInfoPtr> result;
for (const auto& network : kKnownFilNetworks)
for (const auto& network : GetActualFilNetworksInfo())
result.push_back(network.Clone());
return result;
}
Expand All @@ -940,8 +981,8 @@ std::vector<std::string> GetAllKnownSolNetworkIds() {

std::vector<std::string> GetAllKnownFilNetworkIds() {
std::vector<std::string> network_ids;
for (const auto& network : kKnownFilNetworks) {
std::string network_id = GetKnownFilNetworkId(network.chain_id);
for (const auto& network : GetActualFilNetworksInfo()) {
std::string network_id = GetKnownFilNetworkId(network->chain_id);
if (!network_id.empty())
network_ids.push_back(network_id);
}
Expand Down Expand Up @@ -1003,9 +1044,9 @@ std::string GetKnownFilNetworkId(const std::string& chain_id) {
// Separate check for localhost in known networks as it is predefined but
// does not have predefined subdomain.
if (chain_id == mojom::kLocalhostChainId) {
for (const auto& network : kKnownFilNetworks) {
if (network.chain_id == chain_id) {
return GURL(network.rpc_urls.front()).spec();
for (const auto& network : GetActualFilNetworksInfo()) {
if (network->chain_id == chain_id) {
return GURL(network->rpc_urls.front()).spec();
}
}
}
Expand Down Expand Up @@ -1240,13 +1281,6 @@ void RemoveHiddenNetwork(PrefService* prefs,
});
}

std::string GetCurrentFilecoinNetworkPrefix(PrefService* prefs) {
return (GetCurrentChainId(prefs, mojom::CoinType::FIL) ==
brave_wallet::mojom::kFilecoinMainnet)
? mojom::kFilecoinMainnet
: mojom::kFilecoinTestnet;
}

std::string GetCurrentChainId(PrefService* prefs, mojom::CoinType coin) {
const base::Value* selected_networks =
prefs->GetDictionary(kBraveWalletSelectedNetworks);
Expand Down
3 changes: 1 addition & 2 deletions components/brave_wallet/browser/brave_wallet_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ namespace brave_wallet {

bool IsNativeWalletEnabled();
bool IsFilecoinEnabled();
bool IsFilecoinTestnetEnabled();
bool IsSolanaEnabled();
bool IsDappsSupportEnabled();

Expand Down Expand Up @@ -139,8 +140,6 @@ mojom::NetworkInfoPtr GetChain(PrefService* prefs,
// Get the current chain ID for coin from kBraveWalletSelectedNetworks pref.
std::string GetCurrentChainId(PrefService* prefs, mojom::CoinType coin);

std::string GetCurrentFilecoinNetworkPrefix(PrefService* prefs);

// Returns the first URL to use that:
// 1. Has no variables in it like ${INFURA_API_KEY}
// 2. Is HTTP or HTTPS
Expand Down
Loading