🎯Use cases

You can use Shadow to tackle several types of onchain data problems:

Faster and richer indexing

Teams can cut engineering time, get rid of adapters, and speed up indexing by writing shadow events from the contracts they care about. Shadow RPCs support the standard read endpoints, and are backwards compatible with existing web3 tooling like subgraphs.

Deeper research and analysis

Events often don't have all the data you will need. This can stem from a variety of reasons:

  • Events are missing entirely

  • Existing events don't emit information you need

  • Existing events emit inaccurate information

  • Existing events are structured in a way that make them hard to use

Analysts and researchers can take matters into their own hands and write shadow events into any contract. Write a custom event, quickly backfill its data for past transactions across a block range, and export it to your data tool of choice.

Save gas and contract size

Smart contract developers can save their users up to 12% in gas on every transaction by decoupling data access from business logic, and moving non-critical event logs and view functions to a shadow fork. This has the added benefit of reducing the code size of contracts deployed on mainnet, which has a limit of 24KB (the Spurious Dragon Limit).

Reducing events on the publicly deployed versions of your contracts – and deploying them on a shadow fork instead – can provide significant optimizations to your contracts while flexibly serving all of the data needs for your project.

Complete observability

Developers and auditors can use Shadow to see inside the entire stack of any contract, and log everything they might want privately and gaslessly on a shadow fork. This enables fully comprehensive semantic logging to understand the inner details of any contract or transaction.

Data ergonomics

Shadow provides powerful and flexible data middleware that simplifies any indexing you may need to do downstream of events.

Shadow enables you to easily:

  • Materialize SQL-ready enriched tables

  • Make eth_call data event-driven instead of hammering RPCs

  • Unify data models for similar user actions across different protocols

  • Fetch token prices in USD with block-level accuracy

  • Get human understandable metadata

    • Token info (e.g. decimal converted values, symbols)

    • Pool/vault info (e.g. constituent token liquidity, tick prices, fees)

    • NFT info (e.g. collection names, onchain attributes)

Last updated