Des webhooks signés en HMAC pour le cycle de vie de l'off-ramp.
Lorsque votre produit a besoin d'un état de cycle de vie asynchrone, enregistrez des endpoints de webhook et vérifiez chaque livraison. La signature lie le timestamp au corps brut exact afin que vous puissiez rejeter les charges utiles falsifiées ou rejouées.
Événements du cycle de vie
| Événement | Signification |
|---|---|
| deposit.created | Un dépôt vendeur a été créé sur Base |
| deposit.partially_filled | Un dépôt a été partiellement rempli |
| deposit.filled | Un dépôt a été entièrement rempli |
| deposit.closed | Un vendeur a fermé ou retiré le solde restant |
| otc.taken | Un dépôt OTC privé a été pris par l'acheteur approuvé |
Vérifiez chaque livraison
- 1Lisez l'en-tête X-Usdctofiat-Signature sous la forme t=<unix>,v1=<hex>.
- 2Construisez la charge utile signée comme la chaîne timestamp.rawBody en utilisant le corps brut, non parsé.
- 3Calculez le HMAC-SHA256 sur cette charge utile avec le secret de votre endpoint.
- 4Comparez en temps constant à la valeur hex v1 avant de faire confiance à l'événement.
- 5Optionnellement, rejetez les livraisons dont le timestamp est plus ancien que la fenêtre que vous choisissez.
La protection contre le rejeu est votre choix
Le récepteur de référence du dépôt de starters traite les timestamps de plus de 5 minutes comme périmés pour se prémunir des rejeux. Cette fenêtre est appliquée par votre vérificateur, pas par l'émetteur, vous pouvez donc la resserrer ou l'élargir selon votre tolérance à la latence et aux retentatives.
Comme la signature couvre timestamp.rawBody, ne parsez le JSON qu'après que la vérification HMAC a réussi. Vérifier l'objet parsé plutôt que les octets bruts est la manière la plus courante de se tromper subtilement dans la vérification de signature.
Enregistrer et exploiter
- Enregistrez les endpoints avec votre clé API Peerlytics ; une seule clé authentifie les surfaces offramp et Peerlytics.
- Les endpoints qui subissent des échecs de livraison consécutifs répétés peuvent être désactivés jusqu'à ce que vous les corrigiez.
- Utilisez le récepteur du dépôt de starters comme référence HMAC connue pour fonctionner.
- Traitez les webhooks comme des indices d'état ; réconciliez avec la vérité onchain via deposits() quand cela compte.
Keep exploring
Common questions
Comment les webhooks USDCtoFiat sont-ils signés ?
Chaque livraison porte X-Usdctofiat-Signature: t=<unix>,v1=<hex>, un HMAC-SHA256 sur la chaîne timestamp.rawBody. Recalculez le HMAC avec le secret de votre endpoint sur le corps brut et comparez en temps constant avant de faire confiance à l'événement.
Comment empêcher les webhooks rejoués ?
Rejetez les livraisons dont le timestamp signé est plus ancien qu'une fenêtre que vous choisissez. Le récepteur de référence utilise 5 minutes. L'émetteur n'applique pas de fenêtre, c'est donc la responsabilité de votre vérificateur.
Ai-je besoin d'une clé API pour les webhooks ?
Oui. La création de dépôts est sans permission, mais l'enregistrement d'endpoints de webhook utilise une clé API Peerlytics. La même clé authentifie aussi l'API Peerlytics.