Чем меньше у нас доступа к деньгам,
тем спокойнее вам
Coinetic устроен так, чтобы даже при взломе наших серверов злоумышленник не смог ни потратить, ни перенаправить ваши поступления.
Только публичные ключи
Для приёма хватает xpub/zpub, адреса Solana и адреса кошелька сбора в EVM-сетях. Сид-фразы и приватные ключи мерчантов Coinetic не запрашивает — их нет ни в коде, ни в базе, ни в логах.
Адрес проверяется трижды
Адрес для покупателя выбирается из вашего кошелька, при зачислении проверяется, что он выведен именно вашим ключом, и база данных отказывается связать его с чужим кошельком.
EVM: сбор только на ваш адрес
Депозитные адреса в EVM-сетях — смарт-контракты, у которых получатель зашит при развёртывании. Изменить его не может никто, включая нас.
Смена кошелька — с задержкой
Пароль, второй фактор, письмо владельцам и время на отмену. Если кто-то получит доступ к кабинету, вы успеете остановить смену.
«Оплачено» ставит только блокчейн
Статус меняет наблюдатель сети после нужного числа подтверждений. Каждый перевод засчитывается ровно один раз; откат блока откатывает и статус.
Подписанные запросы и вебхуки
Запросы к API — HMAC-SHA256 с меткой времени и одноразовым nonce. Вебхуки — HMAC от сырого тела, ротация секрета без простоя.
Пять правил безопасной интеграции
Большинство инцидентов у мерчантов — не взлом блокчейна, а доверие не тому сигналу.
- Секрет API — только на сервереНе в браузере, не в мобильном приложении, не в git.
- Выдавайте заказ по статусу из API
paidилиoverpaidизGET /v1/invoices/{id}— не по параметрамreturn_urlи не по телу вебхука. - Проверяйте подпись вебхука по сырому телуИ отклоняйте запросы старше 5 минут.
- Делайте выдачу идемпотентнойВебхук может прийти несколько раз: храните обработанные
X-Webhook-Id. - Отвергайте
livemode: falseна продеТак ошибочно подключённая песочница не выдаст товар.
Страница оплаты без сюрпризов
Без сторонних скриптов
Ни аналитики, ни внешних шрифтов, ни CDN. Строгий Content-Security-Policy, QR-код рисуется на странице.
Токен — после «#»
Ссылка на оплату несёт токен во фрагменте URL: он не попадает в логи серверов и в Referer.
Нет устаревших сумм
Когда срок курса вышел, адрес и сумма скрываются — покупатель не заплатит по старой котировке.