Skip to content

Commit

Permalink
Use Brave endpoints for SNS and ENS (#16101)
Browse files Browse the repository at this point in the history
  • Loading branch information
supermassive committed Dec 1, 2022
1 parent fddc7e7 commit aac08e9
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 86 deletions.
43 changes: 19 additions & 24 deletions components/brave_wallet/browser/brave_wallet_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1234,7 +1234,7 @@ bool GetShowWalletTestNetworks(PrefService* prefs) {
}

mojom::CoinType GetSelectedCoin(PrefService* prefs) {
return static_cast<brave_wallet::mojom::CoinType>(
return static_cast<mojom::CoinType>(
prefs->GetInteger(kBraveWalletSelectedCoin));
}

Expand All @@ -1247,11 +1247,11 @@ std::string GetDefaultBaseCryptocurrency(PrefService* prefs) {
}

GURL GetUnstoppableDomainsRpcUrl(const std::string& chain_id) {
if (base::CompareCaseInsensitiveASCII(
chain_id, brave_wallet::mojom::kMainnetChainId) == 0 ||
base::CompareCaseInsensitiveASCII(
chain_id, brave_wallet::mojom::kPolygonMainnetChainId) == 0) {
return AddInfuraProjectId(GURL(GetInfuraURLForKnownChainId(chain_id)));
if (base::CompareCaseInsensitiveASCII(chain_id, mojom::kMainnetChainId) ==
0 ||
base::CompareCaseInsensitiveASCII(chain_id,
mojom::kPolygonMainnetChainId) == 0) {
return AddInfuraProjectId(GetInfuraURLForKnownChainId(chain_id));
}

NOTREACHED();
Expand All @@ -1266,12 +1266,21 @@ std::string GetUnstoppableDomainsProxyReaderContractAddress(
return "";
}

GURL GetEnsRpcUrl() {
return AddInfuraProjectId(
GetInfuraURLForKnownChainId(mojom::kMainnetChainId));
}

std::string GetEnsRegistryContractAddress(const std::string& chain_id) {
std::string chain_id_lower = base::ToLowerASCII(chain_id);
DCHECK_EQ(chain_id_lower, brave_wallet::mojom::kMainnetChainId);
DCHECK_EQ(chain_id_lower, mojom::kMainnetChainId);
return kEnsRegistryContractAddress;
}

GURL GetSnsRpcUrl() {
return GetSolMainnet()->rpc_endpoints.front();
}

void AddCustomNetwork(PrefService* prefs, const mojom::NetworkInfo& chain) {
DCHECK(prefs);
// FIL and SOL allow custom chains only over known ones.
Expand All @@ -1281,15 +1290,8 @@ void AddCustomNetwork(PrefService* prefs, const mojom::NetworkInfo& chain) {
{ // Update needs to be done before GetNetworkId below.
DictionaryPrefUpdate update(prefs, kBraveWalletCustomNetworks);
base::Value::Dict& dict = update.Get()->GetDict();
// TODO(cdesouza): Once cr106 is merged, this FindList should be replaced
// with EnsureList.
base::Value::List* list = dict.FindList(GetPrefKeyForCoinType(chain.coin));
if (!list) {
list = dict.Set(GetPrefKeyForCoinType(chain.coin), base::Value::List())
->GetIfList();
}
CHECK(list);
list->Append(NetworkInfoToValue(chain));
dict.EnsureList(GetPrefKeyForCoinType(chain.coin))
->Append(NetworkInfoToValue(chain));
}

if (chain.coin != mojom::CoinType::ETH)
Expand Down Expand Up @@ -1366,14 +1368,7 @@ void AddHiddenNetwork(PrefService* prefs,
const std::string& chain_id) {
DictionaryPrefUpdate update(prefs, kBraveWalletHiddenNetworks);
base::Value::Dict& dict = update.Get()->GetDict();
// TODO(cdesouza): Once cr106 is merged, this FindList should be replaced with
// EnsureList.
base::Value::List* list = dict.FindList(GetPrefKeyForCoinType(coin));
if (!list) {
list =
dict.Set(GetPrefKeyForCoinType(coin), base::Value::List())->GetIfList();
}
CHECK(list);
base::Value::List* list = dict.EnsureList(GetPrefKeyForCoinType(coin));
std::string chain_id_lower = base::ToLowerASCII(chain_id);
if (!base::Contains(*list, base::Value(chain_id_lower))) {
list->Append(chain_id_lower);
Expand Down
2 changes: 2 additions & 0 deletions components/brave_wallet/browser/brave_wallet_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,9 @@ std::string GetKnownEthNetworkId(const std::string& chain_id);
GURL GetUnstoppableDomainsRpcUrl(const std::string& chain_id);
std::string GetUnstoppableDomainsProxyReaderContractAddress(
const std::string& chain_id);
GURL GetEnsRpcUrl();
std::string GetEnsRegistryContractAddress(const std::string& chain_id);
GURL GetSnsRpcUrl();

// Append chain value to kBraveWalletCustomNetworks dictionary pref.
void AddCustomNetwork(PrefService* prefs, const mojom::NetworkInfo& chain);
Expand Down
16 changes: 16 additions & 0 deletions components/brave_wallet/browser/brave_wallet_utils_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1347,4 +1347,20 @@ TEST(BraveWalletUtilsUnitTest, GetActiveEndpointUrl) {
EXPECT_EQ(GURL(), GetActiveEndpointUrl(chain));
}

TEST(BraveWalletUtilsUnitTest, GetUnstoppableDomainsRpcUrl) {
EXPECT_EQ(AddInfuraProjectId(GURL("https://mainnet-infura.brave.com")),
GetUnstoppableDomainsRpcUrl(mojom::kMainnetChainId));
EXPECT_EQ(AddInfuraProjectId(GURL("https://mainnet-polygon.brave.com")),
GetUnstoppableDomainsRpcUrl(mojom::kPolygonMainnetChainId));
}

TEST(BraveWalletUtilsUnitTest, GetEnsRpcUrl) {
EXPECT_EQ(AddInfuraProjectId(GURL("https://mainnet-infura.brave.com")),
GetEnsRpcUrl());
}

TEST(BraveWalletUtilsUnitTest, GetSnsRpcUrl) {
EXPECT_EQ(GURL("https://mainnet-beta-solana.brave.com/rpc"), GetSnsRpcUrl());
}

} // namespace brave_wallet
69 changes: 7 additions & 62 deletions components/brave_wallet/browser/json_rpc_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1122,21 +1122,12 @@ void JsonRpcService::EnsRegistryGetResolver(const std::string& domain,

std::string data = ens::Resolver(domain);

GURL network_url = GetNetworkURL(prefs_, brave_wallet::mojom::kMainnetChainId,
mojom::CoinType::ETH);
if (!network_url.is_valid()) {
std::move(callback).Run(
"", mojom::ProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

auto internal_callback =
base::BindOnce(&JsonRpcService::OnEnsRegistryGetResolver,
weak_ptr_factory_.GetWeakPtr(), std::move(callback));
RequestInternal(eth::eth_call("", contract_address, "", "", "", data,
kEthereumBlockTagLatest),
true, network_url, std::move(internal_callback));
true, GetEnsRpcUrl(), std::move(internal_callback));
}

void JsonRpcService::OnEnsRegistryGetResolver(
Expand Down Expand Up @@ -1180,15 +1171,6 @@ void JsonRpcService::EnsGetContentHash(const std::string& domain,
allow_offchain = false;
}

GURL network_url = GetNetworkURL(
prefs_, brave_wallet::mojom::kMainnetChainId, mojom::CoinType::ETH);
if (!network_url.is_valid()) {
std::move(callback).Run(
{}, false, mojom::ProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

// JsonRpcService owns EnsResolverTask instance, so Unretained is safe here.
auto done_callback = base::BindOnce(
&JsonRpcService::OnEnsGetContentHashTaskDone, base::Unretained(this));
Expand All @@ -1197,7 +1179,7 @@ void JsonRpcService::EnsGetContentHash(const std::string& domain,
std::make_unique<EnsResolverTask>(
std::move(done_callback), api_request_helper_.get(),
api_request_helper_ens_offchain_.get(), MakeContentHashCall(domain),
domain, network_url, allow_offchain),
domain, GetEnsRpcUrl(), allow_offchain),
std::move(callback));
return;
}
Expand Down Expand Up @@ -1227,21 +1209,12 @@ void JsonRpcService::ContinueEnsGetContentHash(
return;
}

GURL network_url = GetNetworkURL(prefs_, brave_wallet::mojom::kMainnetChainId,
mojom::CoinType::ETH);
if (!network_url.is_valid()) {
std::move(callback).Run(
{}, false, mojom::ProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

auto internal_callback =
base::BindOnce(&JsonRpcService::OnEnsGetContentHash,
weak_ptr_factory_.GetWeakPtr(), std::move(callback));
RequestInternal(eth::eth_call("", resolver_address, "", "", "", data,
kEthereumBlockTagLatest),
true, network_url, std::move(internal_callback));
true, GetEnsRpcUrl(), std::move(internal_callback));
}

void JsonRpcService::OnEnsGetContentHash(EnsGetContentHashCallback callback,
Expand Down Expand Up @@ -1299,15 +1272,6 @@ void JsonRpcService::EnsGetEthAddr(const std::string& domain,
allow_offchain = false;
}

GURL network_url = GetNetworkURL(
prefs_, brave_wallet::mojom::kMainnetChainId, mojom::CoinType::ETH);
if (!network_url.is_valid()) {
std::move(callback).Run(
"", false, mojom::ProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

// JsonRpcService owns EnsResolverTask instance, so Unretained is safe here.
auto done_callback = base::BindOnce(
&JsonRpcService::OnEnsGetEthAddrTaskDone, base::Unretained(this));
Expand All @@ -1316,7 +1280,7 @@ void JsonRpcService::EnsGetEthAddr(const std::string& domain,
std::make_unique<EnsResolverTask>(
std::move(done_callback), api_request_helper_.get(),
api_request_helper_ens_offchain_.get(), MakeAddrCall(domain),
domain, network_url, allow_offchain),
domain, GetEnsRpcUrl(), allow_offchain),
std::move(callback));
return;
}
Expand Down Expand Up @@ -1386,23 +1350,14 @@ void JsonRpcService::SnsGetSolAddr(const std::string& domain,
return;
}

GURL network_url = GetNetworkURL(prefs_, brave_wallet::mojom::kSolanaMainnet,
mojom::CoinType::SOL);
if (!network_url.is_valid()) {
std::move(callback).Run(
"", mojom::SolanaProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

// JsonRpcService owns EnsResolverTask instance, so Unretained is safe here.
auto done_callback = base::BindOnce(&JsonRpcService::OnSnsGetSolAddrTaskDone,
base::Unretained(this));

sns_get_sol_addr_tasks_.AddTask(
std::make_unique<SnsResolverTask>(std::move(done_callback),
api_request_helper_.get(), domain,
network_url, true),
GetSnsRpcUrl(), true),
std::move(callback));
}

Expand Down Expand Up @@ -1455,23 +1410,14 @@ void JsonRpcService::SnsResolveHost(const std::string& domain,
return;
}

GURL network_url = GetNetworkURL(prefs_, brave_wallet::mojom::kSolanaMainnet,
mojom::CoinType::SOL);
if (!network_url.is_valid()) {
std::move(callback).Run(
GURL(), mojom::SolanaProviderError::kInvalidParams,
l10n_util::GetStringUTF8(IDS_WALLET_INVALID_PARAMETERS));
return;
}

// JsonRpcService owns EnsResolverTask instance, so Unretained is safe here.
auto done_callback = base::BindOnce(&JsonRpcService::OnSnsResolveHostTaskDone,
base::Unretained(this));

sns_resolve_host_tasks_.AddTask(
std::make_unique<SnsResolverTask>(std::move(done_callback),
api_request_helper_.get(), domain,
network_url, false),
GetSnsRpcUrl(), false),
std::move(callback));
}

Expand Down Expand Up @@ -1563,8 +1509,7 @@ void JsonRpcService::ContinueEnsGetEthAddr(const std::string& domain,
weak_ptr_factory_.GetWeakPtr(), std::move(callback));
RequestInternal(eth::eth_call("", resolver_address, "", "", "", data,
kEthereumBlockTagLatest),
true, network_urls_[mojom::CoinType::ETH],
std::move(internal_callback));
true, GetEnsRpcUrl(), std::move(internal_callback));
}

void JsonRpcService::OnEnsGetEthAddr(EnsGetEthAddrCallback callback,
Expand Down

0 comments on commit aac08e9

Please sign in to comment.