Blockchain desde cero
Blockchain, Proof of Work, Proof of Stake y contratos inteligentes explicados desde los principios más básicos.
¿Qué es un blockchain?
Un blockchain es un libro de contabilidad digital distribuido. Imagina un cuaderno donde cada página (bloque) contiene transacciones, y cada página tiene un resumen criptográfico (hash) de la página anterior. Cualquier persona del mundo puede tener una copia del cuaderno, y nadie puede modificar páginas pasadas sin que todos lo noten.
Las propiedades clave de un blockchain son:
- Inmutabilidad: Una vez escrita, la información no puede modificarse sin consenso.
- Distribución: No hay un servidor central. Cada participante tiene una copia.
- Transparencia: Cualquier persona puede verificar las transacciones.
- Sin confianza: No necesitas confiar en una autoridad central; confías en las matemáticas.
Proof of Work vs Proof of Stake
Estos son los dos mecanismos de consenso más utilizados para acordar qué bloque se añade a la cadena:
Proof of Work (PoW)
Los mineros compiten resolviendo un problema matemático (encontrar un nonce que genere un hash con ciertos ceros al inicio). El primero en resolverlo propone el bloque y recibe una recompensa. Consume mucha energía pero es extremadamente seguro.
Ejemplo: Bitcoin, Litecoin
Proof of Stake (PoS)
Los validadores "apuestan" (bloquean) tokens como garantía. Cuanto más apuestas, más probabilidades tienes de ser elegido para proponer el siguiente bloque. Si actúas mal, pierdes tu apuesta (slashing). Consume mucha menos energía.
Ejemplo: Ethereum 2.0, Solana
Contratos inteligentes
Un contrato inteligente es un programa que se ejecuta en un blockchain. Se llama "contrato" porque automatiza acuerdos: si ocurre X, entonces ejecuta Y. No necesita intermediarios ni autoridades que lo hagan cumplir: el propio código se ejecuta automáticamente cuando se cumplen las condiciones.
Ejemplo sencillo en pseudocódigo:
contrato Votacion {
mapping(address => bool) votantes;
uint votosSi;
uint votosNo;
function votar(bool aFavor) {
require(!votantes[msg.sender], "Ya has votado");
votantes[msg.sender] = true;
if (aFavor) votosSi++; else votosNo++;
}
} Las aplicaciones descentralizadas (dApps) son simplemente interfaces que interactúan con uno o más contratos inteligentes.
Comprueba tu comprensión
1. Qué hace que un blockchain sea inmutable?
2. Qué diferencia principal hay entre PoW y PoS?
3. Un contrato inteligente es...