refactor(apis): replace to-be-deprecated ethereum-api.xyz and blockchain-api.xyz calls (#349)
* refactor(dapp-v2): `ethereum-api.xyz` to `rpc.walletconnect.com` * refactor(with-ethers): `ethereum-api.xyz` -> `rpc.walletconnect.com` * refactor(with-web3js): `ethereum-api.xyz` -> `rpc.walletconnect.com` * refactor(cosmos-provider): `ethereum-api.xyz` -> `rpc.walletconnect.com` * refactor(apis): replace remaining `blockchain-api.xyz` calls with assets * chore: add leftover assets for test chains
After Width: | Height: | Size: 676 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 65 KiB |
@ -1,12 +1,10 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
|
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
||||||
|
|
||||||
export const CosmosMetadata: NamespaceMetadata = {
|
export const CosmosMetadata: NamespaceMetadata = {
|
||||||
"cosmoshub-4": {
|
"cosmoshub-4": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "cosmos:cosmoshub-4.png",
|
logo: "/assets/" + "cosmos:cosmoshub-4.png",
|
||||||
rgb: "27, 31, 53",
|
rgb: "27, 31, 53",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -20,9 +18,7 @@ export function getChainMetadata(chainId: string): ChainMetadata {
|
|||||||
return metadata;
|
return metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getChainRequestRender(
|
export function getChainRequestRender(request: JsonRpcRequest): ChainRequestRender[] {
|
||||||
request: JsonRpcRequest
|
|
||||||
): ChainRequestRender[] {
|
|
||||||
return [
|
return [
|
||||||
{ label: "Method", value: request.method },
|
{ label: "Method", value: request.method },
|
||||||
{
|
{
|
||||||
|
@ -7,7 +7,6 @@ import {
|
|||||||
convertHexToNumber,
|
convertHexToNumber,
|
||||||
convertHexToUtf8,
|
convertHexToUtf8,
|
||||||
} from "../helpers";
|
} from "../helpers";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
export const EIP155Colors = {
|
export const EIP155Colors = {
|
||||||
ethereum: "99, 125, 234",
|
ethereum: "99, 125, 234",
|
||||||
@ -22,55 +21,55 @@ export const EIP155Colors = {
|
|||||||
export const EIP155Metadata: NamespaceMetadata = {
|
export const EIP155Metadata: NamespaceMetadata = {
|
||||||
"1": {
|
"1": {
|
||||||
name: "Ethereum",
|
name: "Ethereum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:1.png",
|
logo: "/assets/" + "eip155:1.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:5.png",
|
logo: "/assets/" + "eip155:5.png",
|
||||||
rgb: EIP155Colors.goerli,
|
rgb: EIP155Colors.goerli,
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
name: "Optimism",
|
name: "Optimism",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:10.png",
|
logo: "/assets/" + "eip155:10.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"42": {
|
"42": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42.png",
|
logo: "/assets/" + "eip155:42.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"69": {
|
"69": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:69.png",
|
logo: "/assets/" + "eip155:69.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"100": {
|
"100": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:100.png",
|
logo: "/assets/" + "eip155:100.png",
|
||||||
rgb: EIP155Colors.xdai,
|
rgb: EIP155Colors.xdai,
|
||||||
},
|
},
|
||||||
"137": {
|
"137": {
|
||||||
name: "Polygon",
|
name: "Polygon",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:137.png",
|
logo: "/assets/" + "eip155:137.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"80001": {
|
"80001": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:80001.png",
|
logo: "/assets/" + "eip155:80001.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"42161": {
|
"42161": {
|
||||||
name: "Arbitrum",
|
name: "Arbitrum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42161.png",
|
logo: "/assets/" + "eip155:42161.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
"42220": {
|
"42220": {
|
||||||
name: "Celo",
|
name: "Celo",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42220.png",
|
logo: "/assets/" + "eip155:42220.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"44787": {
|
"44787": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:44787.png",
|
logo: "/assets/" + "eip155:44787.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"421611": {
|
"421611": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:421611.png",
|
logo: "/assets/" + "eip155:421611.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
||||||
|
|
||||||
|
@ -1,2 +1 @@
|
|||||||
export * from "./default";
|
export * from "./default";
|
||||||
export * from "./logo";
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const BLOCKCHAIN_LOGO_BASE_URL = "https://blockchain-api.xyz/logos/";
|
|
@ -1,45 +1,158 @@
|
|||||||
import axios, { AxiosInstance } from "axios";
|
import axios, { AxiosInstance } from "axios";
|
||||||
import { AssetData, GasPrices, ParsedTx } from "./types";
|
|
||||||
|
|
||||||
const ethereumApi: AxiosInstance = axios.create({
|
export type RpcProvidersByChainId = Record<
|
||||||
baseURL: "https://ethereum-api.xyz",
|
number,
|
||||||
timeout: 30000, // 30 secs
|
{
|
||||||
|
name: string;
|
||||||
|
baseURL: string;
|
||||||
|
token: {
|
||||||
|
name: string;
|
||||||
|
symbol: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
const WALLETCONNECT_RPC_BASE_URL = `https://rpc.walletconnect.com/v1?projectId=${process.env.NEXT_PUBLIC_PROJECT_ID}`;
|
||||||
|
|
||||||
|
export const rpcProvidersByChainId: RpcProvidersByChainId = {
|
||||||
|
1: {
|
||||||
|
name: "Ethereum Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:1",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
name: "Ethereum Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:5",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
137: {
|
||||||
|
name: "Polygon Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:137",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
280: {
|
||||||
|
name: "zkSync Era Testnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:280",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
324: {
|
||||||
|
name: "zkSync Era",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:324",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
80001: {
|
||||||
|
name: "Polygon Mumbai",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:80001",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
10: {
|
||||||
|
name: "Optimism",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:10",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
420: {
|
||||||
|
name: "Optimism Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:420",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42161: {
|
||||||
|
name: "Arbitrum",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:42161",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
421611: {
|
||||||
|
name: "Arbitrum Rinkeby",
|
||||||
|
baseURL: "https://rinkeby.arbitrum.io/rpc",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
100: {
|
||||||
|
name: "xDAI",
|
||||||
|
baseURL: "https://xdai-archive.blockscout.com",
|
||||||
|
token: {
|
||||||
|
name: "xDAI",
|
||||||
|
symbol: "xDAI",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42220: {
|
||||||
|
name: "Celo",
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
44787: {
|
||||||
|
name: "Celo Alfajores",
|
||||||
|
baseURL: "https://alfajores-forno.celo-testnet.org",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const api: AxiosInstance = axios.create({
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
timeout: 10000, // 10 secs
|
||||||
headers: {
|
headers: {
|
||||||
Accept: "application/json",
|
Accept: "application/json",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function apiGetAccountAssets(address: string, chainId: string): Promise<AssetData[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-assets?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function apiGetAccountTransactions(
|
|
||||||
address: string,
|
|
||||||
chainId: string,
|
|
||||||
): Promise<ParsedTx[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-transactions?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
||||||
const ethChainId = chainId.split(":")[1];
|
const ethChainId = chainId.split(":")[1];
|
||||||
const response = await ethereumApi.get(`/account-nonce?address=${address}&chainId=${ethChainId}`);
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_getTransactionCount",
|
||||||
|
params: [address, "latest"],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
const nonce = parseInt(result, 16);
|
||||||
|
return nonce;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const apiGetGasPrices = async (): Promise<GasPrices> => {
|
export const apiGetGasPrice = async (chainId: string): Promise<string> => {
|
||||||
const response = await ethereumApi.get(`/gas-prices`);
|
const ethChainId = chainId.split(":")[1];
|
||||||
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_gasPrice",
|
||||||
|
params: [],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
import * as encoding from "@walletconnect/encoding";
|
import * as encoding from "@walletconnect/encoding";
|
||||||
|
|
||||||
import { apiGetAccountNonce, apiGetGasPrices } from "./api";
|
import { apiGetAccountNonce, apiGetGasPrice } from "./api";
|
||||||
import { toWad } from "./utilities";
|
|
||||||
|
|
||||||
export async function getGasPrice(chainId: string): Promise<string> {
|
export async function getGasPrice(chainId: string): Promise<string> {
|
||||||
if (chainId === "eip155:1") return toWad("20", 9).toHexString();
|
const gasPrice = await apiGetGasPrice(chainId);
|
||||||
const gasPrices = await apiGetGasPrices();
|
return gasPrice;
|
||||||
return toWad(`${gasPrices.slow.price}`, 9).toHexString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function formatTestTransaction(account: string) {
|
export async function formatTestTransaction(account: string) {
|
||||||
|
After Width: | Height: | Size: 676 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 65 KiB |
@ -1,12 +1,10 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
|
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
||||||
|
|
||||||
export const CosmosMetadata: NamespaceMetadata = {
|
export const CosmosMetadata: NamespaceMetadata = {
|
||||||
"cosmoshub-4": {
|
"cosmoshub-4": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "cosmos:cosmoshub-4.png",
|
logo: "/assets/" + "cosmos:cosmoshub-4.png",
|
||||||
rgb: "27, 31, 53",
|
rgb: "27, 31, 53",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -7,7 +7,6 @@ import {
|
|||||||
convertHexToNumber,
|
convertHexToNumber,
|
||||||
convertHexToUtf8,
|
convertHexToUtf8,
|
||||||
} from "../helpers";
|
} from "../helpers";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
export const EIP155Colors = {
|
export const EIP155Colors = {
|
||||||
ethereum: "99, 125, 234",
|
ethereum: "99, 125, 234",
|
||||||
@ -22,55 +21,55 @@ export const EIP155Colors = {
|
|||||||
export const EIP155Metadata: NamespaceMetadata = {
|
export const EIP155Metadata: NamespaceMetadata = {
|
||||||
"1": {
|
"1": {
|
||||||
name: "Ethereum",
|
name: "Ethereum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:1.png",
|
logo: "/assets/" + "eip155:1.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:5.png",
|
logo: "/assets/" + "eip155:5.png",
|
||||||
rgb: EIP155Colors.goerli,
|
rgb: EIP155Colors.goerli,
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
name: "Optimism",
|
name: "Optimism",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:10.png",
|
logo: "/assets/" + "eip155:10.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"42": {
|
"42": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42.png",
|
logo: "/assets/" + "eip155:42.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"69": {
|
"69": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:69.png",
|
logo: "/assets/" + "eip155:69.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"100": {
|
"100": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:100.png",
|
logo: "/assets/" + "eip155:100.png",
|
||||||
rgb: EIP155Colors.xdai,
|
rgb: EIP155Colors.xdai,
|
||||||
},
|
},
|
||||||
"137": {
|
"137": {
|
||||||
name: "Polygon",
|
name: "Polygon",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:137.png",
|
logo: "/assets/" + "eip155:137.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"80001": {
|
"80001": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:80001.png",
|
logo: "/assets/" + "eip155:80001.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"42161": {
|
"42161": {
|
||||||
name: "Arbitrum",
|
name: "Arbitrum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42161.png",
|
logo: "/assets/" + "eip155:42161.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
"42220": {
|
"42220": {
|
||||||
name: "Celo",
|
name: "Celo",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42220.png",
|
logo: "/assets/" + "eip155:42220.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"44787": {
|
"44787": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:44787.png",
|
logo: "/assets/" + "eip155:44787.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"421611": {
|
"421611": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:421611.png",
|
logo: "/assets/" + "eip155:421611.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
||||||
|
|
||||||
|
@ -1,2 +1 @@
|
|||||||
export * from "./default";
|
export * from "./default";
|
||||||
export * from "./logo";
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const BLOCKCHAIN_LOGO_BASE_URL = "https://blockchain-api.xyz/logos/";
|
|
@ -1,45 +1,159 @@
|
|||||||
import axios, { AxiosInstance } from "axios";
|
import axios, { AxiosInstance } from "axios";
|
||||||
import { AssetData, GasPrices, ParsedTx } from "./types";
|
|
||||||
|
|
||||||
const ethereumApi: AxiosInstance = axios.create({
|
export type RpcProvidersByChainId = Record<
|
||||||
baseURL: "https://ethereum-api.xyz",
|
number,
|
||||||
timeout: 30000, // 30 secs
|
{
|
||||||
|
name: string;
|
||||||
|
baseURL: string;
|
||||||
|
token: {
|
||||||
|
name: string;
|
||||||
|
symbol: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
const WALLETCONNECT_RPC_BASE_URL = `https://rpc.walletconnect.com/v1?projectId=${process.env.NEXT_PUBLIC_PROJECT_ID}`;
|
||||||
|
|
||||||
|
export const rpcProvidersByChainId: RpcProvidersByChainId = {
|
||||||
|
1: {
|
||||||
|
name: "Ethereum Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:1",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
name: "Ethereum Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:5",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
137: {
|
||||||
|
name: "Polygon Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:137",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
280: {
|
||||||
|
name: "zkSync Era Testnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:280",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
324: {
|
||||||
|
name: "zkSync Era",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:324",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
80001: {
|
||||||
|
name: "Polygon Mumbai",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:80001",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
10: {
|
||||||
|
name: "Optimism",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:10",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
420: {
|
||||||
|
name: "Optimism Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:420",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42161: {
|
||||||
|
name: "Arbitrum",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:42161",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
421611: {
|
||||||
|
name: "Arbitrum Rinkeby",
|
||||||
|
baseURL: "https://rinkeby.arbitrum.io/rpc",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
100: {
|
||||||
|
name: "xDAI",
|
||||||
|
baseURL: "https://xdai-archive.blockscout.com",
|
||||||
|
token: {
|
||||||
|
name: "xDAI",
|
||||||
|
symbol: "xDAI",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42220: {
|
||||||
|
name: "Celo",
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
44787: {
|
||||||
|
name: "Celo Alfajores",
|
||||||
|
baseURL: "https://alfajores-forno.celo-testnet.org",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const api: AxiosInstance = axios.create({
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
timeout: 10000, // 10 secs
|
||||||
headers: {
|
headers: {
|
||||||
Accept: "application/json",
|
Accept: "application/json",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function apiGetAccountAssets(address: string, chainId: string): Promise<AssetData[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-assets?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function apiGetAccountTransactions(
|
|
||||||
address: string,
|
|
||||||
chainId: string,
|
|
||||||
): Promise<ParsedTx[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-transactions?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
||||||
|
debugger;
|
||||||
const ethChainId = chainId.split(":")[1];
|
const ethChainId = chainId.split(":")[1];
|
||||||
const response = await ethereumApi.get(`/account-nonce?address=${address}&chainId=${ethChainId}`);
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_getTransactionCount",
|
||||||
|
params: [address, "latest"],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
const nonce = parseInt(result, 16);
|
||||||
|
return nonce;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const apiGetGasPrices = async (): Promise<GasPrices> => {
|
export const apiGetGasPrice = async (chainId: string): Promise<string> => {
|
||||||
const response = await ethereumApi.get(`/gas-prices`);
|
const ethChainId = chainId.split(":")[1];
|
||||||
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_gasPrice",
|
||||||
|
params: [],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
import * as encoding from "@walletconnect/encoding";
|
import * as encoding from "@walletconnect/encoding";
|
||||||
|
|
||||||
import { apiGetAccountNonce, apiGetGasPrices } from "./api";
|
import { apiGetAccountNonce, apiGetGasPrice } from "./api";
|
||||||
import { toWad } from "./utilities";
|
|
||||||
|
|
||||||
export async function getGasPrice(chainId: string): Promise<string> {
|
export async function getGasPrice(chainId: string): Promise<string> {
|
||||||
if (chainId === "eip155:1") return toWad("20", 9).toHexString();
|
const gasPrice = await apiGetGasPrice(chainId);
|
||||||
const gasPrices = await apiGetGasPrices();
|
return gasPrice;
|
||||||
return toWad(`${gasPrices.slow.price}`, 9).toHexString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function formatTestTransaction(account: string) {
|
export async function formatTestTransaction(account: string) {
|
||||||
|
After Width: | Height: | Size: 676 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 65 KiB |
@ -1,12 +1,10 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
|
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
import { NamespaceMetadata, ChainMetadata, ChainRequestRender } from "../helpers";
|
||||||
|
|
||||||
export const CosmosMetadata: NamespaceMetadata = {
|
export const CosmosMetadata: NamespaceMetadata = {
|
||||||
"cosmoshub-4": {
|
"cosmoshub-4": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "cosmos:cosmoshub-4.png",
|
logo: "/assets/" + "cosmos:cosmoshub-4.png",
|
||||||
rgb: "27, 31, 53",
|
rgb: "27, 31, 53",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -7,7 +7,6 @@ import {
|
|||||||
convertHexToNumber,
|
convertHexToNumber,
|
||||||
convertHexToUtf8,
|
convertHexToUtf8,
|
||||||
} from "../helpers";
|
} from "../helpers";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
export const EIP155Colors = {
|
export const EIP155Colors = {
|
||||||
ethereum: "99, 125, 234",
|
ethereum: "99, 125, 234",
|
||||||
@ -22,55 +21,55 @@ export const EIP155Colors = {
|
|||||||
export const EIP155Metadata: NamespaceMetadata = {
|
export const EIP155Metadata: NamespaceMetadata = {
|
||||||
"1": {
|
"1": {
|
||||||
name: "Ethereum",
|
name: "Ethereum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:1.png",
|
logo: "/assets/" + "eip155:1.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:5.png",
|
logo: "/assets/" + "eip155:5.png",
|
||||||
rgb: EIP155Colors.goerli,
|
rgb: EIP155Colors.goerli,
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
name: "Optimism",
|
name: "Optimism",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:10.png",
|
logo: "/assets/" + "eip155:10.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"42": {
|
"42": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42.png",
|
logo: "/assets/" + "eip155:42.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"69": {
|
"69": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:69.png",
|
logo: "/assets/" + "eip155:69.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"100": {
|
"100": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:100.png",
|
logo: "/assets/" + "eip155:100.png",
|
||||||
rgb: EIP155Colors.xdai,
|
rgb: EIP155Colors.xdai,
|
||||||
},
|
},
|
||||||
"137": {
|
"137": {
|
||||||
name: "Polygon",
|
name: "Polygon",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:137.png",
|
logo: "/assets/" + "eip155:137.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"80001": {
|
"80001": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:80001.png",
|
logo: "/assets/" + "eip155:80001.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"42161": {
|
"42161": {
|
||||||
name: "Arbitrum",
|
name: "Arbitrum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42161.png",
|
logo: "/assets/" + "eip155:42161.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
"42220": {
|
"42220": {
|
||||||
name: "Celo",
|
name: "Celo",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42220.png",
|
logo: "/assets/" + "eip155:42220.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"44787": {
|
"44787": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:44787.png",
|
logo: "/assets/" + "eip155:44787.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"421611": {
|
"421611": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:421611.png",
|
logo: "/assets/" + "eip155:421611.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,2 +1 @@
|
|||||||
export * from "./default";
|
export * from "./default";
|
||||||
export * from "./logo";
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const BLOCKCHAIN_LOGO_BASE_URL = "https://blockchain-api.xyz/logos/";
|
|
@ -179,14 +179,6 @@ export function ClientContextProvider({ children }: { children: ReactNode | Reac
|
|||||||
|
|
||||||
console.log("Enabling EthereumProvider for chainId: ", chainId);
|
console.log("Enabling EthereumProvider for chainId: ", chainId);
|
||||||
|
|
||||||
const customRpcs = Object.keys(chainData.eip155).reduce(
|
|
||||||
(rpcs: Record<string, string>, chainId) => {
|
|
||||||
rpcs[chainId] = chainData.eip155[chainId].rpc[0];
|
|
||||||
return rpcs;
|
|
||||||
},
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
|
|
||||||
const session = await ethereumProvider.connect({
|
const session = await ethereumProvider.connect({
|
||||||
namespaces: {
|
namespaces: {
|
||||||
eip155: {
|
eip155: {
|
||||||
@ -199,7 +191,6 @@ export function ClientContextProvider({ children }: { children: ReactNode | Reac
|
|||||||
],
|
],
|
||||||
chains: [`eip155:${chainId}`],
|
chains: [`eip155:${chainId}`],
|
||||||
events: ["chainChanged", "accountsChanged"],
|
events: ["chainChanged", "accountsChanged"],
|
||||||
rpcMap: customRpcs,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pairingTopic: pairing?.topic,
|
pairingTopic: pairing?.topic,
|
||||||
@ -214,7 +205,7 @@ export function ClientContextProvider({ children }: { children: ReactNode | Reac
|
|||||||
|
|
||||||
web3Modal?.closeModal();
|
web3Modal?.closeModal();
|
||||||
},
|
},
|
||||||
[ethereumProvider, chainData.eip155, createWeb3Provider, web3Modal],
|
[ethereumProvider, createWeb3Provider, web3Modal],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onSessionConnected = useCallback(
|
const onSessionConnected = useCallback(
|
||||||
|
@ -1,45 +1,159 @@
|
|||||||
import axios, { AxiosInstance } from "axios";
|
import axios, { AxiosInstance } from "axios";
|
||||||
import { AssetData, GasPrices, ParsedTx } from "./types";
|
|
||||||
|
|
||||||
const ethereumApi: AxiosInstance = axios.create({
|
export type RpcProvidersByChainId = Record<
|
||||||
baseURL: "https://ethereum-api.xyz",
|
number,
|
||||||
timeout: 30000, // 30 secs
|
{
|
||||||
|
name: string;
|
||||||
|
baseURL: string;
|
||||||
|
token: {
|
||||||
|
name: string;
|
||||||
|
symbol: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
const WALLETCONNECT_RPC_BASE_URL = `https://rpc.walletconnect.com/v1?projectId=${process.env.NEXT_PUBLIC_PROJECT_ID}`;
|
||||||
|
|
||||||
|
export const rpcProvidersByChainId: RpcProvidersByChainId = {
|
||||||
|
1: {
|
||||||
|
name: "Ethereum Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:1",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
name: "Ethereum Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:5",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
137: {
|
||||||
|
name: "Polygon Mainnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:137",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
280: {
|
||||||
|
name: "zkSync Era Testnet",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:280",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
324: {
|
||||||
|
name: "zkSync Era",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:324",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
80001: {
|
||||||
|
name: "Polygon Mumbai",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:80001",
|
||||||
|
token: {
|
||||||
|
name: "Matic",
|
||||||
|
symbol: "MATIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
10: {
|
||||||
|
name: "Optimism",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:10",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
420: {
|
||||||
|
name: "Optimism Goerli",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:420",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42161: {
|
||||||
|
name: "Arbitrum",
|
||||||
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:42161",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
421611: {
|
||||||
|
name: "Arbitrum Rinkeby",
|
||||||
|
baseURL: "https://rinkeby.arbitrum.io/rpc",
|
||||||
|
token: {
|
||||||
|
name: "Ether",
|
||||||
|
symbol: "ETH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
100: {
|
||||||
|
name: "xDAI",
|
||||||
|
baseURL: "https://xdai-archive.blockscout.com",
|
||||||
|
token: {
|
||||||
|
name: "xDAI",
|
||||||
|
symbol: "xDAI",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
42220: {
|
||||||
|
name: "Celo",
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
44787: {
|
||||||
|
name: "Celo Alfajores",
|
||||||
|
baseURL: "https://alfajores-forno.celo-testnet.org",
|
||||||
|
token: {
|
||||||
|
name: "CELO",
|
||||||
|
symbol: "CELO",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const api: AxiosInstance = axios.create({
|
||||||
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
|
timeout: 10000, // 10 secs
|
||||||
headers: {
|
headers: {
|
||||||
Accept: "application/json",
|
Accept: "application/json",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function apiGetAccountAssets(address: string, chainId: string): Promise<AssetData[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-assets?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function apiGetAccountTransactions(
|
|
||||||
address: string,
|
|
||||||
chainId: string,
|
|
||||||
): Promise<ParsedTx[]> {
|
|
||||||
const ethChainId = chainId.split(":")[1];
|
|
||||||
const response = await ethereumApi.get(
|
|
||||||
`/account-transactions?address=${address}&chainId=${ethChainId}`,
|
|
||||||
);
|
|
||||||
const { result } = response.data;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
export const apiGetAccountNonce = async (address: string, chainId: string): Promise<number> => {
|
||||||
|
debugger;
|
||||||
const ethChainId = chainId.split(":")[1];
|
const ethChainId = chainId.split(":")[1];
|
||||||
const response = await ethereumApi.get(`/account-nonce?address=${address}&chainId=${ethChainId}`);
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_getTransactionCount",
|
||||||
|
params: [address, "latest"],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
const nonce = parseInt(result, 16);
|
||||||
|
return nonce;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const apiGetGasPrices = async (): Promise<GasPrices> => {
|
export const apiGetGasPrice = async (chainId: string): Promise<string> => {
|
||||||
const response = await ethereumApi.get(`/gas-prices`);
|
const ethChainId = chainId.split(":")[1];
|
||||||
|
const { baseURL } = rpcProvidersByChainId[Number(ethChainId)];
|
||||||
|
const response = await api.post(baseURL, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
method: "eth_gasPrice",
|
||||||
|
params: [],
|
||||||
|
id: 1,
|
||||||
|
});
|
||||||
const { result } = response.data;
|
const { result } = response.data;
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
import * as encoding from "@walletconnect/encoding";
|
import * as encoding from "@walletconnect/encoding";
|
||||||
|
|
||||||
import { apiGetAccountNonce, apiGetGasPrices } from "./api";
|
import { apiGetAccountNonce, apiGetGasPrice } from "./api";
|
||||||
import { toWad } from "./utilities";
|
|
||||||
|
|
||||||
export async function getGasPrice(chainId: string): Promise<string> {
|
export async function getGasPrice(chainId: string): Promise<string> {
|
||||||
if (chainId === "eip155:1") return toWad("20", 9).toHexString();
|
const gasPrice = await apiGetGasPrice(chainId);
|
||||||
const gasPrices = await apiGetGasPrices();
|
return gasPrice
|
||||||
return toWad(`${gasPrices.slow.price}`, 9).toHexString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function formatTestTransaction(account: string) {
|
export async function formatTestTransaction(account: string) {
|
||||||
|
After Width: | Height: | Size: 676 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:1.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:10.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:100.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:137.png
Normal file
After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 410 B After Width: | Height: | Size: 410 B |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:420.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:42161.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:421611.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:42220.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:44787.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
advanced/dapps/react-dapp-v2/public/assets/eip155:80001.png
Normal file
After Width: | Height: | Size: 65 KiB |
@ -1,7 +1,5 @@
|
|||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
|
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
NamespaceMetadata,
|
NamespaceMetadata,
|
||||||
ChainMetadata,
|
ChainMetadata,
|
||||||
@ -42,7 +40,7 @@ export const CosmosChainData: ChainsMap = {
|
|||||||
|
|
||||||
export const CosmosMetadata: NamespaceMetadata = {
|
export const CosmosMetadata: NamespaceMetadata = {
|
||||||
"cosmoshub-4": {
|
"cosmoshub-4": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "cosmos:cosmoshub-4.png",
|
logo: "/assets/" + "cosmos:cosmoshub-4.png",
|
||||||
rgb: "27, 31, 53",
|
rgb: "27, 31, 53",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -8,7 +8,6 @@ import {
|
|||||||
convertHexToUtf8,
|
convertHexToUtf8,
|
||||||
ChainsMap,
|
ChainsMap,
|
||||||
} from "../helpers";
|
} from "../helpers";
|
||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
|
|
||||||
export const EIP155Colors = {
|
export const EIP155Colors = {
|
||||||
ethereum: "99, 125, 234",
|
ethereum: "99, 125, 234",
|
||||||
@ -132,65 +131,65 @@ export const EIP155ChainData: ChainsMap = {
|
|||||||
export const EIP155Metadata: NamespaceMetadata = {
|
export const EIP155Metadata: NamespaceMetadata = {
|
||||||
"1": {
|
"1": {
|
||||||
name: "Ethereum",
|
name: "Ethereum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:1.png",
|
logo: "/assets/" + "eip155:1.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:1.png",
|
logo: "/assets/" + "eip155:1.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
name: "Optimism",
|
name: "Optimism",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:10.png",
|
logo: "/assets/" + "eip155:10.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"42": {
|
"42": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42.png",
|
logo: "/assets/" + "eip155:42.png",
|
||||||
rgb: EIP155Colors.ethereum,
|
rgb: EIP155Colors.ethereum,
|
||||||
},
|
},
|
||||||
"420": {
|
"420": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:420.png",
|
logo: "/assets/" + "eip155:420.png",
|
||||||
rgb: EIP155Colors.optimism,
|
rgb: EIP155Colors.optimism,
|
||||||
},
|
},
|
||||||
"100": {
|
"100": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:100.png",
|
logo: "/assets/" + "eip155:100.png",
|
||||||
rgb: EIP155Colors.xdai,
|
rgb: EIP155Colors.xdai,
|
||||||
},
|
},
|
||||||
"280": {
|
"280": {
|
||||||
name: "zkSync Era Testnet",
|
name: "zkSync Era Testnet",
|
||||||
logo: "/assets/eip155-324.svg",
|
logo: "/assets/" + "eip155:324.svg",
|
||||||
rgb: EIP155Colors.zksync,
|
rgb: EIP155Colors.zksync,
|
||||||
},
|
},
|
||||||
"324": {
|
"324": {
|
||||||
name: "zkSync Era",
|
name: "zkSync Era",
|
||||||
logo: "/assets/eip155-324.svg",
|
logo: "/assets/" + "eip155:324.svg",
|
||||||
rgb: EIP155Colors.zksync,
|
rgb: EIP155Colors.zksync,
|
||||||
},
|
},
|
||||||
"137": {
|
"137": {
|
||||||
name: "Polygon",
|
name: "Polygon",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:137.png",
|
logo: "/assets/" + "eip155:137.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"80001": {
|
"80001": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:80001.png",
|
logo: "/assets/" + "eip155:80001.png",
|
||||||
rgb: EIP155Colors.polygon,
|
rgb: EIP155Colors.polygon,
|
||||||
},
|
},
|
||||||
"42161": {
|
"42161": {
|
||||||
name: "Arbitrum",
|
name: "Arbitrum",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42161.png",
|
logo: "/assets/" + "eip155:42161.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
"42220": {
|
"42220": {
|
||||||
name: "Celo",
|
name: "Celo",
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:42220.png",
|
logo: "/assets/" + "eip155:42220.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"44787": {
|
"44787": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:44787.png",
|
logo: "/assets/" + "eip155:44787.png",
|
||||||
rgb: EIP155Colors.celo,
|
rgb: EIP155Colors.celo,
|
||||||
},
|
},
|
||||||
"421611": {
|
"421611": {
|
||||||
logo: BLOCKCHAIN_LOGO_BASE_URL + "eip155:421611.png",
|
logo: "/assets/" + "eip155:421611.png",
|
||||||
rgb: EIP155Colors.arbitrum,
|
rgb: EIP155Colors.arbitrum,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
|
|
||||||
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
|
||||||
import {
|
import {
|
||||||
NamespaceMetadata,
|
NamespaceMetadata,
|
||||||
|
@ -1,2 +1 @@
|
|||||||
export * from "./default";
|
export * from "./default";
|
||||||
export * from "./logo";
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const BLOCKCHAIN_LOGO_BASE_URL = "https://blockchain-api.xyz/logos/";
|
|
@ -4,10 +4,24 @@ import { apiGetKadenaAccountBalance } from "./kadena";
|
|||||||
import { AssetData } from "./types";
|
import { AssetData } from "./types";
|
||||||
import { PactCommand } from "@kadena/client";
|
import { PactCommand } from "@kadena/client";
|
||||||
|
|
||||||
export const rpcProvidersByChainId: Record<number, any> = {
|
export type RpcProvidersByChainId = Record<
|
||||||
|
number,
|
||||||
|
{
|
||||||
|
name: string;
|
||||||
|
baseURL: string;
|
||||||
|
token: {
|
||||||
|
name: string;
|
||||||
|
symbol: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
const WALLETCONNECT_RPC_BASE_URL = `https://rpc.walletconnect.com/v1?projectId=${process.env.NEXT_PUBLIC_PROJECT_ID}`;
|
||||||
|
|
||||||
|
export const rpcProvidersByChainId: RpcProvidersByChainId = {
|
||||||
1: {
|
1: {
|
||||||
name: "Ethereum Mainnet",
|
name: "Ethereum Mainnet",
|
||||||
baseURL: "https://mainnet.infura.io/v3/5dc0df7abe4645dfb06a9a8c39ede422",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:1",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -15,7 +29,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
5: {
|
5: {
|
||||||
name: "Ethereum Goerli",
|
name: "Ethereum Goerli",
|
||||||
baseURL: "https://goerli.infura.io/v3/5dc0df7abe4645dfb06a9a8c39ede422",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:5",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -23,7 +37,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
137: {
|
137: {
|
||||||
name: "Polygon Mainnet",
|
name: "Polygon Mainnet",
|
||||||
baseURL: "https://polygon-rpc.com",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:137",
|
||||||
token: {
|
token: {
|
||||||
name: "Matic",
|
name: "Matic",
|
||||||
symbol: "MATIC",
|
symbol: "MATIC",
|
||||||
@ -31,7 +45,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
280: {
|
280: {
|
||||||
name: "zkSync Era Testnet",
|
name: "zkSync Era Testnet",
|
||||||
baseURL: "https://testnet.era.zksync.dev",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:280",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -39,7 +53,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
324: {
|
324: {
|
||||||
name: "zkSync Era",
|
name: "zkSync Era",
|
||||||
baseURL: "https://mainnet.era.zksync.io",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:324",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -47,7 +61,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
80001: {
|
80001: {
|
||||||
name: "Polygon Mumbai",
|
name: "Polygon Mumbai",
|
||||||
baseURL: "https://rpc-mumbai.maticvigil.com",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:80001",
|
||||||
token: {
|
token: {
|
||||||
name: "Matic",
|
name: "Matic",
|
||||||
symbol: "MATIC",
|
symbol: "MATIC",
|
||||||
@ -55,7 +69,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
10: {
|
10: {
|
||||||
name: "Optimism",
|
name: "Optimism",
|
||||||
baseURL: "https://mainnet.optimism.io",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:10",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -63,7 +77,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
420: {
|
420: {
|
||||||
name: "Optimism Goerli",
|
name: "Optimism Goerli",
|
||||||
baseURL: "https://goerli.optimism.io",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:420",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -71,7 +85,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
42161: {
|
42161: {
|
||||||
name: "Arbitrum",
|
name: "Arbitrum",
|
||||||
baseURL: "https://arb1.arbitrum.io/rpc",
|
baseURL: WALLETCONNECT_RPC_BASE_URL + "&chainId=eip155:42161",
|
||||||
token: {
|
token: {
|
||||||
name: "Ether",
|
name: "Ether",
|
||||||
symbol: "ETH",
|
symbol: "ETH",
|
||||||
@ -95,14 +109,14 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
},
|
},
|
||||||
42220: {
|
42220: {
|
||||||
name: "Celo",
|
name: "Celo",
|
||||||
baseURL: "https://forno.celo.org",
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
token: {
|
token: {
|
||||||
name: "CELO",
|
name: "CELO",
|
||||||
symbol: "CELO",
|
symbol: "CELO",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
44787: {
|
44787: {
|
||||||
name: "Celo",
|
name: "Celo Alfajores",
|
||||||
baseURL: "https://alfajores-forno.celo-testnet.org",
|
baseURL: "https://alfajores-forno.celo-testnet.org",
|
||||||
token: {
|
token: {
|
||||||
name: "CELO",
|
name: "CELO",
|
||||||
@ -112,7 +126,7 @@ export const rpcProvidersByChainId: Record<number, any> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const api: AxiosInstance = axios.create({
|
const api: AxiosInstance = axios.create({
|
||||||
baseURL: "https://ethereum-api.xyz",
|
baseURL: "https://rpc.walletconnect.com/v1",
|
||||||
timeout: 10000, // 10 secs
|
timeout: 10000, // 10 secs
|
||||||
headers: {
|
headers: {
|
||||||
Accept: "application/json",
|
Accept: "application/json",
|
||||||
|