import { ethers } from "ethers"; import { BigNumber, Signer } from "ethers"; import { Web3Provider } from "@ethersproject/providers"; export default class EthereumProvider { public chainName: string = "Ethereum"; private _url: string; public networkId: number; // private defaultGasPrice: number; // private defaultGasRatio: number; // private defaultStorageRatio: number; // private useHexAddressInParameter: boolean; // private useVerboseAddress: boolean; private provider; constructor (url: string, networkId: number) { this._url = url; this.networkId = networkId; this.provider = new ethers.providers.JsonRpcProvider(url); } public getBlockNumber(): Promise { return this.provider.getBlockNumber(); } public async getBalance(walletAddress: string): Promise { let balance = await this.provider.getBalance(walletAddress); return BigInt(balance.toNumber()); } public getBlock(blockNumberOrHash: number | string, detail: boolean): Promise { if (typeof blockNumberOrHash === "number") { return this.getBlockByNumber(blockNumberOrHash, detail); } else { return this.getBlockByHash(blockNumberOrHash, detail); } } public getBlockByNumber(blockNumber: number, detail: boolean): Promise { return this.provider.getBlock(blockNumber, detail); } public getBlockByHash(blockHash: string, detail: boolean): Promise { return this.provider.send("eth_getBlockByHash", [ethers.utils.hexValue(blockHash), detail]); } public getTransactionByHash(blockHash: string): Promise { return this.provider.send("eth_getBlockByHash ", [blockHash]); } }