zks_getProof - zkSync
Example code for the zks_getProof JSON-RPC method. Сomplete guide on how to use zks_getProof JSON-RPC in GetBlock.io Web3 documentation.
Generates Merkle proofs for one or more storage values associated with an account. Unlike Ethereum's two-level hexadecimal trie, zkSync Era uses a single-level full binary tree with 256-bit keys — proofs are batch-anchored rather than block-anchored, so the third parameter is an L1 batch number.
Parameters
address
string
Yes
20-byte account address to fetch storage values and proofs for
storageKeys
array of string
Yes
Array of 32-byte storage keys to prove
l1BatchNumber
integer
Yes
L1 batch number at which the proof is anchored
Request Example
curl --location --request POST 'https://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "zks_getProof",
"params": [
"0x0000000000000000000000000000000000008003",
[
"0x8b65c0cf1012ea9f393197eb24619fd814379b298b238285649e14f936a5eb12"
],
354895
],
"id": "getblock.io"
}'import axios from 'axios';
const data = JSON.stringify({
"jsonrpc": "2.0",
"method": "zks_getProof",
"params": [
"0x0000000000000000000000000000000000008003",
[
"0x8b65c0cf1012ea9f393197eb24619fd814379b298b238285649e14f936a5eb12"
],
354895
],
"id": "getblock.io"
});
const config = {
method: 'post',
url: 'https://shared.eu-central-1.getblock.io/<ACCESS-TOKEN>/',
headers: {
'Content-Type': 'application/json'
},
data: data
};
axios(config)
.then(response => console.log(JSON.stringify(response.data, null, 2)))
.catch(error => console.log(error));Response Example
Response Parameters
result.address
string
Account address (echoed)
result.storageProof
array
Array of storage proofs, one per requested key
result.storageProof[].key
string
Storage key (echoed)
result.storageProof[].value
string
Value at the key at the time of the specified L1 batch
result.storageProof[].index
integer
1-based index of the entry in the Merkle tree
result.storageProof[].proof
array of string
Merkle path from leaf to root (hashes only; root is published on L1)
Use Cases
Light client state verification against zkSync's binary tree
Cross-chain bridges proving zkSync state
Trust-minimized storage reads for audits and bridges
Error Handling
403
Forbidden
Missing or invalid <ACCESS-TOKEN>
-32602
Invalid params
Request parameters are missing or malformed
429
Too Many Requests
Rate limit exceeded for your plan
SDK Integration
Last updated
Was this helpful?