⚠️ ¡Advertencia! este glosario está en constante actualización, por lo que algunos términos pueden no estar presentes o estar incompletos. Si tienes alguna sugerencia o corrección, no dudes en contactarme.
Cuenta (Account)
Un objeto compuesto por una dirección, un balance y un nonce.
De forma opcional puede tener código de contrato ejecutable y almacenar datos.
Una cuenta puede ser una cuenta externa (EOA)
o una cuenta de contrato.
Dirección (Address)
Generalmente, esto representa una cuenta externa(EOA) o una cuenta de contrato que puede recibir(dirección de destino) y enviar (dirección de origen) traslaciones en la blockchain.
Específicamente son 160 bits generados por el algoritmo de hash keccak256
de la clave pública de la cuenta (ECDSA)
.
Ejemplos de direcciones serían los siguientes:
Random generates address 1: 0x236F190b6911EE3c5CE324198870016204F19dF9
Random generates address 2: 0xfafcea59b5cD285F6E3AaF54A0998886Fdf9A49a
Zero address: 0x0000000000000000000000000000000000000000
Assert
En Solidity, assert(false)
compila a 0xfe
, un optcode inválido que usa todo el gas disponible y revierte la transacción. Cuando un assert()
falla algo inesperado o critico. Se debería usar assert()
para evitar estados u operaciones que sí o si queremos evitar que sucedan.
Big-endian
Una forma de representar los números en la cual los dígitos más significativos se encuentran al inicio, es lo opuesto a little-endian. Un ejemplo, si tenemos el número hexadecimal 0x1234 en un sistema big-endian, se almacenaría en la memoria de la siguiente manera:
Dirección de memoria Datos
0x0000 0x12
0x0001 0x34
En el caso de un sistema little endian, la situación sería la inversa, y los bytes menos significativos se almacenarían primero en la memoria:
Dirección de memoria Datos
0x0000 0x34
0x0001 0x12
BIPs (Bitcoin Improvement Proposal)
Es un conjunto de propuestas que los miembros de la comunidad de bitcoin plantearon para mejorar bitcoin. Por ejemplo, BIP-32 es una propuesta para establecer un estándar en la generación de wallets determinísticas.
Bloque (Block)
Los bloques son agregados actualmente a la blockchain por los validadores. Los bloques son lotes de transacciones con un hash del bloque anterior en la cadena. Esta vincula bloques juntos (en una cadena) porque los hashes derivan criptográficamente de los datos del bloque.
Blockchain
En Ethereum es una secuencia de bloques validada por el sistema de proof of stake (POS)
, cada bloque se conecta con su predecesor hasta llegar al bloque de génesis.
Compilar (Compiling)
Convertir codigo escrito en un lenguaje de alto nivel (e.g: Solidity) a un lenguaje de bajo nivel (e.g: EVM bytecode)
Bytecode
Una instrucción abstracta diseñada para ser ejecutada de forma eficiente por un intérprete o una máquina virtual. A diferencia del código humanamente-entendible, el código bytecode está expresado en formato numérico. Por ejemplo, este sería el código en formato Solidity:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleContract {
uint256 public value;
constructor(uint256 initialValue) {
value = initialValue;
}
function setValue(uint256 newValue) public {
value = newValue;
}
}
Así se vería en compilado en bytecode
(lo acorté con fines didácticos)
608060405234801561000f575f80fd5b506040516101d23803806101d
283398181016040528101906100319190610074565b805f8190555050
61009f565b5f80fd5b5f819050919050565b61005381610041565b811
461005d575f80fd5b50565b5f8151905061006e8161004a565b929150
50565b5f602082840312156100895761008861003d565b5b5f6100968
4828501610060565b91505092915050565b610126806100ac5f395ff3
fe6080604052348015600e575f80fd5b50600436106030575f3560e01
c80633fa4f2451460345780635524107714604e575b5f80fd5b603a60
Consenso
Cuando múltiples nodos (usualmente la mayoría de los nodos de la red) tienen los mismos bloques de la mejor blockchain localmente. No confundir con reglas de consenso.
Reglas de consenso
Las reglas que debe seguir un full node
para validar un bloque y mantenerse en consenso con los otros nodos de la red.
Cuenta de contrato (Contract account)
Consiste en una cuenta que contiene código y se puede ejecutar recibiendo una transacción desde otra cuenta, ya sea EOA
u otro contrato.
Transacción de creación de contrato
Se trata de una transacción especial, en la cual se define como receptor de esta a la zero adddress y es usada para registrar el contrato en la blockchain.
DAO
Una DAO (Organización Autónoma Descentralizada, por sus siglas en inglés) es una entidad organizativa que opera de manera autónoma y descentralizada mediante contratos inteligentes.
Dapp
Aplicación descentralizada, como mínimo el concepto de aplicación descentralizada involucra un smart-contract y una interface web a través de la cual se puede conectar el usuario.
Firma digital
Un conjunto de caracteres producido por un usuario usando su clave privada para un documento dado. Cualquiera que tenga la clave pública correspondiente a la clave privada y el documento puede verificar que el documento fue firmado. Además, el documento en sí no se ve modificado posterior a la firma.
ECDSA
ECDSA (Elliptic Curve Digital Signature Algorithm) es un algoritmo de firma digital basado en curvas elípticas. Este algoritmo se utiliza comúnmente en criptografía para proporcionar la autenticación y la integridad de los datos. Es usada en Ethereum para asegurar que los fondos solo puedan ser gastados por sus dueños.
EIP (Ethereum Improvement Proposal)
Las EIP (Ethereum Improvement Proposals) son propuestas de mejora para la red Ethereum. Estas propuestas son documentos técnicos que describen cambios en el protocolo Ethereum, incluyendo mejoras en el diseño, nuevas características, estándares y pautas para el desarrollo de aplicaciones en la plataforma Ethereum.
Entropía
En el contexto de la criptografía, la impredecibilidad o el nivel de aleatoriedad al momento de generar información secreta, como clave privadas, los algoritmos usualmente buscan usar una fuente de alta entropía para asegurarse que el resultado de esta generación es impredecible.
EOA (External Owned Account)
Una EOA
en el contexto de Ethereum se refiere a una cuenta controlada por una clave privada externa fuera de la cadena de bloques Ethereum. Estas cuentas son gestionadas por usuarios y no por contratos inteligentes en la cadena.
Actualmente, son las cuentas más usadas en la red de Ethereum.
ERC
Ethereum Request for Coment es una etiqueta que se le asigna a ciertos EIPs en el intento de definir un estándar específico de uso (e.g: ERC-20).
Ether
La criptomoneda nativa de la red de Ethereum, se utiliza para pagar el costo del gas de las transacciones al momento de ejecutar smart contracts o enviar fondos.
Se representa con el siguiente símbolo Ξ
Eventos (Events)
Permite que a las Dapps que escuchen eventos y ejecuten código en consecuencia a estos, resulta útil cuando queremos dar feedback a un usuario de qué determinada acción ocurrió en la blockchain.
EVM
La Ethereum Virtual Machine (EVM) es una máquina virtual basada en pila que ejecuta bytecode. En Ethereum, el modelo de ejecución especifica cómo se altera el estado del sistema dado una serie de instrucciones de bytecode. Esto se detalla a través de un modelo formal de una máquina virtual de estado.
EVM Assembly Language
El lenguaje ensamblador de EVM es una forma legible por humanos del bytecode de la Ethereum Virtual Machine (EVM).
Faucet
Un servicio que dispensa fondos en forma de éter de prueba gratuito que se puede utilizar en una testnet.
Finney
Una denominación de éter. 10^15 finney = 1 éter.
Fork
Un cambio en el protocolo que causa la creación de una blockchain alternativa, o una divergencia temporal en dos posibles rutas de bloques durante el consenso.
Gas
Un combustible virtual utilizado en Ethereum para ejecutar contratos inteligentes. La EVM utiliza un mecanismo contable para medir el consumo de gas y limitar el consumo de recursos informáticos.
Gas Limit
La cantidad máxima de gas que una transacción o bloque puede consumir.
Genesis Block
El primer bloque en una blockchain, utilizado para inicializar una red específica y su criptomoneda relacionada.
Geth
Go Ethereum. Una de las implementaciones más destacadas del protocolo Ethereum, escrita en Go.
Hard Fork
Una divergencia permanente en la cadena de bloques; también conocido como un cambio hard-forking. Ocurre comúnmente cuando los nodos no actualizados no pueden validar bloques creados por nodos actualizados que siguen reglas de consenso más recientes. No debe confundirse con un fork, soft fork, software fork o Git fork.
Hash
Una huella digital de longitud fija de una entrada de tamaño variable, producida por una función hash.
HD Wallet
Una billetera que utiliza el protocolo de creación y transferencia de claves jerárquico determinista (HD, por sus siglas en inglés) (BIP-32).
HD Wallet Seed
Un valor utilizado para generar la clave privada principal y el código de cadena principal para una billetera HD. La semilla de la billetera puede representarse mediante palabras mnemotécnicas, lo que facilita a los humanos copiar, hacer copias de seguridad y restaurar claves privadas.