Разработка маркетплейса Ordinals/BRC-20

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка маркетплейса Ordinals/BRC-20
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка маркетплейса Ordinals/BRC-20

Bitcoin Ordinals появился в начале 2023 года и сломал устоявшееся представление о Bitcoin как о «просто деньгах». За первый год объём торговли Ordinals превысил $1.5 миллиарда, сеть Bitcoin пережила несколько эпизодов перегрузки из-за inscription транзакций. Magic Eden, Ordinals Wallet, Gamma.io — маркетплейсы пришли быстро. Но стек разработки принципиально другой по сравнению с EVM: нет смарт-контрактов, нет native escrow, сделки атомарны через PSBT-механику.

Протоколы: Ordinals, BRC-20 и Runes

Ordinals — инскрипции в Bitcoin

Ordinals protocol (Casey Rodarmor, 2023) вводит концепцию порядковых номеров для сатоши. Каждый satoshi пронумерован в порядке майнинга. Inscription прикрепляет данные к конкретному satoshi через Bitcoin Script witness data. Данные хранятся on-chain в Bitcoin — это отличает Ordinals от NFT на Ethereum, где метаданные обычно в IPFS.

Технически: inscription создаётся через commit-reveal транзакцию. Commit транзакция создаёт P2TR output с Tapscript, содержащим данные. Reveal транзакция тратит этот output, публикуя данные в witness. После этого этот satoshi несёт inscription и может передаваться как NFT.

Для маркетплейса критически важно: парсинг inscription метаданных (JSON, image/png, image/webp, text/plain), определение Ordinal sat range в UTXO, трекинг ownership через Bitcoin адреса.

BRC-20 — токены поверх Ordinals

BRC-20 (март 2023, @domodata) — экспериментальный стандарт токенов на основе Ordinals. Операции кодируются в JSON-инскрипциях:

{ "p": "brc-20", "op": "deploy", "tick": "ordi", "max": "21000000", "lim": "1000" }
{ "p": "brc-20", "op": "mint", "tick": "ordi", "amt": "1000" }
{ "p": "brc-20", "op": "transfer", "tick": "ordi", "amt": "500" }

Важно понять: BRC-20 балансы не хранятся на адресе как ERC-20. Баланс — это сумма unspent transfer-инскрипций, привязанных к адресу. Для торговли на маркетплейсе нужен индексатор — сервис, который читает всю историю Bitcoin и строит актуальные балансы по каждому адресу.

Runes — следующее поколение

Runes protocol (апрель 2024, Casey Rodarmor) — более эффективная альтернатива BRC-20. Используют OP_RETURN output вместо witness data, что дешевле. Balances хранятся в UTXO модели, ближе к native Bitcoin. Runes уже поддерживают несколько маркетплейсов, но экосистема моложе BRC-20.

Атомарные сделки через PSBT

Главное отличие от EVM маркетплейсов: нет смарт-контракта как escrow. Bitcoin не поддерживает произвольный код. Сделки делаются через PSBT (Partially Signed Bitcoin Transaction).

Схема листинга и покупки:

  1. Seller создаёт PSBT: Input — UTXO с Ordinal, Output — адрес seller + запрашиваемая цена в BTC. Seller подписывает только свой input (SIGHASH_SINGLE | SIGHASH_ANYONECANPAY).
  2. PSBT публикуется на маркетплейс. Маркетплейс хранит это как листинг.
  3. Buyer дополняет PSBT: добавляет свои inputs (BTC для оплаты) и output на свой адрес (получение Ordinal). Подписывает своими ключами.
  4. Транзакция broadcast: атомарная — либо seller получает BTC и buyer получает Ordinal, либо ничего.

SIGHASH_ANYONECANPAY позволяет seller подписать частичную транзакцию, к которой любой может добавить inputs. Это и есть atomicity без смарт-контракта.

Для реализации используются библиотеки: bitcoinjs-lib (JavaScript), rust-bitcoin (Rust). PSBT построение и валидация — критическая часть, ошибка здесь = потеря NFT или BTC.

Архитектура индексатора

Индексатор — самый сложный компонент. Он должен:

  1. Читать весь Bitcoin blockchain от genesis (или от блока появления Ordinals — ~767430)
  2. Парсить все inscription транзакции, строить mapping satoshi → inscription data
  3. Трекать ownership: с каким Bitcoin адресом связан каждый Ordinal прямо сейчас
  4. Для BRC-20: парсить JSON операции, считать балансы по адресам
  5. Оставаться синхронизированным с новыми блоками в реальном времени

Открытые решения:

  • ord (оригинальный индексатор Casey Rodarmor, Rust) — reference реализация
  • hiro-systems/ordhook — более производительный, поддерживает webhooks
  • unisat/ord-utils — JavaScript библиотека поверх ord индексатора

Для маркетплейса от нуля: запускаем ord ноду + Bitcoin full node, поверх строим собственный API с кешированием в PostgreSQL или Redis. Синхронизация от нуля занимает несколько дней.

Интеграция кошельков

Bitcoin кошельки, поддерживающие Ordinals:

  • Unisat Wallet — самый популярный, browser extension, поддерживает PSBT signing
  • Xverse — мобильный + extension, поддерживает BRC-20 и Ordinals
  • Leather (hiro.so) — стек от Hiro Systems, хорошая документация
  • OKX Wallet — крупнейший по числу пользователей в Азии

Стандарт взаимодействия с кошельком: Unisat провайдер API (де-факто стандарт для Ordinals). Аналог window.ethereum, но window.unisat. Методы: requestAccounts(), signPsbt(), pushPsbt().

const accounts = await window.unisat.requestAccounts()
const signedPsbt = await window.unisat.signPsbt(psbtHex, {
  autoFinalized: false,
  toSignInputs: [{ index: 0, address: sellerAddress }]
})

Для multi-wallet поддержки — sats-connect библиотека, аналог WalletConnect для Bitcoin.

Типичные проблемы реализации

UTXO splitting. Если Ordinal находится в UTXO вместе с dust BTC (например, 546 satoshi + Ordinal), при spend нужно правильно разделить outputs чтобы Ordinal пошёл на нужный адрес, а пыль — на другой. Ошибка в split = Ordinal уничтожен (отправлен как fee майнеру).

Mempool congestion. При высокой нагрузке на Bitcoin сеть fee за транзакцию резко вырастает. Листинг с заниженным fee может ждать включения в блок часами — Ordinal "завис". Нужна логика RBF (Replace-By-Fee) для ускорения транзакций.

Fake inscription. Верификация что inscription реальна, а не поддельная копия — через проверку sat number в официальном индексаторе. Сат с inscription ID должен совпадать с записью в ord индексаторе.

Процесс разработки

Инфраструктура (1 неделя). Bitcoin full node + ord индексатор, синхронизация blockchain, база данных листингов.

Backend API (2 недели). REST API: коллекции, листинги, search, активность. PSBT сервис для генерации и валидации сделок. WebSocket для realtime обновлений.

Frontend (2-3 недели). Next.js + TypeScript, multi-wallet support (Unisat, Xverse, Leather), галерея инскрипций, trading interface, BRC-20 балансы.

Тестирование (1 неделя). Testnet (signet) + regtест среда, тестирование PSBT сделок от начала до конца.

Ориентиры по срокам

MVP маркетплейс для Ordinals с базовым листингом и PSBT сделками — от 4-6 недель. Полный маркетплейс с BRC-20, Runes, индексатором и multi-wallet — 2-3 месяца.

Стоимость рассчитывается после обсуждения набора поддерживаемых протоколов и требований к индексатору.