Overview
An Ethereum L2 for Ethscriptions with full EVM compatibility
What is the AppChain?
The Ethscriptions AppChain is an Ethereum L2 that provides an alternative way to consume and interact with ethscriptions. Instead of relying on an off-chain indexer, the AppChain runs as a derivation pipeline that turns L1 ethscription activity into canonical L2 blocks.
The result is an OP-style "app chain" that keeps Ethscriptions UX unchanged while providing:
Merkle state - Cryptographic proofs for all ethscription data
Receipts - Transaction receipts for every operation
EVM compatibility - Standard tooling works out of the box
Two Ways to Consume Ethscriptions
Traditional Indexer
Off-chain service that indexes L1 transactions and maintains state in a database
Simple queries, existing integrations
AppChain
On-chain L2 with smart contracts and EVM state
Smart contract interactions, protocol extensions, collections, tokens
Both approaches read the same L1 data and produce the same canonical ethscription state. The AppChain adds an execution layer that enables advanced features.
Genesis Block
The AppChain anchors to Ethereum L1 starting at block 17478949. This is one block before the traditional indexer's genesis block (17478950) because the AppChain includes an L2 block 0 (genesis block) that contains the initial state.
Traditional Indexer
17478950
AppChain
17478949
How It Works
The AppChain runs a derivation pipeline:
Observe - Watch Ethereum L1 via JSON-RPC for ethscription intents (Data URIs and ESIP events)
Translate - Convert intents into deposit-style EVM transactions
Execute - Send transactions to geth via Engine API, producing L2 blocks
Seal - Geth seals blocks, predeploy contracts mutate state
AppChain-Only Features
The following features are only available on the AppChain:
Pluggable system for extending ethscription functionality
Curated NFT collections with merkle proof enforcement
ERC-20 tokens that move in fixed batches tied to NFT notes
These features require smart contract execution and are not available through the traditional indexer.
Architecture
The AppChain consists of two main components:
Derivation Node (Ruby)
Observes L1 blocks, receipts, and logs
Parses ethscription intents from calldata and events
Builds deposit transactions for L2 execution
Communicates with geth via Engine API
Execution Client (ethscriptions-geth)
Modified geth client for the Ethscriptions L2
Executes deposit transactions
Maintains EVM state
Provides standard JSON-RPC interface
Benefits
For Users
Same ethscription experience - create and transfer as before
Lower costs for complex operations via L2
Smart contract composability
For Developers
Standard EVM tooling (ethers.js, web3.js, Foundry)
Verifiable state with Merkle proofs
Build on top of ethscriptions with custom protocols
For Validators
Deterministic derivation from L1 data
Can verify state independently
Optional validation against reference API
Getting Started
To run your own AppChain node, see Running a Node.
To learn about building protocol extensions, see Protocol Handlers.
Last updated