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

Розробка сервісу Bitcoin-інскрипцій починається не з інтерфейсу, а з UTXO і commit-reveal. Сервіс інскрипцій потребує розуміння лімітів witness даних. Інскрипції — не смарт-контракти, а дані, вбудовані в SegWit-транзакції та прив'язані до конкретних сатоші через протокол нумерації Ordinals. Зробити

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1012

Розробка сервісу 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.

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