El objetivo de esta sección es dar a conocer cuáles son las herramientas a utilizar para desplegar correctamente un NFT en la red de Polygon
En el capítulo anterior se dio una introducción teórica a la blockchain y las criptomonedas, haciendo un énfasis en como funciona la blockchain, que es la web 3.0, que son las criptomonedas y la tecnología/plataforma que permite realizar miles de millones de transacciones en las redes de una forma segura. Todo aquél que se desee involucrarse en el desarrollo y uso de estas nuevas tecnologías debe al menos conocer estos conceptos básicos antes de entrar de lleno en la construcción de aplicaciones descentralizadas basadas en blockchain.
Herramientas a utilizar para el desarrollo del smart contract:
VS Code será utilizado para modificar el código del smart contract que luego será copiado en el IDE Remix de Ethereum lugar donde es posible desarrollar y lanzar el smart contract, es una herramienta sencilla pero poderosa.
Toda vez que tengamos instalado VS Code debemos descargar el template de nuestro smart contract desde la siguiente URL: https://github.com/HashLips/hashlips_nft_contract, guardarlo en nuestro PC y abrir la carpeta usando VS Code
Dentro del directorio “contract” solo modificaremos el archivo llamado SimpleNft_flat.sol y dentro de el solo algunas líneas de código. El objetivo de este tutorial no es acerca del desarrollo en profundidad de contratos inteligentes usando Ethereum, por lo que recomiendo darse una vuelta por el sitio de desarrollo de Ethereum: https://ethereum.org/en/developers/docs/smart-contracts para mayores detalles.
Cualquiera puede escribir un contrato inteligente e implementarlo en la red. Solo necesita aprender a codificar en un lenguaje de contrato inteligente (por ejemplo Solidity) y tener suficiente ETH (u otra criptomoneda) para implementar el contrato. La implementación de un contrato inteligente es técnicamente una transacción, por lo que debe pagar Gas de la misma manera que debe pagar Gas por una simple transferencia de ETH. Sin embargo, los costos de gas para el despliegue del contrato son mucho más altos.
Solidity en la práctica no se diferencia mucho de lenguajes de programación como Java u otro orientado a objetos:
Volviendo a nuestro proyecto
Las líneas de código que debemos modificar en nuestro contrato son las siguientes:
Antes de cambiarlas vamos a preparar nuestro entorno en el Remix de Ethereum: https://remix.ethereum.org/
Lo primero que haremos será crear un espacio de trabajo nuevo, para ello solo debemos dar click sobre el botón + y darle un nuevo nombre:
Borramos los contratos por defecto que nos crea (1, 2 y 3) dando click derecho y delete:
Toda vez que se hayan borrado los archivos por defecto vamos a crear un nuevo archivo con la extensión sol (Solidity), en mi caso el nombre que le he puesto es:
En el archivo nuevo que hemos creado copiaremos el contenido del smart contract que habíamos abierto en VS Code, por lo que copiamos, pegamos todo y ubicamos las líneas a modificar:
Procedemos a cambiarle el nombre a nuestro contrato (usando el mismo nombre del archivo):
Ahora lo que debemos indicar es cuánto va a costar cada NFT que hayamos creado. El costo que se especifica en esta parte es para ambas redes: Ethereum y Polygon. En el ejemplo si el contrato lo despliego sobre la red de Ethereum el costo de cada NFT será de 0.05 ETH, que a fecha de HOY 25/01/2023 serían:
En el caso de desplegarse sobre la red de Polygon el costo de cada NFT sería de 0.05 MATIC, que a fecha de HOY 25/01/2023 serían:
Para el caso de este tutorial vamos a dejar el valor de venta de cada NFT en 0.03
En el parámetro maxSupply debemos indicar cuantos NFT queremos vender, para el caso de este tutorial el valor lo dejaremos en 10.
En el parámetro maxMintAmount debemos indicar cuantos minteos podemos hacer por vez. Básicamente lo que implica es que se añade la información del NFT en la blockchain, eso es mintear. En nuestro caso como estamos vendiendo un máximo de 10 NFT, este parámetro lo dejaremos en 2. En estricto rigor este dependerá de que tan grande es la colección que queramos vender.
El parámetro paused por defecto está en false, lo que significa que cuando se implemente se iniciará automáticamente. Mientras el contracto esté pauseado nadie podrá mintear ningún NFT.
El parámetro revealed es una novedad de los contratos, quienes hayan interactuado comprando otros NFT se habrán dado cuenta en algunos casos que el NFT no se revela hasta que el autor de dicho lo indique, esto significa que es un “misterio”. Está básicamente relacionado con las rarezas del NFT. Por defecto vamos a dejar este parámetro en true.
Compilando nuestro contrato
En la sección izquierda del NFT debemos configurar nuestro compilador del siguiente modo:
La versión del compilador es la 0.8.7, marcamos la opción “auto compile” (no requiere mayores explicaciones), el lenguaje es Solidity y marcamos la opción “Enable optimization”. Al marcar la opción auto compile el compilador inmediatamente comienza a compilar nuestro código y nos marca con un ícono verde que todo está correcto.
Deploy del contrato
En la misma sección de la izquierda debemos dar click sobre “deploy & run transactions”. Para efectos de prueba de nuestro contrato vamos a configurar la billetera de Metamask en Google Chrome en la red de testing de Polygon, a continuación les tejo un tutorial para hacerlo:
Toda vez que tengan configurado Metamask en su navegador debemos agregar la red de Polygon Testnet (red de prueba de Polygon), para esto en la configuración de Metamask agregamos una nueva red utilizando los datos proporcionados acá:
Network Name: Matic Mumbai
New RPC URL: https://rpc-mumbai.maticvigil.com/
Chain ID: 80001
Currency Symbol: MATIC
Block Explorer URL: https://mumbai.polygonscan.com/
Una opción más sencilla de agregar la red a Metamask es a través del sitio chainlist.org, simplemente buscan en la lista la red (en este caso polygon), ubican la red Mumbai y presionan el botón Add to Metamask, así de fácil:
Por defecto cuando agregan la red Mumbai de Polygon no deberían tener fondos (MATIC) y estos son necesarios para implementar el contrato. Por suerte no necesitamos gastar 1 dólar para hacer esto porque las redes de prueba tienen sitios donde podemos cargar dinero ficticio a nuestra billetera, estos sitios se conocen por el nombre de “faucets”. El sitio en cuestión es https://faucet.polygon.technology/. Para hacerlo abren el sitio, copian la dirección de la billetera de la red Mumbai y la pegan en la sección que corresponda del sitio:
Si les falla la red es porque probablemente esté colapsada, pueden usar esta otra: https://mumbaifaucet.com/
Ahora podemos volver al deploy de nuestro contrato!
Volviendo a nuestro proyecto en Remix en la sección izquierda nos vamos a Deploy y en la sección ENVIRONMENT seleccionamos: Injected Provider para que las pruebas se realicen con Metamask, al hacerlo te llevará automáticamente a la web de Metamask y la dirección de la cuenta deberá aparecer en Remix de la siguiente forma:
En la sección CONTRACT debemos seleccionar el contrato creado y en las opciones del contracto ponemos:
_NAME: JuanjoBlogSM (o el nombre que le diste a tu contrato)
_SYMBOL: JBSM (corresponde al token de tu contrato, por ejemplo el de Bitcoin es BTC)
Luego de esto damos click en el botón transact y nos llevará a la página de Metamask para que firmemos la transacción de creación del contrato, luego en la consola de Remix nos muestra que el contrato se está creando:
Y la actividad también podemos consultarla en Metamask:
También podemos revisar esta información en detalle en el explorador de la blockchain:
Más abajo en la sección deploy de Remix nos aparecen opciones para trabajar con nuestro contrato:
Las opciones en naranjo tiene un costo asociado, las de color azul son de consulta y no tienen ningún costo. Por ejemplo podemos consultarle a la blockchain quien es el dueño del contrato:
O el máximo de NFT que posee el contrato:
En resumen, nuestro contrato ya está desplegado, funcionando y respondiendo a las consultas básicas. Para hacerlo un poco más entretenido agreguemos el Token a nuestro Metamask. Lo primero que debemos obtener es la dirección de nuestro contrato en la blockchain de Mumbai Polygon:
Con este dato copiado vamos a metamask y en la sección importar token agregamos los datos:
Una vez importado el token lo vemos en Metamask:
Minteamos 1 transacción desde el smartcontract:
Y la confirmamos en Metamask:
La consola nos indica que todo fue correcto:
Podemos confirmar en metamask la transacción:
¿Un poco largo no? espero haber detallado al máximo como ir creando y testear nuestro smart contract. Para resumir un poco me gustaría que revisáramos las posibles aplicaciones de esto en el mundo real (fuera del mundo de las criptomonedas).
Contratos legales
Estos contratos pueden simplificar los procesos legales y garantizar el cumplimiento estricto de las pautas regulatorias. Son aplicables para contratos críticos financieros, de comercio internacional y del mercado inmobiliario. El marco legal actual carece de suficiente contexto y soporte para contratos automatizados en Blockchain. Sin embargo, una vez que las leyes estén vigentes, será más fácil usarlas.
Organismos autónomos descentralizados (DAO)
Estos son contratos construidos para comunidades de blockchain. Los participantes de estas comunidades acatan el conjunto de reglas establecidas en el código del contrato. Las plataformas de crowdfunding, por ejemplo, usan DAO. Muchos contratos inteligentes crean reglas y funcionan para vigilar y supervisar a los participantes de manera efectiva. Esto asegura un mayor apoyo entre todas las partes.
Contratos de lógica de aplicación (ALC)
Si alguna vez ha oído hablar de Internet de las cosas (IoT) en relación con Blockchain, es probable que se haya encontrado con Contratos de lógica de aplicación o ALC. Estos contratos son códigos específicos de la aplicación que funcionan en conjunto con otros programas en Blockchain.
Ayudan a establecer y validar la comunicación entre dispositivos IoT. Los ALC constituyen una pieza vital de cada contrato inteligente y funcionan principalmente bajo un programa de gestión.
Servicios financieros
Los contratos inteligentes están en camino de cambiar la forma y la velocidad a la que se hacen negocios en todos los sectores. La industria de servicios financieros tampoco es una excepción. Los contratos inteligentes pueden ser útiles para los siguientes procesos en bancos e instituciones financieras.
Procesamiento sin errores de reclamaciones de seguros
Evaluar la legitimidad de un reclamo de seguro es un proceso tedioso. Contrarrestar los términos de un contrato manual y validar el reclamo lleva mucho tiempo. Los contratos inteligentes impulsados por blockchain ofrecen procesamiento automatizado de reclamos de seguros a la industria bancaria.
Los contratos inteligentes permiten la presentación fácil de reclamos y la validación automática a través de los libros de contabilidad descentralizados de la red blockchain. Reduce el riesgo de compensación por reclamaciones fraudulentas por parte de la entidad financiera.
Costos de transacción reducidos
Las transacciones regidas por contratos inteligentes son autorreguladas. Esto facilita el mantenimiento de registros de bajo costo y reduce la intervención manual, lo que reduce considerablemente los costos de transacción a largo plazo.
Auditoría transparente
El mantenimiento de registros es esencial para facilitar las auditorías. Los contratos tradicionales implican mucho papeleo y los bancos tienen que invertir recursos para gestionarlos. Los contratos inteligentes basados en blockchain admiten herramientas de contabilidad avanzadas.
Estos se basan en códigos incorruptibles y distribuidos en la red Blockchain. Las soluciones mejoran la transparencia de los registros almacenados al tiempo que eliminan cualquier posibilidad de infiltración.
Mayor velocidad
La automatización de tareas manuales a través de códigos de software ayuda a reducir los tiempos de transacción. Ayuda a acelerar las operaciones bancarias al reducir los procesos manuales innecesarios.
Procesos KYC simplificados
KYC es una función crucial en la industria de servicios financieros. Los bancos y las Instituciones Financieras verifican la identidad del cliente antes de ofrecer un préstamo o realizar otras transacciones con una persona. Un sistema de contrato inteligente facilita el proceso para los bancos.
Pueden verificar los puntajes de crédito de las personas y las identidades en función de los registros de Blockchain. Los requisitos de cumplimiento relacionados, como las declaraciones de impuestos, también se procesan en tiempo real, un soporte fantástico para las empresas de contabilidad.
Artículo de Deloitte: https://www2.deloitte.com/content/dam/Deloitte/de/Documents/finance-transformation/CFO-Insights-Getting-smart-about-smart-contracts.pdf
Nos vemos en la próxima entrega
Juan José González F. es un consultor independiente de la empresa I2J Consultoría IT y actualmente me dedico a prestar servicios a empresas de software u otras que deseen mejorar sus sistemas desde la perspectiva de la arquitectura de plataformas o software. Poniendo foco en la integración de sistemas que requieran de una alta disponibilidad y escalabilidad principalmente utilizando tecnologías en la nube como Amazon AWS. Me apasionan las nuevas tecnologías.