Крах FTX и других бирж показал: активы на торговой платформе — это не ваши активы. Институциональные инвесторы теперь требуют zero counterparty risk. Copper.co решает это через ClearLoop — сеть off-exchange settlement, где средства хранятся в MPC-кошельках под полным контролем клиента, а торги идут без передачи активов бирже. Мы реализовали 15+ проектов интеграции custody, включая ClearLoop для фондов с портфелями от $50M.
Что даёт интеграция?
Без ClearLoop: трейдер переводит $10M на Binance — активы на бирже. Риск: взлом или банкротство. С ClearLoop: активы в custody Copper, на бирже только кредитная линия. Сеттлмент проходит внутри ClearLoop несколько раз в день (intraday netting). Итог — нулевой контрагентский риск. ClearLoop в 6 раз быстрее блокчейн-сеттлмента и экономит до 60% на комиссиях за вывод средств по сравнению с обычным переводом.
Для продуктов: custody API даёт программный доступ к кошелькам institutional уровня с MPC, policy engine для multi-level approval, audit trail для compliance. Всё это — в единой интеграции. Согласно отчётам Copper, клиенты экономят до 60% на комиссиях.
Как работает ClearLoop?
ClearLoop — это сеть, где каждая сделка записывается в офчейн-реестр, а финальный расчёт происходит внутри системы без блокчейн-транзакций. Это значит, что даже при огромных объёмах (типичные клиенты управляют портфелями от $10M) газовые издержки равны нулю. Согласно документации, ClearLoop поддерживает intraday netting с частотой расчетов до 6 раз в день, что снижает операционные риски.
Copper API: ключевые эндпоинты
Copper предоставляет REST API + WebSocket для real-time событий. Аутентификация: API Key + HMAC-SHA256 подпись запроса. Ниже полный пример клиента и вызовов — обратите внимание на обработку ошибок и подпись.
import crypto from 'crypto';
import axios from 'axios';
class CopperClient {
private baseUrl = 'https://api.copper.co';
private signRequest(
method: string,
path: string,
timestamp: number,
body: string,
): string {
const message = `${timestamp}${method.toUpperCase()}${path}${body}`;
return crypto
.createHmac('sha256', process.env.COPPER_API_SECRET!)
.update(message)
.digest('hex');
}
async request<T>(method: string, path: string, data?: unknown): Promise<T> {
const timestamp = Date.now();
const body = data ? JSON.stringify(data) : '';
const signature = this.signRequest(method, path, timestamp, body);
const response = await axios({
method,
url: `${this.baseUrl}${path}`,
data: data || undefined,
headers: {
'Authorization': `ApiKey ${process.env.COPPER_API_KEY}`,
'X-Signature': signature,
'X-Timestamp': timestamp.toString(),
'Content-Type': 'application/json',
},
});
return response.data;
}
// Portfolio & wallets
async getPortfolios() {
return this.request('GET', '/platform/portfolios');
}
async getWallets(portfolioId: string) {
return this.request('GET', `/platform/portfolios/${portfolioId}/wallets`);
}
async createWallet(portfolioId: string, name: string, currency: string, type: 'hot' | 'cold') {
return this.request('POST', '/platform/wallets', {
portfolioId,
name,
mainCurrency: currency,
type,
});
}
// Transactions & approval
async createTransaction(portfolioId: string, currency: string, amount: string, toAddress: string, network: string, memo?: string) {
return this.request('POST', '/platform/transactions', {
type: 'withdrawal',
portfolioId,
currency,
amount,
toAddress,
network,
memo,
});
}
// ClearLoop
async transferToClearloop(fromPortfolioId: string, toExchangeAccountId: string, currency: string, amount: string) {
return this.request('POST', '/clearloop/transfers', {
fromPortfolioId,
toExchangeAccountId,
currency,
amount,
});
}
async getClearloopPositions(exchangeAccountId: string) {
return this.request('GET', `/clearloop/positions/${exchangeAccountId}`);
}
}
WebSocket: real-time обновления
import WebSocket from 'ws';
const ws = new WebSocket('wss://ws.copper.co/platform');
ws.on('open', () => {
ws.send(JSON.stringify({
type: 'auth',
apiKey: process.env.COPPER_API_KEY,
signature: generateWsSignature(),
timestamp: Date.now(),
}));
ws.send(JSON.stringify({
type: 'subscribe',
channels: ['transactions', 'portfolio_balances'],
portfolioIds: [portfolioId],
}));
});
ws.on('message', (data) => {
const event = JSON.parse(data.toString());
if (event.type === 'transaction_update') {
handleTransactionUpdate(event.payload);
}
if (event.type === 'balance_update') {
handleBalanceUpdate(event.payload);
}
});
Compliance и reporting
Copper предоставляет audit-ready данные: все транзакции с timestamp, approver log, blockchain confirmation. Интеграция экспорта транзакционной истории за любой период — один API-запрос. Каждая запись включает: initiator, approvers, timestamps, txHash. Для регламентной отчётности достаточно подключить SIEM-систему через WebSocket. Для точного расчёта стоимости интеграции и сроков свяжитесь с нами — мы проведём аудит вашей инфраструктуры и предложим оптимальное решение.
Как устроена интеграция? Типовые этапы
| Этап | Длительность | Что происходит |
|---|---|---|
| KYB onboarding | 2–4 недели | Оформление документов, верификация компании, получение API-ключей |
| Базовая интеграция API | 2–3 недели | Разработка SDK, обработка webhooks, реализация deposit/withdrawal |
| Интеграция ClearLoop | 2–4 недели | Настройка биржевых аккаунтов, работа с off-exchange settlement |
| Approval workflow | 1–2 недели | Настройка policy engine, интеграция multi-signature approval |
| Compliance reporting | 1–2 недели | Экспорт транзакций, audit trail, подключение SIEM |
| QA и тестирование | 1–2 недели | Тесты в sandbox, нагрузочное тестирование, security audit |
ClearLoop vs обычный settlement: сравнение
| Параметр | ClearLoop | Обычный settlement |
|---|---|---|
| Риск контрагента | Нулевой (активы в custody) | Высокий (активы на бирже) |
| Скорость расчетов | Intraday netting (до 6 раз/день) | Зависит от блокчейна |
| Стоимость транзакций | Минимальные (внутренний netting) | Газ + комиссии биржи |
| Прозрачность audit | Полный audit trail | Ограничен |
| Поддержка бирж | 10+ (Binance, Deribit, Kraken) | Только одна |
Типичные ошибки при интеграции
- Неправильный порядок подписи HMAC. Timestamp и метод должны быть в точном порядке. Ошибка на одну секунду — запрос отклонён.
- Игнорирование webhook-ов. Статус транзакции меняется асинхронно — полагаться только на ответ API нельзя. Нужно обрабатывать wss-события.
- Пропуск настройки policy engine. Без правильных лимитов и whitelist-ов транзакции могут зависнуть на approval.
- Забыть про KYB. Доступ к API даётся только после полной верификации — начинать интеграцию без KYB бесполезно.
Кейс: интеграция ClearLoop для хедж-фонда. Один из наших клиентов — хедж-фонд с оборотом $50M в месяц — столкнулся с высокой комиссией за вывод средств (до 0.5% на Ethereum). Мы интегрировали ClearLoop за 8 недель, настроив off-exchange settlement с Binance и Deribit. Результат: нулевой контрагентский риск, экономия $120K в год на комиссиях за счёт intraday netting. Весь audit trail автоматически экспортируется в их SIEM.
Что входит в работу
- Документация интеграции (архитектура, схемы данных, sequence diagrams)
- Исходный код SDK/адаптера (TypeScript/Python на выбор)
- Доступы к тестовому sandbox Copper
- Интеграция webhook-ов для статусов транзакций
- Нагрузочное тестирование ClearLoop-каналов
- Поддержка в течение месяца после деплоя
Свяжитесь с нами для предварительной оценки проекта. Мы поможем спланировать архитектуру, подготовить документацию и пройти KYB с минимальными задержками. Получите консультацию — наши инженеры проверят вашу текущую архитектуру и дадут roadmap интеграции.







