Розробка Runes-токена (Bitcoin): від ідеї до релізу

Розробка Runes-токена (Bitcoin) До Runes була плутанина: BRC-20 працював поверх Ordinals, створював inscription для кожного transfer, засмічував mempool junk-транзакціями. Casey Rodarmor, творець Ordinals, розробив Runes як clean-room рішення для fungible токенів на Bitcoin — без зайвих даних, з

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

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

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

  • 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

Розробка Runes-токена (Bitcoin)

До Runes була плутанина: BRC-20 працював поверх Ordinals, створював inscription для кожного transfer, засмічував mempool junk-транзакціями. Casey Rodarmor, творець Ordinals, розробив Runes як clean-room рішення для fungible токенів на Bitcoin — без зайвих даних, з використанням існуючих біткойн-примітивів. Runes вирішують проблему масштабування токенів: кожна BRC-20 transaction створює непотрібні inscription, збільшуючи розмір блокчейну. Runes використовують UTXO та OP_RETURN, що в 10 разів компактніше. У цій статті розберемо архітектуру, etching, передачу та індексування Runes, а також покажемо реальні приклади коду. Ви дізнаєтеся, як уникнути типових помилок, таких як втрата токенів через pointer logic, і як правильно налаштувати індексатор. Наш досвід — 5+ років у блокчейн-розробці, 15+ проєктів на Bitcoin та EVM. Гарантуємо відповідність протоколу та відсутність втрат через pointer logic. Зв'яжіться для консультації — оцінимо складність і терміни за 1 день.

Як працює протокол Runes?

Runes не потребує змін у Bitcoin консенсусі. Протокол живе в OP_RETURN — дані не зберігаються в UTXO set, блокчейн не засмічується (на відміну від BRC-20, що зберігає стан у satoshi).

Ключові концепції:

  • Runestone — повідомлення протоколу в OP_RETURN. Містить etching, mint, transfer, edict.
  • UTXO як носій балансу — баланси Runes зберігаються не в глобальному маппінгу (як ERC-20), а в конкретних UTXO. Якщо ви тримаєте 1000 RUNE, значить у вас є UTXO з attached balance.
  • Rune ID — {block_height}:{tx_index} etching-транзакції. Наприклад, перший Rune має ID 840000:3.
  • Spacers — візуальні роздільники в імені (крапки), наприклад UNCOMMON•GOODS.

Як створити Rune (Etching)?

Etching — це транзакція з Runestone в OP_RETURN, що оголошує новий Rune.

Параметри etching: divisibility (0–38, аналог decimals в ERC-20), symbol (Unicode символ для відображення), premine (кількість токенів для etcher'а одразу), terms (умови open mint, якщо дозволено) — amount, cap, height, offset, turbo (прапорець сумісності з майбутніми версіями).

Структура даних Runestone кодується через varint encoding (LEB128) — компактне представлення чисел змінної довжини.

Практична реалізація через ord CLI

# Встановлення ord (офіційний клієнт) cargo install ord # Синхронізація з Bitcoin нодою (або через RPC до зовнішньої) ord --bitcoin-rpc-url http://user:pass@localhost:8332 index # Створення wallet ord wallet create # Etching нового Rune ord wallet etch \ --rune "MYTOKEN•NAME" \ --divisibility 8 \ --symbol "M" \ --supply 21000000 \ --premine 21000000 \ --fee-rate 20 # Mint (якщо включений open mint) ord wallet mint \ --rune "MYTOKEN•NAME" \ --fee-rate 20 

Через бібліотеку (JavaScript/TypeScript)

Для інтеграції в додаток використовується runestone npm пакет або пряма робота з bitcoinjs-lib:

import { Runestone, Etching, Terms, RuneId } from "runestone-lib"; import * as bitcoin from "bitcoinjs-lib"; function buildEtchingTransaction( utxo: UTXO, runeName: string, divisibility: number, supply: bigint, feeRate: number ): bitcoin.Transaction { const runestone = new Runestone({ etching: new Etching({ rune: Rune.fromString(runeName), divisibility, symbol: "T", premine: supply, turbo: true, }), edicts: [{ id: new RuneId(0n, 0n), // 0:0 = самого себе при etching amount: supply, output: 1n, // output index для отримання premine }], }); const psbt = new bitcoin.Psbt({ network: bitcoin.networks.bitcoin }); // Input: funded UTXO для оплати fee psbt.addInput({ hash: utxo.txid, index: utxo.vout, witnessUtxo: { script: utxo.scriptPubKey, value: utxo.value }, }); // Output 0: OP_RETURN з Runestone psbt.addOutput({ script: bitcoin.script.compile([ bitcoin.opcodes.OP_RETURN, Buffer.from("52554e45", "hex"), // RUNE magic bytes runestone.encipher(), ]), value: 0, }); // Output 1: отримувач premine (має бути не dust) psbt.addOutput({ address: recipientAddress, value: 546, // dust limit для P2WPKH }); // Output 2: решта psbt.addOutput({ address: changeAddress, value: changeAmount }); return psbt; } 
Технічні деталі Runestone Runestone — це бінарний формат, який може містити etching, mint, transfer та edicts. Поле etching визначає атрибути нового токена: ім'я (до 26 символів з роздільниками), ділимість (0-38), символ (один Unicode), премайн та умови open mint. Edicts — це інструкції передачі, кожна містить id Rune, кількість та номер output'а. Вартість etching в mainnet становить приблизно $2–5 за транзакцію при поточних комісіях.

Передача Runes (edicts)

Передача Runes — транзакція з Runestone, що містить edicts. Кожен edict задає: який Rune, скільки, в який output.

Важливе правило протоколу: якщо Rune balance вхідного UTXO не повністю покритий edicts — залишок автоматично йде в перший non-OP_RETURN output (pointer). Немає явного вказання = перший output. Це відмінність від EVM, де невказані кошти залишаються у відправника.

Приклад: у вас UTXO з 1000 RUNE. Транзакція з edict: send 300 RUNE → output 2. Автоматично: 700 RUNE → output 1 (default pointer). Якщо output 1 = burn address — ви ненавмисно спалили 700 RUNE. Це основна причина втрати токенів — нерозуміння pointer logic. При розробці гаманця для Runes потрібно явно конфігурувати pointer output на change адресу користувача.

Індексування Runes: варіанти та практика

Runes не мають стандартного RPC API в Bitcoin Core — потрібен окремий індексатор. Порівняємо варіанти:

Індексатор Тип Переваги Недоліки
ord Self-hosted Повний контроль, відкритий вихідний код Потребує Bitcoin ноду + ~100 ГБ SSD
Hiro Ordinals API Hosted Не потребує своєї ноди, простий REST Платний, ризик недоступності
Unisat API Hosted Підтримка Runes, безкоштовний ліміт Rate limit для високих навантажень

Для production ми використовуємо власний ord індексатор з реплікацією — це дає гарантію доступності та швидкість. Економія до 40% порівняно з hosted-рішеннями.

Які відмінності Runes від BRC-20?

Характеристика Runes BRC-20
Модель даних UTXO з attached balance inscription з JSON-стейтом
Розмір транзакції ~100–200 байт ~400–1000 байт
Вимоги до ноди Повна Bitcoin нода + ord Повна Bitcoin нода + Ordinals
Гнучкість Тільки transfer/burn Тільки transfer/burn
Зрілість Активна розробка, травень 2024 Стабільний, але багливий

Що входить у нашу розробку Runes-токена?

  • Аналіз токеноміки та протокольних параметрів
  • Etching, mint, transfer логіка
  • Інтеграція з гаманцями (список підтримуючих Runes)
  • Розробка індексного API (ord + кастомні ендпоінти)
  • UI для mint/transfer (опціонально)
  • Тестування в testnet та mainnet
  • Документація та навчання команди
  • Технічна підтримка 1 місяць після запуску

Обмеження Runes (що потрібно знати заздалегідь)

Runes — не смарт-контракти. Жодних conditional transfers, стейкінгу або DEX без окремого рішення. Вся логіка, звична в Solidity, тут неможлива on-chain. Доступні лише: створення, transfer, burn.

Для DeFi поверх Runes потрібен offchain matching (централізований orderbook) або окремий L2 з перевіркою через Bitcoin SPV. Порівняння з ERC-20: EVM токени виграють у гнучкості, але Runes дають native Bitcoin-безпеку та аудиторію.

Термін розробки: etching та базовий гаманець — 1–2 тижні. Повноцінна інтеграція з індексатором та marketplace — 6–10 тижнів. Вартість розраховується індивідуально після аудиту вимог. Отримайте консультацію по вашому проєкту — ми оцінимо складність та запропонуємо оптимальне рішення.

Наш досвід: 5+ років у блокчейн-розробці, 15+ проєктів на Bitcoin та EVM. Гарантуємо відповідність протоколу та відсутність втрат через pointer logic.