Class: JsonRpcProvider
Hierarchy
BaseProvider
↳
JsonRpcProvider
Constructors
constructor
• new JsonRpcProvider(rpcUrl?
)
example
https://free-eth-node.com/api/eth
example
https://mainnet.infura.io/v3/YOUR-PROJECT-ID
Parameters
Name | Type | Default value | Description |
---|---|---|---|
rpcUrl | string | 'https://free-eth-node.com/api/eth' | The URL to your Eth node. Consider POKT or Infura |
Overrides
BaseProvider.constructor
Defined in
src/providers/JsonRpcProvider.ts:24
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.call
in ethers.js - Identical to
web3.eth.call
in 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.estimateGas
in ethers.js - Identical to
web3.eth.estimateGas
in 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.getBalance
in ethers.js - Identical to
web3.eth.getBalance
in 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.getBlock
in ethers.js, includes some additional information. Can also return block with full transaction objects, similar to [ethers.providers.getBlockWithTransactions
] - Identical to
web3.eth.getBlock
in 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.getBlockNumber
in ethers.js - Identical to
web3.eth.getBlockNumber
in 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.getCode
in ethers.js - Identical to
web3.eth.getCode
in 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.getFeeData
in 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.getGasPrice
in ethers.js, does not have a parameter specifying what unit you'd like to return. See alsoweiToEther
andetherToGwei
- Identical to
web3.eth.getGasPrice
in 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.getLogs
in ethers.js - Identical to
web3.eth.getPastLogs
in 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.getNetwork
in ethers.js - Similar to
web3.eth.getChainId
in 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.getTransaction
in ethers.js, does not havewait
method that waits until the transaction has been mined - Similar to
web3.eth.getTransaction
in 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.getTransactionCount
in ethers.js - Identical to
web3.eth.getTransactionCount
in 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.getTransactionReceipt
in ethers.js - Similar to
web3.eth.getTransactionReceipt
in 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