La classe Admin
de notre contrat de jeton est chargée de définir les privilèges administratifs. Il comprend un seul point d'entrée : setAdministrator
. Ce point d'entrée permet à l'administrateur actuel de désigner un nouvel administrateur.
Python
classe Admin(sp.Contract) :
def __init__(self, administrator) :
self.init(administrator=administrator)
@sp.entrypointdef setAdministrator(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.administrator = params
La fonction setAdministrator
vérifie que seul l'administrateur actuel peut exécuter cette fonction. Si la vérification échoue, l'opération est rejetée. Si elle est acceptée, la fonction procède à l'affectation du nouvel administrateur.
La classe de contrat Pause
fournit un mécanisme permettant de mettre en pause et d'annuler les opérations du contrat. Il comprend un point d'entrée setPause
qui permet de modifier l'état de pause du contrat.
Python
classe Pause(sp.Contract) :
def __init__(self) :
self.init(paused=False)
@sp.entrypointdef setPause(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.paused = params
La fonction setPause
vérifie d'abord que l'opération est effectuée par l'administrateur. Si le contrôle est positif, il met à jour l'état de pause du contrat.
La classe de contrat Mint
permet d'augmenter l'offre de jetons. Il s'accompagne d'un point d'entrée minime
qui augmente l'offre totale et met à jour le solde d'une adresse particulière.
Python
classe Mint(sp.Contract) :
@sp.entrypointdef mint(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply += params.value
self.data.balances[params.address].balance += params.value
La fonction Monnaie
vérifie d'abord que l'expéditeur est bien l'administrateur. Ensuite, il augmente l'offre totale et le solde de l'adresse spécifiée.
La classe de contrat Burn
permet de diminuer l'offre de jetons. Il possède un point d'entrée de brûlage
qui réduit l'offre totale et le solde d'une adresse spécifique.
Python
class Burn(sp.Contract) :
@sp.entrypointdef burn(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply -= params.value
self.data.balances[params.address].balance -= params.value
La fonction " brûler
" fonctionne de la même manière que la fonction " battre monnaie
", mais elle diminue l'offre totale et le solde de l'adresse spécifiée.
Avec le code suivant, l'administrateur brûle le jeton Bob
Python
sc.h2("Admin burns Bob token")
c1.burn(address=bob.address, value=1).run(sender=admin)
La classe de contrat ChangeMetadata
permet de mettre à jour les métadonnées du contrat. Il comprend une fonction update_metadata
qui met à jour une paire clé-valeur dans les métadonnées.
Python
class ChangeMetadata(sp.Contract) :
@sp.entrypointdef update_metadata(self, key, value) :
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[key] = valeur
La fonction update_metadata
, semblable aux fonctions précédentes, vérifie que l'expéditeur est bien l'administrateur. Il met ensuite à jour la paire clé-valeur spécifiée dans les métadonnées.
Dans la prochaine leçon, nous nous pencherons sur le contrat final qui comprend toutes ces fonctionnalités, Fa1_2TestFull
. Nous verrons comment ce contrat hérite de toutes les classes dont nous avons parlé aujourd'hui et comment elles contribuent toutes à la fonctionnalité du jeton. Restez à l'écoute !
La classe Admin
de notre contrat de jeton est chargée de définir les privilèges administratifs. Il comprend un seul point d'entrée : setAdministrator
. Ce point d'entrée permet à l'administrateur actuel de désigner un nouvel administrateur.
Python
classe Admin(sp.Contract) :
def __init__(self, administrator) :
self.init(administrator=administrator)
@sp.entrypointdef setAdministrator(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.administrator = params
La fonction setAdministrator
vérifie que seul l'administrateur actuel peut exécuter cette fonction. Si la vérification échoue, l'opération est rejetée. Si elle est acceptée, la fonction procède à l'affectation du nouvel administrateur.
La classe de contrat Pause
fournit un mécanisme permettant de mettre en pause et d'annuler les opérations du contrat. Il comprend un point d'entrée setPause
qui permet de modifier l'état de pause du contrat.
Python
classe Pause(sp.Contract) :
def __init__(self) :
self.init(paused=False)
@sp.entrypointdef setPause(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.paused = params
La fonction setPause
vérifie d'abord que l'opération est effectuée par l'administrateur. Si le contrôle est positif, il met à jour l'état de pause du contrat.
La classe de contrat Mint
permet d'augmenter l'offre de jetons. Il s'accompagne d'un point d'entrée minime
qui augmente l'offre totale et met à jour le solde d'une adresse particulière.
Python
classe Mint(sp.Contract) :
@sp.entrypointdef mint(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply += params.value
self.data.balances[params.address].balance += params.value
La fonction Monnaie
vérifie d'abord que l'expéditeur est bien l'administrateur. Ensuite, il augmente l'offre totale et le solde de l'adresse spécifiée.
La classe de contrat Burn
permet de diminuer l'offre de jetons. Il possède un point d'entrée de brûlage
qui réduit l'offre totale et le solde d'une adresse spécifique.
Python
class Burn(sp.Contract) :
@sp.entrypointdef burn(self, params) :
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply -= params.value
self.data.balances[params.address].balance -= params.value
La fonction " brûler
" fonctionne de la même manière que la fonction " battre monnaie
", mais elle diminue l'offre totale et le solde de l'adresse spécifiée.
Avec le code suivant, l'administrateur brûle le jeton Bob
Python
sc.h2("Admin burns Bob token")
c1.burn(address=bob.address, value=1).run(sender=admin)
La classe de contrat ChangeMetadata
permet de mettre à jour les métadonnées du contrat. Il comprend une fonction update_metadata
qui met à jour une paire clé-valeur dans les métadonnées.
Python
class ChangeMetadata(sp.Contract) :
@sp.entrypointdef update_metadata(self, key, value) :
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[key] = valeur
La fonction update_metadata
, semblable aux fonctions précédentes, vérifie que l'expéditeur est bien l'administrateur. Il met ensuite à jour la paire clé-valeur spécifiée dans les métadonnées.
Dans la prochaine leçon, nous nous pencherons sur le contrat final qui comprend toutes ces fonctionnalités, Fa1_2TestFull
. Nous verrons comment ce contrat hérite de toutes les classes dont nous avons parlé aujourd'hui et comment elles contribuent toutes à la fonctionnalité du jeton. Restez à l'écoute !