JSON RPC Endpoints
Endpoints are listed in the playground doc below.
Terminal
Use the Lumia TestNet: https://testnet-rpc.lumia.org to test the endpoint methods in a terminal. For example:
zkevm_estimateGasPrice
zkevm_estimateGasPrice
curl -X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"zkevm_estimateGasPrice","params":[{"from":"0x0000000000000000000000000000000000000001","to":"0x0000000000000000000000000000000000000002","value":"0x1"}],"id":1}' \
https://testnet-rpc.lumia.org
Result
{"jsonrpc":"2.0","id":1,"result":"0xe2ea2f0"}
RPC API Source
{
"openrpc": "1.0.0-rc1",
"info": {
"title": "Lumia zkEVM Endpoints",
"version": "2.0.0"
},
"methods": [
{
"name": "zkevm_consolidatedBlockNumber",
"summary": "Returns the latest block number that is connected to the latest batch verified.",
"params": [],
"result": {
"$ref": "#/components/contentDescriptors/BlockNumber"
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": "0x1"
}
}
]
},
{
"name": "zkevm_isBlockVirtualized",
"summary": "Returns true if the provided block number is already connected to a batch that was already virtualized, otherwise false.",
"params": [
{
"name": "blockNumber",
"schema": {
"$ref": "#/components/contentDescriptors/BlockNumber"
}
}
],
"result": {
"name": "result",
"schema": {
"type": "boolean"
}
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": true
}
}
]
},
{
"name": "zkevm_isBlockConsolidated",
"summary": "Returns true if the provided block number is already connected to a batch that was already verified, otherwise false.",
"params": [
{
"$ref": "#/components/contentDescriptors/BlockNumber"
}
],
"result": {
"name": "result",
"schema": {
"type": "boolean"
}
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": true
}
}
]
},
{
"name": "zkevm_batchNumber",
"summary": "Returns the latest batch number.",
"params": [],
"result": {
"$ref": "#/components/contentDescriptors/BatchNumber"
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": "0x1"
}
}
]
},
{
"name": "zkevm_virtualBatchNumber",
"summary": "Returns the latest virtual batch number.",
"params": [],
"result": {
"$ref": "#/components/contentDescriptors/BatchNumber"
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": "0x1"
}
}
]
},
{
"name": "zkevm_verifiedBatchNumber",
"summary": "Returns the latest verified batch number.",
"params": [],
"result": {
"$ref": "#/components/contentDescriptors/BatchNumber"
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": "0x1"
}
}
]
},
{
"name": "zkevm_batchNumberByBlockNumber",
"summary": "Returns the batch number of the batch connected to the block.",
"params": [
{
"$ref": "#/components/contentDescriptors/BlockNumber"
}
],
"result": {
"$ref": "#/components/contentDescriptors/BatchNumber"
},
"examples": [
{
"name": "example",
"description": "",
"params": [],
"result": {
"name": "exampleResult",
"description": "",
"value": "0x1"
}
}
]
},
{
"name": "zkevm_getBatchByNumber",
"summary": "Gets a batch for a given number",
"params": [
{
"$ref": "#/components/contentDescriptors/BatchNumberOrTag"
},
{
"name": "includeTransactions",
"description": "If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.",
"required": true,
"schema": {
"title": "isTransactionsIncluded",
"type": "boolean"
}
}
],
"result": {
"$ref": "#/components/contentDescriptors/Batch"
},
"examples": [
{
"name": "batch without tx details",
"description": "Batch without transaction details",
"params": [
{
"name": "batch number",
"value": "0x1"
},
{
"name": "include txs",
"value": "false"
}
],
"result": {
"name": "Batch",
"value": {
"number": "0x1",
"coinbase": "0x0000000000000000000000000000000000000001",
"stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000001",
"globalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000002",
"mainnetExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000003",
"rollupExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000004",
"localExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000005",
"accInputHash": "0x0000000000000000000000000000000000000000000000000000000000000006",
"timestamp": "0x642af31f",
"sendSequencesTxHash": "0x0000000000000000000000000000000000000000000000000000000000000007",
"verifyBatchTxHash": "0x0000000000000000000000000000000000000000000000000000000000000008",
"transactions": [
"0x0000000000000000000000000000000000000000000000000000000000000009",
"0x0000000000000000000000000000000000000000000000000000000000000010",
"0x0000000000000000000000000000000000000000000000000000000000000011"
]
}
}
},
{
"name": "batch with tx detail",
"description": "Batch with transaction details",
"params": [
{
"name": "batch number",
"value": "0x1"
},
{
"name": "include txs",
"value": "true"
}
],
"result": {
"name": "Batch",
"value": {
"number": "0x1",
"coinbase": "0x0000000000000000000000000000000000000001",
"stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000001",
"globalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000002",
"mainnetExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000003",
"rollupExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000004",
"localExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000005",
"accInputHash": "0x0000000000000000000000000000000000000000000000000000000000000006",
"timestamp": "0x642af31f",
"sendSequencesTxHash": "0x0000000000000000000000000000000000000000000000000000000000000007",
"verifyBatchTxHash": "0x0000000000000000000000000000000000000000000000000000000000000008",
"transactions": [
{
"nonce": "0x1",
"gasPrice": "0x123456",
"gas": "0x59D8",
"to": "0x0000000000000000000000000000000000000002",
"value": "0x1",
"input": "0x",
"v": "0xAAA",
"r": "0x0000000000000000000000000000000000000000000000000000000000000010",
"s": "0x0000000000000000000000000000000000000000000000000000000000000011",
"hash": "0x0000000000000000000000000000000000000000000000000000000000000012",
"from": "0x0000000000000000000000000000000000000003",
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000013",
"blockNumber": "0x1",
"transactionIndex": "0x0",
"chainId": "0x539",
"type": "0x0"
}
]
}
}
}
]
},
{
"name": "zkevm_getFullBlockByNumber",
"summary": "Gets a block with extra information for a given number",
"params": [
{
"$ref": "#/components/contentDescriptors/BlockNumber"
},
{
"name": "includeTransactions",
"description": "If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.",
"required": true,
"schema": {
"title": "isTransactionsIncluded",
"type": "boolean"
}
}
],
"result": {
"name": "getBlockByNumberResult",
"schema": {
"$ref": "#/components/schemas/FullBlockOrNull"
}
}
},
{
"name": "zkevm_getFullBlockByHash",
"summary": "Gets a block with extra information for a given hash",
"params": [
{
"name": "blockHash",
"required": true,
"schema": {
"$ref": "#/components/schemas/BlockHash"
}
},
{
"name": "includeTransactions",
"description": "If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.",
"required": true,
"schema": {
"title": "isTransactionsIncluded",
"type": "boolean"
}
}
],
"result": {
"name": "getBlockByHashResult",
"schema": {
"$ref": "#/components/schemas/FullBlockOrNull"
}
}
},
{
"name": "zkevm_getNativeBlockHashesInRange",
"summary": "Returns the list of native block hashes.",
"params": [
{
"name": "filter",
"schema": {
"$ref": "#/components/schemas/NativeBlockHashBlockRangeFilter"
}
}
],
"result": {
"name": "filter",
"schema": {
"$ref": "#/components/schemas/NativeBlockHashes"
}
}
},
{
"name": "zkevm_getTransactionByL2Hash",
"summary": "Returns the information about a transaction requested by transaction l2 hash.",
"params": [
{
"$ref": "#/components/contentDescriptors/TransactionHash"
}
],
"result": {
"$ref": "#/components/contentDescriptors/TransactionResult"
}
},
{
"name": "zkevm_getTransactionReceiptByL2Hash",
"summary": "Returns the receipt information of a transaction by its l2 hash.",
"params": [
{
"$ref": "#/components/contentDescriptors/TransactionHash"
}
],
"result": {
"name": "transactionReceiptResult",
"description": "returns either a receipt or null",
"schema": {
"title": "transactionReceiptOrNull",
"oneOf": [
{
"$ref": "#/components/schemas/Receipt"
},
{
"$ref": "#/components/schemas/Null"
}
]
}
}
},
{
"name": "zkevm_getExitRootsByGER",
"summary": "Gets the exit roots accordingly to the provided Global Exit Root",
"params": [
{
"$ref": "#/components/schemas/Keccak"
}
],
"result": {
"$ref": "#/components/schemas/ExitRoots"
},
"examples": [
{
"name": "exit roots",
"params": [
{
"name": "global exit root",
"value": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"result": {
"name": "Exit Roots",
"value": {
"blockNumber": "0x1",
"timestamp": "0x642af31f",
"mainnetExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000002",
"rollupExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000003"
}
}
}
]
},
{
"name": "zkevm_getLatestGlobalExitRoot",
"summary": "Returns the latest global exit root used in a batch.",
"params": [
],
"result": {
"name": "GER",
"schema": {
"$ref": "#/components/schemas/Keccak"
}
}
},
{
"name": "zkevm_estimateCounters",
"summary": "Estimates the transaction ZK Counters",
"params": [
{
"$ref": "#/components/contentDescriptors/Transaction"
}
],
"result": {
"name": "counters",
"description": "The counters used, limits and revert info when tx reverted",
"schema": {
"$ref": "#/components/schemas/ZKCountersResponse"
}
}
},
{
"name": "zkevm_estimateFee",
"summary": "Estimates the transaction Fee following the effective gas price rules",
"params": [
{
"$ref": "#/components/contentDescriptors/Transaction"
}
],
"result": {
"name": "fee",
"description": "The amount of the fee",
"schema": {
"$ref": "#/components/schemas/Integer"
}
}
},
{
"name": "zkevm_estimateGasPrice",
"summary": "Estimates the transaction Gas Price following the effective gas price rules",
"params": [
{
"$ref": "#/components/contentDescriptors/Transaction"
}
],
"result": {
"name": "gasPrice",
"description": "The amount of gas price",
"schema": {
"$ref": "#/components/schemas/Integer"
}
}
}
],
"components": {
"contentDescriptors": {
"BlockNumber": {
"name": "blockNumber",
"required": true,
"schema": {
"$ref": "#/components/schemas/BlockNumber"
}
},
"BatchNumber": {
"name": "batchNumber",
"required": true,
"schema": {
"$ref": "#/components/schemas/BatchNumber"
}
},
"BatchNumberOrTag": {
"name": "batchNumberOrTag",
"required": true,
"schema": {
"title": "batchNumberOrTag",
"oneOf": [
{
"$ref": "#/components/schemas/BatchNumber"
},
{
"$ref": "#/components/schemas/BatchNumberTag"
}
]
}
},
"Batch": {
"name": "batch",
"description": "batch",
"required": true,
"schema": {
"$ref": "#/components/schemas/Batch"
}
},
"Block": {
"name": "block",
"summary": "A block",
"description": "A block object",
"schema": {
"$ref": "#/components/schemas/Block"
}
},
"Transaction": {
"required": true,
"name": "transaction",
"schema": {
"$ref": "#/components/schemas/Transaction"
}
},
"TransactionHash": {
"name": "transactionHash",
"required": true,
"schema": {
"$ref": "#/components/schemas/TransactionHash"
}
},
"TransactionResult": {
"name": "transactionResult",
"description": "Returns a transaction or null",
"schema": {
"title": "TransactionOrNull",
"oneOf": [
{
"$ref": "#/components/schemas/Transaction"
},
{
"$ref": "#/components/schemas/Null"
}
]
}
}
},
"schemas": {
"Null": {
"title": "null",
"type": "null",
"description": "Null"
},
"BatchNumberTag": {
"title": "batchNumberTag",
"type": "string",
"description": "The optional batch height description",
"enum": [
"earliest",
"latest"
]
},
"Integer": {
"title": "integer",
"type": "string",
"pattern": "^0x[a-fA-F0-9]+$",
"description": "Hex representation of the integer"
},
"Keccak": {
"title": "keccak",
"type": "string",
"description": "Hex representation of a Keccak 256 hash",
"pattern": "^0x[a-fA-F\\d]{64}$"
},
"Address": {
"title": "address",
"type": "string",
"pattern": "^0x[a-fA-F\\d]{40}$"
},
"BlockHash": {
"title": "blockHash",
"type": "string",
"pattern": "^0x[a-fA-F\\d]{64}$",
"description": "The hex representation of the Keccak 256 of the RLP encoded block"
},
"BlockNumber": {
"title": "blockNumber",
"type": "string",
"description": "The hex representation of the block's height",
"$ref": "#/components/schemas/Integer"
},
"FullBlockOrNull": {
"title": "fullBlockOrNull",
"oneOf": [
{
"$ref": "#/components/schemas/FullBlock"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"BatchNumber": {
"title": "batchNumber",
"type": "string",
"description": "The hex representation of the batch's height",
"$ref": "#/components/schemas/Integer"
},
"TransactionHash": {
"title": "transactionHash",
"type": "string",
"description": "Keccak 256 Hash of the RLP encoding of a transaction",
"$ref": "#/components/schemas/Keccak"
},
"NonceOrNull": {
"title": "nonceOrNull",
"description": "Randomly selected number to satisfy the proof-of-work or null when its the pending block",
"oneOf": [
{
"$ref": "#/components/schemas/Nonce"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"Nonce": {
"title": "nonce",
"description": "A number only to be used once",
"$ref": "#/components/schemas/Integer"
},
"From": {
"title": "From",
"description": "The sender of the transaction",
"$ref": "#/components/schemas/Address"
},
"BlockNumberOrNull": {
"title": "blockNumberOrNull",
"description": "The block number or null when its the pending block",
"oneOf": [
{
"$ref": "#/components/schemas/BlockNumber"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"IntegerOrNull": {
"title": "integerOrNull",
"oneOf": [
{
"$ref": "#/components/schemas/Integer"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"AddressOrNull": {
"title": "addressOrNull",
"oneOf": [
{
"$ref": "#/components/schemas/Address"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"KeccakOrPending": {
"title": "keccakOrPending",
"oneOf": [
{
"$ref": "#/components/schemas/Keccak"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"To": {
"title": "To",
"description": "Destination address of the transaction. Null if it was a contract create.",
"oneOf": [
{
"$ref": "#/components/schemas/Address"
},
{
"$ref": "#/components/schemas/Null"
}
]
},
"BlockHashOrNull": {
"title": "blockHashOrNull",
"description": "The block hash or null when its the pending block",
"$ref": "#/components/schemas/KeccakOrPending"
},
"TransactionIndex": {
"title": "transactionIndex",
"description": "The index of the transaction. null when its pending",
"$ref": "#/components/schemas/IntegerOrNull"
},
"Batch": {
"title": "Batch",
"type": "object",
"readOnly": true,
"properties": {
"number": {
"$ref": "#/components/schemas/BlockNumber"
},
"globalExitRoot": {
"$ref": "#/components/schemas/Keccak"
},
"mainnetExitRoot": {
"$ref": "#/components/schemas/Keccak"
},
"rollupExitRoot": {
"$ref": "#/components/schemas/Keccak"
},
"accInputHash": {
"$ref": "#/components/schemas/Keccak"
},
"timestamp": {
"$ref": "#/components/schemas/Integer"
},
"sendSequencesTxHash": {
"$ref": "#/components/schemas/TransactionHash"
},
"verifyBatchTxHash": {
"$ref": "#/components/schemas/TransactionHash"
},
"closed": {
"title": "closed",
"type": "boolean",
"description": "True if the batch is already closed, otherwise false"
},
"blocks": {
"title": "blocksOrHashes",
"description": "Array of block objects, or 32 Bytes block hashes depending on the last given parameter",
"type": "array",
"items": {
"title": "blockOrBlockHash",
"oneOf": [
{
"$ref": "#/components/schemas/Block"
},
{
"$ref": "#/components/schemas/BlockHash"
}
]
}
},
"transactions": {
"title": "transactionsOrHashes",
"description": "Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter",
"type": "array",
"items": {
"title": "transactionOrTransactionHash",
"oneOf": [
{
"$ref": "#/components/schemas/Transaction"
},
{
"$ref": "#/components/schemas/TransactionHash"
}
]
}
},
"stateRoot": {
"$ref": "#/components/schemas/Keccak"
},
"coinbase": {
"$ref": "#/components/schemas/Address"
}
}
},
"Block": {
"title": "Block",
"type": "object",
"properties": {
"number": {
"$ref": "#/components/schemas/BlockNumberOrNull"
},
"hash": {
"$ref": "#/components/schemas/BlockHashOrNull"
},
"parentHash": {
"$ref": "#/components/schemas/BlockHash"
},
"nonce": {
"$ref": "#/components/schemas/NonceOrNull"
},
"sha3Uncles": {
"title": "blockShaUncles",
"description": "Keccak hash of the uncles data in the block",
"$ref": "#/components/schemas/Keccak"
},
"logsBloom": {
"title": "blockLogsBloom",
"type": "string",
"description": "The bloom filter for the logs of the block or null when its the pending block",
"pattern": "^0x[a-fA-F\\d]+$"
},
"transactionsRoot": {
"title": "blockTransactionsRoot",
"description": "The root of the transactions trie of the block.",
"$ref": "#/components/schemas/Keccak"
},
"stateRoot": {
"title": "blockStateRoot",
"description": "The root of the final state trie of the block",
"$ref": "#/components/schemas/Keccak"
},
"receiptsRoot": {
"title": "blockReceiptsRoot",
"description": "The root of the receipts trie of the block",
"$ref": "#/components/schemas/Keccak"
},
"miner": {
"$ref": "#/components/schemas/AddressOrNull"
},
"difficulty": {
"title": "blockDifficulty",
"type": "string",
"description": "Integer of the difficulty for this block"
},
"totalDifficulty": {
"title": "blockTotalDifficulty",
"description": "Integer of the total difficulty of the chain until this block",
"$ref": "#/components/schemas/IntegerOrNull"
},
"extraData": {
"title": "blockExtraData",
"type": "string",
"description": "The 'extra data' field of this block"
},
"size": {
"title": "blockSize",
"type": "string",
"description": "Integer the size of this block in bytes"
},
"gasLimit": {
"title": "blockGasLimit",
"type": "string",
"description": "The maximum gas allowed in this block"
},
"gasUsed": {
"title": "blockGasUsed",
"type": "string",
"description": "The total used gas by all transactions in this block"
},
"timestamp": {
"title": "blockTimeStamp",
"type": "string",
"description": "The unix timestamp for when the block was collated"
},
"transactions": {
"title": "transactionsOrHashes",
"description": "Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter",
"type": "array",
"items": {
"title": "transactionOrTransactionHash",
"oneOf": [
{
"$ref": "#/components/schemas/Transaction"
},
{
"$ref": "#/components/schemas/TransactionHash"
}
]
}
},
"uncles": {
"title": "uncleHashes",
"description": "Array of uncle hashes",
"type": "array",
"items": {
"title": "uncleHash",
"description": "Block hash of the RLP encoding of an uncle block",
"$ref": "#/components/schemas/Keccak"
}
}
}
},
"FullBlock": {
"title": "fullBlock",
"type": "object",
"properties": {
"number": {
"$ref": "#/components/schemas/BlockNumberOrNull"
},
"hash": {
"$ref": "#/components/schemas/BlockHashOrNull"
},
"parentHash": {
"$ref": "#/components/schemas/BlockHash"
},
"nonce": {
"$ref": "#/components/schemas/NonceOrNull"
},
"sha3Uncles": {
"title": "blockShaUncles",
"description": "Keccak hash of the uncles data in the block",
"$ref": "#/components/schemas/Keccak"
},
"logsBloom": {
"title": "blockLogsBloom",
"type": "string",
"description": "The bloom filter for the logs of the block or null when its the pending block",
"pattern": "^0x[a-fA-F\\d]+$"
},
"transactionsRoot": {
"title": "blockTransactionsRoot",
"description": "The root of the transactions trie of the block.",
"$ref": "#/components/schemas/Keccak"
},
"stateRoot": {
"title": "blockStateRoot",
"description": "The root of the final state trie of the block",
"$ref": "#/components/schemas/Keccak"
},
"receiptsRoot": {
"title": "blockReceiptsRoot",
"description": "The root of the receipts trie of the block",
"$ref": "#/components/schemas/Keccak"
},
"miner": {
"$ref": "#/components/schemas/AddressOrNull"
},
"difficulty": {
"title": "blockDifficulty",
"type": "string",
"description": "Integer of the difficulty for this block"
},
"totalDifficulty": {
"title": "blockTotalDifficulty",
"description": "Integer of the total difficulty of the chain until this block",
"$ref": "#/components/schemas/IntegerOrNull"
},
"extraData": {
"title": "blockExtraData",
"type": "string",
"description": "The 'extra data' field of this block"
},
"size": {
"title": "blockSize",
"type": "string",
"description": "Integer the size of this block in bytes"
},
"gasLimit": {
"title": "blockGasLimit",
"type": "string",
"description": "The maximum gas allowed in this block"
},
"gasUsed": {
"title": "blockGasUsed",
"type": "string",
"description": "The total used gas by all transactions in this block"
},
"timestamp": {
"title": "blockTimeStamp",
"type": "string",
"description": "The unix timestamp for when the block was collated"