שילוב Fireblocks: שמירה מאובטחת ו-DeFi
מפתח פרטי אחד שדלף — ומיליוני דולרים קפואים. או עובד עם גישה לארנק חם שמושך נכסים ללא אישור. זה בדיוק התרחיש ש-Fireblocks נותנת לו מענה — פלטפורמת שמירה מוסדית עם פיצול מפתחות באמצעות פרוטוקול MPC-CMP. אנחנו שותפים מוסמכים של Fireblocks, הטמענו מעל 50 פרויקטים, ועיבדנו יותר מ-100,000 עסקאות ללא תקלות. בפועל, זה אומר שהמטבעות הקריפטוגרפיים שלכם מוגנים ברמה של בנקים גדולים, וצוות התאימות שלכם מקבל שליטה מלאה על כל משיכה.
איך פועל MPC-CMP ולמה הוא מאובטח
המפתח מפוצל בין שרתי Fireblocks, האפליקציה הניידת של הלקוח, ו(באופציונלי) צד שלישי בלתי תלוי. חתימה דורשת לפחות 2 מתוך 3 משתתפים. פגיעה בצומת אחד אינה חושפת את המפתח. זה מבטל את הסיכון להתקפות פנים או דליפת ביטוי גיבוי. פרוטוקול MPC מספק ערובה מתמטית: גם אם צומת אחד נפגע, התוקף אינו יכול לשחזר את המפתח.
מנוע מדיניות. כללים לכל סוג עסקה: רשימת כתובות מורשות, מגבלות, דרישות אישור כפול, כללים מבוססי זמן. כל עסקה שמפרה מדיניות נחסמת אוטומטית. בפועל, זה מונע עד 99% מהפעולות ההונאתיות. אחד הלקוחות שלנו, מנהל קרן גידור, מנע ניסיון משיכה של 2 מיליון דולר לכתובת חשודה בזכות הגדרה זו.
כספות וארנקים. כספת (Vault) היא קבוצה לוגית. בתוך כספת, ארנקים מחזיקים נכסים שונים. כספת אחת = לקוח אחד, חשבון מסחר אחד, או אסטרטגיה אחת. אנו ממליצים ליצור כספת נפרדת לכל יחידה עסקית כדי לבודד סיכונים ולפשט ביקורות.
| רכיב | מטרה | התצורה שלנו |
|---|---|---|
| חשבון כספת | בידוד כספי לקוח/אסטרטגיה | כספת אחת לכל לקוח |
| ארנק | כתובת לנכס ספציפי | ETH, USDC, BTC כברירת מחדל |
| מנוע מדיניות | שליטה בעסקאות יוצאות | רשימת כתובות מורשות + מגבלות + אישור כפול |
שילוב Fireblocks API
אנו מחברים את Fireblocks SDK לשרת האחורי שלכם בשלושה שלבים: יצירת מפתח API, יצירת חשבון כספת, והגדרת עסקאות. הקוד שלהלן הוא סכמה בסיסית שאנו מתאימים ללוגיקה העסקית שלכם.
import { FireblocksSDK, PeerType, TransactionOperation } from "fireblocks-sdk";
const fireblocks = new FireblocksSDK(
privateKey, // RSA private key для API аутентификации
apiKey, // API key из Fireblocks Console
"https://api.fireblocks.io"
);
// Создание vault account
const vault = await fireblocks.createVaultAccount("Client_123");
// Создание кошелька внутри vault
const wallet = await fireblocks.createVaultAsset(vault.id, "ETH");
console.log(`Deposit address: ${wallet.address}`);
// Отправка транзакции
const txResponse = await fireblocks.createTransaction({
assetId: "ETH",
source: {
type: PeerType.VAULT_ACCOUNT,
id: vault.id,
},
destination: {
type: PeerType.ONE_TIME_ADDRESS,
oneTimeAddress: {
address: "0xRecipient",
},
},
amount: "0.5",
note: "Payment to client",
});
// Ожидание завершения (транзакция проходит через Policy Engine и MPC подпись)
const txInfo = await fireblocks.getTransactionById(txResponse.id);
איך להגדיר Webhooks לניטור עסקאות
Fireblocks מודיעה על סטטוסי עסקאות דרך webhooks. חשוב: webhooks חתומים עם RSA — עליכם לאמת את החתימה, אחרת תוקף עלול לזייף אירועים. אנו מיישמים אימות בארבע שורות:
import { FireblocksWebhookHandler } from "fireblocks-sdk";
app.post("/fireblocks/webhook", express.raw({ type: "*/*" }), async (req, res) => {
const webhookHandler = new FireblocksWebhookHandler(publicKey);
try {
const isValid = webhookHandler.validateSignature(
req.rawBody,
req.headers["fireblocks-signature"] as string
);
if (!isValid) {
return res.status(401).send("Invalid signature");
}
const event = JSON.parse(req.body.toString());
switch (event.type) {
case "TRANSACTION_STATUS_UPDATED":
await handleTxStatusUpdate(event.data);
break;
case "VAULT_ACCOUNT_ADDED":
await handleNewVault(event.data);
break;
}
res.status(200).send("OK");
} catch (err) {
res.status(500).send("Error");
}
});
איך להתחבר ל-DeFi דרך Web3 Provider
עבור חוזים חכמים, אנו משתמשים ב-Fireblocks Web3 Provider. הוא מתרגם קריאות Web3 סטנדרטיות לחתימות דרך Fireblocks API. דוגמה לשילוב עם כל פרוטוקול:
import { FireblocksWeb3Provider, ChainId } from "@fireblocks/fireblocks-web3-provider";
const provider = new FireblocksWeb3Provider({
privateKey: process.env.FIREBLOCKS_API_PRIVATE_KEY!,
apiKey: process.env.FIREBLOCKS_API_KEY!,
vaultAccountIds: "0",
chainId: ChainId.ETHEREUM,
});
const web3 = new Web3(provider);
// Теперь стандартные web3 вызовы используют Fireblocks для подписи
const contract = new web3.eth.Contract(ABI, contractAddress);
await contract.methods.deposit(amount).send({ from: vaultAddress });
אנו מבטיחים שכל העסקאות עוברות דרך מנוע המדיניות לפני שהן משודרות לרשת. זה מבטל את הסיכון של שליחת כספים לכתובת שגויה.
איך לשלוח עסקה ב-3 שלבים
- צרו כספת וארנק — השתמשו ב-
import { FireblocksSDK, PeerType, TransactionOperation } from "fireblocks-sdk"; const fireblocks = new FireblocksSDK( privateKey, // RSA private key для API аутентификации apiKey, // API key из Fireblocks Console "https://api.fireblocks.io" ); // Создание vault account const vault = await fireblocks.createVaultAccount("Client_123"); // Создание кошелька внутри vault const wallet = await fireblocks.createVaultAsset(vault.id, "ETH"); console.log(`Deposit address: ${wallet.address}`); // Отправка транзакции const txResponse = await fireblocks.createTransaction({ assetId: "ETH", source: { type: PeerType.VAULT_ACCOUNT, id: vault.id, }, destination: { type: PeerType.ONE_TIME_ADDRESS, oneTimeAddress: { address: "0xRecipient" }, }, amount: "0.5", note: "Payment to client", }); // Ожидание завершения (транзакция проходит через Policy Engine и MPC подпись) const txInfo = await fireblocks.getTransactionById(txResponse.id);ו-import { FireblocksWebhookHandler } from "fireblocks-sdk"; app.post("/fireblocks/webhook", express.raw({ type: "*/*" }), async (req, res) => { const webhookHandler = new FireblocksWebhookHandler(publicKey); try { const isValid = webhookHandler.validateSignature( req.rawBody, req.headers["fireblocks-signature"] as string ); if (!isValid) { return res.status(401).send("Invalid signature"); } const event = JSON.parse(req.body.toString()); switch (event.type) { case "TRANSACTION_STATUS_UPDATED": await handleTxStatusUpdate(event.data); break; case "VAULT_ACCOUNT_ADDED": await handleNewVault(event.data); break; } res.status(200).send("OK"); } catch (err) { res.status(500).send("Error"); } });. - הגדירו מנוע מדיניות — הגדירו רשימת כתובות מורשות ומגבלות.
- בצעו את ההעברה — דרך
import { FireblocksWeb3Provider, ChainId } from "@fireblocks/fireblocks-web3-provider"; const provider = new FireblocksWeb3Provider({ privateKey: process.env.FIREBLOCKS_API_PRIVATE_KEY!, apiKey: process.env.FIREBLOCKS_API_KEY!, vaultAccountIds: "0", chainId: ChainId.ETHEREUM, }); const web3 = new Web3(provider); // Теперь стандартные web3 вызовы используют Fireblocks для подписи const contract = new web3.eth.Contract(ABI, contractAddress); await contract.methods.deposit(amount).send({ from: vaultAddress });. העסקה עוברת אוטומטית חתימת MPC.
מהם שלבי השילוב?
| שלב | משך | תוצאה |
|---|---|---|
| ביקורת ארכיטקטורה | 1–2 ימים | דוח עם המלצות |
| הגדרת קונסולה | יום אחד | סביבת עבודה, משתמשים, מפתחות API |
| פיתוח שילוב | 3–5 ימים | SDK מחובר, כספות ועסקאות מוטמעות |
| מנוע מדיניות | 1–2 ימים | כללים לכל פעולה |
| Web3 Provider | 1–2 ימים | גישת DeFi לחוזים חכמים |
| בדיקות בסביבת ארגז חול | 2–3 ימים | כל התרחישים אומתו |
| תיעוד והדרכה | יום אחד | מדריכים למהנדסים ולצוות התאימות |
מה מקבלים בסופו של דבר
- פלטפורמת שמירה מוגדרת במלואה עם בידוד נכסים לפי לקוח או אסטרטגיה.
- בקרת תאימות אוטומטית לכל עסקה (מנוע מדיניות).
- יכולת להשתתף בבטחה ב-DeFi: staking, AMM, הלוואות.
- שילוב עם השרת האחורי הקיים שלכם דרך API יחיד.
- הפחתה של עד 40% בעלויות האבטחה בהשוואה לבניית MPC בעצמכם. לקוח אחד חסך 120,000 דולר בשנה בהוצאות תפעול; אחר חסך 75,000 דולר בביקורות תאימות.
מתי Fireblocks מוצדקת?
ניהול נכסים מעל 10 מיליון דולר — קו מנחה, לא גבול נוקשה. קיום דרישות SOC 2, ISO 27001 או דומות. צוות של כמה אנשים עם סמכות חתימה. שילוב עם מערכות בנקאיות מסורתיות. עבור סטארטאפים ונפחים קטנים יותר, Safe Multisig בתוספת זרימת שמירה מותאמת אישית זולה משמעותית. אנו יכולים לעזור לכם לבחור את הפתרון האופטימלי אם אינכם בטוחים.
קבלו ייעוץ חינם על שילוב Fireblocks — נעריך את הפרויקט שלכם ונציע תוכנית יישום. צרו קשר כדי לדון בפרטים. בקשו חשבון הדגמה חינם ל-Sandbox לחודש.







