Развёртывание Bitcoin Ord-индексатора
Протокол Ordinals интерпретирует каждый сатоши как нумерованный объект (ordinal number) и позволяет прикреплять к нему данные (inscription) через OP_RETURN или witness данные транзакции. Чтобы работать с Ordinals — трекать NFT коллекции, BRC-20 токены, Runes — нужен собственный индексатор: нода ord, которая синхронизирует биткоин-блоки и строит локальную базу данных состояния сатоши-нумерации и inscriptions.
Что такое ord и что он делает
ord — это reference implementation от Casey Rodarmor ( Casey's repo). Он делает три вещи:
- Индексирует ординалы — отслеживает, через какие транзакции прошёл каждый пронумерованный сатоши, используя правила FIFO для inputs/outputs
- Индексирует inscriptions — сканирует witness данные транзакций на паттерн envelope (OP_FALSE OP_IF ... OP_ENDIF) и декодирует вложенный контент
- Предоставляет HTTP API — для запросов по inscription ID, сатоши, транзакциям, блокам
BRC-20 и Runes — это слои поверх Ordinals, ord их поддерживает начиная с определённых версий (Runes — с ord 0.18+).
Требования к инфраструктуре
Bitcoin Core нода — обязательна. ord не подключается к публичным RPC — он требует локальную ноду с txindex=1. Требования:
- Диск: ~700GB для полной ноды + ~100-200GB для ord index (растёт со временем). Рекомендован NVMe SSD — HDD делает initial sync неприемлемо долгим
- RAM: 16GB минимум, 32GB комфортно
- CPU: 4+ ядер
- Сеть: стабильный канал, initial sync — несколько дней
bitcoin.conf для работы с 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
Установка и синхронизация
# Установка ord (актуальная версия из 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/
# Проверка
ord --version
# Запуск индексации (указываем 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
Первичная индексация занимает 1-7 дней в зависимости от железа (основная нагрузка — чтение всех биткоин-блоков с genesis). После синхронизации ord следит за новыми блоками через Bitcoin Core.
Запуск HTTP сервера:
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 доступен по адресам:
-
/inscription/{id}— данные об inscription -
/sat/{ordinal}— история сатоши -
/output/{txid}:{vout}— UTXO с ординалами -
/inscriptions— последние inscriptions
Docker-развёртывание
# 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:
Работа с BRC-20 и Runes
BRC-20 — стандарт токенов поверх Ordinals (JSON inscriptions с операциями deploy/mint/transfer). ord с поддержкой BRC-20 парсит эти JSON и строит state балансов. Для серьёзной работы с BRC-20 стоит рассмотреть OPI (Open Protocol Indexer) — отдельный индексатор с более богатым API для BRC-20.
Runes — более эффективный fungible token протокол от Rodarmor (запущен в halving блоке 840000, апрель 2024). Кодируется в OP_RETURN, меньше засоряет блокчейн. ord 0.18+ полностью поддерживает Runes.
Запрос балансов Rune через API:
# Все rune балансы в UTXO
curl http://localhost:8080/output/txid:vout | jq '.runes'
# Информация о конкретной Rune
curl http://localhost:8080/rune/UNCOMMON•GOODS
Мониторинг и операционка
Ключевая метрика — отставание индексатора от tip биткоин-чейна. При нормальной работе отставание должно быть 0-1 блок. Алерт при отставании > 3 блоков — что-то пошло не так.
Логи ord пишутся в stderr. Для production: systemd unit + journald, или Docker с log driver → Loki/ELK.
Дисковое пространство нужно мониторить: ord index stats показывает текущий размер индекса. Индекс Ordinals растёт ~5-10GB в месяц при активном использовании.







