Aller au contenu
Projet vitrineBlockchain & Web3
  • 223 tests
  • couverture 100 %
  • analysé par Slither

Token + Vesting + Staking

Boîte à outils pour lancer un token : ERC-20 plafonné, vesting avec cliff puis linéaire et récompenses de staking

ERC-20EIP-2612OpenZeppelin v5Foundry

De quoi s’agit-il

SigmaToken est un ERC-20 doté d’un plafond strict (hard cap), du permit EIP-2612 (approbations sans gas), d’une fonction de burn et d’un transfert de propriété en deux étapes. Le propriétaire ne peut émettre des tokens que jusqu’au plafond. TokenVesting conserve les tokens de nombreux bénéficiaires ; chaque calendrier comporte un début, un cliff, une durée et un indicateur de révocabilité, et il est intégralement provisionné dès sa création.

StakingRewards permet aux utilisateurs de staker un token et d’en gagner un autre (ou le même) à un taux fixe pendant une période de récompense. Le contrat s’appuie sur une comptabilité de la récompense par token en O(1), si bien que les frais de gas n’augmentent pas avec le nombre de stakers, et les récompenses sont transférées dans le contrat avant d’être promises.

Le problème métier

Le lancement d’un token exige une discipline sur l’offre, des périodes de blocage crédibles pour l’équipe et les investisseurs, et des incitations équitables pour les détenteurs. Les implémentations maison et non auditées de ces mécanismes sont une source fréquente d’exploits : calcul des récompenses erroné, promesses de récompenses non provisionnées et portes dérobées côté administrateur.

Comment ça marche

  1. 1

    SigmaToken est déployé avec un plafond strict ; le propriétaire ne peut émettre que jusqu’à ce plafond.

  2. 2

    Le propriétaire crée des calendriers de vesting (début, cliff, durée, montant, révocable). Les tokens sont aussitôt transférés dans le contrat.

  3. 3

    Rien n’est acquis avant début + cliff ; ensuite, les tokens sont acquis linéairement jusqu’à la fin de la durée. Les bénéficiaires appellent release() à tout moment.

  4. 4

    Pour les calendriers révocables, revoke() laisse la part acquise réclamable et ne restitue que le reliquat non acquis.

  5. 5

    Le propriétaire provisionne une période de récompense de staking avec notifyRewardAmount() ; les stakers sont rémunérés au prorata et peuvent à tout moment staker, retirer, réclamer leurs récompenses ou sortir.

Mesures de sécurité

  • Plafond strict appliqué dans _update : il vaut donc pour tous les chemins d’émission
  • Transfert de propriété en deux étapes sur les trois contrats
  • Vesting intégralement collatéralisé ; invariant balance == allocated − released vérifié par fuzzing
  • Révocation équitable : les tokens acquis ne peuvent jamais être repris
  • Récompenses transférées lors du notify : aucune promesse non provisionnée ; invariants de solvabilité
  • recoverERC20 ne peut jamais retirer le token de staking ni le token de récompense
  • nonReentrant sur les fonctions qui déplacent de la valeur, SafeERC20 partout

Fonctionnalités

  • ERC-20 plafonné avec permit EIP-2612
  • Vesting avec cliff puis linéaire, pour de nombreux bénéficiaires
  • Indicateur de révocabilité par calendrier
  • Récompenses de staking façon Synthetix, avec calcul en O(1)
  • Enchaînement des périodes de récompense

Cas d’usage typiques

  • Token generation events pour des DAO, des jeux et des programmes de fidélité
  • Vesting transparent pour l’équipe, les conseillers et les investisseurs
  • Campagnes de récompenses de staking et de liquidité

Limites connues

La durée des récompenses ne peut être modifiée qu’entre deux périodes de récompense.

Autres contrats vitrines

Vitrine

Milestone Escrow

Le client bloque d’emblée la totalité du budget, réparti en jalons. Les fonds ne bougent qu’en cas de libération, de décision de l’arbitre ou d’annulation.

Solidity 0.8.28OpenZeppelin v5ETH / ERC-20

223 tests · couverture 100 % · analysé par Slither

Vitrine

SigmaNFT Collection

Un lancement de NFT équitable : phases allowlist et publique, limites par wallet, offre maximale immuable, royalties ERC-2981 et reveal différé.

ERC-721ERC-2981Merkle proofs

223 tests · couverture 100 % · analysé par Slither

Vitrine

Gold-Backed Token (RWA)

L’adossement devient une condition préalable de l’émission : des tokens ne peuvent être émis que si la réserve d’or déclarée couvre la nouvelle offre totale.

ERC-20AccessControlProof of reserve

223 tests · couverture 100 % · analysé par Slither

Standards : Solidity 0.8.x, OpenZeppelin, tests Foundry avec fuzzing, analyse statique Slither, code source vérifié. 223 tests · couverture 100 % · analysé par Slither.

Vous avez un projet en tête ?

Décrivez votre projet en quelques lignes. Un ingénieur senior vous répond sous 24 heures les jours ouvrés ; suivent un avis honnête, un périmètre clair et une proposition à prix fixe ou par jalons, en général en quelques jours ouvrés.

Vous préférez d’abord écrire ? Écrivez-nous

Vous échangez directement avec Ing. Ismet Mesic, Tech lead.