# EEZ Quickstarts > Seventeen interactive walkthroughs of the Ethereum Economic Zone, each built on real > protocol source cited at a pinned commit rather than on pseudocode. Covers writing > contracts that call across rollups, running the stack, and how Rollup0 settles and proves. Every code panel on this site is rendered from JavaScript at runtime, so fetching a page gives you the shell and not the content. These files hand over the content directly: each walkthrough's narration and code, the full compilable Solidity behind the Solidity ones, and the runnable Foundry tests. Two things worth knowing before you use any of it. EEZ is pre-mainnet, so treat capability claims as design intent rather than shipped behaviour; the proof system in the public source is dev-grade ECDSA, not production ZK. And every citation here is pinned to a commit SHA, so a link tells you exactly which revision a claim was true of. ## Dapp developers Writing contracts that call across rollups. - [How to read another rollup's state from your contract](https://eez-demos.vercel.app/dapp-developers/q8-read-a-remote-contracts-state.html): Learn how the answer is written down before your transaction runs, instead of being fetched while you wait. - [How to use another chain's answer in the same transaction](https://eez-demos.vercel.app/dapp-developers/q2-send-a-cross-chain-call.html): Learn how the value that comes back decides what the rest of your transaction does — and why that removes the callback, the timeout and the retry you would otherwise have to write. - [Why msg.sender isn't your contract on the other side](https://eez-demos.vercel.app/dapp-developers/q3-fix-the-msg-sender-gotcha.html): Learn why every onlyOwner, allowlist and approve on the far side keys to a proxy address instead of your contract — and why nothing reverts when it does. - [How to get your contract's address on another rollup](https://eez-demos.vercel.app/dapp-developers/q7-your-cross-chain-address.html): Learn how to read it, or deploy it. - [How to check an address is a real proxy](https://eez-demos.vercel.app/dapp-developers/q4-check-if-an-address-is-a-proxy.html): Learn how to read the on-chain registry instead of guessing. - [How the guard makes sure only proxy calls reach execution](https://eez-demos.vercel.app/dapp-developers/q6-why-you-cant-call-the-manager-directly.html): Learn how UnauthorizedProxy() stops any call that isn't proxy-routed. - [How to encode a call's content hash](https://eez-demos.vercel.app/dapp-developers/q5-encode-a-calls-content-hash.html): Learn how to hash eight fields in the one order that works. ## Rollup operators Standing the stack up and driving it. - [How to run the whole stack locally](https://eez-demos.vercel.app/rollup-operators/ro1-run-the-devnet-with-kurtosis.html): Learn how to bring up the node, proof-signer and the L1 in a disposable network. - [How to deploy the protocol](https://eez-demos.vercel.app/rollup-operators/ro2-deploy-the-protocol.html): Learn what lands on L1 and L2, and in what order, once the network is up. - [How to run against a real testnet](https://eez-demos.vercel.app/rollup-operators/ro3-run-a-real-chiado-l2.html): Learn what changes when the L1 underneath you is Chiado rather than a disposable devnet. - [How to send and test a cross-chain call](https://eez-demos.vercel.app/rollup-operators/ro4-send-and-test-cross-chain-calls.html): Learn how to drive traffic through the stack you just brought up, and how to tell that it worked. ## Protocol researchers How Rollup0 actually settles and proves. - [How the four components divide the work](https://eez-demos.vercel.app/protocol-researchers/pr1-the-four-components-of-rollup0.html): Learn how sequencer, composer, proof-signer and deriver each fit. - [How L1 stays the source of truth](https://eez-demos.vercel.app/protocol-researchers/pr2-commit-first-repair-if-needed.html): Learn why the L2 block is added immediately and rolled back if L1 never confirms it. - [How the composer attests a batch](https://eez-demos.vercel.app/protocol-researchers/pr4-how-the-composer-proves-a-batch.html): Learn what is actually checked before a batch is accepted, and by whom. - [How the deriver rebuilds L2 from L1](https://eez-demos.vercel.app/protocol-researchers/pr3-the-deriver.html): Learn how the whole chain is reconstructed from L1 data alone. - [How the address is derived](https://eez-demos.vercel.app/protocol-researchers/pr5-how-the-address-is-derived.html): Learn how two values become a salt and a CREATE2 address. - [The rolling hash](https://eez-demos.vercel.app/protocol-researchers/pr6-the-rolling-hash.html): Learn how one bytes32 commits to a whole execution tree — and why no call index is folded in. ## Compilable source Real files, not fragments: pragma, imports and a contract wrapper, all building under solc 0.8.28. Each mirrors the upstream function its walkthrough cites. - [snippets/q8-remote-reads.sol](https://eez-demos.vercel.app/snippets/q8-remote-reads.sol): full source behind How to read another rollup's state from your contract - [snippets/q2-cross-chain-call.sol](https://eez-demos.vercel.app/snippets/q2-cross-chain-call.sol): full source behind How to use another chain's answer in the same transaction - [snippets/q3-msg-sender.sol](https://eez-demos.vercel.app/snippets/q3-msg-sender.sol): full source behind Why msg.sender isn't your contract on the other side - [snippets/q7-create-proxy.sol](https://eez-demos.vercel.app/snippets/q7-create-proxy.sol): full source behind How to get your contract's address on another rollup - [snippets/q4-proxy-registry.sol](https://eez-demos.vercel.app/snippets/q4-proxy-registry.sol): full source behind How to check an address is a real proxy - [snippets/q6-manager-direct.sol](https://eez-demos.vercel.app/snippets/q6-manager-direct.sol): full source behind How the guard makes sure only proxy calls reach execution - [snippets/q5-content-hash.sol](https://eez-demos.vercel.app/snippets/q5-content-hash.sol): full source behind How to encode a call's content hash - [snippets/q1-compute-address.sol](https://eez-demos.vercel.app/snippets/q1-compute-address.sol): full source behind How the address is derived ## Runnable tests Foundry tests with no forge-std and no submodules, so they drop into an existing suite. `cd snippets && forge test`. - [snippets/test/Q8RemoteReads.t.sol](https://eez-demos.vercel.app/snippets/test/Q8RemoteReads.t.sol): proves the behaviour in How to read another rollup's state from your contract - [snippets/test/Q2CrossChainCall.t.sol](https://eez-demos.vercel.app/snippets/test/Q2CrossChainCall.t.sol): proves the behaviour in How to use another chain's answer in the same transaction - [snippets/test/Q3MsgSender.t.sol](https://eez-demos.vercel.app/snippets/test/Q3MsgSender.t.sol): proves the behaviour in Why msg.sender isn't your contract on the other side - [snippets/test/Q6ManagerDirect.t.sol](https://eez-demos.vercel.app/snippets/test/Q6ManagerDirect.t.sol): proves the behaviour in How the guard makes sure only proxy calls reach execution - [snippets/test/Q5ContentHash.t.sol](https://eez-demos.vercel.app/snippets/test/Q5ContentHash.t.sol): proves the behaviour in How to encode a call's content hash ## Everything inlined - [llms-full.txt](https://eez-demos.vercel.app/llms-full.txt): every walkthrough's narration, code, citations, snippets and tests in one document ## Optional - [Repository](https://github.com/0xarmagan/eez-demos): source of this site - [eez-core-protocol](https://github.com/eez-association/eez-core-protocol): the contracts every Solidity walkthrough cites - [eez-rollup0](https://github.com/eez-association/eez-rollup0): the node, composer, deriver and proof-signer - [CONTRIBUTING](https://github.com/0xarmagan/eez-demos/blob/main/CONTRIBUTING.md): how a walkthrough gets added and audited