Si vous voulez construire un produit de liquid staking sur @Dusk , la première chose que vous apprenez, c’est que l’approche évidente ne fonctionne pas.
Un utilisateur qui mise depuis un portefeuille appelle stake. Un contrat ne peut pas. stake_from_contract refuse d’être invoquée directement — elle vérifie qu’elle a été atteinte dans le cadre d’un transfert de fonds. Le schéma est donc le suivant : déplacez les fonds dans votre contrat, puis effectuez un transfert de contrat à contrat vers le contrat de stake, en indiquant la fonction que vous souhaitez appeler dans le cadre même du transfert.
L’argent et l’instruction voyagent ensemble, ou rien ne se passe.
C’est un choix de conception délibéré, et j’en suis venu à l’apprécier. Cela élimine toute une catégorie de bugs où un contrat prétend miser une valeur qu’il n’a en réalité jamais fait bouger. Le transfert sert d’autorisation.
La seconde moitié est la partie que les développeurs sous-estiment. Votre contrat doit implémenter des callbacks — un pour recevoir les fonds désengagés, et un pour recevoir les récompenses. Dusk ne vous envoie pas de la valeur et ne vous « espère » pas. Il vous la renvoie via une fonction que vous étiez tenu d’écrire. Oubliez-en une, et vous aurez construit un pool qui peut accepter des dépôts, mais ne peut pas les restituer.
Deux contraintes à connaître avant de commencer : le minimum 1,000 $DUSK s’applique aux contrats exactement comme il s’applique aux personnes, et le stake devient actif après une période de maturité.
Petite note de transparence : à la maturité, la documentation me donne deux cadrages différents à deux endroits — une page indique 4,320 blocs, environ 12 heures ; une autre décrit une activation à la frontière d’un epoch. Les deux peuvent décrire la même chose sous des angles différents. Si vous construisez autour, confirmez sur testnet plutôt que de faire confiance à l’une ou l’autre page.
En ce moment, la page de l’écosystème ne liste exactement qu’un seul pool de staking construit de cette manière.
Développeurs — est-ce que forcer la valeur et l’instruction dans un mouvement atomique rend votre vie plus sûre, ou juste plus lente ?
#dusk
Un utilisateur qui mise depuis un portefeuille appelle stake. Un contrat ne peut pas. stake_from_contract refuse d’être invoquée directement — elle vérifie qu’elle a été atteinte dans le cadre d’un transfert de fonds. Le schéma est donc le suivant : déplacez les fonds dans votre contrat, puis effectuez un transfert de contrat à contrat vers le contrat de stake, en indiquant la fonction que vous souhaitez appeler dans le cadre même du transfert.
L’argent et l’instruction voyagent ensemble, ou rien ne se passe.
C’est un choix de conception délibéré, et j’en suis venu à l’apprécier. Cela élimine toute une catégorie de bugs où un contrat prétend miser une valeur qu’il n’a en réalité jamais fait bouger. Le transfert sert d’autorisation.
La seconde moitié est la partie que les développeurs sous-estiment. Votre contrat doit implémenter des callbacks — un pour recevoir les fonds désengagés, et un pour recevoir les récompenses. Dusk ne vous envoie pas de la valeur et ne vous « espère » pas. Il vous la renvoie via une fonction que vous étiez tenu d’écrire. Oubliez-en une, et vous aurez construit un pool qui peut accepter des dépôts, mais ne peut pas les restituer.
Deux contraintes à connaître avant de commencer : le minimum 1,000 $DUSK s’applique aux contrats exactement comme il s’applique aux personnes, et le stake devient actif après une période de maturité.
Petite note de transparence : à la maturité, la documentation me donne deux cadrages différents à deux endroits — une page indique 4,320 blocs, environ 12 heures ; une autre décrit une activation à la frontière d’un epoch. Les deux peuvent décrire la même chose sous des angles différents. Si vous construisez autour, confirmez sur testnet plutôt que de faire confiance à l’une ou l’autre page.
En ce moment, la page de l’écosystème ne liste exactement qu’un seul pool de staking construit de cette manière.
Développeurs — est-ce que forcer la valeur et l’instruction dans un mouvement atomique rend votre vie plus sûre, ou juste plus lente ?
#dusk
