Розгортання Bitcoin Ord-індексатора
Протокол Ordinals інтерпретує кожен сатоші як нумерований об'єкт (ordinal number) і дозволяє прикріплювати до нього дані (inscription) через OP_RETURN або witness дані транзакції. Щоб працювати з Ordinals — трекати NFT колекції, BRC-20 токени, Runes — потрібен власний індексатор: нода ord, яка синхронізує біткоін-блоки та будує локальну базу даних стану сатоші-нумерації та inscriptions.
Що таке ord і що він робить
ord — це reference implementation від Casey Rodarmor. Він робить три речі:
- Індексує ординали — відстежує, через які транзакції прошов кожен пронумерований сатоші, використовуючи правила 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 індексу (растає з часом). Рекомендується 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 на місяць при активному використанні.







