INSTITUTO TECNOLOGICO DE
VERACRUZ
ASIGNATURA:
BLOCKCHAIN EN TRANSACCIONES COMPUTACIONALES
PRODUCTO ACADEMICO:
Práctica 1: Conexión de 3 nodos
Práctica 2: Transferencias de ETH en Metamask
DOCENTE:
LIZBETH SANCHEZ FERRER
INTEGRANTES:
No. de Nombre completo
Control
E190203 MORALES FLORES JOSE MANUEL
22
E190203 GARCIA GONZALEZ KEVIN ALDAIR
09
SEMESTRE:
11º
GRUPO:
9J10A
ÍNDIC
E
Práctica 1: Conexión de tres nodos…………………………………………………………...
Creación de nodos………………………………………………………….........................
Iniciación de los nodos………………………………………………………….................
Enlace de los nodos…………………………………………………………....................
Minado…………………………………………………………...……………………………
Práctica 2: Transferencias de ETH en Metamask………………………………………..
transferencias entre distintas redes……………………...……………………………
Introducción: Ethereum es una de las plataformas blockchain más utilizadas actualmente, y Solidity
es el lenguaje de programación que se utiliza para desarrollar contratos inteligentes en esta
plataforma. Para poder crear y probar nuestros contratos inteligentes, necesitamos configurar un
entorno de desarrollo.
Para ello:
1. Creación y modificación de nuestro contrato inteligente:
2. Instalar un Navegador de Ethereum: El primer paso para configurar un entorno de
desarrollo de Ethereum es instalar un navegador de Ethereum. Los navegadores de
Ethereum nos permiten conectarnos a la red Ethereum, y así poder interactuar con los
contratos inteligentes. Hay varios navegadores de Ethereum disponibles, pero en nuestro
caso utilizaremos MetaMask .
3. Instalar [Link] y npm: [Link] es un entorno de tiempo de ejecución de JavaScript que
nos permite ejecutar código JavaScript en el lado del servidor. npm es el gestor de
paquetes de [Link]. Necesitaremos [Link] y npm para instalar y usar herramientas de
desarrollo de Ethereum como Truffle y Ganache.
4. Instalar Truffle: Truffle es una de las herramientas de desarrollo más utilizadas en
Ethereum. Nos permite crear, compilar y migrar contratos inteligentes, así como probarlos
y depurarlos. Para instalar Truffle, abrimos una terminal y escribimos el siguiente
comando: npm install -g truffle
5. Instalar Ganache: Ganache es un simulador de red Ethereum que nos permite crear una
red Ethereum local en nuestro equipo. Esta red local nos permitirá desarrollar y probar
nuestros contratos inteligentes sin tener que pagar las tarifas de transacción de la red
Ethereum real. Para instalar Ganache, podemos descargarlo desde su sitio web oficial.
Creación y modificación de nuestro contrato inteligente:
En este paso como se menciono anteriormente fue un contrato previamente realizado por otro autor
que lo compartió públicamente, nuestra tarea fue realizar modificaciones a ese contrato tomándolo
como base.
ESPECIFICACIONES CONTRATO ORIGINAL
Este es un contrato Solidity que implementa el estándar ERC20 para tokens. Aquí está su estructura y
funcionalidad:
Directiva Pragma: Especifica la versión del compilador con la que se debe compilar el código.
Importaciones: Las declaraciones de importación traen código de otros archivos Solidity. Aquí, importa
interfaces y utilidades de OpenZeppelin Contracts.
Declaración del Contrato: El contrato ERC20 se declara como abstracto, lo que significa que no se
puede instanciar directamente. Implementa las interfaces IERC20, IERC20Metadata e IERC20Errors.
Variables de Estado: Los mapeos privados _balances y _allowances almacenan los saldos de cuentas y
las asignaciones para gastar, respectivamente. _totalSupply contiene el suministro total de tokens. _name
y _symbol contienen el nombre y el símbolo del token.
Constructor: Inicializa el nombre y el símbolo del token.
Funciones Públicas de Vista:
name() y symbol(): Devuelven el nombre y el símbolo del token.
decimals(): Devuelve el número de decimales utilizado para fines de visualización.
totalSupply(): Devuelve el suministro total de tokens.
balanceOf(): Devuelve el saldo de tokens de una dirección dada.
allowance(): Devuelve la cantidad de tokens que un propietario ha permitido a un gastador gastar en su
nombre.
Funciones Externas:
transfer(): Transfiere tokens desde la cuenta del llamador a una dirección especificada.
approve(): Permite a un gastador gastar tokens en nombre del llamador.
transferFrom(): Transfiere tokens de una dirección a otra, con la aprobación del propietario del token.
Funciones Internas:
_transfer(): Mueve tokens de una cuenta a otra.
_update(): Actualiza los saldos de tokens y el suministro total después de las transferencias.
_mint(): Crea nuevos tokens y los asigna a una cuenta.
_burn(): Destruye tokens de una cuenta.
_approve(): Establece la asignación para un gastador.
_spendAllowance(): Actualiza la asignación basada en el valor gastado durante transferFrom().
Modificadores: No hay modificadores en este contrato.
Este contrato proporciona una implementación básica de un token ERC20 con funcionalidades para
transferencias, aprobaciones y gestión de asignaciones.
Para modificar el primer contrato y hacerlo un contrato de gestión de inventario y tickets, podemos
centrarnos en las siguientes partes que fueron ajustadas o agregadas:
Estructuras de datos:
Cambiar la estructura de datos User para que incluya un id, name y email.
Agregar una nueva estructura de datos Item para representar los elementos del inventario. Esta
estructura podría incluir campos como id, model, brand, category, price y quantity.
Agregar una nueva estructura de datos Ticket para representar los tickets de compra. Esta estructura
podría incluir campos como id, userId, itemId, amount y totalPrice.
Funciones:
Agregar funciones para crear usuarios (createUser), crear elementos en el inventario (createItem) y
comprar elementos (buyItem).
Modificar las funciones de consulta existentes para que devuelvan información sobre usuarios,
elementos y tickets de compra.
Eventos:
Agregar eventos para notificar sobre la creación de usuarios, la creación de elementos en el
inventario y la compra de elementos.
Variables de estado:
Agregar contadores para llevar un seguimiento de la cantidad de usuarios, elementos e tickets
creados.
El primer contrato ERC20 fue la base para el desarrollo del segundo contrato de gestión de
inventario y tickets en la cadena de bloques, :
Concepto de estructuras de datos y funciones de interacción: El contrato ERC20 proporciona
una base sólida en términos de cómo estructurar datos y funciones para interactuar con ellos en la
cadena de bloques. Esta estructura podría haber sido adaptada y extendida para satisfacer las
necesidades específicas del contrato de gestión de inventario y tickets.
Manejo de balances y transacciones: El contrato ERC20 tiene funciones para transferir tokens
entre cuentas y verificar los saldos de los usuarios. Estas funciones podrían haber sido una
inspiración para el manejo de transacciones y balances de usuarios en el contrato de gestión de
inventario y tickets.
Uso de eventos: El uso de eventos para notificar sobre ciertas acciones en la cadena de bloques es
una práctica común en contratos inteligentes. El contrato ERC20 emite eventos para notificar sobre
transferencias de tokens, y esta práctica podría haber sido adoptada en el contrato de gestión de
inventario y tickets para notificar sobre eventos relevantes, como la creación de nuevos elementos
en el inventario o la compra de tickets.
1. Antes de comenzar el despliegue de nuestro contrato tendremos que crear una cuenta en
MetaMask y vincularla con Ganache
Entramos a la parte de configuración de
MetaMask, en el apartado de redes
Para configurar una nueva red que se
vinculara con nuestro ganache, nos pedirá
cierta información que la obtendremos de
nuestra cuenta Ganache, este obtendrá los
ETH desde esa cuenta.
Crearemos una nueva cuenta en la cual se importará una cuenta de ganache dentro de la
red previamente creada y vinculada con Ganache para ello:
Nos dirigimos a la parte de cuentas
y seleccionamos nos presentara
una ventana como la siguiente:
En esta parte hay
que tener cuidado
ya que vamos a
importar una cuenta
no crearla
Seleccionamos agregar cuenta 4
Compilar el contrato previamente realizado y modificado en remix como archivo .sol
Entorno grafico del contrato
1. Configurar el entorno de desarrollo: Una vez que hemos instalado todas las herramientas,
podemos empezar a configurar nuestro entorno de desarrollo. Primero, creamos un
nuevo directorio para nuestro proyecto. Luego, abrimos una terminal en ese directorio y
ejecutamos el siguiente comando:
2. truffle init
Este comando creará la estructura básica de un proyecto de Truffle, que incluye una carpeta de
contratos, una carpeta de migraciones y un archivo de configuración [Link].
1. Desarrollar y probar contratos inteligentes: Ahora que nuestro entorno de desarrollo está
configurado, podemos empezar a desarrollar y probar nuestros contratos inteligentes.
Podemos escribir nuestros contratos en Solidity y guardarlos en la carpeta de contratos.
Luego, podemos compilarlos y migrarlos a nuestra red local de Ganache. Una vez que
hemos migrado nuestros contratos, podemos interactuar con ellos utilizando Truffle
Console.
Conclusión: Configurar un entorno de desarrollo de Ethereum con Solidity puede parecer un proceso
complicado al principio, pero una vez que lo hemos configurado, podemos desarrollar y probar
nuestros contratos inteligentes de manera fácil y eficiente. Esperamos que este post te haya sido de
ayuda para empezar a desarrollar tus propios contratos inteligentes en Ethereum. ¡Feliz desarrollo!