סקירת שירות הטבעת כתובות
בניית שירות כתובות ביטקוין מתחילה לא בממשק המשתמש אלא ב-UTXO ובדפוס commit-reveal. לפי תיעוד Ordinals, כתובות נוצרות באמצעות דפוס commit-reveal. נקודת הקצה המותאמת אישית שלנו של Ordinals API מטפלת בשאילתות כתובות עם זמן השהיה מתחת לשנייה. שירות כתובות דורש הבנה של מגבלות witness data. כתובות אינן חוזים חכמים—הן נתונים המוטמעים בעסקאות SegWit ומקושרים לסטושי ספציפיים באמצעות פרוטוקול המספור Ordinals. יצירת שירות שיוצר, עוקב ומעביר רשומות כאלה בצורה אמינה היא משימה שלא ניתן לפתור עם ספריות ביטקוין סטנדרטיות "מתוך הקופסה." לצוות שלנו יש 7+ שנות ניסיון בתשתית ביטקוין ו-20+ פרויקטי כתובות. אנו לוקחים על עצמנו פרויקטים כאלה מקצה לקצה: מארכיטקטורה ועד פריסה וניטור. לאחר ההשקה, אנו מספקים תמיכה: ניטור צמתים, עדכוני אינדקס, אופטימיזציה של הערכת עמלות. אחריות קוד—3 חודשים. חיסכון משימוש באינדקס מותאם אישית יכול להגיע ל-$5,000 לחודש על בקשות API, ושמירה ב-Redis מוסיפה עד $3,000 לחודש בחיסכון. עלות פיתוח טיפוסית נעה בין $15,000 ל-$50,000 בהתאם לתכונות. עמלות טיפוסיות להטבעת אוסף של 1,000 כתובות הן 0.5–1 BTC. קבלו ייעוץ חינם על ארכיטקטורת השירות שלכם.
ארכיטקטורת שירות כתובות ביטקוין
כתובת נוצרת באמצעות דפוס commit-reveal עם שתי עסקאות. בעסקת ה-commit, נוצר פלט P2TR (Pay-to-Taproot, BIP-341) עם נתונים בתוך witness script. מבנה הסקריפט הוא OP_FALSE OP_IF ... OP_ENDIF עם סמן פרוטוקול, סוג תוכן, ונתונים המחולקים לנתחים של 520 בתים. ענף זה לעולם אינו מבוצע, מה שהופך את הנתונים למידע witness ולא לקוד בר-ביצוע. המפרט הטכני מתואר ב-BIP-341. הגודל המרבי של כתובת הוא כ-4 MB (מגבלת בלוק), אך בטוח יותר להגביל ל-380 KB כדי להתאים לכל בלוק. עסקת ה-reveal מוציאה פלט זה, וחושפת את הסקריפט על הבלוקצ'יין. הכתובת מקושרת לסטושי הראשון של הקלט הראשון של עסקת ה-reveal לפי תיאוריית ordinal.
למה כל כך קל לשרוף כתובת בעת העברה?
הטעות הנפוצה ביותר בייצור היא ערבוב UTXO רגילים עם UTXO הנושאים כתובות. אם סטושי עם כתובת נכנס לקלט עסקה במיקום לא נכון, תיאוריית ordinal רואה אותו כמבוזבז, והכתובת אובדת באופן בלתי הפיך. כלל: תמיד בדקו UTXO דרך ord API לפני הכללתם בעסקה. אנו מבטיחים שכל UTXO מאומת לפני שהוא הופך לקלט. ניהול UTXO הוא יכולת ליבה של הצוות שלנו. הצוות שלנו מנצל גזירת ארנק היררכית דטרמיניסטית (HD) לפי BIP-86 ומיישם טיפול שגיאות חזק לבחירת פלטי עסקאות שלא נוצלו.
למה PSBT חשוב?
כדי להשתלב עם ארנקי משתמשים (Unisat, Xverse, OKX Wallet), עסקאות נבנות כעסקאות ביטקוין חתומות חלקית (BIP-174). השרת יוצר PSBT עם UTXO מפנים, סקריפטים ובלוקי בקרה נכונים, והארנק חותם עליו. PSBTs בטוחים פי 3 מעסקאות גולמיות בעת חתימה מכיוון שהם בודקים את העקביות של קלטים ופלטים. בנוסף—שקיפות: המשתמש רואה בדיוק על מה הוא חותם.
אינדקס מותאם אישית לעומת APIs של צד שלישי
APIs של צד שלישי (Hiro, OrdinalsBot) נוחים לאב-טיפוס, אך בייצור הם מציגים עיכובים ומגבלות בקשות. אינדקס מותאם אישית מהיר פי 2-3 מ-APIs של צד שלישי לשאילתות היסטוריית אוספים. זה קריטי לשווקים ולפלטפורמות השקה שבהן כל אלפית שנייה נוספת פירושה אובדן משתמשים. בנוסף, אינדקס מותאם אישית עם שמירה ב-Redis מפחית את זמן התגובה פי 2-3 בהשוואה לקריאות API ישירות.
ארכיטקטורת שירות כתובות ביטקוין
רכיבי שירות
- צומת ביטקוין — Bitcoind עם
txindex=1. הגדרת צומת ביטקוין כוללת הפעלת txindex לסריקה מלאה. - אינדקס Ordinals — ord 0.18+ עם מסד נתונים SQLite משלו.
- ניהול ארנקים — כל משתמש מקבל כתובת P2TR. אנו משתמשים ב-
bitcoinjs-lib(TypeScript),rust-bitcoin, אוpython-bitcoinlib. גזירת HD לפי BIP-86. - הערכת עמלות — שיעורי עמלות עדכניים דרך
estimatesmartfeeRPC או mempool.space API. ב-50 sat/vByte וכתובת של 200 KB, עמלות יכולות להגיע ל-0.1 BTC. עמלות הטבעה טיפוסיות הן 0.005–0.01 BTC בשיעורי עמלות של 20–30 sat/vByte.
תהליך יצירת כתובת שלב אחר שלב
- צור זוג מפתחות ונתיב גזירה לפי BIP-86.
- בנה סקריפט מעטפת עם נתונים המחולקים לנתחים של 520 בתים.
- צור פלט P2TR עם tapscript המכיל את הסקריפט.
- בנה עסקת commit עם פלט זה.
- בנה עסקת reveal המוציאה את פלט ה-commit וחושפת את הסקריפט.
- חתום על 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 (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, раскрывая скрипт // ... } ):
GET /inscriptions/{address} GET /incription/{incription_id} GET /sat/{sat_number} לייצור בעומס גבוה, אנו בונים אינדקס מותאם אישית על גבי מסד הנתונים ord (SQLite או PostgreSQL) עם שמירה ב-Redis. זה מספק RPS יציב ועצמאות מ-APIs חיצוניים. שירות ההטבעה שלנו מבטיח אטומיות באמצעות טיפול קפדני ב-PSBT. אינטגרציית BRC-20 מיושמת גם דרך אינדקס מותאם אישית.
פורמטים ומגבלות
| פרמטר | ערך |
|---|---|
| גודל תיאורטי | ~4 MB (מגבלת בלוק) |
| גודל בטוח | ~380 KB |
| סוגי תוכן | כל MIME (image/png, text/plain, application/json, text/html) |
| כתובות רקורסיביות | הפניות ל-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(); בתוך התוכן |
| BRC-20 | כתובות JSON עם קונצנזוס מחוץ לשרשרת |
מה מקבלים כתוצאה
תוצרים מפורטים
- מאגר עם קוד API (תיעוד בפורמט OpenAPI).
- צומת ביטקוין פרוס ואינדקס ord (docker-compose או helm-charts).
- אינטגרציית ארנקים (Unisat, Xverse, OKX).
- הערכת עמלות מוגדרת דרך mempool.space API.
- הוראות ניטור וסקריפטים להפעלה מחדש.
- אחריות קוד ל-3 חודשים ותמיכה אופציונלית לאחר השקה.
אנו מספקים את הפרויקט עם סט מלא של תוצרים. עלות הפיתוח מחושבת באופן אישי לפי היקף ומורכבות. קבלו ייעוץ לפרויקט שלכם—דונו בפרטים.
לוחות זמנים וטכנולוגיות
| רכיב | טכנולוגיה |
|---|---|
| צומת | Bitcoin Core עם ord server |
| אינדקס Ordinals | ord |
| Backend | TypeScript/Node.js + bitcoinjs-lib |
| אינטגרציית ארנקים | Unisat API / Xverse Provider API |
| הערכת עמלות | mempool.space API |
| מסד נתונים | PostgreSQL + Redis |
שירות בסיסי (הטבעה + העברה + צפייה באוסף) — 3–4 שבועות. פונקציונליות מורחבת (BRC-20, רקורסיבי, שוק) מוערכת בנפרד. אנו מבטיחים פיתוח איכותי של שירותי כתובות ביטקוין, כולל Ordinals API, הגדרת צומת ביטקוין ואינטגרציית BRC-20.
הזמינו פיתוח שירות כתובות—אנו מוכנים לקחת פרויקטים בכל מורכבות. צרו קשר לייעוץ וקבלו הערכה מפורטת.







