JSON-RPC API
Each kroma-node
and kroma-geth
component provides an JSON-RPC API.
Rollup Node (kroma-node)
The rollup node is the component responsible for deriving the L2 chain from L1 blocks and their associated receipts. In Kroma, we call it kroma-node
.
Below are the RPC methods of the kroma-node
component:
kroma_outputAtBlock
Get the output root at a specific block.
curl -X POST -H "Content-Type: application/json" --data \
'{"jsonrpc":"2.0","method":"kroma_outputAtBlock","params":["<block_number>"],"id":1}' \
https://api-node.kroma.network/
Sample response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"version": "0x0000000000000000000000000000000000000000000000000000000000000000",
"outputRoot": "0x1e26ef1154cf6e1094e1834899e861bca24a032307f40b3f1906267d2550428f",
"blockRef": {
"hash": "0x92abebce0a2497c2d2dd850b42902812c13336a1b6bac786ee72cbcda75b03fa",
"number": 1,
"parentHash": "0x52ef8f66bb31c16326eb2072dd9b2fa734068728b845d5428f3a256a50bf252e",
"timestamp": 1688709134,
"l1origin": {
"hash": "0x936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad76",
"number": 3841490
},
"sequenceNumber": 1
},
"nextBlockRef": {
"hash": "0x1e1b3eb67411bd5e3e4213d1a06bfe0514776b4a521e1ca4ed5c74aac493d960",
"number": 2,
"parentHash": "0x92abebce0a2497c2d2dd850b42902812c13336a1b6bac786ee72cbcda75b03fa",
"timestamp": 1688709136,
"l1origin": {
"hash": "0x936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad76",
"number": 3841490
},
"sequenceNumber": 2
},
"withdrawalStorageRoot": "0x24f53397bd92b66fda812b6e1191a00b60fc8e304033518006cbeedcab7f2127",
"stateRoot": "0x200815428955f785ed53b6b9a94c109f2318c6414c2c1417b96ebc478c6c2eda",
"syncStatus": {
"current_l1": {
"hash": "0xbbccbcb2b53fc8fc082f13e9ea2b4db27296dc1473770b2580b7ae007f063d8a",
"number": 4593587,
"parentHash": "0xa890a15cffe4bec380227f1840e9c02f1a9896bf72ceee89ca084dcad92c20b7",
"timestamp": 1698663216
},
"current_l1_finalized": {
"hash": "0xde6301bbad1731570e41301b5f93bcb3d15413a9aed5ef84d07e35350b6e4666",
"number": 4593528,
"parentHash": "0x03298dadbbd8f0d687c03bde5df29b2f6782ea5f7004c9bda01493c960fe6ee3",
"timestamp": 1698662496
},
"head_l1": {
"hash": "0xa468fc8ae84647d3dde8609dd2dabeff35e5cb511ebc5c40483887b890bfe076",
"number": 4593591,
"parentHash": "0x49bc0a1ad25848afe6684f63017946efa67a39d2f90be8bcb287941caeb68591",
"timestamp": 1698663276
},
"safe_l1": {
"hash": "0xa3d171b1f17fa704b8514cc99a749c53028283a5f729fe88e1ae279a5011db68",
"number": 4593559,
"parentHash": "0xdbdca72beecd62e54c77741251245ac41993ab4a169a606e40b84dfe7822c89f",
"timestamp": 1698662880
},
"finalized_l1": {
"hash": "0xde6301bbad1731570e41301b5f93bcb3d15413a9aed5ef84d07e35350b6e4666",
"number": 4593528,
"parentHash": "0x03298dadbbd8f0d687c03bde5df29b2f6782ea5f7004c9bda01493c960fe6ee3",
"timestamp": 1698662496
},
"unsafe_l2": {
"hash": "0x2b3c29d298981171b89ae623e3bb9a4a1686ac9420a9b94fffac603a570d13f9",
"number": 4977080,
"parentHash": "0x05f10f89de6b6cbe40e66787159687f7b5107d171eeaa853466779935844ec2c",
"timestamp": 1698663292,
"l1origin": {
"hash": "0xbbccbcb2b53fc8fc082f13e9ea2b4db27296dc1473770b2580b7ae007f063d8a",
"number": 4593587
},
"sequenceNumber": 1
},
"safe_l2": {
"hash": "0x49649404adc2aaf82f4ed81402cb4931700367e32a44765e33b8662a1698536b",
"number": 4977036,
"parentHash": "0xc32ff5842d5d464b2650fa9baf3f4f0ea26010a58decf3b61cb6adef63b613a3",
"timestamp": 1698663204,
"l1origin": {
"hash": "0xa501a8f68f35957a5f01608fb9309bfa5410120641c4e3b44bfeefc73ae4a5df",
"number": 4593580
},
"sequenceNumber": 5
},
"finalized_l2": {
"hash": "0x45494fd55a5788c692e33d0cf18955261c1b1f7ccce6cd5df985a69c73c73f3a",
"number": 4976671,
"parentHash": "0xf5ad50eeab04d5adea9d1d70eb2701ee067b0b74f02a6f2b0f59f027ee847caf",
"timestamp": 1698662474,
"l1origin": {
"hash": "0xb79b9b92273d9b23c244895697a85bbc43e291c47017523e2491f51c4a70ab02",
"number": 4593521
},
"sequenceNumber": 6
},
"queued_unsafe_l2": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": 0,
"l1origin": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0
},
"sequenceNumber": 0
}
},
"publicInputProof": null
}
}
kroma_outputWithProofAtBlock
Get the output root including the publicInputProof
. The publicInputProof
includes next block hash, next block txs, the balance of L2ToL1MessagePasser, codehash, and merkle proofs. This method is called when a challenger proceeds proveFault
.
curl -X POST -H "Content-Type: application/json" --data \
'{"jsonrpc":"2.0","method":"kroma_outputAtBlock","params":["<block_number>"],"id":1}' \
https://api-node.kroma.network/
Sample response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"version": "0x0000000000000000000000000000000000000000000000000000000000000000",
"outputRoot": "0x1e26ef1154cf6e1094e1834899e861bca24a032307f40b3f1906267d2550428f",
"blockRef": {
"hash": "0x92abebce0a2497c2d2dd850b42902812c13336a1b6bac786ee72cbcda75b03fa",
"number": 1,
"parentHash": "0x52ef8f66bb31c16326eb2072dd9b2fa734068728b845d5428f3a256a50bf252e",
"timestamp": 1688709134,
"l1origin": {
"hash": "0x936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad76",
"number": 3841490
},
"sequenceNumber": 1
},
"nextBlockRef": {
"hash": "0x1e1b3eb67411bd5e3e4213d1a06bfe0514776b4a521e1ca4ed5c74aac493d960",
"number": 2,
"parentHash": "0x92abebce0a2497c2d2dd850b42902812c13336a1b6bac786ee72cbcda75b03fa",
"timestamp": 1688709136,
"l1origin": {
"hash": "0x936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad76",
"number": 3841490
},
"sequenceNumber": 2
},
"withdrawalStorageRoot": "0x24f53397bd92b66fda812b6e1191a00b60fc8e304033518006cbeedcab7f2127",
"stateRoot": "0x200815428955f785ed53b6b9a94c109f2318c6414c2c1417b96ebc478c6c2eda",
"syncStatus": {
"current_l1": {
"hash": "0x34375ad76253ed8541c8a0e846f3589fdadaef0175c7c0de6ddd0e85fb312950",
"number": 4593603,
"parentHash": "0xc737fd512a8de7d57752abdf4f5d3817c0665873b2d83ae25c03bcec9f58c317",
"timestamp": 1698663420
},
"current_l1_finalized": {
"hash": "0xde6301bbad1731570e41301b5f93bcb3d15413a9aed5ef84d07e35350b6e4666",
"number": 4593528,
"parentHash": "0x03298dadbbd8f0d687c03bde5df29b2f6782ea5f7004c9bda01493c960fe6ee3",
"timestamp": 1698662496
},
"head_l1": {
"hash": "0x311b3ab5fc2dc90e323921205a16d93fe16e4de26c724220f2a41e70bff4ccbb",
"number": 4593607,
"parentHash": "0x8475bbf29a4a62846ec8511468890a1d4a256ec0edfa59818ec5be3134baa507",
"timestamp": 1698663468
},
"safe_l1": {
"hash": "0xa3d171b1f17fa704b8514cc99a749c53028283a5f729fe88e1ae279a5011db68",
"number": 4593559,
"parentHash": "0xdbdca72beecd62e54c77741251245ac41993ab4a169a606e40b84dfe7822c89f",
"timestamp": 1698662880
},
"finalized_l1": {
"hash": "0xde6301bbad1731570e41301b5f93bcb3d15413a9aed5ef84d07e35350b6e4666",
"number": 4593528,
"parentHash": "0x03298dadbbd8f0d687c03bde5df29b2f6782ea5f7004c9bda01493c960fe6ee3",
"timestamp": 1698662496
},
"unsafe_l2": {
"hash": "0xe8f7f48719cf466b5ee332bc74d5f8ee51c5e2c98d68acf1b83a4f7c07f6beb6",
"number": 4977175,
"parentHash": "0x2ad5aea2d5cba69138f2ab8178292129a7cb8a2d06dab499f72f3c4eebe1d758",
"timestamp": 1698663482,
"l1origin": {
"hash": "0x34375ad76253ed8541c8a0e846f3589fdadaef0175c7c0de6ddd0e85fb312950",
"number": 4593603
},
"sequenceNumber": 0
},
"safe_l2": {
"hash": "0x9b992a7f3f5e4dde1110f3e2766b3c0c0b819ab700003a1bdab76486813fa8f0",
"number": 4977120,
"parentHash": "0xa3c022734838109f9622a1db2a9ffa61bcf3060beafe76d128c3cba9ae96bcf7",
"timestamp": 1698663372,
"l1origin": {
"hash": "0xcadfc9fcc662523ef99ce5a8169b389454ac4a62fd7bc9634e54cdce59f226d7",
"number": 4593593
},
"sequenceNumber": 5
},
"finalized_l2": {
"hash": "0x45494fd55a5788c692e33d0cf18955261c1b1f7ccce6cd5df985a69c73c73f3a",
"number": 4976671,
"parentHash": "0xf5ad50eeab04d5adea9d1d70eb2701ee067b0b74f02a6f2b0f59f027ee847caf",
"timestamp": 1698662474,
"l1origin": {
"hash": "0xb79b9b92273d9b23c244895697a85bbc43e291c47017523e2491f51c4a70ab02",
"number": 4593521
},
"sequenceNumber": 6
},
"queued_unsafe_l2": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": 0,
"l1origin": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0
},
"sequenceNumber": 0
}
},
"publicInputProof": {
"nextBlock": {
"parentHash": "0x92abebce0a2497c2d2dd850b42902812c13336a1b6bac786ee72cbcda75b03fa",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"miner": "0x0000000000000000000000000000000000000000",
"stateRoot": "0x071204d55fffb6a43b9edd9f4fc495a9bfb926587c5545e8020b19d5c5032dad",
"transactionsRoot": "0x3a32d5fda43458dca3a0ccdb369d01a2d0fbbe38ea6b4573875632023602e4d1",
"receiptsRoot": "0xfa1839d2cd20c5655622e2f64b97978f412743ee6095acce7a15942ec3c32f09",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x0",
"number": "0x2",
"gasLimit": "0x1c9c380",
"gasUsed": "0xc0c9",
"timestamp": "0x64a7a810",
"extraData": "0x",
"mixHash": "0x6acaeba92bac4d85d9c5f11bb062cfe806462236308fcaea6ef16e46de0c35bc",
"nonce": "0x0000000000000000",
"baseFeePerGas": "0x3947264d",
"withdrawalsRoot": null,
"hash": "0x1e1b3eb67411bd5e3e4213d1a06bfe0514776b4a521e1ca4ed5c74aac493d960"
},
"nextTransactions": [
{
"type": "0x7e",
"nonce": null,
"gasPrice": null,
"maxPriorityFeePerGas": null,
"maxFeePerGas": null,
"gas": "0xf4240",
"value": "0x0",
"input": "0xefc674eb00000000000000000000000000000000000000000000000000000000003a9dd20000000000000000000000000000000000000000000000000000000064a7a80c0000000000000000000000000000000000000000000000000000000000000007936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad760000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f15dc770221b99c98d4aaed568f2ab04b9d16e420000000000000000000000000000000000000000000000000000000000000834000000000000000000000000000000000000000000000000000000000016e36000000000000000000000000000000000000000000000000000000000000007d0",
"v": null,
"r": null,
"s": null,
"to": "0x4200000000000000000000000000000000000002",
"sourceHash": "0x08980514aa24b0c84052892bb61ec3ede13a55664b15d2d34df40f31f826c050",
"from": "0xdeaddeaddeaddeaddeaddeaddeaddeaddead0001",
"mint": "0x0",
"hash": "0x4334f701aa9db792755204b141f57a62bd69b6ad9700fe2568a539e806d60c2d"
}
],
"l2ToL1MessagePasserBalance": 0,
"l2ToL1MessagePasserCodeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35",
"merkleProof": [
"0x0017f62b246ceef67c55191768f97d0645f5b53201803d60ec2bfc1ae3836a412b0e968cb0a0be60034dfcbc530d8e0462c1fc304ace6c599bcf336da0cb278d6a",
"0x000a6bae62c3ce7d5d0e2e5398485052d48c0fb809d74261fa1cbbaa4135ff43511966094771fd538753910993052b69cfeb50063596093ab393503d0f77a8d374",
"0x0017e51e3cf713a462bf2c8e06ba239cd70dbae742ce851fe8e864c2602cb0f2611034cca84bc9a17cfdaca7e00453937aabf36ffdad7c4ec1f635908ccdb0191b",
"0x00011c986e07c1fbd478bd742d85d7e6dca9d2a57681ab953503d4c86ca9169224282b8f692eeaab3fbd7c997a53c323c69b3b95435758fe5acfdb60865d8e460b",
"0x0019da37734c165ae6f9293fead21647198f461f352effc8d18329528c1d12527e1d12fb4a76dc568a4655d2e360e9bdcd9f86542d6f7d327e3140477c92aa2920",
"0x001089c7b6ed65cf0dd69902f6621d033a34be16db094508a32f287427250e68d909387d2d4be643d4d8df653dcb8495eebc36eba91f993f78fe843a799a6d0fb9",
"0x0008f993e0df87a04e71f72a3a237c909e2381eacf176b279925d333ee7b1e36ed0ae7c2195e56967b58a29456c64c6439aaf34064b1d94855fd73c6771b2543e8",
"0x00000000000000000000000000000000000000000000000000000000000000000015c1089ff56ee758ec382a55a21b76c08ebf64d6a78d7e6ff442793536607510",
"0x0000000000000000000000000000000000000000000000000000000000000000002e957b48192277673a8dde0549358d09d3f9ad6e8db14e08f4fed46f96021a74",
"0x002325a334c56feef28306cece9e3867165ee117aab1c831fe04db286a1b4ff2c80000000000000000000000000000000000000000000000000000000000000000",
"0x00218476186a36a2ddf003ef59459478f44e0cea1ac32870dafca118331259b05f23618448c7fab9e44d30c44be6777aa390c25ad138fde11d22bdefd05f43838b",
"0x012de4ca10cb48fa7ae483633127295fecab2f03da9355f4ca12ca0c820096f9c304040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc3524f53397bd92b66fda812b6e1191a00b60fc8e304033518006cbeedcab7f2127204200000000000000000000000000000000000003000000000000000000000000",
"0x5448495320495320534f4d45204d4147494320425954455320464f5220534d54206d3172525867503278704449"
]
}
}
}
kroma_syncStatus
Get the synchronization status.
curl -X POST -H "Content-Type: application/json" --data \
'{"jsonrpc":"2.0","method":"kroma_syncStatus","params":[],"id":1}' \
https://api-node.kroma.network/
Sample response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"current_l1": {
"hash": "0xe24d69ea8afe18b62bd441d96848aa44c89df9e31427ee77cceb729e5dab65ea",
"number": 4593688,
"parentHash": "0x1b243c956aab79b0b562aff86e5f19eaf419d9daee039f1575f9e93dcd5e61ca",
"timestamp": 1698664488
},
"current_l1_finalized": {
"hash": "0x40ea20970974d3b41a0d5e20f611acd1b92c3e0c043b34cdcb2e0d919c8c0eef",
"number": 4593621,
"parentHash": "0xd9356a423857f9ce38d617e047dea7cf7f945da9e801feade7a024d508a6b704",
"timestamp": 1698663648
},
"head_l1": {
"hash": "0x2689ee550d163e912573efd62dc9835de8d96053b12eff04089ad853c77738a8",
"number": 4593692,
"parentHash": "0xfd17ff6bcd27d9fd8f52487bec7866bcde97d3c70ac576811203e4f8065c286f",
"timestamp": 1698664536
},
"safe_l1": {
"hash": "0x655020c9b07df7247e7a9572615277ba2f773cea4dd504acc7d209893d9aa414",
"number": 4593652,
"parentHash": "0x65fef7c6e1e13056183b9a50625633020eb9017674125bf89634ed486a095ef0",
"timestamp": 1698664032
},
"finalized_l1": {
"hash": "0x40ea20970974d3b41a0d5e20f611acd1b92c3e0c043b34cdcb2e0d919c8c0eef",
"number": 4593621,
"parentHash": "0xd9356a423857f9ce38d617e047dea7cf7f945da9e801feade7a024d508a6b704",
"timestamp": 1698663648
},
"unsafe_l2": {
"hash": "0xcf011144d7d9be0c02ad88756360a7a668a002e32796b6efa2a5f2d21503c081",
"number": 4977711,
"parentHash": "0x5e8c326e748a29854564687b5db16467a77bd05877fabecff85ca530c25e2a84",
"timestamp": 1698664554,
"l1origin": {
"hash": "0xe24d69ea8afe18b62bd441d96848aa44c89df9e31427ee77cceb729e5dab65ea",
"number": 4593688
},
"sequenceNumber": 1
},
"safe_l2": {
"hash": "0x1eeefd0bbfea81ad535ee316d1011729539df84c3d89fb338de6513874155d8e",
"number": 4977660,
"parentHash": "0x3c72ec055aab3ad39c329ddaa2cacce3960fbeaccc1024cefed2ddb327c4af79",
"timestamp": 1698664452,
"l1origin": {
"hash": "0xa8d4989dc4d609828e19325b4915e06fd84889ccba51316891a1854368e9b2bf",
"number": 4593679
},
"sequenceNumber": 4
},
"finalized_l2": {
"hash": "0xe00eae10650ed0523b7d7341823116fb0e9e94420f4c2c872ffc1ecc6f86872f",
"number": 4977235,
"parentHash": "0x45f8bfd9fd17ff59ab7baf4e719ac767ed170c6c0f296efbf55ba3ada5464f7a",
"timestamp": 1698663602,
"l1origin": {
"hash": "0x0b37f5cacc1ca46da65b7b2c307b368b62091799d3ea60ce1351deeec0358e62",
"number": 4593613
},
"sequenceNumber": 0
},
"queued_unsafe_l2": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": 0,
"l1origin": {
"hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"number": 0
},
"sequenceNumber": 0
}
}
}
kroma_rollupConfig
Get the rollup configuration parameters.
curl -X POST -H "Content-Type: application/json" --data \
'{"jsonrpc":"2.0","method":"kroma_rollupConfig","params":[],"id":1}' \
https://api-node.kroma.network/
Sample response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"genesis": {
"l1": {
"hash": "0x936e490e33e6e136ecd9095090e30ed7def3903ef2bae3e05966b376e493ad76",
"number": 3841490
},
"l2": {
"hash": "0x52ef8f66bb31c16326eb2072dd9b2fa734068728b845d5428f3a256a50bf252e",
"number": 0
},
"l2_time": 1688709132,
"system_config": {
"batcherAddr": "0xf15dc770221b99c98d4aaed568f2ab04b9d16e42",
"overhead": "0x0000000000000000000000000000000000000000000000000000000000000834",
"scalar": "0x000000000000000000000000000000000000000000000000000000000016e360",
"gasLimit": 30000000,
"validatorRewardScalar": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
},
"block_time": 2,
"max_proposer_drift": 1200,
"proposer_window_size": 3600,
"channel_timeout": 120,
"l1_chain_id": 11155111,
"l2_chain_id": 2358,
"batch_inbox_address": "0xfa79000000000000000000000000000000000001",
"deposit_contract_address": "0x31ab8ed993a3be9aa2757c7d368dc87101a868a4",
"l1_system_config_address": "0x398c8ea789968893095d86cba168378a4f452e33"
}
}
kroma_version
Get the software version.
curl -X POST -H "Content-Type: application/json" --data \
'{"jsonrpc":"2.0","method":"kroma_version","params":[],"id":1}' \
https://api-node.kroma.network/
Sample response:
{
"jsonrpc": "2.0",
"id": 1,
"result": "v1.0.0"
}
Execution Engine (kroma-geth)
The execution engine in L2, called as kroma-geth
in Kroma, does almost the same job with an L1 execution engine. The modifications, configurations and usage are described in the protocol specification.
The execution engine's RPC interface is identical to the upstream Geth RPC interface. This includes the ability to provide snap sync functionality to other execution engines.
The responses are also nearly identical except for that we include the L1 gas usage and price information.
Last updated