Интеграция с Copper.co
Copper.co — institutional custody и prime brokerage платформа для цифровых активов. Основной продукт: ClearLoop — off-exchange settlement сеть, которая позволяет институциональным трейдерам держать активы под custody Copper, торговать на биржах (Binance, Deribit, Kraken и других) без вывода средств на биржу, и рассчитываться по сделкам без движения ассетов через blockchain. Для проектов, работающих с institutional клиентами или строящих trading infrastructure, интеграция с Copper.co решает критическую проблему counterparty risk.
Что даёт интеграция
Без ClearLoop: трейдер переводит $10M на Binance → держит на бирже → торгует → выводит. Риск: биржа взломана или банкротится (FTX). С ClearLoop: активы в custody Copper → кредитная линия на бирже → торгует → settlement через ClearLoop без движения активов. Counterparty risk уходит.
Для продуктов: custody API даёт программный доступ к кошелькам institutional уровня с MPC (Copper использует собственный MPC), policy engine для transaction approval, и audit trail для compliance.
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;
}
}
Управление портфолио и кошельками
// Получение всех портфолио организации
const portfolios = await copper.request('GET', '/platform/portfolios');
// Список кошельков в портфолио
const wallets = await copper.request(
'GET',
`/platform/portfolios/${portfolioId}/wallets`,
);
// Создание нового кошелька (адрес генерируется Copper MPC)
const wallet = await copper.request('POST', '/platform/wallets', {
portfolioId,
name: 'Trading Hot Wallet',
mainCurrency: 'ETH',
type: 'hot', // hot | cold
});
Транзакции и approval workflow
Copper поддерживает multi-level approval policy: транзакция создаётся → проходит очередь approvers → исполняется.
// Создание транзакции на вывод
const withdrawal = await copper.request('POST', '/platform/transactions', {
type: 'withdrawal',
portfolioId,
currency: 'USDC',
amount: '50000.00',
toAddress: destinationAddress,
network: 'ethereum',
memo: 'Settlement payout #1234',
});
// Status: pending_approval
// Webhook на изменение статуса транзакции
// POST /webhooks → настраивается в Copper Dashboard
// Payload включает: transactionId, status, txHash (после broadcast)
Policy Engine: в Copper Dashboard настраивается: лимиты по сумме, whitelist адресов, required approvers (M-of-N). Любая транзакция выше порога требует ручного одобрения. Для автоматизации: Copper поддерживает programmatic approval через API (для систем с внутренним approval workflow).
ClearLoop: off-exchange settlement
// Перевод средств в ClearLoop loop (на биржу, без blockchain движения)
const loop = await copper.request('POST', '/clearloop/transfers', {
fromPortfolioId: custodyPortfolioId,
toExchangeAccountId: 'binance-account-123', // предварительно настроенный
currency: 'BTC',
amount: '1.5',
});
// Проверка позиций на биржах через ClearLoop
const positions = await copper.request(
'GET',
`/clearloop/positions/${exchangeAccountId}`,
);
ClearLoop settlement происходит несколько раз в день (intraday netting). Не нужно двигать блокчейн-активы при каждой сделке — только итоговые позиции выравниваются.
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') {
// transactionId, status, txHash, confirmations
handleTransactionUpdate(event.payload);
}
if (event.type === 'balance_update') {
// currency, available, pending
handleBalanceUpdate(event.payload);
}
});
Compliance и reporting интеграция
Copper предоставляет audit-ready данные: все транзакции с timestamp, approver log, blockchain confirmation. Для compliance интеграции:
// Экспорт транзакционной истории для аудита
const auditReport = await copper.request('GET', '/platform/transactions', {
params: {
portfolioId,
from: '2024-01-01T00:00:00Z',
to: '2024-12-31T23:59:59Z',
status: 'completed',
limit: 1000,
},
});
// Каждая запись включает: initiator, approvers, timestamps, txHash
Ориентиры по интеграции
Базовая интеграция (deposit/withdrawal API, webhook обработка): 2–3 недели. Полная интеграция с ClearLoop, custom approval workflow и compliance reporting: 6–10 недель.
Доступ к Copper API предоставляется после KYB процедуры — закладывайте 2–4 недели на onboarding.







