Интеграция с Fireblocks
Fireblocks — институциональная платформа для хранения и перемещения цифровых активов. Используется банками, биржами, брокерами и крупными DeFi-протоколами. В основе — MPC-CMP (Multi-Party Computation) протокол: private key никогда не существует целиком ни в одном месте, подпись производится совместными вычислениями нескольких участников.
Архитектура Fireblocks
MPC-CMP. Ключ разделён между Fireblocks серверами, клиентским мобильным приложением и (опционально) независимой третьей стороной. Для подписи нужны минимум 2 из 3 участников. Компрометация одного — не компрометация ключа.
Policy Engine. Правила для каждого типа транзакций: whitelist адресов, лимиты, требование двойного одобрения, time-based правила. Транзакция, нарушающая политику, автоматически блокируется.
Vaults и Wallets. Vault — логическая группа. Внутри vault — wallets для разных активов. Один vault = один клиент, или один торговый счёт, или одна стратегия.
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);
Webhook интеграция
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 интеграция через Fireblocks
Для взаимодействия с DeFi протоколами — Fireblocks Web3 Provider:
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 });
Ценообразование и когда выбирать
Fireblocks — дорогое решение (от $25k/год для enterprise tier). Оправдано при:
- Управлении активами свыше $10M
- Regulatory compliance требованиях (SOC 2, ISO 27001)
- Команде из нескольких signers
- Интеграции с традиционными финансами
Для стартапов и меньших объёмов — Safe Multisig + собственный custody workflow значительно дешевле.
Интеграция Fireblocks API в существующий продукт — 2-4 недели. Включает настройку Policy Engine, vault структуры, webhook обработчики и тестирование на Fireblocks Sandbox.







