FAQs

Are you a beginner to Solidity?

Start with our step-by-step guide for detailed instructions with screenshots to get set up.

Solidity beginners

What chains does Shadow support?

Shadow is currently production ready for Ethereum Mainnet, as well as Arbitrum Mainnet with limited functionality. We plan to support Optimism and Base Mainnets by August 2024. If there are additional chains you need supported, please reach out to us at gm@shadow.xyz.

How is Shadow different than other forks? (e.g. Tenderly?)

Forking functionality offered by other developer tools, such as Tenderly or Anvil, are more useful for one-off simulations to test a sequence of transactions that you need to specify. Shadow is more useful for continuously simulating what is actually happening on mainnet, and generating additional data based on mainnet transactions. Tenderly forks do not continuously execute (i.e. “shadow”) mainnet transactions, and also does not support event backfills.

How far behind the chain tip are Shadow forks?

Your Shadow fork will fully execute and index shadow events a few seconds after a transaction is confirmed on mainnet (P95 <5s). This is fast enough to satisfy most realtime use cases. If you need even faster performance, please reach out to us so we can better understand your specific use case.

Can I arbitrarily set state or send a test transaction on Shadow forks?

No – the general idea behind Shadow is to really only "control" the contract and EVM read path by overriding contracts. For example, it's not currently designed to allow you to arbitrarily top up balances, or send one-off transactions. It's designed such that your Shadow fork can be an extension of mainnet, with essentially the same state, but emit a lot more data that you are able to fully define and can easily use.

Do I need to know Solidity in order to use Shadow?

Yes – you need to be at least somewhat comfortable with Solidity. Shadow is designed for Solidity developers, or analysts who are familiar enough with Solidity to read contract code and add event log code. You won’t need to write complete Solidity smart contracts in Shadow, but you need to be able to write snippets of Solidity code to add custom shadow events. We know that many onchain analysts are most familiar with SQL, and we’re investigating ways to make it easy for folks with very little Solidity experience to use Shadow effectively. See our guide for Solidity Beginners.

Could I put all of my contract’s events on Shadow instead of mainnet?

Yes – you can move all of your events off of mainnet and onto Shadow. Based on our research, this would result in users saving between ~4-12% in gas costs. Keep in mind, this is not strictly necessary in order to use Shadow – you can leave your mainnet events as-is and simply add new events on Shadow.

How does Shadow handle user data?

Shadow accesses and stores public blockchain data, or data that can be derived from public blockchain data. This includes: wallet addresses, wallet transactions, contract events, and contract storage slots. Otherwise, Shadow does not collect or store any personal identifiable information (PII) on your users. For example, we do not collect or store IP address, name, email address, locale, or any other sensitive user information.

Last updated