🎯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 RPCsUnify 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