Reto:
Determina cuantas unidades de gas utiliza el siguiente bytecode:
600A6000525B6006600051600190038060005260001090
R: 49 unidades de gas
Introducción
Conociendo la máquina virtual de Ethereum
Presentación del Proyecto: Tu propia Virtual Machine
Teoría de Máquinas Computacionales
Máquinas computacionales
Autómata Finito Determinista
Máquina de Turing
Arquitectura x86 y Assembly
Máquinas virtuales
Compiladores y organización de CPU
Ethereum Virtual Machine
Arquitectura de la EVM
Conoce el Beigepaper
Ethereum Virtual Machine Instruction Set
EVM Opcodes
Construyendo un bytecode básico
Continuando con la construcción del bytecode básico
Root State
¿Qué es el gas?
¿Cómo construir un compilador a la EVM?
Solidity Decompiling
Creation Bytecode vs Runtime Bytecode
Function Selector, Function Wrapper y Function Body
Metadata Hash
Platzi Virtual Machine
Definición de nuestra Máquina Virtual
Setup del proyecto
Definición del entorno de ejecución
Definición de la lista de OPCODES
Implementación de operadores básicos y aritméticos
Implementación del modelo de memoria
Implementando saltos
Consumo de gas estático
Consumo de gas dinámico
Implementando gas dinámico
Conclusión
Demostración de la PVM y siguientes pasos
Cierre del curso y repaso de lo aprendido
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Ernesto García
Determina cuantas unidades de gas utiliza el siguiente bytecode:
600A6000525B6006600051600190038060005260001090
Puedes dirigirte al playground de la EVM para ejecutar el código y ver cuándo se gasta, desglosando las unidades de gas que se utilizan y compártelo con la comunidad.
Aportes 4
Preguntas 1
Reto:
Determina cuantas unidades de gas utiliza el siguiente bytecode:
600A6000525B6006600051600190038060005260001090
R: 49 unidades de gas
49
Aquí tienes el desglose de cada instrucción y el gas consumido por cada una de ellas:
PUSH1 0x0A: Esta instrucción coloca el valor 0x0A en la pila.
Gas consumido: 3
PUSH1 0x00: Esta instrucción coloca el valor 0x00 en la pila.
Gas consumido: 3
MSTORE: Esta instrucción guarda el valor de la parte superior de la pila en la memoria.
Gas consumido: 6
JUMPDEST: Esta instrucción marca una ubicación de destino para saltos.
Gas consumido: 1
PUSH1 0x06: Esta instrucción coloca el valor 0x06 en la pila.
Gas consumido: 3
PUSH1 0x00: Esta instrucción coloca el valor 0x00 en la pila.
Gas consumido: 3
MLOAD: Esta instrucción carga un valor de la memoria y lo coloca en la pila.
Gas consumido: 3
PUSH1 0x01: Esta instrucción coloca el valor 0x01 en la pila.
Gas consumido: 3
SWAP1: Esta instrucción intercambia el primer y segundo elemento de la pila.
Gas consumido: 3
SUB: Esta instrucción resta los dos elementos superiores de la pila.
Gas consumido: 3
DUP1: Esta instrucción duplica el elemento superior de la pila.
Gas consumido: 3
PUSH1 0x00: Esta instrucción coloca el valor 0x00 en la pila.
Gas consumido: 3
MSTORE: Esta instrucción guarda el valor de la parte superior de la pila en la memoria.
Gas consumido: 3
PUSH1 0x00: Esta instrucción coloca el valor 0x00 en la pila.
Gas consumido: 3
LT: Esta instrucción compara los dos elementos superiores de la pila y devuelve 1 si el segundo es menor que el primero, 0 en caso contrario.
Gas consumido: 3
SWAP1: Esta instrucción intercambia el primer y segundo elemento de la pila.
Gas consumido: 3
Para calcular el gas total consumido, simplemente sumamos los valores individuales:
3 + 3 + 6 + 1 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3 = 49
Por lo tanto, estas instrucciones consumirían un total de 49 unidades de gas en la máquina virtual de Ethereum.
En el canal de Veritasium hay una buena explicación sobre las matemáticas indecidibles: https://youtu.be/RRg38oNQ9vk
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?