¿Te imaginas tener un generador de autobots en formato Smart Contracts? Este es el primer artículo, enriqueciendo nuestro generador de Autobots, pudiendo identificar quien los ha creado.
Los transformer vivían en Cybertron (nombre del fichero donde tenemos los Smart Contracts), y dentro de este tenemos a nuestro generador sencillo, donde nuestros transformer podrán crear dinámicamente autobots.
Para ello vamos a añadir a nuestro IDE Remix, este código (copia del proyecto en Github o Gist).
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract transformers { // Almacenamiento de la informacion de la fábrica de autobots (Factory) mapping (address => address) public personal_contract; // Emision de los nuevos autobots (smart contracts) function Factory() public { address addr_personal_contract = address(new autobot(msg.sender, address(this))); personal_contract[msg.sender] = addr_personal_contract; } } contract autobot { // Estructura de datos del propietario Owner public prime_creador_de_autobots; struct Owner { address _owner; address _smartcontractPadre; } // Datos recibido al nuevo Smart Contract constructor (address _account, address _accountSC){ prime_creador_de_autobots._owner = _account; prime_creador_de_autobots._smartcontractPadre = _accountSC; } }
Como podéis comprobar en el código de Solidity, los puntos importantes que deberéis tener en cuenta:
- Versión de Solidity: ^0.8.4
- Contracts: las instancias de nuestros smart contracts
- Mapping: tipo de variable, más información youtube
- Structs: tipo de estructura de datos
- Public: para poder hacer uso cuando se despliegue en smart contract
- New: si habéis trabajado con objectos, sería para dar de alta una instancia de ese objeto
En el proyecto, podremos apreciar que tenemos dos contracts, uno que destinaremos a crear los autobots, y el otro, que será la base que iremos generando. En siguientes artículos, enriqueceremos los autobots, para que podamos posteriormente, añadirle nombre, colores, habilidades, etc.
Las partes más importantes de este proyecto, será el mapping, que nos ayudará a tener centralizado quien ha creado el autobot y el autobot dado de alta. Y el otro punto, sería la función Factory, que será la encargada de ir enriqueciendo el mapping, con los diferentes propietarios y autobots.
Uso Funcional
Ahora vamos a ver paso a paso, el uso de estos Smart Contracts usando Remix.
En primera fase, vamos a compilar nuestro fichero. Para ello, nos iremos a la tercera opción del menú de la izquierda y pulsaremos compilar.
Una vez compilado, iremos a la cuarta opción del menú. Allí, seleccionaremos el Contract de transformers y lo desplegaremos con el botón naranja, que pone deploy.
Teniendo ya nuestro contract desplegado, nos aparecerá en contracts desplegados. Allí tendremos que pulsar el botón Factory, donde nos generará una address con nuestro nuevo autobot. En las siguientes versiones, solicitaremos un nombre para el autobot, además del hash generado. Luego, tendremos que copiar nuestro código de Owner y ponerlo en la otra opción del contract, para pulsar el botón de personal_contract, para que nos dé el código del nuevo autobot.
Ahora, deberemos copiar ese nuevo código, cambiarnos al contract de autobot y el el botón que pone At Address, añadir nuestro código de autobot, para localizarlo, dado que ya esta desplegado. De esta forma, nos aparecerá en la sección de Deployed Contracts.
Además, si ampliamos nuestro autobot, y pulsamos en el botón de prime_creador, podremos ver el hash del propietario de dicho autobot.