Skip to main content
Staker de l’ALPH minte du xALPH, un jeton liquide dont la valeur en ALPH augmente à mesure que les récompenses du protocole sont déposées. L’unstake détruit du xALPH et ouvre un coffre d’unstake qui libère l’ALPH linéairement sur unstakeDuration.

Guide : staker et unstaker de l'ALPH

Paramètres

Ces valeurs reflètent les paramètres des contrats. Les valeurs réelles se trouvent dans getXAlphTokenState() (fields.unstakeDuration, fields.maxActiveUnstakeRequestsPerUser).

Jeton xALPH

getXAlphTokenState()

Champs utiles : Taux de change : 1 xALPH = totalDepositedAlph / totalXAlphSupply ALPH.
getXAlphToken() renvoie la XAlphTokenInstance typée. getConfig().xAlphTokenId est l’identifiant du jeton xALPH.

Staker

stakeAlph(amount)

Stake amount attoALPH et minte du xALPH pour le signataire au taux actuel. Joint amount + MINIMAL_CONTRACT_DEPOSIT d’ALPH. Le contrat du jeton xALPH est enregistré comme parrain.

stakeAlphWithReferral(amount, referral)

Identique, avec une adresse de parrainage referral personnalisée. Le contrat ne valide pas le parrain et ne lui envoie rien : il se contente de l’enregistrer dans l’événement Staked(to, referral, alphAmount, xAlphAmount). Les partenaires qui veulent une commission sur les stakes parrainés doivent contacter l’équipe au préalable.

donateReward(amount)

Dépose amount ALPH en récompense pour tous les détenteurs de xALPH sans minter de xALPH, ce qui augmente le taux de change.

Unstaker

L’unstake se débloque linéairement. Après startUnstake, l’ALPH réclamable augmente avec le temps écoulé, et la totalité est disponible après unstakeDuration. Appelez claimUnstaked à tout moment pour retirer ce qui est déjà débloqué.

startUnstake(amount)

Détruit amount xALPH et crée un nouveau coffre d’unstake pour le signataire, contenant l’équivalent en ALPH. Chaque utilisateur peut détenir au plus maxActiveUnstakeRequestsPerUser coffres actifs.

getActiveUnstakeVaultIndexes(address)

Renvoie un bigint[] avec les index des coffres des demandes en attente ou réclamables de l’utilisateur.

getAlphUnstakeVaultState(address, vaultIndex)

L’ALPH réclamable vaut totalUnstakeAmount × min(écoulé, unstakeDuration) / unstakeDuration − withdrawnAmount : une demande est donc entièrement débloquée à unstakeStartTime + unstakeDuration. getAlphUnstakeVault(address, vaultIndex) renvoie l’instance de contrat typée.

getClaimableAmount(address, vaultIndex)

ALPH actuellement réclamable dans un coffre. Il augmente linéairement à partir de 0n au début de la demande.

claimUnstaked(vaultIndex, amount)

Retire amount ALPH du coffre vers le signataire. amount doit être supérieur à 0 et au plus égal au montant réclamable.

cancelUnstake(vaultIndex)

Clôt une demande. L’ALPH déjà débloqué est envoyé au signataire, et le reste est re-staké et rendu en xALPH au taux actuel. L’événement UnstakeCancelled indique xAlphAmount, claimedAlphAmount et restakedAlphAmount.

Comment les récompenses parviennent au xALPH

Les frais de protocole des pools CPMM et CLMM arrivent dans le RewardFeeCollector. L’équipe Powfi les collecte et les convertit en ALPH. Ensuite, distributeRewards distribue totalDepositedAlph × rewardRate / 10000 × temps écoulé / 1 an (un taux annuel), plafonné par l’ALPH détenu par le collecteur. La part de la trésorerie est prélevée en premier, une part brûlée est prélevée sur le reste, et le solde est déposé dans le xALPH, ce qui fait monter le taux de change. distributeRewards n’est pas restreinte, et rien ne l’appelle automatiquement. Hormis donateReward, qui fait monter le taux immédiatement, le taux du xALPH n’augmente que lorsque quelqu’un l’appelle.

Autres accesseurs

Helpers

decodeU256List(hex) et decodeContractIdList(hex) décodent les vecteurs d’octets compactés renvoyés par les contrats de staking (segments de 32 octets).