Learn how Abstract Nodes work at a high level.
This documentation explains the basics of the Abstract node. The contents of this section were heavily inspired from zkSync’s node running docs.
The Abstract node is a read-replica of the main (centralized) node that can be run by anyone. It functions by fetching data from the Abstract API and re-applying transactions locally, starting from the genesis block. The Abstract node shares most of its codebase with the main node. Consequently, when it re-applies transactions, it does so exactly as the main node did in the past.
In Ethereum terms, the current state of the Abstract Node represents an archive node, providing access to the entire history of the blockchain.
At a high level, the Abstract Node can be seen as an application that has the following modules:
With the Abstract Node, you are able to:
With the Abstract Node, you can not:
A more detailed overview of the Abstract Node’s components is provided in the components section.
API exposed by the Abstract Node strives to be Web3-compliant. If some method is exposed but behaves differently compared to Ethereum, it should be considered a bug. Please report such cases.
eth_
NamespaceData getters in this namespace operate in the L2 space: require/return L2 block numbers, check balances in L2, etc.
Available methods:
Method | Notes |
---|---|
eth_blockNumber | |
eth_chainId | |
eth_call | |
eth_estimateGas | |
eth_gasPrice | |
eth_newFilter | Maximum amount of installed filters is configurable |
eth_newBlockFilter | Same as above |
eth_newPendingTransactionsFilter | Same as above |
eth_uninstallFilter | |
eth_getLogs | Maximum amount of returned entities can be configured |
eth_getFilterLogs | Same as above |
eth_getFilterChanges | Same as above |
eth_getBalance | |
eth_getBlockByNumber | |
eth_getBlockByHash | |
eth_getBlockTransactionCountByNumber | |
eth_getBlockTransactionCountByHash | |
eth_getCode | |
eth_getStorageAt | |
eth_getTransactionCount | |
eth_getTransactionByHash | |
eth_getTransactionByBlockHashAndIndex | |
eth_getTransactionByBlockNumberAndIndex | |
eth_getTransactionReceipt | |
eth_protocolVersion | |
eth_sendRawTransaction | |
eth_syncing | EN is considered synced if it’s less than 11 blocks behind the main node. |
eth_coinbase | Always returns a zero address |
eth_accounts | Always returns an empty list |
eth_getCompilers | Always returns an empty list |
eth_hashrate | Always returns zero |
eth_getUncleCountByBlockHash | Always returns zero |
eth_getUncleCountByBlockNumber | Always returns zero |
eth_mining | Always returns false |
Only available on the WebSocket servers.
Available methods:
Method | Notes |
---|---|
eth_subscribe | Maximum amount of subscriptions is configurable |
eth_subscription |
net_
NamespaceAvailable methods:
Method | Notes |
---|---|
net_version | |
net_peer_count | Always returns 0 |
net_listening | Always returns false |
web3_
NamespaceAvailable methods:
Method | Notes |
---|---|
web3_clientVersion |
debug
namespaceThe debug
namespace gives access to several non-standard RPC methods, which will allow developers to inspect and debug
calls and transactions.
This namespace is disabled by default and can be configured via setting EN_API_NAMESPACES
as described in the example config.
Available methods:
Method | Notes |
---|---|
debug_traceBlockByNumber | |
debug_traceBlockByHash | |
debug_traceCall | |
debug_traceTransaction |
zks
namespaceThis namespace contains rollup-specific extensions to the Web3 API. Note that only methods specified in the documentation are considered public. There may be other methods exposed in this namespace, but undocumented methods come without any kind of stability guarantees and can be changed or removed without notice.
Always refer to the documentation linked above and API reference documentation to see the list of stabilized methods in this namespace.
en
namespaceThis namespace contains methods that Abstract Nodes call on the main node while syncing. If this namespace is enabled other Abstract Nodes can sync from this node.
Learn how Abstract Nodes work at a high level.
This documentation explains the basics of the Abstract node. The contents of this section were heavily inspired from zkSync’s node running docs.
The Abstract node is a read-replica of the main (centralized) node that can be run by anyone. It functions by fetching data from the Abstract API and re-applying transactions locally, starting from the genesis block. The Abstract node shares most of its codebase with the main node. Consequently, when it re-applies transactions, it does so exactly as the main node did in the past.
In Ethereum terms, the current state of the Abstract Node represents an archive node, providing access to the entire history of the blockchain.
At a high level, the Abstract Node can be seen as an application that has the following modules:
With the Abstract Node, you are able to:
With the Abstract Node, you can not:
A more detailed overview of the Abstract Node’s components is provided in the components section.
API exposed by the Abstract Node strives to be Web3-compliant. If some method is exposed but behaves differently compared to Ethereum, it should be considered a bug. Please report such cases.
eth_
NamespaceData getters in this namespace operate in the L2 space: require/return L2 block numbers, check balances in L2, etc.
Available methods:
Method | Notes |
---|---|
eth_blockNumber | |
eth_chainId | |
eth_call | |
eth_estimateGas | |
eth_gasPrice | |
eth_newFilter | Maximum amount of installed filters is configurable |
eth_newBlockFilter | Same as above |
eth_newPendingTransactionsFilter | Same as above |
eth_uninstallFilter | |
eth_getLogs | Maximum amount of returned entities can be configured |
eth_getFilterLogs | Same as above |
eth_getFilterChanges | Same as above |
eth_getBalance | |
eth_getBlockByNumber | |
eth_getBlockByHash | |
eth_getBlockTransactionCountByNumber | |
eth_getBlockTransactionCountByHash | |
eth_getCode | |
eth_getStorageAt | |
eth_getTransactionCount | |
eth_getTransactionByHash | |
eth_getTransactionByBlockHashAndIndex | |
eth_getTransactionByBlockNumberAndIndex | |
eth_getTransactionReceipt | |
eth_protocolVersion | |
eth_sendRawTransaction | |
eth_syncing | EN is considered synced if it’s less than 11 blocks behind the main node. |
eth_coinbase | Always returns a zero address |
eth_accounts | Always returns an empty list |
eth_getCompilers | Always returns an empty list |
eth_hashrate | Always returns zero |
eth_getUncleCountByBlockHash | Always returns zero |
eth_getUncleCountByBlockNumber | Always returns zero |
eth_mining | Always returns false |
Only available on the WebSocket servers.
Available methods:
Method | Notes |
---|---|
eth_subscribe | Maximum amount of subscriptions is configurable |
eth_subscription |
net_
NamespaceAvailable methods:
Method | Notes |
---|---|
net_version | |
net_peer_count | Always returns 0 |
net_listening | Always returns false |
web3_
NamespaceAvailable methods:
Method | Notes |
---|---|
web3_clientVersion |
debug
namespaceThe debug
namespace gives access to several non-standard RPC methods, which will allow developers to inspect and debug
calls and transactions.
This namespace is disabled by default and can be configured via setting EN_API_NAMESPACES
as described in the example config.
Available methods:
Method | Notes |
---|---|
debug_traceBlockByNumber | |
debug_traceBlockByHash | |
debug_traceCall | |
debug_traceTransaction |
zks
namespaceThis namespace contains rollup-specific extensions to the Web3 API. Note that only methods specified in the documentation are considered public. There may be other methods exposed in this namespace, but undocumented methods come without any kind of stability guarantees and can be changed or removed without notice.
Always refer to the documentation linked above and API reference documentation to see the list of stabilized methods in this namespace.
en
namespaceThis namespace contains methods that Abstract Nodes call on the main node while syncing. If this namespace is enabled other Abstract Nodes can sync from this node.