# Standard Ethereum

## Supported Ethereum RPC Methods <a href="#supported-ethereum-rpc-methods" id="supported-ethereum-rpc-methods"></a>

### Introduction <a href="#introduction" id="introduction"></a>

While Phron supports a wide range of Ethereum JSON-RPC methods, not all are available, and some return default values—particularly those related to Ethereum’s Proof of Work (PoW) consensus mechanism. This guide provides a detailed list of the Ethereum JSON-RPC methods supported by Phron, allowing developers to easily reference the available functionality when interacting with Phron’s Ethereum-compatible blockchain.

### Standard Ethereum JSON-RPC Methods <a href="#basic-rpc-methods" id="basic-rpc-methods"></a>

The basic JSON-RPC methods from the Ethereum API supported by Phron are:

* [**eth\_protocolVersion**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_protocolversion) — returns `1` by default
* [**eth\_syncing**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_syncing) — returns an object with data about the sync status or `false`
* [**eth\_hashrate**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_hashrate) — returns `"0x0"` by default
* [**eth\_coinbase**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_coinbase) — returns the latest block author. Not necessarily a finalized block
* [**eth\_mining**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_mining) — returns `false` by default
* [**eth\_chainId**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) — returns the chain ID used for signing at the current block
* [**eth\_gasPrice**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice) — returns the base fee per unit of gas used. This is currently the minimum gas price for each network
* [**eth\_accounts**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts) — returns a list of addresses owned by the client
* [**eth\_blockNumber**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) — returns the highest available block number
* [**eth\_getBalance**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance) — returns the balance of the given address
* [**eth\_getStorageAt**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat) — returns the content of the storage at a given address
* [**eth\_getBlockByHash**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) — returns information about the block of the given hash, including `baseFeePerGas` on post-London blocks
* [**eth\_getBlockByNumber**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) — returns information about the block specified by block number, including `baseFeePerGas` on post-London blocks
* [**eth\_getBlockReceipts**](https://docs.alchemy.com/reference/eth-getblockreceipts) — returns all transaction receipts for a given block
* [**eth\_getTransactionCount**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount) — returns the number of transactions sent from the given address (nonce)
* [**eth\_getBlockTransactionCountByHash**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) — returns the number of transactions in a block with a given block hash
* [**eth\_getBlockTransactionCountByNumber**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) — returns the number of transactions in a block with a given block number
* [**eth\_getUncleCountByBlockHash**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getunclecountbyblockhash) — returns `"0x0"` by default
* [**eth\_getUncleCountByBlockNumber**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getunclecountbyblocknumber) — returns `"0x0"` by default
* [**eth\_getCode**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode) — returns the code at the given address at the given block number
* [**eth\_sendTransaction**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction) — creates a new message call transaction or a contract creation, if the data field contains code. Returns the transaction hash or the zero hash if the transaction is not yet available
* [**eth\_sendRawTransaction**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) — creates a new message call transaction or a contract creation for signed transactions. Returns the transaction hash or the zero hash if the transaction is not yet available
* [**eth\_call**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call) — executes a new message call immediately without creating a transaction on the blockchain, returning the value of the executed call
  * Phron supports the use of the optional *state override set* object. This address-to-state mapping object allows the user to specify some state to be ephemerally overridden before executing a call to `eth_call`. The state override set is commonly used for tasks like debugging smart contracts. Visit the [go-ethereum](https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-eth) documentation to learn more
* [**eth\_estimateGas**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas) — returns an estimated amount of gas necessary for a given transaction to succeed. You can optionally specify a `gasPrice` or `maxFeePerGas` and `maxPriorityFeePerGas`
* [**eth\_maxPriorityFeePerGas**](https://docs.alchemy.com/reference/eth-maxpriorityfeepergas) - returns an estimate of how much priority fee, in Wei, is needed for inclusion in a block
* [**eth\_feeHistory**](https://docs.alchemy.com/reference/eth-feehistory) — returns `baseFeePerGas`, `gasUsedRatio`, `oldestBlock`, and `reward` for a specified range of up to 1024 blocks
* [**eth\_getTransactionByHash**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyhash) — returns the information about a transaction with a given hash. EIP-1559 transactions have `maxPriorityFeePerGas` and `maxFeePerGas` fields
* [**eth\_getTransactionByBlockHashAndIndex**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyblockhashandindex) — returns information about a transaction at a given block hash and a given index position. EIP-1559 transactions have `maxPriorityFeePerGas` and `maxFeePerGas` fields
* [**eth\_getTransactionByBlockNumberAndIndex**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyblocknumberandindex) — returns information about a transaction at a given block number and a given index position. EIP-1559 transactions have `maxPriorityFeePerGas` and `maxFeePerGas` fields
* [**eth\_getTransactionReceipt**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt) — returns the transaction receipt of a given transaction hash
* [**eth\_getUncleByBlockHashAndIndex**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getunclebyblockhashandindex) — returns `null` by default
* [**eth\_getUncleByBlockNumberAndIndex**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getunclebyblocknumberandindex) — returns `null` by default
* [**eth\_getLogs**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) — returns an array of all logs matching a given filter object
* [**eth\_newFilter**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) — creates a filter object based on the input provided. Returns a filter ID
* [**eth\_newBlockFilter**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newblockfilter) — creates a filter in the node to notify when a new block arrives. Returns a filter ID
* [**eth\_newPendingTransactionFilter**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) - creates a filter in the node to notify when new pending transactions arrive. Returns a filter ID
* [**eth\_getFilterChanges**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges) — polling method for filters (see methods above). Returns an array of logs that occurred since the last poll
* [**eth\_getFilterLogs**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs) — returns an array of all the logs matching the filter with a given ID
* [**eth\_uninstallFilter**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallfilter) — uninstall a filter with a given ID. It should be used when polling is no longer needed. Filters timeout when they are not requested using `eth_getFilterChanges` after some time

### Unsupported Ethereum JSON-RPC Methods <a href="#unsupported-rpc-methods" id="unsupported-rpc-methods"></a>

Phron does not support the following Ethereum API JSON-RPC methods:

* [**eth\_getProof**](https://docs.alchemy.com/reference/eth-getproof) - returns the account and storage values of the specified account including the Merkle-proof
* [**eth\_blobBaseFee**](https://www.quicknode.com/docs/ethereum/eth_blobBaseFee) - returns the expected base fee for blobs in the next block
* [**eth\_createAccessList**](https://docs.alchemy.com/reference/eth-createaccesslist) - creates an EIP-2930 type `accessList` based on a given transaction object
* [**eth\_sign**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign) - allows the user to sign an arbitrary hash to be sent at a later time. Presents a [security risk](https://support.metamask.io/privacy-and-security/what-is-eth_sign-and-why-is-it-a-risk/) as the arbitrary hash can be fraudulently applied to other transactions
* [**eth\_signTransaction**](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_signtransaction) - allows the user to sign a transaction to be sent at a later time. It is rarely used due to associated security risks
