Skip to main content

What is Shinzo?

Shinzo is a decentralized indexingIndexing The process of parsing blockchain data and storing it as structured, schema-compliant documents in defraDB. network for blockchains. It takes raw on-chain data and turns it into structured datasets that any application can query, without having to go through a centralized indexingIndexing The process of parsing blockchain data and storing it as structured, schema-compliant documents in defraDB. service to get them.

If you've built any kind web3 app before, you know the usual pattern: you pick a hosted indexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication., pay per API call, cache the results locally, and hope the provider doesn't go down or quietly change what's available. Shinzo replaces that setup with a network of independent operators that index the chain at the source and share the results peer to peer.

The problem Shinzo solves

Blockchains are good at writing data and bad at reading it. If you want to show a user all their previous transactions, or count token transfers for a given contract, you can't just ask the chain. The raw data isn't organized for questions like that. So the industry bolted centralized indexingIndexing The process of parsing blockchain data and storing it as structured, schema-compliant documents in defraDB. services onto the side of every chain, and those services now sit in the trust path between your app and the data.

This setup is expensive and fragile. The indexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication.'s DNS might fail, or the cloud service hosting it might go down. And there's no way to verify that the data you're receiving is accurate until after you've received (and paid) for it.

The goal of Shinzo is to make reading blockchain data as decentralized and verifiable as writing to it.

How it works

Three kinds of participants run the network.

IndexersIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. sit next to blockchain nodes and turn new blocks into structured documents as they arrive. They cryptographically sign everything they produce, so anyone downstream can check that the data came from a real indexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. (and ideally several of them).

HostsHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. receive that primitive data over a peer-to-peer network and apply user-defined transforms called ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape.. They also keep attestation records, which count how many different indexersIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. signed off on each piece of data. Applications can use those counts to set their own trust thresholds.

Developers define the ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape.. A ViewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. is basically a way to say "here's the raw data I care about, here's how I want it filtered and decoded, and here's the schema I want it exposed as." Once a ViewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. is deployed, HostsHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. pick it up, run it, and push the results to whoever subscribes.

Underneath all of this is DefraDB, a peer-to-peer document database that handles replication, access control, and GraphQL queries. Applications embed DefraDBdefraDB A peer-to-peer, document-oriented database embedded in every indexer and host. It handles storage, content addressing, CRDT merging, query serving, and P2P replication via libp2p. locally and query it the way they'd query any other database, which means no per-read round trip to an external API.

How to get involved

Run an Indexer

If you already operate an Ethereum node, adding a Shinzo IndexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. is cheap. It's a sidecar, not a separate heavyweight service. It attaches to your existing execution client (currently only GethGeth Go-Ethereum, the Go implementation of an Ethereum node. Each indexer runs alongside a Geth node and connects over WebSocket (port 8546) and JSON-RPC (port 8545) to fetch block data., but support for other clients and chains is planned), reads blocks as they come in, signs them, and gossips them out over P2P. Recommended extra resources are around 4 CPU cores, 8 GB of RAM, and 100 GB of storage with pruning on, on top of whatever the node itself needs.

tip

You do not need to run a ValidatorValidator An entity that participates in a chain's consensus. On Ethereum, a validator's withdrawal key signs an EIP-712 message on the outpost to authorize an operator key as its indexer. node to run an IndexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication.. You can connect an IndexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. to a third-party ValidatorValidator An entity that participates in a chain's consensus. On Ethereum, a validator's withdrawal key signs an EIP-712 message on the outpost to authorize an operator key as its indexer. node. The ValidatorValidator An entity that participates in a chain's consensus. On Ethereum, a validator's withdrawal key signs an EIP-712 message on the outpost to authorize an operator key as its indexer. node and the Shinzo IndexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. do not need to be on the same network.

Run a Host

HostsHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. sit between IndexersIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. and applications. They receive signed primitive data over P2P, apply your ViewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape.'s LensLens A WASM module that transforms primitive documents (e.g., raw `Log` records) into view documents (e.g., `USDCTransfer`). Lenses must be deterministic: the same input always produces the same output. Hosts run them via LensVM. transforms, build attestation records, and serve results to subscribers. Running one is a good way to support the network if you don't want to operate a blockchain node.

You'll need a machine that stays online reliably. The rough recommended spec is 8 CPU cores, 16 GB of RAM, and 500 GB of SSD storage. A HostHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. doesn't need to be close to a blockchain node, just a stable connection and enough disk for the ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. it's serving.

HostsHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. are configured through a YAML file that lists which ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. to subscribe to, the minimum number of IndexersIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. that must have signed a document before it's accepted, and where to listen for subscriber connections. New ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. can be picked up and served without restarting.

Build a View

If you're a developer working on a dapp, wallet, or any kind of web3 app, ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. are where you'll spend your time. A ViewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. is a versioned bundle that contains:

  • A query describing the primitive data you want.
  • A schema (GraphQL SDL) describing the shape you want to expose.
  • One or more LensLens A WASM module that transforms primitive documents (e.g., raw `Log` records) into view documents (e.g., `USDCTransfer`). Lenses must be deterministic: the same input always produces the same output. Hosts run them via LensVM. transforms (WASMWASM A portable, sandboxed bytecode format. Lens transforms compile to WASM — typically from Rust or AssemblyScript — and hosts run them via LensVM. modulesModule A Cosmos SDK building block that owns a slice of chain state, handles messages, and emits events. ShinzoHub adds five custom modules (`x/admin`, `x/sourcehub`, `x/host`, `x/indexer`, `x/view`) on top of the standard Cosmos set.) that do the filtering and decoding.

You build ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. with viewkit, Shinzo's CLI, and deploy them to the network. Any HostHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. can then pick up the ViewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape., run it, and serve the results. Your application subscribes through the app-sdk and queries the resulting data locally.

Where the project is today

Shinzo is in active development on devnet. These core pieces work end to end:

  • The IndexerIndexer A node that reads blockchain data from a source chain, parses it into structured documents, and writes them to defraDB. Indexers are write-only: they push data out over P2P and reject all incoming replication. ingests Ethereum Mainnet from a GethGeth Go-Ethereum, the Go implementation of an Ethereum node. Each indexer runs alongside a Geth node and connects over WebSocket (port 8546) and JSON-RPC (port 8545) to fetch block data. node, signs documents, and replicates them over DefraDBdefraDB A peer-to-peer, document-oriented database embedded in every indexer and host. It handles storage, content addressing, CRDT merging, query serving, and P2P replication via libp2p.'s libp2plibp2p A peer-to-peer networking library. defraDB uses it for peer discovery and document replication between indexers and hosts. layer.
  • The HostHost A Shinzo node that receives indexed data from indexers over P2P, verifies it, runs lens transforms to produce view documents, and serves those documents over GraphQL. client receives that data, builds attestation records, applies LensLens A WASM module that transforms primitive documents (e.g., raw `Log` records) into view documents (e.g., `USDCTransfer`). Lenses must be deterministic: the same input always produces the same output. Hosts run them via LensVM. transforms, and serves ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. to subscribers.
  • ViewkitViewkit A CLI tool for creating, testing, and deploying views. It defines the SDL, attaches lenses, runs local validation using the Wasmer runtime, packages everything into a ViewBundle, and submits a deploy transaction to the View Registry. is usable for defining, packaging, and deploying ViewsView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. to devnet today.
  • ShinzoHubShinzoHub Shinzo's coordination chain: a Cosmos SDK chain (v0.53.4) with an integrated EVM, running CometBFT consensus. It holds the view, host, and indexer registries and the economic layer (staking, pricing, payments). It does not store or serve indexed blockchain data. (built on the Cosmos SDKCosmos SDK A Go framework for building app-specific blockchains. ShinzoHub (v0.53.4) and SourceHub are both Cosmos SDK chains. ShinzoHub also bundles an EVM module.) handles viewView A curated, SDL-defined representation of defraDB documents. Views transform raw indexed data into a structured output shape. registration and access control, and talks to SourcehubSourceHub A separate Cosmos SDK chain built by Source Network that handles authorization for Shinzo. It runs the ACP module (based on Google's Zanzibar model) and stores authorization tuples in the form `object#relation@user`. Users never call SourceHub directly — ShinzoHub sends commands to it via ICA. over IBCIBC A protocol for passing authenticated messages between independent blockchains. It works in layers: light clients verify state proofs, connections link two chains, channels carry ordered or unordered packets, and applications (like ICA) run on top. ShinzoHub and SourceHub communicate over IBC. to gate subscriptions behind payment.
  • The app-sdk lets Go applications embed DefraDBdefraDB A peer-to-peer, document-oriented database embedded in every indexer and host. It handles storage, content addressing, CRDT merging, query serving, and P2P replication via libp2p. and run attestation-filtered queries against it.