Создание сервиса 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 месяца. Экономия от использования собственного индексатора может достигать 5,000 USD в месяц на API-запросах, а кэширование на Redis даёт дополнительно до 3,000 USD экономии в месяц. Типичные затраты на комиссии при минте коллекции из 1000 инскрипций — 0.5–1 BTC. Получите бесплатную консультацию по архитектуре вашего сервиса.

Создание сервиса 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.

Закажите разработку сервиса инскрипций — мы готовы взяться за проект любой сложности. Свяжитесь с нами для консультации и получите детальную смету.