GUÍA DE ETHEREUM · 03

Smart
Contracts.

Programas que viven en Ethereum y ejecutan reglas definidas por su código. Son una de las piezas fundamentales de las aplicaciones descentralizadas.

✓ Código · Estado · Funciones · EVM · Gas
SMART CONTRACT 03
</>
Programa en Ethereum Código + estado + funciones
RED Ethereum
EJECUCIÓN EVM
01 / FUNDAMENTOS

¿Qué es un smart contract?

Un smart contract es un programa que se ejecuta en la blockchain de Ethereum y que contiene código y datos asociados a una dirección.

01

Es un programa

Un contrato inteligente contiene funciones y reglas programadas. Cuando recibe una llamada válida, la EVM ejecuta las instrucciones correspondientes.

03

Tiene estado

Un contrato puede almacenar datos persistentes, como saldos, contadores, permisos o información utilizada por sus funciones.

02 / CUENTAS

Un contrato también es una cuenta

Ethereum distingue entre cuentas controladas por usuarios y cuentas cuyo comportamiento está definido por código.

A

Cuenta de usuario

Una EOA está controlada mediante claves privadas y puede iniciar transacciones.

B

Cuenta de contrato

Está controlada por su código y puede responder a llamadas y modificar su estado siguiendo las reglas programadas.

03 / ANATOMÍA

¿De qué está hecho un contrato?

Aunque los contratos pueden ser muy complejos, podemos entenderlos a partir de unas piezas básicas.

01

Código

Define qué operaciones puede realizar el contrato y bajo qué condiciones.

02

Estado

Contiene los datos persistentes del contrato. Por ejemplo, variables de estado o saldos.

03

Funciones

Son las operaciones que permiten consultar información o solicitar cambios en el estado.

04 / DATOS

No todos los datos viven igual

La EVM dispone de diferentes zonas para trabajar con datos durante la ejecución de un contrato.

S

Storage

Es el almacenamiento persistente del contrato. Los valores pueden mantenerse entre diferentes ejecuciones.

C

Calldata

Contiene datos enviados junto con una llamada, como los argumentos necesarios para ejecutar una función.

05 / EJEMPLO

Un contrato puede ser muy sencillo

Este ejemplo muestra un contrato básico escrito en Solidity que mantiene un contador.

01

Variable de estado

count representa un dato que forma parte del estado persistente del contrato.

02

Función

increment() modifica ese estado cuando una cuenta realiza una llamada válida.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract Counter {

    uint256 public count;

    function increment() external {
        count += 1;
    }
}
06 / COMPILACIÓN

Del código fuente al bytecode

La EVM no ejecuta directamente el código Solidity que escribe un desarrollador. Antes es necesario compilarlo a bytecode.

01

Código fuente

El desarrollador escribe el contrato en un lenguaje como Solidity o Vyper.

02

Compilador

El código se transforma en una representación que la EVM puede interpretar.

03

Bytecode

El resultado contiene las instrucciones que posteriormente ejecutará la EVM.

07 / DESPLIEGUE

¿Cómo llega el contrato a Ethereum?

El despliegue convierte el código compilado en una cuenta de contrato disponible en la red.

01

Compilar

El código fuente se convierte en bytecode que puede ejecutar la EVM.

02

Crear la transacción

El bytecode compilado se incluye en una transacción de creación de contrato.

03

Obtener una dirección

Una vez incluido y ejecutado, el contrato queda disponible mediante una dirección de Ethereum.

08 / INTERACCIÓN

Leer no es lo mismo que escribir

Las aplicaciones pueden consultar información de un contrato o solicitar operaciones que cambien su estado.

R

Leer datos

Una consulta que no modifica el estado puede obtener información del contrato sin crear una transacción que cambie la blockchain.

09 / GAS

Ejecutar código cuesta recursos

Cada operación ejecutada por la EVM requiere recursos computacionales. El gas permite medir y pagar ese trabajo.

01

Más operaciones

Un contrato que realiza más trabajo computacional normalmente necesita consumir más gas.

02

Límite de gas

Una transacción establece cuánto gas puede utilizar su ejecución.

03

Seguridad

El sistema de gas ayuda a evitar que una ejecución consuma recursos de manera ilimitada.

10 / COMPOSABILIDAD

Los contratos pueden hablar entre sí

Una de las características más importantes de Ethereum es que un contrato puede interactuar con otros contratos.

A

Contrato A

Puede realizar una llamada a otro contrato para solicitar una operación o consultar información.

+

Aplicaciones

La combinación de contratos permite construir sistemas más complejos a partir de componentes que interactúan entre sí.

11 / SEGURIDAD

El código también puede tener riesgos

Que un contrato se ejecute automáticamente no significa que su código sea necesariamente seguro.

01

Errores de código

Un fallo en la lógica puede producir comportamientos diferentes de los esperados.

02

Permisos

Las funciones sensibles deben contar con controles de acceso adecuados.

03

Interacciones

Antes de utilizar un contrato conviene entender qué funciones ofrece, qué permisos solicita y qué efectos puede producir una operación.

12 / RESUMEN

El modelo mental en una frase

Un smart contract es código desplegado en Ethereum que puede recibir llamadas, ejecutar instrucciones y mantener un estado siguiendo las reglas definidas por su programa.

01

Código

Define las reglas y operaciones.

02

EVM

Ejecuta el bytecode del contrato.

03

Estado

Guarda los datos persistentes.

04

Gas

Mide y limita los recursos de ejecución.

SIGUIENTE PASO

Ahora toca entender la EVM

Ya sabemos qué es un contrato y cómo interactúa con Ethereum. El siguiente paso es entender la máquina que ejecuta su código.

RAUCORE · GUÍA 03

Ya sabes qué son los smart contracts

El siguiente concepto explica dónde se ejecutan: la Máquina Virtual de Ethereum.

↑