Adding Archival Checks
🧑🎓 Instructions for adding new archival check configurations by following an example for Polygon zkEVM 🧑🎓
Table of Contents
- Overview
- Adding an Archival Check By Example:
Polygon zkEVM - 0. Find a Block Explorer
- Additional Resources
Overview
The process of configuring archival checks for a new chain is manual but only needs to be performed once per chain.
Service QoS Configurations
QoS configurations are stored in path/config/service_qos_config.go.
Adding an Archival Check By Example: Polygon zkEVM
This example uses the Polygon zkEVM chain (F029).
0. Find a Block Explorer
Firstly, find a publically accessible block explorer for the chain. Most EVM chain block explorers use a similar format for their browser UI.
Block Explorer for Polygon zkEVM: zkevm.polygonscan.com/
1. Go to the chain's block explorer
Go to the chain's block explorer and search for Top Account in the Blockchain dropdown.

2. Choose a top account
Find an account with lots of activity and click on the Address.

3. Find the contract creation block
Under the Filters section, select View Contract Creation.

Take note of the block number of the first transaction for that address.

4. Add the new archival check configuration
In the path/config/service_qos_config.go file, add a new entry to the shannonServices array.
The configuration MUST be entered in this exact format:
// Polygon zkEVM
evm.NewEVMServiceQoSConfig("F029", "0x44d", evm.NewEVMArchivalCheckConfig(
// https://zkevm.polygonscan.com/address/0xee1727f5074e747716637e1776b7f7c7133f16b1
"0xee1727f5074E747716637e1776B7F7C7133f16b1",
// Contract start block
111,
)),
It must contain the following elements in evm.NewEVMArchivalCheckConfig, exactly as shown above.
| Line | Description | Example |
|---|---|---|
| 1 | A comment containing the URL for the contract address on the block explorer as a comment | // https://zkevm.polygonscan.com/address/0xee1727f5074e747716637e1776b7f7c7133f16b1 |
| 2 | The contract address as the first parameter | "0xee1727f5074E747716637e1776B7F7C7133f16b1" |
| 3 | A comment containing // Contract start block | // Contract start block |
| 4 | A block number just slightly higher than the first transaction for that address as the second parameter | 111 |
5. Send a test request
Configure PATH for the service you want to test, and run make path_run to start PATH from a local binary.
For information on how to configure PATH for a service, see the Shannon Cheat Sheet.
Then send a request to validate that data is returned correctly for the requested block.
eth_getBalance Request- The example contract address:
0xee1727f5074E747716637e1776B7F7C7133f16b1 - A randomly selected block hash (ideally close to the first transaction for that address):
0x15E(350)
Request:
curl http://localhost:3069/v1 \
-H "Target-Service-Id: F029" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"id": 1,
"params": [
"0xee1727f5074E747716637e1776B7F7C7133f16b1",
"0x15E"
]
}'
Expect Response:
{
"id": 1,
"jsonrpc": "2.0",
"result": "0x247a76d7647c0000"
}