Usage
Examples
We've found most developers have enjoyed learning HyperSync by practical example. You will find examples here in Python, Rust, and NodeJs in each section.
Queries
Using HyperSync primarily revolves around successfully constructing and then executing queries. Queries allow you to essentially filter for blocks, logs, transactions and traces. Hovering over types in your IDE will allow you to see all exhaustive options in order to construct an appropriate query.
class Query(
from_block: int,
field_selection: FieldSelection,
to_block: int | None = None,
logs: list[LogSelection] | None = None,
transactions: list[TransactionSelection] | None = None,
traces: list[TraceSelection] | None = None,
include_all_blocks: bool | None = None,
max_num_blocks: int | None = None,
max_num_transactions: int | None = None,
max_num_logs: int | None = None,
max_num_traces: int | None = None
)
Field Selection
You can choose exactly what data you would like to be returned from the request. For example, this is useful when filtering for Logs, but you would also like the block data associated with that log to maybe get the timestamp of when that log was emitted.
Useful tips:
- Run export
export RUST_LOG=trace
to see detailed HyperSync request progress information. - HyperSync requests have a 5-second time limit. The request will return with the block that it reached during the query allowing you to paginate and make the next query. HyperSync generally scans through more than 10m blocks in 5 seconds.
- Modify
batch_size
andbatch_size
params based on your chain and use case to improve performance in some cases. E.g.
config = hypersync.ParquetConfig(
path="data",
hex_output=True,
batch_size=1000000,
concurrency=10,
)