For AI agents: the documentation index is at /llms.txt. Markdown versions of pages are available by appending .md to the URL.
Skip to main content

HyperSync Preset Queries

HyperSync's client libraries include helper functions that build common queries. These presets are useful when you need raw blockchain objects without crafting a query manually.

Each preset returns a Query object so you can pass it directly to client.get, client.stream, or client.collect.

The names below are the Python ones. Node.js and TypeScript expose the same four presets in camelCase, and Rust uses a different naming scheme again. See Other client libraries.

Available Presets

preset_query_blocks_and_transactions(from_block, to_block=None)

Returns every block and all associated transactions within the supplied block range. Leave to_block unset to query up to the current chain head.

import hypersync
import asyncio

async def main():
client = hypersync.HypersyncClient(
hypersync.ClientConfig(
url="https://eth.hypersync.xyz",
bearer_token="your-token-here", # Get from https://docs.envio.dev/docs/HyperSync/api-tokens
)
)

query = hypersync.preset_query_blocks_and_transactions(17_000_000, 17_000_050)
result = await client.get(query)
print(f"Query returned {len(result.data.blocks)} blocks and {len(result.data.transactions)} transactions")

asyncio.run(main())

preset_query_blocks_and_transaction_hashes(from_block, to_block=None)

Returns each block in the range along with only the transaction hashes.

preset_query_logs(address, from_block, to_block=None)

Fetches all logs emitted by a single contract address in the given block range. The address is the first argument.

logs_res = await client.get(
hypersync.preset_query_logs("0xdAC17F958D2ee523a2206206994597C13D831ec7", 17_000_000, 17_000_050)
)

preset_query_logs_of_event(address, topic0, from_block, to_block=None)

Fetches logs emitted by a contract address that match a single event topic. topic0 is the hashed event signature, not the human-readable one.

# keccak256("Transfer(address,address,uint256)")
transfer_topic0 = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"

logs_res = await client.get(
hypersync.preset_query_logs_of_event(
"0xdAC17F958D2ee523a2206206994597C13D831ec7",
transfer_topic0,
17_000_000,
17_000_050,
)
)

Other client libraries

Node.js and TypeScript

@envio-dev/hypersync-client exports the same four presets in camelCase, with the same argument order. The Python snake_case names are not defined in the Node client.

import {
presetQueryBlocksAndTransactions,
presetQueryBlocksAndTransactionHashes,
presetQueryLogs,
presetQueryLogsOfEvent,
} from "@envio-dev/hypersync-client";

const query = presetQueryLogs(
"0xdAC17F958D2ee523a2206206994597C13D831ec7",
17_000_000,
17_000_050
);

Rust

The Rust client groups these in a preset_query module, drops the preset_query_ prefix, and takes the block range first rather than last.

use hypersync_client::preset_query;

let query = preset_query::logs(17_000_000, Some(17_000_050), contract_address);

The module provides blocks_and_transactions, blocks_and_transaction_hashes, logs, logs_of_event, transactions, and transactions_from_address. The last two have no Python or Node.js equivalent.

For runnable examples, see the Python and Node.js client repositories.

Use these helpers whenever you need a quick query without specifying field selections or joins manually.