Слогер Создать блог
Крипто

Как сделать копитрейдинг на Polymarket без хранения приватных ключей

Разбор архитектуры, в которой ордер подписывается в MetaMask, а приватный ключ не попадает на сервер.

Polymarket — не обычная биржа. Чтобы выставить ордер, нужно пройти два уровня авторизации: подписать данные по EIP-712 и добавить HMAC-SHA256 заголовок. Многие интеграции решают это просто: хранят приватный ключ на сервере. Это удобно для разработчика, но плохо для пользователя.

Есть способ лучше — разделить подпись и отправку. Разберём на примере копитрейдинга, где нужно повторять сделки за другими трейдерами быстро и без лишних телодвижений.

Почему это вообще проблема

CLOB-биржа Polymarket требует подпись каждого ордера. Если сервер хранит ключ, то взлом сервера — это потеря всех средств пользователей. Даже если ключ зашифрован, он всё равно лежит в месте, которое атакуют.

Копитрейдинг добавляет к этому требование скорости: увидел чужую ставку — надо повторить её, пока цена не ушла. Схема, где каждую сделку вручную подтверждают через интерфейс биржи, не подходит. Но и отдавать ключ на сервер — перебор.

Схема: подписывает браузер, отправляет сервер

Приватный ключ всегда остаётся в MetaMask. Сервер готовит всё для подписи, а после подписи — проксирует ордер на биржу. Такую архитектуру можно собрать из трёх частей:

  • Backend собирает неподписанный ордер и подтягивает актуальную цену;
  • MetaMask подписывает типизированные данные EIP-712 на стороне клиента;
  • Backend добавляет HMAC-заголовки и отправляет подписанный ордер в CLOB API.
Приватный ключ не покидает MetaMask. Никогда.

Это ключевой момент. Сервер даже не видит ключ — он видит только подпись.

Как выглядит процесс по шагам

  1. Пользователь нажимает «Копировать сделку» на карточке трейдера.
  2. Backend принимает параметры: market slug, outcome, amount, address кошелька.
  3. Backend формирует типизированные данные EIP-712 — domain, types, order — и отдаёт их клиенту.
  4. Браузер вызывает метод eth_signTypedData_v4 через MetaMask. Пользователь видит понятное окно с параметрами ордера и подтверждает.
  5. Backend получает сигнатуру, формирует HMAC-SHA256 подпись сообщения вида timestamp + POST + /order + body.
  6. Backend отправляет ордер на Polymarket и возвращает результат.

Вся операция занимает меньше минуты — это реально работает.

Безопасность против удобства

КритерийКлюч на сервереПодпись в MetaMask
Где хранится ключВ базе или в env-переменнойВ кошельке пользователя
Риск при взломе сервераПолная потеря средствМаксимум — подпись, но не ключ
Пользовательский опытПолностью автоматическиОдно подтверждение на сделку
Сложность разработкиНизкаяСредняя: нужно собрать EIP-712 данные и HMAC на бэкенде
Подходит для пассивной торговлиДаТолько если пользователь готов нажимать кнопку

Разница видна сразу. Подпись в MetaMask — это компромисс между автоматизацией и безопасностью. Для копитрейдинга он почти идеален.

Типичные ошибки при реализации

  • Хранить API secret от Polymarket на фронтенде. Секрет нужен только бэкенду, иначе его украдут.
  • Не проверять актуальность цены на бэкенде перед формированием ордера. Если цена ушла, подпись уже бессмысленна.
  • Путать domain в EIP-712. У Polymarket домен фиксированный, любое расхождение — и биржа отклонит подпись.
  • Игнорировать timestamp и nonce. Повторная отправка той же подписи может привести к дублю ордера.
  • Логировать подписанные ордера целиком. В логах могут оказаться данные, которые позволят подделать запрос.

Когда такая схема не подходит

Если нужна полностью автономная торговля 24/7 — например, бот, который сам следит за трейдерами и мгновенно повторяет сделки — MetaMask не вариант. Нельзя заставить пользователя жать кнопку каждые несколько минут.

Тогда придётся либо хранить ключ в защищённом окружении на сервере, либо использовать депозит на биржу и торговать в рамках её систем. Это другая модель риска, и она должна быть явной для пользователя.

Вывод

Схема с подписью в MetaMask и HMAC-проксированием на бэкенде решает главную проблему копитрейдинга на Polymarket: приватный ключ не покидает кошелёк, но сделки всё равно проходят быстро. Для интеграций, где нужно повторять ставки за другими трейдерами, это надёжный шаблон. Берите его за основу — и не храните ключи там, где их могут украсть.

По материалам: blockchain. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (0)

Войдите, чтобы комментировать.

Пока нет комментариев. Будьте первым.