🥋
Dojo
Español
Español
  • Dojo
    • 🔎Contenido relevante
  • App Store
    • Crear cuenta de Apple developer
    • Crear cuenta organizacional en Apple developer
    • Subir una aplicación a App store
  • Classroom
    • Crear una clase en Classroom
    • Crear y añadir temas a una clase de Classroom
    • Agregar estudiantes o instructores en Classroom
    • Asignar entrenamientos en Classroom
    • Ingresar a un entrenamiento como estudiante
  • Docker
    • Instalar Docker
  • Editor de video
    • HandBrake
      • Cambiar el formato de un video en HandBrake
    • iMovie
      • Editar un video en iMovie
  • Git
    • Hacer un 3-way merge en git
    • Hacer un Fast Forward Merge en Git
    • Hacer un git revert
    • Resolver un conflicto de merge con la línea de comando
    • Usar git add
    • Usar git cherry pick
    • Usar git rm
    • Usar git stash
  • Git Graph
    • Instalar Git Graph
    • Ver gráfico del repositorio
    • Filtrar ramas
    • Hacer merge a ramas
  • GitBook
    • Crear contenido de Dojo en Gitbook
    • Crear un espacio en GitBook
    • Duplicar un espacio en GitBook
    • Eliminar un espacio en GitBook
    • Mover un espacio en GitBook
  • GitLab
    • Creación de milestones en GitLab
    • Visualización de milestones en GitLab
    • Cierre de milestones en GitLab
    • Crear un repositorio en GitLab
    • Configurar la autenticación de dos factores para GitLab
    • Hacer un bulk en GitLab
    • Importar issues a GitLab
    • Creación de tareas en GitLab
    • Visualización de tareas en GitLab
    • Cerrar tareas en GitLab
    • Copiar Solutions/Template en Proyectos de GitLab
    • Actualizar instancia de GitLab
  • Gmail
    • Crear una firma de Gmail
    • Crear una plantilla de correo en Gmail
    • Enviar correos con distintos alias o grupos
    • Obtener permisos para enviar y recibir correos desde un alias o grupo
  • Grabador de video
    • Loom
      • Grabar con Loom
      • Instalar Loom
  • HUGO
    • Organizar contenido Markdown
  • Java
    • Instalar Java con SDKMan
  • Jira
    • Usar shortcuts en Jira
    • Usar filtros avanzados en Jira
    • Usar filtros básicos en jira
    • Usar filtros en un proyecto de Jira
  • Kubernetes
    • Implementar un microservicio en Kubernetes
    • Ver registros de pods de Kubernetes
    • Ejecutar un pod con imágenes de un repositorio privado
    • Usar config maps para configurar una implementación
    • Usar secrets para configurar una implementación
    • Comunicar dos microservicios en un clúster de Kubernetes
    • Crear un Ingress Controller en un clúster
    • Configurar Horizontal Pod Autoscaler en Kubernetes
    • Conectar un contenedor a Google Storage
  • Make
    • Instalar Make
  • Minikube
    • Instalar Minikube
    • Administrar un clúster con Minikube
    • Usar Minikube para configurar un clúster de Kubernetes
  • MySQL
    • Hacer un dump con MySQL
    • Instalar MySQL con contenedores de Docker
  • Node.js
    • Instalar Gray-matter
    • Usar Gray-matter
    • Leer archivo en Node.js
  • n8n
    • Iniciar con n8n
    • Untitled
    • Seleccionar información en n8n
    • Funciones de n8n
    • Conectar credenciales de n8n por medio de APIs
  • Open SSH
    • Generar un par de claves privada-pública SSH
  • Outline
    • Crear backup de Outline
  • Play store
    • Subir una aplicación a Play store
    • Crear cuenta organizacional en Play store
  • Telegram
    • Reenviar mensajes a múltiples usuarios
  • Tezos
    • Desplegar un Smart Contract
    • Implementar un contrato NFT
    • Interactuar con un Smart Contract con Taquito
  • VaultWarden
    • Crear una cuenta
    • Crear una contraseña
    • Compartir credenciales a externos
  • Visual Studio Code
    • Instalar visual studio code
    • Instalar extensiones en vscode
  • VueJS
    • Crear un proyecto con Vue
    • Instalar VueCLI
  • Youtube
    • Subir un video a YouTube
  • Zoho
    • Compartir accesos desde Zoho
    • Quitar accesos desde Zoho
    • Ingresar a la base de dojo con un acceso compartido por Zoho
Powered by GitBook
On this page
  • Personalización
  • Mixins
  • Init
  • Almacenamiento
  • Entrypoint
  • Contract metadata
  • Enlaces de referencia
  1. Tezos

Implementar un contrato NFT

Importar biblioteca FA2:

import smartpy as sp
FA2 = sp.io.import_script_from_url("https://smartpy.io/templates/fa2_lib.py")

Compilation target:

sp.add_compilation_target(
    "fa2_nft_tokens",
    ExampleFa2Nft(
        metadata = sp.utils.metadata_of_url("http://example.com")
    )
)

Probar:

@sp.add_test(name="FA2 NFT tokens")
def test():
    sc = sp.test_scenario()
    sc.table_of_contents()
    sc.h2("FA2")
    example_fa2_nft = ExampleFa2Nft(
        metadata = sp.utils.metadata_of_url("https://example.com")
    )
    sc += example_fa2_nft

Ahora es posible ejecutar y compilar el contrato.

Personalización

Mixins

La biblioteca FA2 proporciona clases pequeñas de las que puede heredar por separado para agregar características adicionales.

class ExampleFa2Nft(
    FA2.Admin,
    FA2.ChangeMetadata,
    FA2.WithdrawMutez,
    FA2.OnchainviewBalanceOf,
    FA2.Fa2Nft
):

Init

Algunos mixins necesitan inicializarse:

class ExampleFa2Nft(FA2.Admin, FA2.Fa2Nft):
    def __init__(self, admin, metadata):
        FA2.Fa2Nft.__init__(self, metadata)
        FA2.Admin.__init__(self, admin)

Almacenamiento

class ExampleFa2Nft(FA2.Admin, FA2.Fa2Nft):
    def __init__(self, admin, metadata):
        FA2.Fa2Nft.__init__(self, metadata)
        FA2.Admin.__init__(self, admin)
        self.update_initial_storage(
            closed = False,
        )

Entrypoint

Dentro de la clase es posible agregar nuevos puntos de entrada o reimplementar los proporcionados por la biblioteca.

 @sp.entry_point
    def mint(self, to_, metadata):
        sp.verify(sp.sender == self.data.administrator, "FA2_NOT_ADMIN")
        token_id = sp.compute(self.data.next_token_id)
        self.data.token_metadata[token_id] = sp.record(
            token_id=token_id, token_info=metadata
        )
        self.data.ledger[token_id] = to_
        self.data.next_token_id += 1

Contract metadata

Contiene descripciones generales del contrato y las vistas fuera de la cadena.

Esto puede estar en un archivo JSON almacenado en IPFS:

sp.add_compilation_target(
    "Fa2Nft_tokens",
    ExampleFa2Nft(
        metadata = sp.utils.metadata_of_url("http://example.com")
    )
)

O en el contrato propio:

sp.add_compilation_target(
    "Fa2Nft_tokens",
    ExampleFa2Nft(
        metadata_base = {
            "version": "1.0.0",
            "description" : "This implements FA2 (TZIP-012) using SmartPy.",
            "interfaces": ["TZIP-012", "TZIP-016"],
            "authors": ["SmartPy <https://smartpy.io/#contact>"],
            "homepage": "https://smartpy.io/ide?template=FA2.py",
            "source": {
                "tools": ["SmartPy"],
                "location": "https://gitlab.com/SmartPy/smartpy/-/raw/master/python/templates/FA2.py"
            },
            "permissions": {
                "receiver": "owner-no-hook",
                "sender": "owner-no-hook"
            }
        }
    )
)

Enlaces de referencia

PreviousDesplegar un Smart ContractNextInteractuar con un Smart Contract con Taquito

Last updated 1 year ago

Se puede encontrar más ejemplos de puntos de entrada en .

Template Minimal
https://opentezos.com/smart-contracts/simple-nft-contract-1/