ETH Kipu
  • Ethereum Developer Pack
  • Módulo 1
    • Intro a Smart Contracts
      • Fundamentos de Blockchain
        • Antecedentes
        • Bitcoin
        • Qué es Blockchain
        • Conceptos Clave en Blockchain
        • Cómo funciona la Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • El nuevo Internet
        • Web 3
        • Elementos Fundamentales
        • Impacto de Ethereum en Diversos Sectores
      • Wallets
        • Componentes de una wallet
        • Tipos de Wallet
        • Códigos mnemónicos
      • Ethereum 101
        • Smart Contracts
        • Cuentas
          • Tipos de cuentas
          • Contenido de cuentas
        • Transacciones
          • Componentes
          • Ciclo de vida
        • Gas
        • Solidity
        • EVM
          • La máquina de estados
          • Opcodes
          • Cómo funciona la EVM
          • Clientes de ejecución
          • DApps
      • Blockchain Explorer
        • Funciones de un blockchain explorer
        • Beneficios de utilizar un blockchain explorer
      • Remix
        • Características de Remix
        • Workspaces o espacios de trabajo
        • Cargar y compilar un contrato
        • Desplegar en la máquina virtual de Remix (Remix VM)
        • Interactuando con funciones
        • Desplegar en una red pública
      • Crea tu primer Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Datos
      • Funciones
      • Variables
        • Ejercicio 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Ejercicio 3
      • Convenciones de nomenclatura
      • Tipos de almacenamiento para variables
      • Estructuras de Control
        • Ejercicio 4
      • Modificadores
      • Eventos
        • Ejercicio 5
      • Tipos de Referencia
        • Arrays
          • Ejercicio 6
        • Mappings
          • Ejercicio 7
        • Structs
          • Ejercicio 8
      • Address Payable
      • Cómo reciben Ether los contratos y funciones
      • Transferencias de Ether
      • Conceptos Avanzados
        • Codificación ABI
        • Hashing
        • This
        • Herencia
        • Abstract
        • Interface
        • Llamadas entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • Estándares, Librerías y Patrones
      • Buenas Prácticas de Diseño
      • Patrones de Diseño
      • EIP y ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crea un Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Toolkit para desarrollo en Ethereum
      • Requisitos para el módulo 4
        • Terminal
        • Git y Github
        • Node.js y npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Ejercicio
        • Hardhat
          • Despliegue de un contrato en Hardhat
          • Despliegue de un contrato en una red pública
        • Scaffold-ETH
          • Características
          • Cómo instalar Scaffold-ETH
  • Módulo 5
    • Seguridad, Pruebas y Auditoría
      • Pruebas
        • Importancia de realizar pruebas
        • Métodos para probar contratos inteligentes
          • Pruebas automatizadas
          • Pruebas manuales
        • Conceptos importantes en testing
        • Herramientas para testing
        • Testing con Hardhat
        • Recursos adicionales
      • Seguridad
        • Una mentalidad distinta de diseño
        • Principales vulnerabilidades en smart contracts
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Ruptura de invariantes)
          • Mishandling of ETH (Mal manejo de ETH)
          • Denial of Service (DoS - Denegación de Servicio)
          • Integer overflow and underflow (desbordamiento y subdesbordamiento de enteros)
          • Phishing y Typosquatting
        • Recursos adicionales
      • Auditoría de smart contracts
        • Proceso de Auditoría
        • Herramientas
        • Cómo prepararse para una auditoría
        • El test Rekt
        • Retos
        • Recursos adicionales
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page

Was this helpful?

  1. Módulo 1
  2. Intro a Smart Contracts

Crea tu primer Smart Contract

En esta parte final de este primer módulo vamos a crear un contrato inteligente y desplegarlo en una red de prueba (testnet) de Ethereum, como Sepolia.

El contrato que desplegaremos es Register01.sol:

// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.26;

contract Register01 {
    string private storedInfo;

    function setInfo(string memory myInfo) external {
        storedInfo = myInfo;
    }

    function getInfo() external view returns (string memory) {
        return storedInfo;
    }
}

Veamos lo que hace Register01.sol:

Este contrato simple permite almacenar y recuperar información de texto. La función setInfo se utiliza para modificar la información almacenada, mientras que la función getInfo se utiliza para consultar la información actual sin realizar cambios en el estado del contrato.

  • Versión del Compilador Solidity Utilizada: 0.8.26. En Solidity se utiliza la keyword pragma para declarar la versión de compilador que se debe utilizar para ejecutar el contrato.

  • Licencia: GPL-3.0

  • Variables de Estado:

    • storedInfo: Variable privada que almacena información de tipo string (texto).

  • Funciones:

    • setInfo (Función de Transacción Externa): Actualiza el valor de storedInfo con la información proporcionada como argumento.

      • Parámetros: myInfo, el texto a cargar en storedInfo.

    • getInfo (Función de Consulta Externa): Devuelve el valor actual de storedInfo sin modificar el estado del contrato.

      • Parámetros: Ninguno

Llevemos el código del contrato a Remix.

El check verde al lado del ícono del compilador nos indica que se compiló correctamente. Podemos proceder a desplegarlo.

Debemos asegurarnos de:

  • Tener nuestra wallet conectada a Sepolia,

  • Haber seleccionado en Environment la opción Injected Provider-Metamask,

  • Tener suficiente ETH en Sepolia y

  • Verificar que el contrato a desplegar es el correcto.

Ahora sí procedamos a desplegar.

Aprobemos la transacción en nuestra wallet.

El contrato ha sido desplegado y se le ha asignado una cuenta de contrato (contract account) en Sepolia. Haciendo clic en el ícono de copiar del gráfico anterior podemos obtener esta cuenta.

En el ejemplo es: 0x94A6985da19A3eA8A1182FA24791069365CAB79f

Ingresamos la cuenta en el campo de búsqueda de Sepolia

Podemos confimar que se ha creado una cuenta de contrato desde nuestra EOA en Sepolia.

Si vamos a la pestaña Contract podemos visualizar el bytecode que se ha desplegado en esta cuenta de contrato

¿Cómo podemos comprobar que corresponde al código de Register01.sol?

Debemos Verificarlo y Publicarlo. Para ello hacemos clic sobre la frase en azul “Verify and Publish”.

Nos aparecerá la pantalla siguiente en la que debemos completar la dirección del contrato, el tipo de compilador utilizado, la versión de compilador y el tipo de licencia Open Source. Luego hacemos clic en Continuar.

En la siguiente pantalla debemos copiar el código Solidity de Register01.sol

Completamos el captcha y hacemos clic en Verify and Publish.

Si la correspondencia es correcta, nos aparecerá una pantalla como la siguiente donde ahora también podremos ver la ABI.

Si regresamos a la cuenta del contrato en Etherscan veremos que ahora hay información adicional.

Junto al botón azul del contrato ahora hay un check verde, que indica que el contrato ha sido verificado. El código del contrato ahora también aparece junto al bytecode y el ABI.

Pero también aparecen botones para interactuar con el contrato: Read Contract (para funciones de lectura) y Write Contract (para escritura/modificación).

Podemos interactuar entonces con nuestro contrato inteligente desde el explorador de bloques.

Por ejemplo, si quisiéramos grabar en la variable storedInfo la frase “Hello World”, tendríamos que hacer clic sobre el botón Write Contract.

Vemos que setInfo es la única función de escritura. Para utilizarla primero debemos conectar nuestra wallet a Etherscan. Para ello, hacer clic en Connect to Web3.

Una vez conectada nuestra wallet, nos aparece el campo para ingresar el texto a grabar. Lo ingresamos y hacemos clic sobre Write.

Al ser una transacción de escritura, debemos aprobar la transacción y pagar el gas correspondiente.

Para verificar si la transacción ha sido exitosa podemos ir a Read Contract y visualizar el contenido de la variable storedInfo utilizado la función de lectura getInfo.

getInfo nos muestra que el contenido es “Hello World”.

Recapitulando has seguido los siguientes pasos:

  1. Creaste un contrato

  2. Lo compilaste

  3. Lo desplegaste en una blockchain pública, en este caso Sepolia.

  4. Lo validaste y publicaste utilizando un explorador de bloques. De forma que una persona interesada en tu contrato pueda entender qué hace.

  5. Interactuaste con el contrato utilizando el explorador de bloques.

¡Felicitaciones has culminado la Intro a Smart Contracts!

PreviousDesplegar en una red públicaNextFundamentos de Solidity

Last updated 7 months ago

Was this helpful?

Vayamos al para comprobarlo.

explorador de bloques de Sepolia