Description
Retrieves on-chain function call return values captured at specific block heights. Records are keyed by (contract_id, block_number, call_data); contract_id is the 26-byte incarnation ID (address + creation block + tx_index) so that metamorphic contracts are supported. Use this endpoint to hydrate oracle snapshots, monitor configuration values, or audit contract state without re-running eth_call at historical blocks.
Parameters
Target EVM network. See the Chain enumeration for supported values.
Range Filters (mutually exclusive)
Starting block number (inclusive) for the query. Use with to_block.
Ending block number (inclusive) for the query. Use with from_block.
Starting timestamp (ISO-8601). If it falls between blocks, the next block after this timestamp is used. Use with to_timestamp.
Ending timestamp (ISO-8601). If it falls between blocks, the last block before this timestamp is used. Use with from_timestamp.
Validation rule:
You must provide either a block range, a time range, or explicit selectors.
Providing more than one option (e.g., both ranges or ranges plus selectors) results in HTTP 400.
Providing none results in HTTP 400.
Direct Selectors
Filter by 20-byte contract addresses (hex string, no 0x prefix). Resolved to matching contract_id incarnations. Up to 256 entries.
4-byte function selectors (8 hex characters, no 0x prefix). Use to scope calls to specific function signatures.
Recommended default 250; maximum 1000 to stay under ~10 MB responses.
Opaque pagination cursor returned from a prior call.
Response Fields
Echo of request metadata applied to the response.
EVM chain ID echoed from the request.
Block/timestamp bounds derived from the request.
Filters echoed from the request (contract addresses, signature hashes, latest_only, limit).
Data
Function result records ordered by (contract_id, block_number DESC) unless latest_only is true.
Network where the call was executed.
Contract incarnation ID (hex string, 26 bytes, no 0x prefix): 20 bytes address + 4 bytes creation block + 2 bytes tx_index. Use to join with contracts or for metamorphic disambiguation.
Contract address (hex string, 20 bytes, no 0x prefix); first 20 bytes of contract_id for convenience.
4-byte selector for the function invoked.
Snapshot block height when the value was observed.
ISO-8601 timestamp of the snapshot block.
Hex-encoded calldata sent to the contract. For simple getter functions, this is usually just the selector.
Hex-encoded return payload. Decode using the ABI corresponding to signature_hash.
Internal lineage identifier (hex string, no 0x prefix) for cross-referencing with lineage endpoints.
Record creation timestamp (ISO-8601).
Record last update timestamp (ISO-8601).
Envelope Fields
Pagination cursor to continue the query.
Number of records returned in this page.
Use Cases
- Refresh oracle or configuration caches with latest per-block values.
- Detect contract parameter changes by diffing consecutive results.
- Seed lineage exploration by pairing selectors with their upstream transactions and logs.
curl -X POST "https://api.blockdb.io/v1/evm/raw/function-results" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"contract_addresses": [
"1234567890abcdef1234567890abcdef12345678"
],
"signature_hashes": [
"0902f1ac"
],
"from_block": 18934000,
"to_block": 18935000,
"from_timestamp": null,
"to_timestamp": null,
"latest_only": false,
"limit": 200,
"cursor": null
}'
{
"meta": {
"chain_id": 1,
"request_window": {
"from_block": 18934000,
"to_block": 18935000,
"from_timestamp": null,
"to_timestamp": null
},
"filters": {
"contract_addresses": [
"1234567890abcdef1234567890abcdef12345678"
],
"signature_hashes": [
"0902f1ac"
],
"latest_only": false
}
},
"data": [
{
"chain_id": 1,
"contract_id": "1234567890abcdef1234567890abcdef1234567800121a0700",
"contract_address": "1234567890abcdef1234567890abcdef12345678",
"signature_hash": "0902f1ac",
"block_number": 18934560,
"timestamp_utc": "2024-04-01T12:34:56Z",
"call_data": "0902f1ac",
"result": "0000000000000000000000000000000000000000000000000de0b6b3a7640000",
"_tracing_id": "0122000000000000000000000000000000000001",
"_created_at": "2025-11-11T18:42:15.123Z",
"_updated_at": "2025-11-11T18:42:15.123Z"
}
],
"cursor": null,
"count": 1
}