Class: FallthroughProvider
beta
A JSON RPC Provider which moves to the next URL when one fails.
Hierarchy
BaseProvider↳
FallthroughProvider
Constructors
constructor
• new FallthroughProvider(rpcUrls, options?)
Parameters
| Name | Type |
|---|---|
rpcUrls | string[] |
options | ConstructorOptions |
Overrides
BaseProvider.constructor
Defined in
src/providers/FallthroughProvider.ts:46
Properties
timeoutDuration
• Private Readonly timeoutDuration: number
Defined in
src/providers/FallthroughProvider.ts:38
Methods
call
▸ call(transaction, blockTag?): Promise<string>
Returns the result of adding a transaction to the blockchain without actually adding that transaction to the blockchain. Does not require any ether as gas.
- Identical to
ethers.provider.callin ethers.js - Identical to
web3.eth.callin web3.js
example
await provider.call({ to: "0x6b175474e89094c44da98b954eedeac495271d0f", data: "0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE" });
// '0x0000000000000000000000000000000000000000000000000858898f93629000'
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
transaction | TransactionRequest | undefined | the transaction object to, in theory, execute. Doesn't actually get added to the blockchain. |
blockTag | BlockTag | 'latest' | the block to execute this transaction on |
Returns
Promise<string>
the result of executing the transaction on the specified block
Inherited from
BaseProvider.call
Defined in
src/providers/BaseProvider.ts:574
estimateGas
▸ estimateGas(transaction): Promise<TinyBig>
Returns an estimate of the amount of gas that would be required to submit transaction to the network. An estimate may not be accurate since there could be another transaction on the network that was not accounted for.
- Identical to
ethers.provider.estimateGasin ethers.js - Identical to
web3.eth.estimateGasin web3.js
example
await provider.estimateGas({
// Wrapped ETH address
to: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
data: "0xd0e30db0",
value: etherToWei('1.0').toHexString(),
});
// { TinyBig: "27938" }
Parameters
| Name | Type | Description |
|---|---|---|
transaction | TransactionRequest | the transaction to check the estimated gas cost for |
Returns
Promise<TinyBig>
the estimated amount of gas charged for submitting the specified transaction to the blockchain
Inherited from
BaseProvider.estimateGas
Defined in
src/providers/BaseProvider.ts:451
getBalance
▸ getBalance(address, blockTag?): Promise<TinyBig>
Returns the balance of the account in wei.
- Identical to
ethers.provider.getBalancein ethers.js - Identical to
web3.eth.getBalancein web3.js, returns a number (TinyBig) instead of a string
example
await provider.getBalance('0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8');
// 28798127851528138
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
address | string | undefined | the address to check the balance of |
blockTag | BlockTag | 'latest' | the block to check the specified address' balance on |
Returns
Promise<TinyBig>
the balance of the network's native token for the specified address on the specified block
Inherited from
BaseProvider.getBalance
Defined in
src/providers/BaseProvider.ts:394
getBlock
▸ getBlock(timeFrame?, returnTransactionObjects?): Promise<BlockResponse>
Gets information about a certain block, optionally with full transaction objects.
- Similar to
ethers.provider.getBlockin ethers.js, includes some additional information. Can also return block with full transaction objects, similar to [ethers.providers.getBlockWithTransactions] - Identical to
web3.eth.getBlockin web3.js
example
await provider.getBlock(14879862);
// {
// baseFeePerGas: { TinyBig: 39095728776 },
// difficulty: { TinyBig: 14321294455359973 },
// extraData: "0x486976656f6e2073672d6865617679",
// gasLimit: { TinyBig: 29970620 },
// gasUsed: { TinyBig: 20951384 },
// hash: "0x563b458ec3c4f87393b53f70bdddc0058497109b784d8cacd9247ddf267049ab",
// logsBloom:
// "0x9f38794fe80b521794df6efad8b0d2e9582f9ec3959a3f9384bda0fa371cfa5fac5af9d515c6bdf1ec325f5b5f7ebdd6a3a9fae17b38a86d4dc4b0971afc68d8086640550f4c156e6f923f4a1bb94fb0bed6cdcc474c5c64bfeff7a4a906f72b9a7b94004ee58efc53d63ac66961acd3a431b2d896cc9fd75f6072960bced45f770587caf130f57504decfcb63c6ca8fbc5bdbd749edd5a99a7375d2b81872289adb775fb3c928259f4be39c6d3f4d5b6217822979bb88c1f1fb62429b1b6d41cf4e3f77f9e1db3f5723108f1e5b1255dd734ad8cdb11e7ea22487c788e67c83777b6f395e504ca59c64f52245ee6de3804cf809e5caa4f0ea6a9aa9eb6ed801",
// miner: "0x1aD91ee08f21bE3dE0BA2ba6918E714dA6B45836",
// mixHash: "0x73cc9419bfb89c9d41c3a8c34ce56b5ebe468bdcf870258d2e77262275d580ec",
// nonce: "0x976f3f5d596ffb08",
// number: 14879862,
// parentHash: "0x95986ae14a71face8d9a6a379edd875b2e8bc73e4de0d9d460e7752bddb0f579",
// receiptsRoot: "0x8e6ba2fd9bee602b653dae6e3132f16538c2c5df24f1df8c000392053f73defa",
// sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
// size: { TinyBig: 134483 },
// stateRoot: "0xbf2bb67bd1c741f3d00904b8451d7c2cf4e3a2726f5a5884792ede2074747b85",
// timestamp: { TinyBig: 1654016186 },
// totalDifficulty: { TinyBig: 50478104614257705213748 },
// transactions: [
// "0xb3326a9149809603a2c28545e50e4f7d16e194bf5ee9764e0544603854c4a8d2",
// "0x8b42095f8d335404a4896b2817b8e5e3d86a5a87cb434a8eec295d5280a7f48e",
// "0x882f78fcb73f0f7ad0700bb0424a8b4beb366aaa93b88a3562c49a8d0ce4dcff",
// ...
// ],
// transactionsRoot: "0x5934902f3dcc263ec34f24318179bf6301f53f4834685792066026f3a4849d72",
// uncles: [],
// }
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
timeFrame | BlockTag | 'latest' | The number, hash, or text-based description ('latest', 'earliest', or 'pending') of the block to collect information on. |
returnTransactionObjects | boolean | false | Whether to also return data about the transactions on the block. |
Returns
Promise<BlockResponse>
A BlockResponse object with information about the specified block
Inherited from
BaseProvider.getBlock
Defined in
src/providers/BaseProvider.ts:337
getBlockNumber
▸ getBlockNumber(): Promise<number>
Gets the number of the most recently mined block on the network the provider is connected to.
- Identical to
ethers.provider.getBlockNumberin ethers.js - Identical to
web3.eth.getBlockNumberin web3.js
example
await provider.getBlockNumber();
// 1053312
Returns
Promise<number>
the number of the most recently mined block
Inherited from
BaseProvider.getBlockNumber
Defined in
src/providers/BaseProvider.ts:125
getCode
▸ getCode(address, blockTag?): Promise<string>
Gets the code of a contract on a specified block.
- Identical to
ethers.provider.getCodein ethers.js - Identical to
web3.eth.getCodein web3.js
example
await jsonRpcProvider().getCode('0xaC6095720221C79C6E7C638d260A2eFBC5D8d880', 'latest');
// '0x608060405234801561001057600080fd5b506004361061...'
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
address | string | undefined | the contract address to get the contract code from |
blockTag | BlockTag | 'latest' | the block height to search for the contract code from. Contract code can change, so this allows for checking a specific block |
Returns
Promise<string>
the contract creation code for the specified address at the specified block height
Inherited from
BaseProvider.getCode
Defined in
src/providers/BaseProvider.ts:420
getFeeData
▸ getFeeData(): Promise<FeeData>
Returns the current recommended FeeData to use in a transaction. For an EIP-1559 transaction, the maxFeePerGas and maxPriorityFeePerGas should be used. For legacy transactions and networks which do not support EIP-1559, the gasPrice should be used.Returns an estimate of the amount of gas that would be required to submit transaction to the network.
- Identical to
ethers.provider.getFeeDatain ethers.js
example
await provider.getFeeData();
// {
// gasPrice: { TinyBig: "14184772639" },
// lastBaseFeePerGas: { TinyBig: "14038523098" },
// maxFeePerGas: { TinyBig: "29577046196" },
// maxPriorityFeePerGas: { TinyBig: "1500000000" }
// }
Returns
Promise<FeeData>
an object with gas estimates for the network currently
Inherited from
BaseProvider.getFeeData
Defined in
src/providers/BaseProvider.ts:478
getGasPrice
▸ getGasPrice(): Promise<TinyBig>
Gives an estimate of the current gas price in wei.
- Similar to
ethers.provider.getGasPricein ethers.js, does not have a parameter specifying what unit you'd like to return. See alsoweiToEtherandetherToGwei - Identical to
web3.eth.getGasPricein web3.js, returns a number (TinyBig) instead of a string
example
await provider.getGasPrice();
// 52493941856
Returns
Promise<TinyBig>
an estimate of the current gas price in wei
Inherited from
BaseProvider.getGasPrice
Defined in
src/providers/BaseProvider.ts:372
getLogs
▸ getLogs(filter): Promise<Log[]>
Returns transaction receipt event logs that match a specified filter.
May return [] if parameters are too broad, even if logs exist.
- Identical to
ethers.provider.getLogsin ethers.js - Identical to
web3.eth.getPastLogsin web3.js
example
provider.getLogs({
address: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
topics: [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e",
],
fromBlock: 14825027,
toBlock: 14825039,
});
[
{
address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
blockHash: '0x8e0dfac2f704851960f866c8708b3bef2f66c0fee0329cf25ff0261b264ca6bc',
blockNumber: 14825029,
data: '0x000000000000000000000000000000000000000000000000005f862ee352a38a',
logIndex: 384,
removed: false,
topics: [
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
'0x00000000000000000000000021b8065d10f73ee2e260e5b47d3344d3ced7596e',
'0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45'
],
transactionHash: '0xbd49031be16f8fd1775f4e0fe79b408ffd8ae9c65b2827ee47e3238e3f51f4c0',
transactionIndex: 226
}
]
Parameters
| Name | Type | Description |
|---|---|---|
filter | Filter | FilterByBlockHash | parameters to filter the logs by |
Returns
Promise<Log[]>
an array of logs matching the specified filter
Inherited from
BaseProvider.getLogs
Defined in
src/providers/BaseProvider.ts:542
getNetwork
▸ getNetwork(): Promise<Network>
Gets information (name, chainId, and ensAddress when applicable) about the network the provider is connected to.
- Identical to
ethers.provider.getNetworkin ethers.js - Similar to
web3.eth.getChainIdin web3.js, returns more than just thechainId
example
jsonRpcProvider('https://free-eth-node.com/api/eth').getNetwork();
// { chainId: 1, name: 'eth', ensAddress: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' }
example
jsonRpcProvider('https://free-eth-node.com/api/MATIC').getNetwork();
// { chainId: 137, name: 'MATIC', ensAddress: null }
Returns
Promise<Network>
information about the network this provider is currently connected to
Inherited from
BaseProvider.getNetwork
Defined in
src/providers/BaseProvider.ts:98
getTransaction
▸ getTransaction(transactionHash): Promise<TransactionResponse>
Gets information about a specified transaction, even if it hasn't been mined yet.
- Similar to
ethers.provider.getTransactionin ethers.js, does not havewaitmethod that waits until the transaction has been mined - Similar to
web3.eth.getTransactionin web3.js, some information returned using different types
example
await provider.getTransaction('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');
// {
// accessList: [],
// blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
// blockNumber: 14578286,
// chainId: 1,
// from: "0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4",
// gas: { TinyBig: 112163 },
// gasPrice: { TinyBig: 48592426858 },
// hash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
// input: "0x83259f17000000000000000000000000000000000000000000...",
// maxFeePerGas: { TinyBig: 67681261618 },
// maxPriorityFeePerGas: { TinyBig: 1500000000 },
// nonce: { TinyBig: 129 },
// r: "0x59a7c15b12c18cd68d6c440963d959bff3e73831ffc938e75ecad07f7ee43fbc",
// s: "0x1ebaf05f0d9273b16c2a7748b150a79d22533a8cd74552611cbe620fee3dcf1c",
// to: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
// transactionIndex: 29,
// type: 2,
// v: 0,
// value: { TinyBig: 0 },
// confirmations: 298140,
// }
Parameters
| Name | Type | Description |
|---|---|---|
transactionHash | string | the hash of the transaction to get information about |
Returns
Promise<TransactionResponse>
information about the specified transaction
Inherited from
BaseProvider.getTransaction
Defined in
src/providers/BaseProvider.ts:167
getTransactionCount
▸ getTransactionCount(address, blockTag?): Promise<number>
Returns the number of sent transactions by an address, from genesis (or as far back as a provider looks) up to specified block.
- Identical to
ethers.provider.getTransactionCountin ethers.js - Identical to
web3.eth.getTransactionCountin web3.js
example
await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3');
// 1060000
example
await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 'latest');
// 1060000
example
await provider.getTransactionCount('0x71660c4005ba85c37ccec55d0c4493e66fe775d3', 14649390);
// 1053312
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
address | string | undefined | the address to count number of sent transactions |
blockTag | BlockTag | 'latest' | the block to count transactions up to, inclusive |
Returns
Promise<number>
the number of transactions sent by the specified address
Inherited from
BaseProvider.getTransactionCount
Defined in
src/providers/BaseProvider.ts:283
getTransactionReceipt
▸ getTransactionReceipt(transactionHash): Promise<TransactionReceipt>
Gives information about a transaction that has already been mined. Includes additional information beyond what's provided by getTransaction.
- Identical to
ethers.provider.getTransactionReceiptin ethers.js - Similar to
web3.eth.getTransactionReceiptin web3.js, some information returned using different types
example
await provider.getTransactionReceipt('0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789');
// {
// blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
// blockNumber: 14578286,
// contractAddress: null,
// cumulativeGasUsed: { TinyBig: 3067973 },
// effectiveGasPrice: { TinyBig: 48592426858 },
// from: "0xdfD9dE5f6FA60BD70636c0900752E93a6144AEd4",
// gasUsed: { TinyBig: 112163 },
// logs: [
// {
// address: "0x0eDF9bc41Bbc1354c70e2107F80C42caE7FBBcA8",
// blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
// blockNumber: 14578286,
// data: "0x0000000000000000000000000000000000000000000003a12ec797b5484968c1",
// logIndex: 42,
// topics: [
// "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
// "0x00000000000000000000000039b72d136ba3e4cef35f48cd09587ffab754dd8b",
// "0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4",
// ],
// transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
// transactionIndex: 29,
// },
// {
// address: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
// blockHash: "0x876810a013dbcd140f6fd6048c1dc33abbb901f1f96b394c2fa63aef3cb40b5d",
// blockNumber: 14578286,
// data: "0x0000000000000000000000000000000000000000000003a12ec797b5484968c1",
// logIndex: 43,
// topics: [
// "0x34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7",
// "0x000000000000000000000000dfd9de5f6fa60bd70636c0900752e93a6144aed4",
// "0x0000000000000000000000000000000000000000000000000000000000000003",
// ],
// transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
// transactionIndex: 29,
// },
// ],
// logsBloom: "0x00000000000000000000000000000...",
// status: 1,
// to: "0x39B72d136ba3e4ceF35F48CD09587ffaB754DD8B",
// transactionHash: "0x9014ae6ef92464338355a79e5150e542ff9a83e2323318b21f40d6a3e65b4789",
// transactionIndex: 29,
// type: 2,
// byzantium: true,
// confirmations: 298171,
// }
Parameters
| Name | Type | Description |
|---|---|---|
transactionHash | string | the hash of the transaction to get information about |
Returns
Promise<TransactionReceipt>
information about the specified transaction that has already been mined
Inherited from
BaseProvider.getTransactionReceipt
Defined in
src/providers/BaseProvider.ts:243