A classe de contrato Admin
em nosso contrato de token é responsável por definir privilégios administrativos. Inclui um único ponto de entrada: setAdministrator
. Este ponto de entrada permite que o administrador atual atribua um novo administrador.
Python
classe Admin (sp.Contract):
def __init__(self, administrador):
self.init (administrador = administrador)
@sp.entrypointdef setAdministrator(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.administrador = parâmetros
A função setAdministrator
verifica se apenas o administrador atual pode executar esta função. Se a verificação falhar, a operação será rejeitada. Se for aprovado, a função continuará atribuindo o novo administrador.
A classe de contrato Pause
fornece um mecanismo para pausar e retomar as operações do contrato. Inclui um ponto de entrada setPause
que pode alterar o status de pausa do contrato.
Pausa da classe Python
(sp.Contract):
def __init__(self):
self.init (paused = False)
@sp.entrypointdef setPause(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.paused = parâmetros
A função setPause
primeiro verifica se a operação foi executada pelo administrador. Se a verificação for aprovada, ela atualizará o status de pausa do contrato.
A classe de contrato Mint
permite aumentar o fornecimento de tokens. Ele vem com um ponto de entrada mint
que aumenta a oferta total e atualiza o saldo de um determinado endereço.
Python
classe Mint(sp.Contract):
@sp.entrypointdef mint(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply += params.valor
self.data.balances[params.address].balance += params.valor
A função mint
primeiro verifica se o remetente é o administrador. Então, aumenta a oferta total e o saldo do endereço especificado.
A classe de contrato Burn
serve para diminuir o fornecimento de tokens. Possui um ponto de entrada burn
que reduz a oferta total e o saldo de um endereço específico.
Python
classe Burn (sp.Contract):
@sp.entrypointdef burn (self, params):
sp.verify (sp.sender == self.data.administrator)
self.data.total_supply -= params.valor
self.data.balances[params.address].balance -= params.valor
A função burn
opera de forma semelhante à função mint
, mas em vez disso diminui o fornecimento total e o saldo do endereço especificado.
Com o código a seguir, o administrador queima o token Bob
Python
sc.h2("Admin queima token de Bob")
c1.burn(address=bob.address, valor=1).run(remetente=admin)
A classe de contrato ChangeMetadata
serve para atualizar os metadados do contrato. Inclui uma função update_metadata
que atualiza um par chave-valor nos metadados.
Python
classe ChangeMetadata(sp.Contract):
@sp.entrypointdef update_metadata(self, chave, valor):
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[chave] = valor
A função update_metadata
, semelhante às funções anteriores, verifica se o remetente é o administrador. Em seguida, ele atualiza o par de valores-chave especificado nos metadados.
Na próxima lição nos aprofundaremos no contrato final que inclui todas essas funcionalidades, Fa1_2TestFull
. Aprenderemos como este contrato herda de todas as classes que discutimos hoje e como todas elas contribuem para a funcionalidade do token. Fique atento!
A classe de contrato Admin
em nosso contrato de token é responsável por definir privilégios administrativos. Inclui um único ponto de entrada: setAdministrator
. Este ponto de entrada permite que o administrador atual atribua um novo administrador.
Python
classe Admin (sp.Contract):
def __init__(self, administrador):
self.init (administrador = administrador)
@sp.entrypointdef setAdministrator(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.administrador = parâmetros
A função setAdministrator
verifica se apenas o administrador atual pode executar esta função. Se a verificação falhar, a operação será rejeitada. Se for aprovado, a função continuará atribuindo o novo administrador.
A classe de contrato Pause
fornece um mecanismo para pausar e retomar as operações do contrato. Inclui um ponto de entrada setPause
que pode alterar o status de pausa do contrato.
Pausa da classe Python
(sp.Contract):
def __init__(self):
self.init (paused = False)
@sp.entrypointdef setPause(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.paused = parâmetros
A função setPause
primeiro verifica se a operação foi executada pelo administrador. Se a verificação for aprovada, ela atualizará o status de pausa do contrato.
A classe de contrato Mint
permite aumentar o fornecimento de tokens. Ele vem com um ponto de entrada mint
que aumenta a oferta total e atualiza o saldo de um determinado endereço.
Python
classe Mint(sp.Contract):
@sp.entrypointdef mint(self, params):
sp.verify(sp.sender == self.data.administrator)
self.data.total_supply += params.valor
self.data.balances[params.address].balance += params.valor
A função mint
primeiro verifica se o remetente é o administrador. Então, aumenta a oferta total e o saldo do endereço especificado.
A classe de contrato Burn
serve para diminuir o fornecimento de tokens. Possui um ponto de entrada burn
que reduz a oferta total e o saldo de um endereço específico.
Python
classe Burn (sp.Contract):
@sp.entrypointdef burn (self, params):
sp.verify (sp.sender == self.data.administrator)
self.data.total_supply -= params.valor
self.data.balances[params.address].balance -= params.valor
A função burn
opera de forma semelhante à função mint
, mas em vez disso diminui o fornecimento total e o saldo do endereço especificado.
Com o código a seguir, o administrador queima o token Bob
Python
sc.h2("Admin queima token de Bob")
c1.burn(address=bob.address, valor=1).run(remetente=admin)
A classe de contrato ChangeMetadata
serve para atualizar os metadados do contrato. Inclui uma função update_metadata
que atualiza um par chave-valor nos metadados.
Python
classe ChangeMetadata(sp.Contract):
@sp.entrypointdef update_metadata(self, chave, valor):
sp.verify(sp.sender == self.data.administrator)
self.data.metadata[chave] = valor
A função update_metadata
, semelhante às funções anteriores, verifica se o remetente é o administrador. Em seguida, ele atualiza o par de valores-chave especificado nos metadados.
Na próxima lição nos aprofundaremos no contrato final que inclui todas essas funcionalidades, Fa1_2TestFull
. Aprenderemos como este contrato herda de todas as classes que discutimos hoje e como todas elas contribuem para a funcionalidade do token. Fique atento!