HMAC-подписанные вебхуки для жизненного цикла вывода.
Когда вашему продукту нужно асинхронное состояние жизненного цикла, регистрируйте эндпоинты вебхуков и проверяйте каждую доставку. Подпись связывает временную метку с точным сырым телом, так что вы можете отклонять подделанные или повторно отправленные полезные нагрузки.
События жизненного цикла
| Событие | Значение |
|---|---|
| deposit.created | Депозит продавца создан на Base |
| deposit.partially_filled | Депозит заполнен частично |
| deposit.filled | Депозит заполнен полностью |
| deposit.closed | Продавец закрыл или вывел оставшийся баланс |
| otc.taken | Приватный OTC-депозит принят одобренным покупателем |
Проверяйте каждую доставку
- 1Прочитайте заголовок X-Usdctofiat-Signature в форме t=<unix>,v1=<hex>.
- 2Соберите подписываемую полезную нагрузку как строку timestamp.rawBody, используя сырое, неразобранное тело.
- 3Вычислите HMAC-SHA256 по этой полезной нагрузке с секретом вашего эндпоинта.
- 4Сравните за постоянное время со значением v1 в hex, прежде чем доверять событию.
- 5При желании отклоняйте доставки, временная метка которых старше выбранного вами окна.
Защита от повтора — на ваше усмотрение
Эталонный приёмник в репозитории стартеров считает временные метки старше 5 минут устаревшими, чтобы защититься от повторов. Это окно обеспечивается вашим верификатором, а не отправителем, так что вы можете сделать его жёстче или мягче под вашу задержку и допуск к повторам.
Поскольку подпись покрывает timestamp.rawBody, разбирайте JSON только после прохождения проверки HMAC. Проверка разобранного объекта вместо сырых байтов — самый частый способ незаметно ошибиться в верификации подписи.
Регистрация и эксплуатация
- Регистрируйте эндпоинты с вашим API-ключом Peerlytics; один ключ аутентифицирует поверхности offramp и Peerlytics.
- Эндпоинты, которые получают повторяющиеся подряд сбои доставки, могут быть отключены, пока вы их не исправите.
- Используйте приёмник из репозитория стартеров как заведомо рабочий эталон HMAC-верификации.
- Относитесь к вебхукам как к подсказкам о состоянии; когда это важно, сверяйтесь с ончейн-истиной через deposits().
Keep exploring
Common questions
Как подписываются вебхуки USDCtoFiat?
Каждая доставка несёт X-Usdctofiat-Signature: t=<unix>,v1=<hex>, HMAC-SHA256 по строке timestamp.rawBody. Заново вычислите HMAC с секретом вашего эндпоинта по сырому телу и сравните за постоянное время, прежде чем доверять событию.
Как предотвратить повторно отправленные вебхуки?
Отклоняйте доставки, чья подписанная временная метка старше выбранного вами окна. Эталонный приёмник использует 5 минут. Отправитель не обеспечивает окно, так что это ответственность вашего верификатора.
Нужен ли API-ключ для вебхуков?
Да. Создание депозитов не требует разрешений, но регистрация эндпоинтов вебхуков использует API-ключ Peerlytics. Тот же ключ аутентифицирует и API Peerlytics.