Bitcoin Ord indexer deployment

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1 servicesAll 1306 services
Bitcoin Ord indexer deployment
Medium
~3-5 business days
FAQ
Blockchain Development Services
Blockchain Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1217
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1046
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823

Deployment of Bitcoin Ord Indexer

Ordinals protocol interprets each satoshi as a numbered object (ordinal number) and allows attaching data to it (inscription) through OP_RETURN or transaction witness data. To work with Ordinals — track NFT collections, BRC-20 tokens, Runes — you need your own indexer: ord node, which synchronizes bitcoin blocks and builds local database of satoshi numbering state and inscriptions.

What is ord and What it Does

ord — reference implementation by Casey Rodarmor. It does three things:

  1. Indexes ordinals — tracks which transactions each numbered satoshi passed through, using FIFO rules for inputs/outputs
  2. Indexes inscriptions — scans transaction witness data for envelope pattern (OP_FALSE OP_IF ... OP_ENDIF) and decodes embedded content
  3. Provides HTTP API — for queries by inscription ID, satoshi, transactions, blocks

BRC-20 and Runes are layers on top of Ordinals, ord supports them starting from certain versions (Runes — since ord 0.18+).

Infrastructure Requirements

Bitcoin Core node — mandatory. ord doesn't connect to public RPC — it requires local node with txindex=1. Requirements:

  • Disk: ~700GB for full node + ~100-200GB for ord index (grows over time). NVMe SSD is recommended — HDD makes initial sync unacceptably long
  • RAM: 16GB minimum, 32GB comfortable
  • CPU: 4+ cores
  • Network: stable channel, initial sync — several days

bitcoin.conf for working with ord:

txindex=1
server=1
rpcuser=bitcoin
rpcpassword=your_secure_password
rpcallowip=127.0.0.1
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333

Installation and Synchronization

# Install ord (current version from GitHub releases)
curl -L https://github.com/ordinals/ord/releases/latest/download/ord-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv ord /usr/local/bin/

# Check
ord --version

# Run indexing (specify bitcoin node RPC)
ord \
  --bitcoin-rpc-url http://127.0.0.1:8332 \
  --bitcoin-rpc-username bitcoin \
  --bitcoin-rpc-password your_secure_password \
  --data-dir /data/ord \
  index run

Initial indexing takes 1-7 days depending on hardware (main load is reading all bitcoin blocks from genesis). After synchronization ord monitors new blocks via Bitcoin Core.

Run HTTP server:

ord \
  --bitcoin-rpc-url http://127.0.0.1:8332 \
  --bitcoin-rpc-username bitcoin \
  --bitcoin-rpc-password your_secure_password \
  --data-dir /data/ord \
  server \
  --http \
  --address 0.0.0.0:80

API is available at:

  • /inscription/{id} — inscription data
  • /sat/{ordinal} — satoshi history
  • /output/{txid}:{vout} — UTXO with ordinals
  • /inscriptions — recent inscriptions

Docker Deployment

# docker-compose.yml
services:
  bitcoind:
    image: lncm/bitcoind:v26.0
    volumes:
      - bitcoin_data:/data/.bitcoin
    command: >
      -txindex=1
      -server=1
      -rpcuser=bitcoin
      -rpcpassword=secret
      -rpcallowip=0.0.0.0/0
      -rpcbind=0.0.0.0

  ord:
    image: ghcr.io/ordinals/ord:latest
    depends_on:
      - bitcoind
    volumes:
      - ord_data:/data
    command: >
      --bitcoin-rpc-url http://bitcoind:8332
      --bitcoin-rpc-username bitcoin
      --bitcoin-rpc-password secret
      --data-dir /data
      server --http --address 0.0.0.0:80
    ports:
      - "8080:80"

volumes:
  bitcoin_data:
  ord_data:

Working with BRC-20 and Runes

BRC-20 — token standard on top of Ordinals (JSON inscriptions with deploy/mint/transfer operations). ord with BRC-20 support parses these JSONs and builds state of balances. For serious work with BRC-20 worth considering OPI (Open Protocol Indexer) — separate indexer with richer API for BRC-20.

Runes — more efficient fungible token protocol by Rodarmor (launched at halving block 840000, April 2024). Encoded in OP_RETURN, less blockchain spam. ord 0.18+ fully supports Runes.

Query Rune balances via API:

# All rune balances in UTXO
curl http://localhost:8080/output/txid:vout | jq '.runes'

# Information about specific Rune
curl http://localhost:8080/rune/UNCOMMON•GOODS

Monitoring and Operations

Key metric — indexer lag from bitcoin chain tip. During normal operation lag should be 0-1 block. Alert when lag > 3 blocks — something went wrong.

ord logs are written to stderr. For production: systemd unit + journald, or Docker with log driver → Loki/ELK.

Disk space needs monitoring: ord index stats shows current index size. Ordinals index grows ~5-10GB per month with active use.