v1.7.0
Summary of the changes
ERC & Tokens
- Added support for token contracts with indexing improvements.
- Introduced NFT trait indexing and aggregation of trait counts, enabling richer metadata queries.
- Added ERC-1155 unique tokens tracking and total supply support.
- Enhanced static metadata support with etags, hashes, and last-modified headers for NFTs.
Indexing & Processing
- Ability to register and index external contracts.
- New starting block per contract option for more flexible indexing.
- Improved processor and executor metrics collection.
Storage & SQL
- Added token indices for faster lookups.
- Introduced per-contract updated_at tracking.
- SQLite now supports memory limits for better resource control.
gRPC:
- Added subscription and fetch support for token transfers.
- Support for retrieving contracts and filtering with JSON/array operators.
- Increased max message size (default 16MB).
- Added timestamps in messages.
GraphQL
- Published messages via GraphQL.
- Refined balance queries and token return formats.
Server & CLI
- Remote reindexing of token metadata is now supported.
- CLI improvements with new SQL connection options.
Compatibility & Upgrades
- Upgraded to Starknet 0.17.
- Updated dependencies to latest Dojo alpha builds and Cairo 2.12.
- RPC upgraded to Starknet RPC v0.9.0-rc.2.
What's Changed
- feat(rpc): upgrade Starknet RPC spec to
v0.9.0-rc.2by @kariy in #224 - refactor(processors): check contract registered before update by @Larkooo in #233
- feat(types): add support for
FixedSizeArrayby @kariy in #232 - release(prepare): v1.7.0-alpha.0 by @glihm in #235
- feat(artifacts): added cache control header by @Larkooo in #236
- fix(cli): Parse paths with ~ or env vars by @bengineer42 in #231
- chore(engine): cache clone cleanup by @Larkooo in #238
- feat(cli): sql connection options by @Larkooo in #237
- refactor(fetcher): use indexmap instead of linkedhashmap by @Larkooo in #240
- refactor(fetcher): rename refs pending to pre confirmed by @Larkooo in #239
- test(fetcher): retry logic for chunked batched requests by @Larkooo in #242
- fix(fetcher): more conservative head update by @Larkooo in #243
- comp(processors): assume legacy default for backwards compatibility by @Larkooo in #244
- feat(fetcher): assert block hash for get events to by @Larkooo in #245
- release(prepare): v1.7.0-alpha.1 by @glihm in #246
- fix(processors): legacy store models & events by @Larkooo in #248
- Fix spec version error message path by @steebchen in #247
- fix(schema): primitives for json shared by @Larkooo in #249
- release(prepare): v1.7.0-alpha.2 by @glihm in #250
- fix(schema): where input by @Larkooo in #251
- feat(processors): other contract type by @Larkooo in #252
- refactor(messaging): use millis for timestamp check by @Larkooo in #253
- feat(grpc): include timestamps by @Larkooo in #254
- feat(gql): publish message on graphql by @Larkooo in #255
- feat(grpc): JSON array operators for filtering by @Larkooo in #256
- refactor(gql): return all token balances including 0 by @Larkooo in #260
- fix(fetcher): preconfirmed multi contracts events regression by @Larkooo in #261
- refactor(grpc): array comparison using json format by @Larkooo in #257
- release(prepare): v1.7.0-alpha.3 by @glihm in #262
- fix: release with 1.86 by @Larkooo in #263
- chore(cairo): workspace versions by @Larkooo in #264
- feat(erc): total supply in tokens table by @Larkooo in #258
- feat(erc): retry erc provider calls by @Larkooo in #265
- release(prepare): v1.7.0-alpha.4 by @glihm in #266
- fix(erc): rare dashmap deadlock in update diffs by @Larkooo in #268
- refactor(processors): skip token permament errors from retries by @Larkooo in #267
- feat(grpc): filtering on arrays subscriptions by @Larkooo in #269
- release(prepare): v1.7.0-alpha.5 by @glihm in #270
- feat(server): reindex token metadata remotely by @Larkooo in #271
- refactor(artifacts): move into a proxy handler by @Larkooo in #272
- refactor(graphql): only erc20 return 0 balances by @Larkooo in #273
- feat(static): etag, hash & last modified for nfts by @Larkooo in #275
- feat(storage): retrieve contracts by @Larkooo in #274
- feat(storage): updated at migration for contracts by @Larkooo in #278
- feat(grpc): retrieve contracts by @Larkooo in #277
- release(prepare): v1.7.0-alpha.6 by @glihm in #279
- feat(storage): expose token transfers with proto by @Larkooo in #281
- feat(grpc): subscription & fetch for token transfers by @Larkooo in #282
- feat(metrics): processors & executor metrics by @Larkooo in #283
- refactor: pending to preconf by @Larkooo in #285
- feat(grpc): max message size option & 16mb def by @Larkooo in #286
- refactor(indexer): logged metrics by @Larkooo in #288
- fix(processors): store set record legacy keys by @Larkooo in #291
- feat(indexer): starting block per contract option by @Larkooo in #289
- refactor(erc): count of unique tokens erc1155 total supply by @Larkooo in #290
- Revert "refactor(erc): count of unique tokens erc1155 total supply" by @Larkooo in #292
- feat: bump dojo alpha 3 deps & starknet 0.17 by @Larkooo in #294
- feat: token contracts by @Larkooo in #295
- chore: rework test db building and adjust Katana runner by @glihm in #298
- release(prepare): v1.7.0-alpha.7 by @glihm in #299
- feat(sql): token indexds by @Larkooo in #300
- feat(processors): register external contract to index by @Larkooo in #297
- fix(indexer): tests after cursors refactor by @Larkooo in #302
- feat(erc): unique tokens 1155 by @Larkooo in #293
- feat(erc): index nft trait variants by @Larkooo in #296
- fix(fetcher): handle & skip non finalized pre confirmed tx from cursor by @Larkooo in #284
- feat(runner): sqlite memory limits by @Larkooo in #304
- feat(erc): aggregate nft trait counts by @Larkooo in #303
- fix: use
try_compute_selector_from_tagto avoid panic of dojo-types by @glihm in #305 - release(prepare): v1.7.0 by @glihm in #306
New Contributors
- @kariy made their first contribution in #224
- @bengineer42 made their first contribution in #231
- @steebchen made their first contribution in #247
Full Changelog: v1.6.1...v1.7.0