Створення сервісу Bitcoin-інскрипцій: від UTXO до продакшену

Розробка сервісу Bitcoin-інскрипцій — це складний процес, що потребує глибокого розуміння UTXO та протоколу Ordinals. Ми створюємо такі сервіси під ключ, від проєктування архітектури до деплою та підтримки. Наша команда експертів забезпечує надійне рішення, яке масштабується разом із вашим бізнесом.
Часті запитання

Розробка сервісу Bitcoin-інскрипцій починається не з інтерфейсу, а з UTXO і commit-reveal. Сервіс інскрипцій потребує розуміння лімітів witness даних. Інскрипції — не смарт-контракти, а дані, вбудовані в SegWit-транзакції та прив'язані до конкретних сатоші через протокол нумерації Ordinals. Зробити сервіс, який надійно створює, відстежує та передає такі записи — задача, яку не вирішити стандартними Bitcoin бібліотеками «з коробки». Досвід команди — 7+ років у Bitcoin-інфраструктурі, 20+ проєктів з інскрипцій. Ми беремося за такі проєкти під ключ: від проєктування архітектури до деплою та моніторингу. Після запуску забезпечуємо підтримку: моніторинг ноди, оновлення індексатора, оптимізацію fee estimation. Гарантія на код — 3 місяці. Використання власного індексатора дозволяє значно скоротити витрати на API-запити. Комісії при мінті колекції залежать від кількості та розміру інскрипцій. Отримайте консультацію з архітектури вашого сервісу.

Створення сервісу Bitcoin-інскрипцій: від UTXO до продакшену

Інскрипція створюється через commit-reveal патерн з двох транзакцій. У commit-транзакції формується P2TR (Pay-to-Taproot, BIP-341) output з даними всередині witness-скрипта. Структура скрипта — це OP_FALSE OP_IF ... OP_ENDIF з маркером протоколу, content-type та даними, розбитими на чанки по 520 байт. Ця гілка ніколи не виконується, що робить дані witness-інформацією, а не виконуваним кодом. Технічна специфікація описана в BIP-341. Максимальний розмір інскрипції — близько 4 МБ (ліміт блоку), але надійніше обмежитися 380 КБ, щоб пройти в будь-який блок. Reveal-транзакція витрачає цей output, розкриваючи скрипт у блокчейні. Інскрипція прив'язується до першого сатоші першого input'а reveal-транзакції за ordinal theory.

Чому так легко спалити інскрипцію при трансфері?

Найчастіша помилка в production — змішування звичайних UTXO з UTXO-носіями інскрипції. Якщо inscribed sat потрапляє в input транзакції не в тій позиції, ordinal theory вважає його витраченим, і інскрипція безповоротно втрачається. Правило: завжди перевіряти UTXO через ord API перед включенням у транзакцію. Ми гарантуємо, що кожен UTXO проходить валідацію до того, як стати input'ом. Управління UTXO — ключова компетенція нашої команди.

Чому важливо використовувати PSBT?

Для інтеграції з користувацькими гаманцями (Unisat, Xverse, OKX Wallet) транзакції будуються як Partially Signed Bitcoin Transactions (BIP-174). Сервер формує PSBT з коректними referrer-UTXO, скриптами та control block'ами, а підписує гаманець. PSBT у 3 рази безпечніший за сирі транзакції при підписанні, оскільки перевіряє консистентність inputs/outputs. Плюс — прозорість: користувач бачить, що саме підписує.

Переваги власного індексатора

Готові сторонні API (Hiro, OrdinalsBot) зручні для прототипування, але в production вони вносять затримки та ліміти на запити. Власний індексатор на базі ord з кешуванням Redis у 2-3 рази скорочує час відповіді на запити до історії колекції. Це критично для маркетплейсів і лаунчпадів, де кожна зайва мілісекунда — втрачений користувач.

Архітектура сервісу Bitcoin-інскрипцій

Компоненти сервісу
  • Bitcoin нода — Bitcoind з txindex=1. Налаштування Bitcoin ноди включає активацію txindex для повноцінного сканування.
  • Ordinals індексатор — ord 0.18+ з власною SQLite базою.
  • Wallet management — кожен користувач отримує P2TR-адресу. Використовуємо bitcoinjs-lib (TypeScript), rust-bitcoin або python-bitcoinlib. HD-деривація за BIP-86.
  • Fee estimation — актуальні fee rates через estimatesmartfee RPC або mempool.space API. При 50 sat/vByte і 200KB інскрипції комісія може сягати 0.1 BTC. Типова комісія за мінт — 0.005–0.01 BTC при fee rate 20–30 sat/vByte.

Покроковий процес створення інскрипції — створення сервісу bitcoin

  1. Генерація ключової пари та derivation шляху за BIP-86.
  2. Формування envelope-скрипта з даними, розбитими на чанки по 520 байт.
  3. Створення P2TR output з tapscript, що містить скрипт.
  4. Побудова commit-транзакції з цим output.
  5. Побудова reveal-транзакції, що витрачає commit-output і розкриває скрипт.
  6. Підписання PSBT гаманцем і відправка в мережу.
import * as bitcoin from 'bitcoinjs-lib';
import { ECPairFactory } from 'ecpair';
import * as ecc from 'tiny-secp256k1';

const ECPair = ECPairFactory(ecc);

async function createInscription(
  content: Buffer,
  contentType: string,
  feeRate: number, // sat/vByte
  recipientAddress: string,
): Promise<{ commitTx: string; revealTx: string }> {
  const keypair = ECPair.makeRandom({ network: bitcoin.networks.bitcoin });

  // Будуємо envelope скрипт
  const envelope = bitcoin.script.compile([
    bitcoin.opcodes.OP_FALSE,
    bitcoin.opcodes.OP_IF,
    Buffer.from('ord'),
    bitcoin.opcodes.OP_1,
    Buffer.from(contentType),
    bitcoin.opcodes.OP_0,
    // дані розбиваються на чанки по 520 байт
    ...chunkData(content, 520),
    bitcoin.opcodes.OP_ENDIF,
    keypair.publicKey.slice(1), // x-only pubkey для Taproot
    bitcoin.opcodes.OP_CHECKSIG,
  ]);

  // Створюємо P2TR output з інскрипцією в tapscript
  const scriptTree = { output: envelope };
  const p2tr = bitcoin.payments.p2tr({
    internalPubkey: keypair.publicKey.slice(1),
    scriptTree,
    network: bitcoin.networks.bitcoin,
  });

  // Commit TX відправляє кошти на p2tr.address
  // Reveal TX витрачає цей output, розкриваючи скрипт
  // ...
}

PSBT і підписання

const psbt = new bitcoin.Psbt({ network: bitcoin.networks.bitcoin });
psbt.addInput({
  hash: utxo.txid,
  index: utxo.vout,
  witnessUtxo: {
    script: p2tr.output!,
    value: utxo.value,
  },
  tapLeafScript: [{
    leafVersion: 0xc0,
    script: envelope,
    controlBlock: p2tr.witness![p2tr.witness!.length - 1],
  }],
});
psbt.addOutput({
  address: recipientAddress,
  value: 546, // dust limit
});
const psbtBase64 = psbt.toBase64();

Індексування та робота з існуючими інскрипціями

Ordinals індексатор надає JSON API для Ordinals (ord server):

GET /inscriptions/{address} GET /incription/{incription_id} GET /sat/{sat_number} 

Для production з високим навантаженням ми будуємо власний індексатор поверх бази ord (SQLite або PostgreSQL) з кешуванням на Redis. Це дає стабільний RPS і незалежність від зовнішніх API. Інтеграція BRC-20 також реалізується через власний індексатор.

Формати та обмеження

Параметр Значення
Теоретичний розмір ~4 MB (ліміт блоку)
Надійний розмір ~380 KB
Content types Будь-який MIME (image/png, text/plain, application/json, text/html)
Recursive inscriptions Посилання на /content/{id} всередині контенту
BRC-20 JSON-інскрипції з off-chain консенсусом

Що ви отримаєте в результаті

Детальний перелік deliverables
  • Репозиторій з кодом API (документація у форматі OpenAPI).
  • Розгорнута Bitcoin нода та індексатор ord (docker-compose або helm-чарти).
  • Інтеграція з гаманцями (Unisat, Xverse, OKX).
  • Налаштований fee estimation через mempool.space API.
  • Інструкція з моніторингу та restart-скрипти.
  • Гарантія на код 3 місяці та опція підтримки після запуску.

Ми здаємо проєкт з повним набором deliverables. Вартість розробки розраховується індивідуально, виходячи з обсягу та складності. Отримайте консультацію з вашого проєкту — обговоримо деталі.

Терміни та стек

Компонент Технологія
Нода Bitcoin Core з txindex=1
Ordinals індексатор ord
Backend TypeScript/Node.js + bitcoinjs-lib
Wallet інтеграція Unisat API / Xverse Provider API
Fee estimation mempool.space API
База даних PostgreSQL + Redis

Базовий сервіс (мінт + трансфер + перегляд колекції) — 3–4 тижні. Розширений функціонал (BRC-20, recursive, маркетплейс) оцінюється окремо. Гарантуємо якісну розробку сервісу Bitcoin-інскрипцій, включаючи API для Ordinals, налаштування Bitcoin ноди та інтеграцію BRC-20.

Замовте розробку сервісу інскрипцій — ми готові взятися за проєкт будь-якої складності. Зв'яжіться з нами для консультації та отримайте детальний кошторис.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142