What's New
- Arweave file data sources - Arweave file data sources allow subgraph developers to access offchain data from Arweave from within the subgraph mappings.(#4789)
- Major performance boost for substreams-based subgraphs - Significant performance improvements have been achieved for substreams-based subgraphs by moving substreams processing to the block stream.(#4851)
- Polling block handler - A new block handler filter
polling
forethereum
data sources which enables subgraph developers to run a block handler at defined block intervals. This is useful for use cases such as taking periodic snapshots of the contract state.(#4725) - Initialization handler - A new block handler filter
once
forethereum
data sources which enables subgraph developers to create a handler which will be called only once before all other handlers run. This configuration allows the subgraph to use the handler as an initialization handler, performing specific tasks at the start of indexing. (#4725) - DataSourceContext in manifest -
DataSourceContext
in Manifest - DataSourceContext can now be defined in the subgraph manifest. It's a free-form map accessible from the mapping. This feature is useful for templating chain-specific data in subgraphs that use the same codebase across multiple chains.(#4848) graph-node
version in index node API - The Index Node API now features a new query, Version, which can be used to query the current graph-node version and commit. (#4852)- Added a '
paused
' field to Index Node API, a boolean indicating the subgraph’s pause status. (#4779) - Proof of Indexing logs now include block number (#4798)
subgraph_features
table now tracks details about handlers used in a subgraph (#4820)- Configurable SSL for Postgres in Dockerfile - ssl-mode for Postgres can now be configured via the connection string when deploying through Docker, offering enhanced flexibility in database security settings.(#4840)
- Introspection Schema Update - The introspection schema has been updated to align with the October 2021 GraphQL specification update.(#4676)
trace_id
Added to Substreams Logger (#4868)- New apiVersion for Mapping Validation - The latest apiVersion 0.0.8 validates that fields set in entities from the mappings are actually defined in the schema. This fixes a source of non-deterministic PoI. Subgraphs using this new API version will fail if they try to set undefined schema fields in the mappings. Its strongly recommended updating to 0.0.8 to avoid these issues. (#4894)
- Substreams Block Ingestor Support - Added the ability to run a pure substreams chain by introducing a block ingestor for substreams-only chains. This feature allows users to run a chain with just a single substreams endpoint, enhancing support beyond RPC and firehose. Prior to this, a pure substreams chain couldn’t be synced.(#4839)
Bug fixes
- Fix for rewinding dynamic data source - Resolved an issue where a rewind would fail to properly remove dynamic data sources when using
graphman rewind
. This has been fixed to ensure correct behavior.(#4810) - Improved Deployment Reliability with Retry Mechanism - A retry feature has been added to the block_pointer_from_number function to enhance the robustness of subgraph deployments. This resolves occasional failures encountered during deployment processes.(#4812)
- Fixed Cross-Shard Grafting Issue - Addressed a bug that prevented cross-shard grafting from starting, causing the copy operation to stall at 0% progress. This issue occurred when a new shard was added after the primary shard had already been configured. The fix ensures that foreign tables and schemas are correctly set up in new shards. For existing installations experiencing this issue, it can be resolved by running
graphman database remap
.(#4845) - Fixed a Full-text search regression - Reverted a previous commit (ad1c6ea) that inadvertently limited the number of populated search indexes per entity.(#4808)
- Attestable Error for Nested Child Filters - Nested child filter queries now return an attestable
ChildFilterNestingNotSupportedError
, improving error reporting for users.(#4828)
Graphman
- Index on prefixed fields - The graphman index create command now correctly indexes prefixed fields of type String and Bytes for more query-efficient combined indexes. Note: For fields that are references to entities, the behavior may differ. The command may create an index using left(..) when it should index the column directly.
- Partial Indexing for Recent Blocks - The graphman index create command now includes a
--after $recent_block
flag for creating partial indexes focused on recent blocks. This enhances query performance similar to the effects of pruning. Queries using these partial indexes must include a specific clause for optimal performance.(#4830)
Full Changelog: incrypto32/v0.32.0...v0.33.0