Lección 3

Comprender un contrato FA1.2

Bienvenido a la tercera lección de nuestro curso de tokenización. Una vez implementado el contrato de token completo, analicemos el código del contrato y comprendamos los diferentes elementos. Esta lección tiene como objetivo brindarle una comprensión profunda de cómo se construye un contrato de token FA1.2.

1. Contrato de administración

La clase de contrato Admin en nuestro contrato token es responsable de definir los privilegios administrativos. Incluye un único punto de entrada: setAdministrator. Este punto de entrada permite al administrador actual asignar un nuevo administrador.

Python clase Admin(sp.Contract): def init(self, administrador): self.init(administrator=administrator)

@sp.entrypointdef setAdministrator(self, params): 

sp.verify(sp.sender == self.data.administrator) administrador.de.auto.datos = parámetros La función setAdministrator verifica que solo el administrador actual pueda ejecutar esta función. Si la verificación falla, la operación se rechaza. Si pasa, la función procede a asignar el nuevo administrador.

2. Pausar contrato

La clase de contrato Pause proporciona un mecanismo para pausar y reanudar las operaciones del contrato. Incluye un punto de entrada setPause que puede cambiar el estado de pausa del contrato.

Python clase Pausa(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 La función setPause primero verifica que la operación la realice el administrador. Si se aprueba la verificación, se actualiza el estado de pausa del contrato.

3. Contrato de menta

La clase de contrato Mint permite aumentar el suministro de tokens. Viene con un punto de entrada mint que aumenta el suministro total y actualiza el saldo de una dirección en particular.

Python clase 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 += parámetros.valor La función mint primero verifica que el remitente sea el administrador. Luego, aumenta la oferta total y el saldo de la dirección especificada.

4. Contrato de quema

La clase de contrato Burn sirve para disminuir el suministro de tokens. Tiene un punto de entrada burn que reduce el suministro total y el saldo de una dirección específica.

Python clase 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 -= parámetros.valor La función burn funciona de manera similar a la función mint , pero en su lugar disminuye el suministro total y el saldo de la dirección especificada.

Con el siguiente código, el administrador quema el token de Bob

Python sc.h2("El administrador quema el token de Bob") c1.burn(dirección=bob.address, valor=1).run(remitente=admin)

5. Contrato de cambio de metadatos

La clase de contrato ChangeMetadata sirve para actualizar los metadatos del contrato. Incluye una función update_metadata que actualiza un par clave-valor en los metadatos.

Python clase ChangeMetadata(sp.Contract): @sp.entrypointdef update_metadata(self, key, value): sp.verify(sp.sender == self.data.administrator) self.data.metadatos[clave] = valor La función update_metadata , similar a las funciones anteriores, verifica que el remitente sea el administrador. Luego, actualiza el par clave-valor especificado en los metadatos.

En la siguiente lección profundizaremos en el contrato final que incluye todas estas funcionalidades, Fa1_2TestFull. Aprenderemos cómo este contrato hereda de todas las clases que analizamos hoy y cómo contribuyen todas a la funcionalidad del token. ¡Manténganse al tanto!

Descargo de responsabilidad

* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.

* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.