# Le Buyback Bot

> **Précision issue du code :** cette page conserve les règles de la spécification. L’implémentation actuelle fixe la fin de fenêtre à J+1 + 7 jours, soit J+8 par défaut, et peut ignorer une tranche refusée avant signature. Voir [État de l’implémentation](etat-implementation.md) pour les écarts avec le calendrier et les reports décrits ci-dessous.

Le Buyback Bot est un script déterministe, sans IA, qui a deux missions : le buyback du token CTO pendant 7 jours, et le rachat de $VIVRA avec les frais des tokens CTO. Chaque achat et son burn se font dans la même transaction, via un petit contrat d'exécution.

## Contrat BuybackBurner

Interface Solidity, squelette et tests attendus : [Annexe D · Contrats](annexe-contrats.md).

Un contrat minimal, immuable, déployé sur Robinhood Chain :

- `buyAndBurn(token, route, amountIn, minOut)` : achète `token` avec `amountIn` (ETH ou USDG) via la courbe Pons ou le pool v4, puis envoie la totalité reçue à l'adresse de burn `0x…dEaD` dans la même transaction. Les jetons ne restent jamais dans un wallet Vivra.
- Seul le hot wallet du Buyback Bot peut l'appeler.
- Un plafond par appel et par jour, fixés dans le contrat.
- Un event `BuybackBurn(token, amountIn, amountBurned, slice)` lu par le suivi du token et affiché sur la dapp.

## Paramètres du buyback

| Paramètre | Valeur V1 | Note |
| --- | --- | --- |
| Durée | 7 jours, de J+1 à J+7 |  |
| Nombre de tranches | environ 23 | paramètre |
| Horaires | aléatoires, non annoncés | tirés au début du buyback, gardés secrets jusqu'à exécution |
| Taille d'une tranche | au plus 1 % de la liquidité du pool au moment de l'achat | recalculée à chaque tranche |
| Glissement max | 2 % | sinon la tranche est reportée |
| Plafond par token CTO | sa market cap au moment du vote | décision ouverte, section 13 |
| Enveloppe | la part Buyback des frais réclamés depuis le cycle précédent, plus les reliquats, dans la limite du plafond ; au cycle 1, l'enveloppe est petite | le reste passe au token CTO suivant |
| Arrêt anticipé | à J+3, si le volume moyen n'a pas au moins doublé par rapport aux 7 jours avant le vote | le reste passe au token CTO suivant |
| Token encore sur la courbe | achat sur la courbe jusqu'à la graduation, puis arrêt |  |

## Rachat de $VIVRA avec les frais des tokens CTO

Chaque semaine, les frais créateur reçus des tokens CTO (section 8) sont utilisés pour racheter du $VIVRA, avec les mêmes règles : tranches à horaires aléatoires sur 7 jours, au plus 1 % de la liquidité par tranche, burn dans la même transaction.

## Sécurité des fonds

- Le hot wallet du Buyback Bot ne contient jamais plus de 24 h de tranches. Il est rechargé automatiquement chaque jour depuis le wallet Buyback réserve, dans la limite du plafond journalier.
- Les horaires des tranches sont stockés chiffrés côté serveur et publiés seulement après exécution.
- Toute erreur (glissement, revert, liquidité trop basse) suspend la tranche et alerte l'équipe. Aucune relance automatique plus grosse.
- Un arrêt d'urgence dans le back-office bloque toute nouvelle tranche.

## Critères d'acceptation

- [ ] Sur testnet, 23 tranches exécutées sur 7 jours, aucune au-dessus de 1 % de la liquidité, chaque achat brûlé dans la même transaction.
- [ ] L'arrêt à J+3 se déclenche sur un scénario de test où le volume ne double pas.
- [ ] Le BuybackBurner refuse un appel d'un wallet autre que celui du Buyback Bot, et un appel au-dessus du plafond.
