פיתוח טוקני Runes (ביטקוין)
לפני Runes, היה בלבול: BRC-20 פעל על גבי Ordinals, ויצר inscription עבור כל העברה, וסתם את ה-mempool בעסקאות זבל. קייסי רודרמור, יוצר Ordinals, תכנן את Runes כפתרון נקי לטוקנים פונגיבילים על ביטקוין — ללא נתונים מיותרים, תוך שימוש בפרימיטיבים קיימים של ביטקוין. Runes פותרים את בעיית קנה המידה של טוקנים: כל עסקת BRC-20 מייצרת inscriptions לא רצויים, ומגדילה את גודל הבלוקצ'יין. Runes משתמשים ב-UTXO וב-OP_RETURN, מה שהופך אותם לקומפקטיים פי 10. במאמר זה, נצלול לארכיטקטורה, ל-etching, להעברה ולאינדוקס של Runes, יחד עם דוגמאות קוד אמיתיות. תלמדו כיצד להימנע ממלכודות נפוצות, כמו אובדן טוקנים עקב לוגיקת pointer, וכיצד להגדיר indexer כראוי. הניסיון שלנו: 5+ שנים בפיתוח בלוקצ'יין, 15+ פרויקטים על ביטקוין ו-EVM. אנו מבטיחים עמידה בפרוטוקול וללא הפסדים עקב לוגיקת pointer. צרו קשר לייעוץ — אנו מעריכים מורכבות ולוחות זמנים תוך יום אחד.
כיצד פועל פרוטוקול Runes?
Runes אינו דורש שינויים בקונצנזוס של ביטקוין. הפרוטוקול חי בתוך OP_RETURN — נתונים אינם מאוחסנים בקבוצת UTXO, כך שהבלוקצ'יין אינו מתנפח (בניגוד ל-BRC-20, השומר מצב ב-satoshis).
מושגי מפתח:
- Runestone — הודעת הפרוטוקול בתוך OP_RETURN. מכיל etching, mint, העברה ו-edicts.
- UTXO כנושא יתרה — יתרות Runes מאוחסנות לא במיפוי גלובלי (כמו ERC-20), אלא ב-UTXO ספציפיים. אם אתה מחזיק 1000 RUNE, יש לך UTXO עם יתרה מחוברת.
- Rune ID —
# Установка 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של עסקת ה-etching. לדוגמה, ל-Rune הראשון יש ID 840000:3. - Spacers — מפרידים ויזואליים בשם (נקודות), למשל, UNCOMMON•GOODS.
כיצד ליצור Rune (Etching)?
Etching הוא עסקה עם Runestone ב-OP_RETURN המצהירה על Rune חדש.
פרמטרי etching: חלוקה (0–38, מקביל ל-decimals ב-ERC-20), סמל (תו Unicode לתצוגה), premine (כמות טוקנים עבור ה-etcher מיד), תנאים (תנאים ל-mint פתוח, אם מותר) — כמות, cap, גובה, offset, turbo (דגל תאימות לגרסאות עתידיות).
מבנה הנתונים של Runestone מקודד באמצעות קידוד varint (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, העברה ו-edicts. שדה ה-etching מגדיר את המאפיינים של הטוקן החדש: שם (עד 26 תווים עם מפרידים), חלוקה (0-38), סמל (Unicode יחיד), premine, ותנאי mint פתוח. Edicts הם הוראות העברה, כל אחת מכילה Rune id, כמות ומספר פלט. עלות ה-etching ברשת הראשית היא כ-$2–5 לעסקה בעמלות הנוכחיות.העברת Runes (Edicts)
העברת Runes היא עסקה עם Runestone המכיל edicts. כל edict מציין: איזה Rune, כמה, לאיזה פלט.
כלל פרוטוקול חשוב: אם יתרת Rune של UTXO קלט אינה מכוסה במלואה על ידי edicts, היתרה הנותרת עוברת אוטומטית לפלט הראשון שאינו OP_RETURN (pointer). ללא pointer מפורש, הפלט הראשון הוא ברירת המחדל. זה שונה מ-EVM, שבו כספים שלא נוצלו נשארים אצל השולח.
דוגמה: יש לך UTXO עם 1000 RUNE. עסקה עם edict: שלח 300 RUNE → פלט 2. אוטומטית: 700 RUNE → פלט 1 (pointer ברירת מחדל). אם פלט 1 הוא כתובת שריפה, אתה שורף בטעות 700 RUNE. זו הסיבה העיקרית לאובדן טוקנים — אי הבנה של לוגיקת pointer. בעת פיתוח ארנק Runes, עליך להגדיר במפורש את פלט ה-pointer לכתובת השינוי של המשתמש.
אינדוקס Runes: אפשרויות ופרקטיקה
ל-Runes אין API RPC סטנדרטי ב-Bitcoin Core — נדרש indexer נפרד. השוו אפשרויות:
| Indexer | סוג | יתרונות | חסרונות |
|---|---|---|---|
| ord | באירוח עצמי | שליטה מלאה, קוד פתוח | דורש צומת ביטקוין + ~100 GB SSD |
| Hiro Ordinals API | מתארח | אין צורך בצומת, REST פשוט | בתשלום, סיכון לחוסר זמינות |
| Unisat API | מתארח | תמיכה ב-Runes, תוכנית חינמית | מגבלת קצב לעומסים גבוהים |
לייצור, אנו משתמשים ב-indexer ord משלנו עם שכפול — המבטיח זמינות ומהירות. חיסכון של עד 40% בהשוואה לפתרונות מתארחים.
כיצד Runes שונה מ-BRC-20
| מאפיין | Runes | BRC-20 |
|---|---|---|
| מודל נתונים | UTXO עם יתרה מחוברת | Inscription עם מצב JSON |
| גודל עסקה | ~100–200 בתים | ~400–1000 בתים |
| דרישות צומת | צומת ביטקוין מלא + ord | צומת ביטקוין מלא + Ordinals |
| גמישות | העברה/שריפה בלבד | העברה/שריפה בלבד |
| בשלות | פיתוח פעיל, הושק לאחרונה | יציב אך עם באגים |
מה כלול בפיתוח טוקני Runes שלנו
- ניתוח טוקנומיקה ופרמטרי פרוטוקול
- לוגיקת etching, mint והעברה
- אינטגרציית ארנק (רשימת ארנקים תומכי Runes)
- פיתוח API לאינדוקס (ord + נקודות קצה מותאמות)
- ממשק משתמש ל-mint/העברה (אופציונלי)
- בדיקות ב-testnet וב-mainnet
- תיעוד והדרכת צוות
- חודש אחד של תמיכה טכנית לאחר ההשקה
מגבלות Runes (מה לדעת מראש)
Runes אינם חוזים חכמים. אין העברות מותנות, staking או DEX ללא פתרון נפרד. כל הלוגיקה המוכרת מ-Solidity בלתי אפשרית על השרשרת. רק יצירה, העברה ושריפה זמינים.
עבור DeFi על גבי Runes, יש צורך בהתאמה מחוץ לשרשרת (ספר הזמנות מרכזי) או L2 נפרד עם אימות באמצעות Bitcoin SPV. השוואה עם ERC-20: טוקני EVM מנצחים בגמישות, אך Runes מספקים אבטחה וקהל ביטקוין מקורי.
לוח זמנים לפיתוח: etching וארנק בסיסי — 1–2 שבועות. אינטגרציה מלאה עם indexer ו-marketplace — 6–10 שבועות. התמחור נקבע באופן אישי לאחר בדיקת דרישות. קבלו ייעוץ לפרויקט שלכם — אנו מעריכים מורכבות ומציעים פתרון אופטימלי.
הניסיון שלנו: 5+ שנים בפיתוח בלוקצ'יין, 15+ פרויקטים על ביטקוין ו-EVM. אנו מבטיחים עמידה בפרוטוקול וללא הפסדים עקב לוגיקת pointer.







