5 artículos
Sistemas distribuidos
Substrate: del runtime al consenso propio
Serie de 20 capítulos, de neófito a experto, sobre Substrate (Polkadot SDK): runtime en Wasm, FRAME, extrinsics, estado, pesos, actualizaciones sin fork, Aura, BABE, GRANDPA, sincronización, parachains, XCM, Sassafras, BEEFY y cómo conectar un consenso BFT propio a un nodo.
Publicados
20
de 20 previstos
Estado
100%
published
Ruta guiada
No leas 20 capítulos como lista de supermercado.
La serie está partida en módulos. Puedes seguirla de punta a punta o entrar por el perfil que más se parezca a tu problema actual.
Empezar por el capítulo 1 →5 artículos
2. Intermedio
6 artículos
3. Avanzado
4 artículos
4. Experto
Artículos de la serie
Módulo 1
1. Neófito
5 artículos
Qué es Substrate hoy: el Polkadot SDK por dentro
Qué es Substrate dentro del Polkadot SDK, cómo se reparten FRAME, Cumulus y XCM, y cómo ubicar un crate por su prefijo sc-, sp- o pallet-.
La cadena como función de transición de estado
Estado N más bloque N da estado N+1: qué significa que el runtime de Substrate sea la función de transición de estado y qué queda para el nodo.
El runtime en Wasm: nodo y runtime hablan por dos puertas
Dónde vive el runtime de Substrate (la clave :code del estado) y cómo conversa con el nodo: host functions de sp_io y runtime APIs de sp_api.
FRAME: pallets que se ensamblan en un runtime
Cómo FRAME arma un runtime de Substrate con pallets: Config, storage, llamadas, eventos y errores unidos con construct_runtime, y en qué difiere de un contrato.
Tu primer nodo local: templates, omni-node y chain spec
Tres caminos para levantar una cadena Substrate local: polkadot-omni-node con chain spec, un template o el nodo kitchensink, y qué guarda el génesis.
Módulo 2
2. Intermedio
5 artículos
Extrinsics: transacciones firmadas, sin firmar e inherentes
Qué entra a un bloque Substrate desde fuera del runtime, cómo se codifica un extrinsic versión 5 y qué comprueban las transaction extensions antes de ejecutarlo.
El estado: clave-valor, trie radix-16 y raíz de estado
Cómo guarda Substrate el estado como bytes opacos, cómo FRAME arma las claves y cómo el trie radix-16 permite probar un valor con unos pocos nodos.
Pesos y comisiones: medir antes de ejecutar
Por qué Substrate no mide gas instrucción por instrucción, qué son ref_time y proof_size, cómo se escribe un benchmark del peor caso y cómo se calcula la comisión.
Actualizar sin fork: set_code, versiones y migraciones
Cómo una cadena Substrate cambia su lógica escribiendo un Wasm nuevo en :code, qué comprueba set_code, por qué hay que subir spec_version y cómo se prueban las migraciones.
Offchain workers: lo que el runtime hace fuera de la cadena
Qué es un offchain worker en Substrate, por qué puede llamar a una API HTTP sin romper el determinismo y por qué su única vía para cambiar el estado es enviar un extrinsic.
Módulo 3
3. Avanzado
6 artículos
Producción de bloques por turnos: slots y Aura
Cómo Substrate divide el tiempo en slots, por qué Aura asigna cada slot a A[s mod |A|] y qué falta para que esos bloques sean definitivos.
BABE: una lotería VRF para producir bloques
Cómo BABE sortea cada slot con una VRF secreta, por qué a veces ganan dos o nadie, y qué hacen las épocas, los slots secundarios y el fork choice.
GRANDPA: finalizar cadenas, no bloques
Cómo GRANDPA finaliza prefijos de cadena con prevotes, precommits y 2/3-GHOST, por qué tolera f < n/3 y qué pasa cuando la finalidad se detiene.
Ponerse al día: full, fast y warp sync; light clients
Cómo un nodo nuevo llega al estado actual de una cadena Substrate sin confiar en un peer: full, fast y warp sync, justificaciones GRANDPA y light clients.
Parachains con Cumulus: seguridad compartida
Qué cambia cuando una cadena Substrate deja de finalizarse sola: collators, PoV, función de validación, respaldo e inclusión en la relay chain y proof_size.
XCM: un lenguaje de intenciones entre sistemas de consenso
Qué es XCM en el Polkadot SDK: programas que ejecuta la XCVM, ubicaciones relativas, reserva frente a teletransporte y la confianza que fija el executor.
Módulo 4
4. Experto
4 artículos
Sassafras: un solo productor por slot, en secreto
Cómo Sassafras busca un bloque por slot sin revelar al productor: tickets con ring VRF, repetidores y orden outside-in. Estado real en el Polkadot SDK: experimental.
BEEFY: finalidad compacta para puentes
Por qué GRANDPA es caro de verificar en Ethereum y cómo BEEFY firma compromisos ECDSA sobre una raíz MMR, con muestreo aleatorio en el light client del puente.
Anatomía del consenso en un nodo Substrate
El recorrido de un bloque por el nodo, leído en el código del Polkadot SDK: import queue, BlockImport, fork choice, justificaciones, finalidad y autoría.
Capstone: conectar un consenso BFT propio (estilo HotStuff) a un nodo Substrate
Guía de ingeniería, desde el código del Polkadot SDK, para reemplazar GRANDPA o la producción por un protocolo BFT estilo HotStuff: QC como justificación, sync y pruebas.