Está en la página 1de 10

Creación de NFT

En el mundo digital actual, la tecnología blockchain ha revolucionado la forma en que


las personas interactúan con los activos digitales. Uno de los desarrollos más
emocionantes en este campo son los Tokens No Fungibles, o NFTs.

Los NFTs son tokens digitales únicos que representan la propiedad o la autenticidad
de un objeto digital particular. Estos objetos pueden ser obras de arte, música, videos,
juegos y mucho más. La creación y comercialización de NFTs ha abierto nuevas
oportunidades para artistas, coleccionistas y entusiastas de las criptomonedas.

Para crear NFTs, es necesario comprender los conceptos básicos de la programación


en contratos inteligentes. Solidity es un lenguaje de programación utilizado para
desarrollar contratos inteligentes en la cadena de bloques de Ethereum, la cual es una
de las plataformas más utilizadas para la creación de NFTs.

Solidity permite definir las reglas y funcionalidades del contrato inteligente,


incluyendo la creación, transferencia y venta de NFTs. Con Solidity, los artistas y
creadores digitales pueden codificar la exclusividad y las condiciones de propiedad de
sus obras digitales.

En este manual, aprenderemos los conceptos básicos de Solidity y cómo utilizarlo


para crear NFTs. Desde la instalación del entorno de desarrollo hasta la creación de
contratos inteligentes, exploraremos paso a paso el proceso para crear y comercializar
NFTs.

¡Prepárate para sumergirte en el mundo de la creación de NFTs y descubrir las


infinitas posibilidades que ofrece la tecnología blockchain con Solidity!

1
¿Qué es Solidity?
Solidity es un lenguaje de programación de alto nivel especialmente diseñado para
desarrollar contratos inteligentes en la plataforma Ethereum. Es un lenguaje estático y
fuertemente tipado, que permite a los desarrolladores escribir código seguro y
eficiente para ejecutar en la cadena de bloques de Ethereum.

Solidity combina elementos de lenguajes como C++, JavaScript y Python para


proporcionar una sintaxis familiar y accesible. Proporciona herramientas y
características específicas para programar contratos inteligentes, como variables y
funciones públicas y privadas, tipos de datos especializados para lidiar con la
criptografía y las transacciones de Ethereum, y la capacidad de manejar eventos y
excepciones.

Tipos de datos en Solidity


Los tipos de datos en Solidity son utilizados para definir el formato y la estructura de
los valores que se utilizan en los contratos inteligentes. Algunos de los tipos de datos
más comunes en Solidity son:

● Enteros
○ Se utilizan para representar números enteros positivos o negativos. Hay
varios tipos de enteros dependiendo de la cantidad de bits que ocupan
en memoria, como uint8, int16, etc.
● Booleanos
○ representan un valor verdadero o falso y se denotan como bool.
● Cadenas de caracteres
○ Se utilizan para representar texto y se representan con el tipo de datos
string.
● Direcciones
○ Se utilizan para representar direcciones en la red Ethereum y se denotan
como address.
● Bytes y arreglos de bytes
○ Se utilizan para representar datos binarios y se denotan como bytes y
bytes32, respectivamente.

2
● Enumeraciones
○ Se utilizan para representar un conjunto limitado de valores y se definen
mediante el uso de la palabra clave enum.
● Estructuras
○ Se utilizan para agrupar varios valores relacionados en una sola entidad y
se definen mediante la palabra clave struct.

Además de estos tipos de datos básicos, Solidity también permite la creación de tipos
de datos compuestos y personalizados utilizando las características de abstracción del
lenguaje. Estos tipos de datos compuestos pueden incluir matrices, mapas y
contratos.

Ubicación en la memoria de Solidity


En Solidity, la ubicación de memoria se refiere al lugar donde se almacenan
temporalmente los datos durante la ejecución de una función. Para especificar la
ubicación de memoria de una variable, se utilizan los siguientes comandos:

1. memory: Este comando se usa para especificar que una variable se almacena en
memoria. Por ejemplo:

function example() public {

uint arraySize = 5;

uint[] memory myArray = new uint[](arraySize);

En este caso, la variable "myArray" se crea en memoria, lo que significa que se


almacena temporalmente en la RAM durante la ejecución de la función.

2. storage: Este comando se utiliza para especificar que una variable se almacena en el
almacenamiento permanente (storage) del contrato. Por defecto, todas las variables
de estado (state variables) se almacenan en el storage. Por ejemplo:

3
contract Example {

uint public myVariable;

function setVariable(uint newValue) public {

myVariable = newValue;

Es importante tener en cuenta la ubicación de memoria de las variables en Solidity, ya


que puede tener un impacto en el costo de ejecución de las funciones y en la
cantidad de gas requerido para realizar operaciones en el contrato. Además, utilizar la
ubicación correcta de memoria puede contribuir a una mejor eficiencia y seguridad
en el código.

Declaración de Contratos, Funciones y Eventos en Solidity


En Solidity, un contrato es una pieza central de la programación. Define un conjunto
de variables, funciones y eventos que se utilizan para construir una aplicación
descentralizada en la plataforma Ethereum.

Declaración de contrato
Para declarar un contrato en Solidity, utilizamos la palabra clave "contract" seguida del
nombre del contrato. Por ejemplo, la siguiente línea de código declara un contrato
llamado "MiContrato":

contract MiContrato {

Funciones
Las funciones en Solidity definen el comportamiento del contrato. Pueden ser
públicas, privadas o internas y pueden tener parámetros y valor de retorno. Las
funciones se definen dentro del contrato y se pueden llamar desde otros contratos o
desde fuera de la cadena de bloques. Por ejemplo, la siguiente función suma dos
números enteros y devuelve el resultado:

4
function sumar(uint a, uint b) public returns (uint) {

return a + b;

Eventos
Los eventos en Solidity permiten que los contratos se comuniquen con el exterior,
notificando sobre ciertas acciones o cambios en el estado del contrato. Los eventos se
definen utilizando la palabra clave "event" y pueden incluir parámetros opcionales. Por
ejemplo, el siguiente evento notifica cuando se realiza una transferencia de tokens:

event Transfer(address indexed from, address indexed to, uint tokens);

Este evento se puede disparar dentro de una función utilizando la palabra clave "emit".
Por ejemplo, si queremos notificar una transferencia desde la dirección "A" a la
dirección "B" con 10 tokens, podemos hacerlo de la siguiente manera:

emit Transfer(A, B, 10);

En resumen, en Solidity, declarar un contrato nos permite definir funciones y eventos


que determinan el comportamiento y la comunicación de dicho contrato en la red
Ethereum. Las funciones permiten realizar acciones y devolver resultados, mientras
que los eventos permiten notificar sobre acciones o cambios importantes en el
contrato.

Tipos de contratos ERC para NFT en Ethereum


Existen diferentes tipos de contratos ERC de Ethereum para NFT, que son tokens no
fungibles. Aquí hay algunos ejemplos:

1. ERC-721
a. Este contrato es uno de los más populares para crear tokens no
fungibles. Permite la creación y gestión de activos digitales individuales
únicos, como imágenes, videos, música, etc.
2. ERC-1155
a. Este contrato es más versátil ya que permite la creación de tokens
fungibles y no fungibles en un solo contrato. Esto significa que puedes
crear tanto tokens únicos como tokens intercambiables.

5
3. ERC-998
a. Este contrato permite la creación de tokens no fungibles que pueden
poseer otros tokens no fungibles. Es decir, puedes tener un NFT que
también contenga otros NFTs.

Estos son solo algunos ejemplos de los tipos de contratos ERC de Ethereum para NFT.
Cada uno tiene sus propias características y funcionalidades, por lo que es importante
comprender sus diferencias antes de elegir el contrato adecuado para tu proyecto de
NFT.

Herramientas para desarrollar Contratos con Solidity


Hardhat
Hardhat es una herramienta de desarrollo para crear contratos de Solidity utilizando
Node.js. Es una poderosa herramienta que te permite escribir, probar y desplegar
contratos inteligentes de forma eficiente y segura. Con Hardhat, puedes aprovechar
todas las capacidades de Node.js para construir y probar tus contratos de Solidity.
También ofrece una amplia gama de herramientas y utilidades integradas para
facilitar y agilizar el proceso de desarrollo. Con Hardhat, puedes estar seguro de que
tus contratos son sólidos y confiables antes de desplegarlos en la blockchain.

https://hardhat.org/

Remix Ethereum
Remix ethereum es una herramienta de desarrollo que permite desplegar y probar
contratos en la red de Ethereum. Remix es una interfaz en línea que facilita la
escritura, compilación y despliegue de contratos inteligentes en la red de Ethereum.
Con Remix, los desarrolladores pueden escribir sus contratos en Solidity, el lenguaje
de programación utilizado en Ethereum, y luego probarlos en un entorno de
desarrollo integrado antes de desplegarlos en la red principal de Ethereum. Remix
también ofrece funcionalidades adicionales como depuración de contratos,
despliegue de contratos en diferentes redes y análisis estático de código. En resumen,
Remix ethereum es una herramienta esencial para los desarrolladores que trabajan
con contratos inteligentes en la red de Ethereum.

https://remix.ethereum.org

6
Open Zeppelin
OpenZeppelin es una biblioteca de contratos inteligentes preestablecidos para la
plataforma Ethereum. Proporciona un conjunto de contratos estándar y seguros que
se pueden utilizar como base para el desarrollo de contratos inteligentes.

La biblioteca OpenZeppelin está diseñada para ayudar a los desarrolladores a


construir contratos inteligentes confiables y seguros al proporcionar bloques de
construcción predefinidos y bien probados. Estos contratos incluyen
implementaciones comunes como tokens ERC20, tokens ERC721, contratos de
recaudación de fondos (crowdsale), contratos de votación y muchos más.

Una de las principales ventajas de utilizar OpenZeppelin es que los contratos están
rigurosamente probados y auditados por expertos en seguridad de contratos
inteligentes. Esto ayuda a mitigar los riesgos de errores y vulnerabilidades en los
contratos y proporciona una mayor confianza a los desarrolladores y usuarios.

https://www.openzeppelin.com/contracts

Infura
Infura es una plataforma que ofrece servicios de infraestructura para redes de
Ethereum. Proporciona a los desarrolladores y usuarios de Ethereum acceso rápido y
confiable a la red sin necesidad de ejecutar su propio nodo completo. Infura
administra una red de nodos descentralizados que se encargan de procesar las
transacciones y almacenar los datos de Ethereum. Esto permite a los desarrolladores
crear aplicaciones descentralizadas (dApps) y interactuar con la red de Ethereum de
manera eficiente. Infura también ofrece herramientas y servicios adicionales para
facilitar el desarrollo y la implementación de aplicaciones en la red de Ethereum. En
resumen, Infura es una solución confiable y conveniente para aquellos que desean
aprovechar los beneficios de Ethereum sin la necesidad de gestionar una
infraestructura completa.

https://app.infura.io/

7
Pinata Cloud
La piñata Cloud es una aplicación de almacenamiento descentralizado utilizando IPFS
(InterPlanetary File System). Con Piñata Cloud, puedes almacenar y recuperar tus
archivos de forma segura y eficiente utilizando la tecnología IPFS.

IPFS es un sistema de archivos peer-to-peer que utiliza una red distribuida de nodos
para almacenar y distribuir contenido de forma descentralizada. En lugar de
depender de un único servidor centralizado, IPFS permite que los archivos se
almacenen en múltiples nodos, lo que los hace más seguros y menos propensos a
perderse o dañarse.

Con Piñata Cloud, puedes subir tus archivos a la red IPFS y acceder a ellos desde
cualquier lugar y en cualquier momento. Tienes la tranquilidad de que tus archivos
estarán seguros y disponibles en todo momento, incluso en caso de que uno de los
nodos falle o se caiga.

Además, Piñata Cloud ofrece funciones avanzadas como la compartición de archivos,


lo que te permite compartir tus archivos con otras personas de forma fácil y segura.
También puedes realizar copias de seguridad automáticas de tus archivos para
mantenerlos protegidos en todo momento.

https://www.pinata.cloud/

Etherscan
Etherscan es una plataforma en línea que proporciona información y servicios
relacionados con la blockchain de Ethereum. Es una herramienta muy útil para
aquellos que quieren explorar y analizar la red de Ethereum.

Con Etherscan, puedes buscar direcciones de Ethereum y obtener información


detallada como el balance de la cuenta, historial de transacciones y tokens creados
por esa dirección. También puedes explorar bloques y transacciones en tiempo real,
así como consultar información sobre contratos inteligentes desplegados en la red.

Una de las características más destacadas de Etherscan es su capacidad para


proporcionar información sobre los contratos inteligentes y sus funciones. Puedes ver
el código fuente de un contrato, así como explorar las funciones y eventos asociados a
él. Esto es especialmente útil para aquellos que desean analizar contratos inteligentes
antes de interactuar con ellos.

8
Además de la información básica, Etherscan también ofrece herramientas avanzadas
como la capacidad de rastrear los tokens ERC-20 y ERC-721, explorar el estado de la
red, buscar y verificar transacciones, y mucho más.

https://etherscan.io/

Sepolia Faucet
Sepolia Faucet de Ethereum es un servicio que brinda la oportunidad de obtener
pequeñas cantidades de Ethereum de forma gratuita. Este servicio se utiliza
principalmente para familiarizarse con la criptomoneda Ethereum y su
funcionamiento.

Para utilizar el faucet, es necesario tener una billetera Ethereum válida. La billetera es
donde se almacenarán los Ethereum que se obtengan a través del faucet. Una vez
que se tiene una billetera Ethereum, se deben seguir los siguientes pasos para utilizar
Sepolia Faucet:

1. Ingresar al sitio web de Sepolia Faucet.

2. Introducir la dirección de la billetera Ethereum.

3. Resolver un captcha u otro tipo de verificación para demostrar que no eres un robot.

4. Hacer clic en el botón para reclamar los Ethereum gratuitos.

5. Esperar unos minutos para que la transacción se confirme en la red Ethereum.

6. Verificar la billetera para confirmar que los Ethereum se han recibido


correctamente.

Es importante destacar que Sepolia Faucet tiene un límite diario para reclamar
Ethereum gratuito. Una vez alcanzado este límite, no se podrá reclamar más
Ethereum hasta el día siguiente. Además, es posible encontrar faucets de Ethereum
fraudulentos que intentan robar información personal o estafar a los usuarios. Por lo
tanto, es necesario tener precaución y utilizar solo faucets confiables.

https://sepolia-faucet.pk910.de/

9
Unidades de medida en Ethereum
En Ethereum, las unidades de medida son utilizadas para determinar el valor y la
cantidad de diferentes activos digitales en la red. A continuación, se describen las
principales unidades de medida utilizadas en Ethereum:

1. Wei
a. Es la unidad más pequeña de medida en Ethereum. Un Wei es
equivalente a 10^-18 Ether (ETH). Esta unidad se utiliza generalmente
para calcular transacciones de pequeña escala o para medir el costo de
las operaciones en la red.

2. Gwei
a. Es una unidad más comúnmente utilizada en Ethereum. Un Gwei es
equivalente a 10^9 Wei, o 0.000000001 Ether. Esta medida se utiliza
principalmente para establecer tarifas de transacción y calcular el costo
de ejecutar contratos inteligentes en la red.

3. Ether (ETH)
a. Es la unidad principal de medida en Ethereum. 1 Ether es equivalente a
10^18 Wei. El Ether se utiliza como la moneda base en la red Ethereum y
se utiliza para transferir valor económico entre diferentes direcciones.
4. Szabo:
a. Es una unidad menos conocida en Ethereum. Un Szabo es equivalente a
10^12 Wei, o 0.000001 Ether. Esta unidad puede ser utilizada para medir
pequeñas cantidades de Ether en operaciones de baja escala.
5. Finney:
a. Es una unidad aún menos utilizada en Ethereum. Un Finney es
equivalente a 10^15 Wei, o 0.001 Ether. Esta medida se utiliza
principalmente para realizar pruebas y experimentos en la red.

Estas unidades de medida son utilizadas para representar diferentes magnitudes de


valor en Ethereum y permiten a los usuarios realizar transacciones y calcular costos
precisos en la red. Es importante comprender estas unidades al realizar cualquier
operación en Ethereum para evitar errores y asegurar que los cálculos sean precisos.

10

También podría gustarte