פיתוח בורסת קריפטו מרכזית (CEX) הוא אחד המוצרים המורכבים ביותר בתשתית הקריפטו. מנוע התאמת ההזמנות, מערכת השמירה, שכבת הציות, נתוני השוק ואספקת הנזילות חייבים לפעול כולם בו-זמנית, באופן אמין ותחת עומס. בעיות טיפוסיות: זמן השהיה של מעל 100 אלפיות השנייה בהתאמת הזמנות, פרצות בחוזים חכמים, זמינות נמוכה. אנו מתכננים ומפתחים בורסות CEX מסוג מפתח-ביד על בסיס 8 שנות ניסיון בפיתוח בלוקצ'יין ו-5+ פרויקטים שהושקו. ניסיון פיתוח בורסת הקריפטו שלנו מבטיח זמינות של 99.99% למנוע התאמת ההזמנות, והעלויות שלנו נמוכות בדרך כלל ב-30-40% מהמתחרים הודות לארכיטקטורה אופטימלית. לדוגמה, בורסה ברמה בינונית יכולה לחסוך 50,000 דולר בעלויות תשתית שנתיות. להלן, אסביר מה באמת נדרש כדי להשיק פלטפורמה רצינית.
כיצד אנו מתכננים ארכיטקטורת CEX
דיאגרמה ברמה גבוהה
Client Layer
├── Web Trading Terminal (React/Vue)
├── Mobile Apps (iOS/Android)
└── API (REST + WebSocket + FIX)
│
API Gateway / Load Balancer
│
Service Layer
├── Auth Service (JWT + 2FA)
├── Order Service → OMS
├── Account Service → Balances
├── Market Data Service → Feeds
└── Notification Service
│
Core Infrastructure
├── Matching Engine (C++/Rust/Go)
├── Risk Engine
├── Custody System
└── Settlement Engine
│
Data Layer
├── PostgreSQL (accounts, orders, trades)
├── Redis (order book state, sessions)
├── Kafka (event streaming, audit log)
└── TimescaleDB (OHLCV, market data) עקרון בידוד השירותים
כל שירות הוא עצמאי ומתקשר באמצעות אירועים (מונחה-אירועים). מנוע התאמת ההזמנות לא יודע דבר על משתמשים—הוא יודע רק על הזמנות. שירות החשבונות לא יודע דבר על מסחר—הוא יודע רק על יתרות. זה מאפשר קנה מידה עצמאי של רכיבים: מנוע התאמת ההזמנות על חומרה ייעודית, השאר על Kubernetes. כשל בשירות התראות לא משפיע על המסחר. פריסה ללא זמן השבתה.
מדוע מנוע התאמת ההזמנות הוא כה קריטי
מנוע התאמת ההזמנות הוא הרכיב היחיד שבו הביצועים הם עניין קיומי. זמן השהיה של מעל 10 אלפיות השנייה פירושו הפסדים אמיתיים ללקוחות HFT וליצרני שוק. מנוע התאמת ההזמנות שלנו ב-Rust מהיר פי 3 מגרסאות Python, ואנו מבטיחים זמן השהיה של פחות מאלפית השנייה.
| רמה | תפוקה | זמן השהיה (הזמנה-לאישור) | טכנולוגיה |
|---|---|---|---|
| התחלתית (<$1M/יום) | 1,000 פעולות/שנייה | <50 אלפיות השנייה | Go / Java |
| בינונית ($1-50M/יום) | 10,000 פעולות/שנייה | <5 אלפיות השנייה | Go / Rust |
| גדולה ($50M+/יום) | 100,000+ פעולות/שנייה | <500 מיקרו-שניות | C++ / Rust |
מימוש ספר ההזמנות
use std::collections::BTreeMap;
use std::collections::VecDeque;
type Price = u64; // Integer representation: price * 10^8
type Quantity = u64;
#[derive(Debug, Clone)]
struct Order {
id: u64,
price: Price,
quantity: Quantity,
remaining: Quantity,
side: Side,
order_type: OrderType,
timestamp: u64,
user_id: u64,
}
#[derive(Debug)]
struct PriceLevel {
price: Price,
total_quantity: Quantity,
orders: VecDeque<u64>, // order IDs в порядке времени
}
struct OrderBook {
symbol: String,
bids: BTreeMap<std::cmp::Reverse<Price>, PriceLevel>,
asks: BTreeMap<Price, PriceLevel>,
orders: std::collections::HashMap<u64, Order>,
}
impl OrderBook {
fn match_order(&mut self, incoming: &mut Order) -> Vec<Trade> {
let mut trades = Vec::new();
let opposite_side = match incoming.side {
Side::Buy => &mut self.asks,
Side::Sell => &mut self.bids,
};
while incoming.remaining > 0 {
let best_level = match incoming.side {
Side::Buy => opposite_side.iter_mut().next(),
Side::Sell => opposite_side.iter_mut().next(),
};
match best_level {
None => break,
Some((_, level)) => {
let price_matches = match incoming.side {
Side::Buy => incoming.price >= level.price,
Side::Sell => incoming.price <= level.price,
};
if !price_matches {
break;
}
while incoming.remaining > 0 && !level.orders.is_empty() {
let maker_id = *level.orders.front().unwrap();
let maker = self.orders.get_mut(&maker_id).unwrap();
let fill_qty = incoming.remaining.min(maker.remaining);
trades.push(Trade {
maker_order_id: maker_id,
taker_order_id: incoming.id,
price: level.price,
quantity: fill_qty,
});
incoming.remaining -= fill_qty;
maker.remaining -= fill_qty;
if maker.remaining == 0 {
level.orders.pop_front();
self.orders.remove(&maker_id);
}
}
}
}
}
trades
}
}מנוע התאמת הזמנות ב-Rust מעבד פי 3 יותר פעולות מאשר אחד ב-Python. אנו משתמשים ב-Event Sourcing—כל שינויי המצב מתועדים כרצף בלתי ניתן לשינוי של אירועים (OrderPlaced → OrderMatched → TradeFilled → OrderCancelled). זה מספק נתיב ביקורת מלא ויכולת שחזור לאחר קריסה, הנחשב לפרקטיקה מומלצת במערכות בעומס גבוה. עבור בורסה ברמה בינונית, החיסכון בתשתית מארכיטקטורה נכונה יכול להיות משמעותי. בנוסף, עבור פרויקטים עם נפח מסחר של $1M/יום, אנו מפחיתים את עלויות שילוב KYC.
כיצד מובטחת אבטחת מערכת השמירה
הבורסה מאחסנת כספי משתמשים. אנו מיישמים הגנה רב-שכבתית:
- אחסון קר עם Multi-sig: 95%+ מהכספים בארנקים קרים עם multisig של 3 מתוך 5. המפתחות מופצים פיזית בין מרכזי נתונים ומדינות שונות. אנו משתמשים ב-HSM (מודולי אבטחת חומרה) לחתימה.
- ארנק חם: 2-5% מהכספים למשיכות תפעוליות עם חידוש אוטומטי מהקר. מגבלות משיכה יומיות החורגות מכך דורשות אישור ידני.
- אבטחת משיכות: כל משיכה נבדקת מול רשימת כתובות מורשות, מהירות ובדיקת AML (Chainalysis, Elliptic). עסקאות חשודות עוברות לבדיקה ידנית.
פרטי מימוש אבטחת השמירה
לחתימת עסקאות, אנו משתמשים ב-HSM עם מפתחות המחולקים על ידי סוד מפוצל. כל עסקה דורשת אישור מ-3 מתוך 5 מפתחות. נתוני היתרות מאוחסנים במסד נתונים נפרד עם הצפנה ברמת השורה.KYC/AML וציות
טבלת רמות אימות:
| רמת KYC | נתונים | מגבלה יומית |
|---|---|---|
| 0 — דוא"ל | דוא"ל בלבד | 0 (צפייה בלבד) |
| 1 — בסיסי | טלפון + מדינה | $500 |
| 2 — סטנדרטי | תעודת זהות + סלפי | $10,000 |
| 3 — מורחב | הוכחת כתובת + מקור כספים | $100,000 |
| מוסדי | מסמכי חברה | ללא הגבלה |
אנו משלבים את Sumsub או Onfido באמצעות REST API. Webhook על שינוי סטטוס אימות. בדיקת AML בזמן אמת של כל הפקדה ומשיכה.
נתוני שוק ושילוב TradingView
עדכונים בזמן אמת
Matching Engine → Trade Events → Kafka
│
┌──────────┤
▼ ▼
OHLCV Builder Order Book Aggregator
│ │
└────┬─────┘
▼
WebSocket Broadcaster (horizontal scaling)
│
┌─────────┼─────────┐
▼ ▼ ▼
Client 1 Client 2 Client Nשרת ה-WebSocket מפרסם עדכוני diff (שינויי דלתא), מה שמפחית את התעבורה פי 10-50. עבור מסוף המסחר המקצועי, אנו משלבים TradingView Advanced Charts באמצעות UDF data feed ו-WebSocket.
תהליך עבודת הפרויקט
- אנליטיקה: מחקר שוק, דרישות, בחירת מחסנית טכנולוגית, כלכלת פרויקט.
- עיצוב: ארכיטקטורה, אב-טיפוס של מנוע התאמת הזמנות, מפרט API.
- יישום: פיתוח כל המודולים, כתיבת חוזים חכמים (במידת הצורך) ב-Solidity או Rust.
- בדיקות: יחידה, אינטגרציה, בדיקות עומס (עד 50 אלף פעולות/שנייה). אבטחה — ביקורת חוזים חכמים ובדיקת חדירות.
- פריסה: הגדרת תשתית, ניטור, השקה לייצור. הבטחת נזילות באמצעות בוטים או יצרני שוק.
מה כלול
- תיעוד (ארכיטקטוני, API, פריסה)
- קוד מקור עם בדיקות
- צינור CI/CD
- גישה לתשתית
- הכשרת צוות
- 3 חודשי תמיכה לאחר ההשקה
ציר זמן: 12 עד 24 חודשים בהתאם לפונקציונליות. העלות מחושבת באופן אישי — צרו קשר כדי להעריך את הפרויקט שלכם. אנו נספק הערכה מפורטת ומפת דרכים. עלות פרויקט טיפוסית נדונה באופן אישי, אך החיסכון בתשתית מארכיטקטורה נכונה יכול להגיע ל-40% בהשוואה לפתרונות סטנדרטיים. פיתחנו 5+ בורסות ואנו מכירים את כל המלכודות. קבלו ייעוץ על הפרויקט שלכם — אנו נעריך ונציע את הפתרון האופטימלי. ניסיון פיתוח בורסת הקריפטו שלנו והאבטחה המוסמכת מבטיחים פעולה חלקה.







