Currently any node can join an "archival" chain ID and serve bad data due to their database being pruned.
Some calls, such as eth_getStorageAt, will return properly formatted results that do not register as errors when the node has pruning turned on. This results in bad data getting out to the end-user if a node-runner is not serving an archival chain ID with an archival node.
In addition to the sync check, the portal API should perform an "archival check" for chain IDs that are marked as such.
For EVM-based chains, the method of calling eth_getBalance at block height 0x0 will show the pruning state of the node.
Querying OpenEthereum with pruning turned on for archival data:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0", "method": "eth_getBalance", "params": ["0x0000000000000000000000000000000000000000", "0x2710"], "id": 1}' http://localhost:8555
{"jsonrpc":"2.0","error":{"code":-32000,"message":"This request is not supported because your node is running with state pruning. Run with --pruning=archive."},"id":1}
Implementation should follow the same method as services/sync-check but the record that a node is improperly configured should last 24 hours. After 24 hours that record should expire and a node can be re-checked.
Currently any node can join an "archival" chain ID and serve bad data due to their database being pruned.
Some calls, such as eth_getStorageAt, will return properly formatted results that do not register as errors when the node has pruning turned on. This results in bad data getting out to the end-user if a node-runner is not serving an archival chain ID with an archival node.
In addition to the sync check, the portal API should perform an "archival check" for chain IDs that are marked as such.
For EVM-based chains, the method of calling eth_getBalance at block height 0x0 will show the pruning state of the node.
Querying OpenEthereum with pruning turned on for archival data:
Querying BSC with pruning turned on:
Implementation should follow the same method as services/sync-check but the record that a node is improperly configured should last 24 hours. After 24 hours that record should expire and a node can be re-checked.