Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción a Blockchain
Bitcoin y Ethereum
Índice
© Universidad Internacional de La Rioja (UNIR)
Ideas clave 3
3.1. Bitcoin 3
3.2. Ethereum y su Virtual Machine EVM 24
3.3. Las criptomonedas como usuario: wallets y
exchanges 39
Ideas clave
3.1. Bitcoin
Origen de Bitcoin
Introducción a Blockchain
3
Tema 3. Ideas clave
Bloque de datos
Datos (donde se guardan las transacciones con básicamente tres datos, aunque
luego veremos que hay más información: emisor, receptor y cantidad) incluyendo
un dato especial denominado Merkle Root (que explicaremos después).
Hash del bloque en curso.
Hash del bloque anterior.
El primer bloque tiene una estructura especial dado que no tiene bloque anterior y
se denomina con un nombre especial: Bloque Génesis.
Con esta estructura de bloque, si se modifican los datos que forman parte de él, se
modificará su hash. Este es un modo de asegurar si se han modificado o no los datos
del bloque. Y si se cambiaran los bloques anteriores de la cadena, se modificaría el
hash del bloque anterior, con lo que, de facto, se crea una cadena de bloques
haciendo el sistema seguro.
Veamos un ejemplo simplificado, dado que los hashes son de una longitud mucho
mayor:
Introducción a Blockchain
4
Tema 3. Ideas clave
Si se modificaran los datos del bloque 2 por un atacante, su Hash se recalcularía y
sería:
imposible.
Introducción a Blockchain
5
Tema 3. Ideas clave
Para que un bloque nuevo sea aceptado por la red y se incorpore a la cadena de
bloques debe incluir el hash del bloque anterior y, además, el hash de la cabecera del
bloque (que se obtiene calculando el hash SHA256 de los datos que la componen) y
debe cumplir una condición: ser inferior a la dificultad establecida por la red (que
depende de la capacidad de computacional global).
Una vez establecidos los valores de la cabecera del bloque y calculado el Merkle Tree
correspondiente a las transacciones, se itera sucesivamente el valor del campo nonce
(32 bits) del bloque para obtener distintos hashes hasta encontrar un resultado que
empiece por el número de ceros requerido con base en la dificultad establecida.
Puesto que cualquier cambio en los datos de la cabecera genera un hash diferente y
es imposible predecir qué combinación de los datos de la cabecera generarán una
salida válida, los mineros necesitan probar muchos nonce diferentes hasta encontrar
una solución válida (puede suceder, incluso, que ningún nonce ofrezca un resultado
válido, en cuyo caso es necesario modificar algún campo de las transacciones para
empezar nuevamente el proceso de iteración del nonce).
Introducción a Blockchain
6
Tema 3. Ideas clave
para recalcular el hash de dicho bloque pasado (ya que al eliminar la transacción el
Merkle Tree se ve modificado y el hash original del bloque se invalida), así como de
los hashes de todos los bloques posteriores (puesto que el hash de cada bloque
previo se incluye como parámetro en la cabecera y, por tanto, modificar el hash de
un bloque pasado invalida los hashes de los bloques sucesivos) y, además, debe
contar con todo esto antes de que otro minero genere un nuevo bloque que sea
aceptado por la red. Es por ello por lo que este mecanismo trata de prevenir la
manipulación.
Funcionamiento de Bitcoin
Introducción a Blockchain
7
Tema 3. Ideas clave
Un ejemplo de este tipo de transacciones simples es el siguiente, con txid
1119a54199934b788945dfa0004b1e317d5c333419017591a8caf70676473984 en la
que se observa una transacción de entrada de la dirección
1EUUsg5cKc11hbEZNDd61BzE9ffEQJQ9Mj (por valor de 0.00616874 BTC) y dos
transacciones de salida, una por valor de 0,00001 BTC hacia la dirección
1NUsMt7jFCzw7ewKcKh5mww4AaQxXG5GNN y otra de 0.00515874 BTC hacia la
dirección de origen, 1EUUsg5cKc11hbEZNDd61BzE9ffEQJQ9Mj (el «cambio» de esta
transacción, ya que el importe de una transacción de entrada no se puede fraccionar).
La diferencia entre el importe de las transacciones de entrada (una en este caso, pero
pueden ser más) y la suma de los importes de las transacciones de salida, 0.001 BTC
en esta transacción en particular, se contempla como comisión para los mineros que
incorporan esta transacción en un nuevo bloque.
Figura 1. Ejemplo de transacción con una entrada y dos salidas (incluyendo la dirección de cambio).
Fuente: Blockchain.info
Entrada: las pruebas de que el wallet que genera la transacción posee la clave
© Universidad Internacional de La Rioja (UNIR)
privada que permite a la red verificar que es el legítimo propietario de los bitcoins
correspondientes a cada una de las transacciones de entrada (y, por tanto, se le
permite utilizarlas para componer una nueva transacción)
Salida: los retos que únicamente el propietario de la clave privada correspondiente
a cada una de las transacciones de salida podrá resolver para garantizar que
Introducción a Blockchain
8
Tema 3. Ideas clave
únicamente los destinatarios de estas transacciones puedan disponer de los
fondos enviados para generar nuevas transacciones.
Para que las transacciones generadas por los wallets sean aceptadas y se permita al
destinatario utilizar los bitcoins recibidos como entrada de una nueva transacción,
deben haber sido incorporadas en una estructura de datos (en forma de cadena de
© Universidad Internacional de La Rioja (UNIR)
bloques) replicada en todos los nodos que componen la red. Estos bloques,
generados por los mineros, deben cumplir una serie de condiciones para ser
considerados válidos.
Introducción a Blockchain
9
Tema 3. Ideas clave
En un bloque en construcción los mineros añadirán aquellas transacciones
pendientes de confirmación, priorizando habitualmente por comisión (puesto que el
minero que consiga generar el bloque se apuntará, además de una cantidad fija de
12,5BTC en la actualidad, la suma de todas las comisiones de las transacciones
incluidas).
Además de esta información, los bloques contienen una cabecera que incluye el
merkle root de las transacciones incluidas en dicho bloque (la raíz de un árbol que
contiene los hashes de todas las transacciones, de forma que cualquier modificación
en cualquiera de las transacciones provoca una alteración del merkle root), así como
el hash del bloque previo y una serie de valores (versión, timestamp, dificultad y
nonce).
Figura 3. Relación de cada bloque con el hash del bloque anterior en Bitcoin. Fuente: bitcoin.org
Bitcoin no es una red estática, sino que ha tenido varias evoluciones y rupturas en su
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
10
Tema 3. Ideas clave
Amir Taaki el 19 de agosto de 2011 basándose en los Python Enhancement Proposals
(PEP), siendo posible elevar BIP de tres tipos diferentes:
Standards track (o normativos): se usan para describir cambios que afectan a todas
o a la mayoría de las diferentes implementaciones de Bitcoin tales como
protocolo, consenso, etc. Ejemplo reciente es el BIP-141 (SegWit) que veremos
más en detalle posteriormente.
Informativos: se usan para describir pautas, recomendaciones para la resolución
de problemas de diseño de la red. Su implementación es opcional.
Proceso: igualmente opcional, se usan para definir procedimientos de uso de las
herramientas de la comunidad.
Los BIP para implementar deben incluir no solo la documentación técnica detallada
(que servirá inicialmente de base para la discusión en la comunidad), sino también
los códigos de prueba y toda la documentación que permita a los desarrolladores
realizar las modificaciones necesarias en el código cliente de la red.
Dado que deben ser consensuados por una amplia mayoría de miembros de la
comunidad, el proceso consta de diversas fases y estados:
Fruto de estos BIP, han surgido mejoras reseñables que veremos a continuación,
como los SegWit blocks (Segregate Witness) o el Lightning Network.
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
11
Tema 3. Ideas clave
Este lenguaje es limitado (no turing completo), lo cual evita la posibilidad de que se
establezcan bucles con el fin de asegurar que no sea posible generar transacciones
maliciosas que puedan provocar ataques de denegación de servicio en la red. La
simplicidad del lenguaje permite, además, el procesamiento eficiente de las
transacciones en cualquier tipo de dispositivo.
Interpretar el código de un script implica ir introduciendo en una pila los valores que
se definan en el código y ejecutar operaciones para actuar sobre los datos existentes
en la pila, meter o sacar uno o más valores de la pila o introducir nuevos valores
generados tras realizar una operación. Al finalizar la ejecución del script, este se
considera válido si el contenido final en la pila es TRUE (y no válido en cualquier otro
escenario).
Como ejemplo, el siguiente script utiliza el operador OP_ADD para sumar los dos
valores situados en las posiciones superiores de la pila y verificar, posteriormente, si
el resultado es igual a 7 con el operaor OP_EQUAL, devolviendo TRUE al final de la
ejecución (y, por tanto, resultando un script válido).
2 5 OP_ADD 7 OP_EQUAL
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
12
Tema 3. Ideas clave
La secuencia sería la siguiente e indica a la izquierda el estado de procesamiento del
script, el detalle de la acción a realizar y el contenido de la pila tras la acción:
Para validar una transacción los nodos de la red evaluarán secuencialmente ambos
scripts. Si el resultado final es TRUE, la transacción será considerada válida. Esta
operación se realizará para cada uno de los inputs que formen parte de la transacción.
Los scripts más habituales en Bitcoin (que no los únicos) son los siguientes:
© Universidad Internacional de La Rioja (UNIR)
P2PKH (pay-to-public-key-hash)
El script de bloqueo asigna el output a una dirección generada a partir de una clave
pública. El script de desbloqueo contiene la clave pública y una firma digital creada
Introducción a Blockchain
13
Tema 3. Ideas clave
por la correspondiente clave privada, de forma que solo el poseedor de dicha clave
podrá aportar la información necesaria para validar la transacción.
es válida true
Introducción a Blockchain
14
Tema 3. Ideas clave
P2PK (pay-to-public-key)
Es una forma obsoleta del script anterior, donde se especifica la clave pública (en
lugar del hash). Actualmente se utiliza P2PKH en su lugar.
P2M (pay-to-multisig)
P2SH (Pay-to-script-hash)
Introducción a Blockchain
15
Tema 3. Ideas clave
Script de desbloqueo (scriptSig)
<script de desbloqueo> <script de bloqueo>
SegWit
Es una de las grandes mejoras que ha sufrido Bitcoin desde sus inicios y, tal vez, la
más transformadora. Con ella, se buscaba resolver dos problemas: por un lado,
resolver el problema de maleabilidad de las transacciones y, por otro, mejorar la
escalabilidad y rendimiento de la red. Aquí debemos tener en cuenta que, en los
últimos años, el número de transacciones en bitcoin ha crecido exponencialmente y
Bitcoin tan solo era capaz de manejar siete u ocho transacciones por segundo por lo
que era incapaz de manejar ese número en un tiempo adecuado.
Introducción a Blockchain
16
Tema 3. Ideas clave
Figura 4. Funcionamiento de Segwit. Fuente: https://coingeek.com/what-the-fork-happened-to-bitcoin/
El problema de maleabilidad está relacionado con que los hashes de firma de Bitcoin
no protegen el script de firma (scriptSIg). Este script incluye un tipo de firma especial
(secp256k1) que no se puede autofirmar. Además, el TxID de las transacciones no
confirmadas puede ser modificado, por lo que un tercero malicioso podría
sobrescribirlo. Veremos un apartado posterior la estructura más en detalle.
También habilita que un usuario con un wallet SegWit pueda mandar moneda a un
monedero legacy, lo que resulta en una confirmación más rápida y a menor coste.
© Universidad Internacional de La Rioja (UNIR)
Por último, SegWit abre la puerta a la creación de la Lightning Network que habilita
un mayor rendimiento de la red Bitcoin.
Introducción a Blockchain
17
Tema 3. Ideas clave
Progresivamente, se ha incrementado el número de transacciones SegWit en la red
de Bitcoin, superando el 80 % en julio de 2021.
Introducción a Blockchain
18
Tema 3. Ideas clave
La firma contiene la misma información que en el caso de una transacción P2PKH,
pero ubicada en esta parte de la transacción, en lugar del scriptSig:
Elemento Script
Las transacciones así generadas son compatibles hacia atrás, por lo que la
implementación de este cambio pudo ser abordada como un soft fork. Los nodos que
no han actualizado todavía para soportar Segwit aceptarán la transacción como
válida, mientras que los nodos que sí soportan segregated witness interpretarán el
primer valor como la versión de Segwit y el segundo valor como el script a validar.
Estos nuevos nodos necesitan también la firma para verificar la transacción (de forma
similar a una transacción tradicional P2PKH). Esta información está contenida en la
sección witness en lugar de en el scriptSig (que está vacío).
Introducción a Blockchain
19
Tema 3. Ideas clave
La Lightning Network consta de más de 20.000 nodos en mayo de 2021 y sigue
creciendo a un ritmo superior al 10 % mensual. Y no es exclusiva de Bitcoin.
Cuando el canal se abre, los participantes pueden intercambiar activos entre ellos de
forma instantánea utilizando los fondos almacenados en dicho canal. Cuando el canal
se cierra, el balance final de las transacciones realizadas se emite a la red, se realiza
la verificación y se incluyen en un bloque Bitcoin, lo que denominamos transacciones
multifirma.
Durante el tiempo que el canal está abierto, todas las transacciones que se realizan
dentro de dicho canal son inmediatas, se pueden hacer por un único Satoshi
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
20
Tema 3. Ideas clave
Figura 6. Los nodos ACFKLQ construyen un canal que habilita el pago de A a Q de modo seguro en la red.
Fuente: https://en.wikipedia.org/wiki/Lightning_Network
Visto esto, está claro que la Lightning Network es muy útil para realizar micropagos
y para mantener privacidad adicional, ya que solo los participantes en el canal saben
las transacciones que se han producido internamente. Aunque como inconveniente,
solo se pueden hacer dichos pagos a personas conectadas (no existe el concepto
similar a una transferencia bancaria tradicional).
Es importante mencionar que, para abrir un canal, los participantes deben dejar
fondos bloqueados en depósito con un esquema en el que se necesitan dos firmas
para poder firmar y mover los fondos.
Taproot
Taproot es el primer gran cambio a Bitcoin después de cuatro años tras la activación
de SegWit en 2017. Esta propuesta fue formulada en enero de 2018 y su activación
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
21
Tema 3. Ideas clave
transacciones y permite añadir más transacciones por bloque. Y para hacer todo esto,
Taproot modifica el funcionamiento de los scripts de Bitcoin.
Para conseguir este propósito se han realizado dos Mejoras: BIP-114 (Merklelized
Abstract Syntax Tree o MAST) y BIP-340 (Firmas Schnorr). Y la implementación se ha
basado en tres BIP: BIP-340, BIP-341 (Taproot) y BIP-342 (TapScript).
Al unir estos dos elementos, se puede incluir información compleja en Bitcoin sin
tener que revelar públicamente los datos y disminuyendo el espacio necesario,
abriendo la puerta al diseño de smart contracts más complejos, seguros y eficientes.
Es un esquema de firma criptográfica que genera firmas más cortas que el actual de
© Universidad Internacional de La Rioja (UNIR)
firma elíptica (ECDSA) y que es código abierto desde 2018. Permite incorporar varias
claves dentro de una única transacción compleja y generar una única firma Schnorr,
por lo que se mejora la privacidad por un lado y reduce el coste de la transacción.
Introducción a Blockchain
22
Tema 3. Ideas clave
Figura 7. Esquema de firmas ECDSA. Fuente: elaboración propia.
BIP-342 Tapscript
© Universidad Internacional de La Rioja (UNIR)
Con este BIP, se incorpora un nuevo tipo de programación que habilita, por un lado,
un pago único denominado Pay-to-Taproot (P2TR) que permite al usuario realizar
bien pago con firma pública Schnorr o con múltiples firmas, o bien permite al usuario
realizar transacciones públicas o privadas según su caso de uso.
Introducción a Blockchain
23
Tema 3. Ideas clave
BIP-341 Taproot
Es el cambio que determina la funcionalidad y que contiene los scripts que los
mineros han ido adoptando durante los meses anteriores a su entrada en
funcionamiento en la red global para habilitar tanto TapScripts como Firma Schnorr.
Origen de Ethereum
Ethereum es la segunda plataforma Blockchain más conocida. Fue creada por Vitalik
Buterin a finales de 2014 y se convirtió en operativa en 2015.
Para poder ejecutar estos smart contracts, la red Ethereum cuenta una
criptomoneda propia, el Ether (ETH), que también puede servir para realizar pagos
entre individuos como Bitcoin. Por tanto, el Ether tiene la doble función de
recompensa para los mineros y de incentivo a los programadores para hacer
programas de calidad que no consuman demasiado.
Smart contract
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
24
Tema 3. Ideas clave
smart contract generando transacciones a la dirección asignada por el minero que
registra el contrato en la cadena de bloques de Ethereum, en las que se identifican
las funciones a invocar y los parámetros que se pasan como argumentos
(https://github.com/ethereumbook/ethereumbook/blob/develop/evm.asciidoc).
El término «smart contract» fue usado por primera vez en: Szabo, N. (1997).
Formalizing and Securing Relations on Public Networks. First Monday.
http://firstmonday.org/ojs/index.php/fm/article/view/548/469
Los nodos de la red utilizan una máquina virtual (EVM o Ethereum Virtual Machine)
para ejecutar el bytecode existente y generar el resultado correspondiente. Desde un
punto de vista práctico, la EVM puede entenderse como un enorme ordenador
descentralizado que contiene millones de objetos.
Introducción a Blockchain
25
Tema 3. Ideas clave
De la misma forma que en un ordenador la CPU gestiona el estado de los procesos en
ejecución, la EVM gestiona el estado de distintos componentes para procesar una
transacción. El estado de esos componentes determina el nivel de cambios que se
realizarán en la cadena de bloques.
Más adelante se verá con más detalle el funcionamiento de esta red, pero podemos
entender Ethereum como una máquina de estados con los siguientes elementos:
Estado del mundo (world state): relaciona direcciones con el estado de las cuentas,
manteniendo la información en una estructura de datos de tipo Merkle Patricia
Tree que garantiza la imposibilidad de alterar la información.
Estado de las cuentas (account state): cada cuenta contiene los parámetros
mencionados a continuación.
• Nonce: valor que representa el número de transacciones enviadas desde la
cuenta.
• Balance: número de wei que posee la cuenta.
• StorageRoot: un hash del nodo raíz del Merkle Patricia Tree.
• CodeHash: un hash inmutable del código de la EVM para esa cuenta.
Introducción a Blockchain
26
Tema 3. Ideas clave
Información de runtime para gestionar las transacciones:
• Precio del gas, especificado por quien origina la transacción.
• Tamaño de la transacción.
• Dirección correspondiente a la cuenta ejecutando la transacción.
• Dirección de origen de la transacción.
En las cabeceras de los bloques de Ethereum se incluyen varios Merkle Tree para
distintos tipos de objetos:
Transacciones.
Recibos (receipts): que reflejan el efecto de cada transacción.
Estados.
Una estructura del tipo Patricia Tree permite almacenar cualquier par clave-valor y
garantizar mediante la utilización de hashes la autenticidad de la información, pero a
Introducción a Blockchain
27
Tema 3. Ideas clave
diferencia de los Merkle Tree binarios existen varios tipos de nodos (lo que permite
reducir el espacio necesario, a costa de una mayor complejidad en la navegación por
el árbol):
Para compilar código en Solidity y obtener el bytecode que puede ser interpretado
por la EVM se utiliza la línea de comandos. Por ejemplo, para compilar el fichero
“Example.sol” generando el bytecode resultante en el directorio
“BytecodeOutputDir” se ejecutaría la siguiente sentencia:
Introducción a Blockchain
28
Tema 3. Ideas clave
Una vez compilado, es posible observar el bytecode generado correspondiente al
contrato en Solidity. Abriendo el fichero correspondiente con un editor
observaremos algo similar a lo siguiente:
PUSH1 0x60 PUSH1 0x40 MSTORE CALLVALUE ISZERO PUSH1 0xE JUMPI PUSH1 0x0
DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD
DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND
SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR
SWAP1 SSTORE POP PUSH1 0x35 DUP1 PUSH1 0x5B PUSH1 0x0 CODECOPY PUSH1
0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP
LOG1 PUSH6 0x627A7A723058 KECCAK256 JUMP 0xb9 SWAP14 0xcb 0x1e 0xdd
RETURNDATACOPY 0xec 0xe0 0x1f 0x27 0xc9 PUSH5 0x9C5ABCC14A NUMBER 0x5e
INVALID EXTCODESIZE 0xdb 0xcf EXTCODESIZE 0x27 EXTCODESIZE 0xe2 0xb8 SWAP10
0xed 0x
Uno de los aspectos más relevantes a entender en Ethereum es el concepto del gas.
Cada transacción tiene asociado un gas limit y un gas price que condiciona las
comisiones que resultarán de la ejecución en la EVM. Estas comisiones permiten
compensar a los mineros por el coste computacional de ejecutar el código. El gas
permite también la creación de cuentas y smart contracts.
Los bloques minados en Ethereum tienen un gas límite asociado, de forma que el
gas total utilizado por las transacciones en el bloque no puede superar dicho
límite.
Introducción a Blockchain
29
Tema 3. Ideas clave
Puesto que existe un coste asociado al gas, a mayor complejidad en una
transacción, mayor será su coste (lo que limita económicamente la posibilidad de
ataques).
Porosity: https://github.com/comaeio/porosity
Ethersplay (plugin para el desensamblador Binary Ninja):
https://github.com/trailofbits/ethersplay
IDA-Evm (plugin para IDA, otro desensamblador):
https://github.com/trailofbits/ida-evm
Ethereum no fue creado como una plataforma final terminada y cerrada. Al contrario,
se basa desde sus inicios en ser un código abierto con aportaciones de la comunidad,
aunque controlado en última instancia por un grupo reducido que vela por su
integridad.
octubre de 2015. Estos EIP son discutidos por la comunidad y, una vez debatidos y
aceptados por la comunidad, se incorporan a la plataforma asegurando de este
modo que se van adoptando mejoras al uso y funcionamiento de la red y son uno de
los elementos clave de asegurar que los cambios ocurran en la red y que sean
aceptados por una amplia mayoría de usuarios.
Introducción a Blockchain
30
Tema 3. Ideas clave
Un EIP es, formalmente, un documento técnico de diseño para proporcionar
información al resto de la comunidad, describiendo características y procesos, y
estructurado según las reglas definidas en el ya mencionado EIP-1. El proponente es
el responsable de crear consenso en la comunidad para su admisión. La
documentación técnica debe ser muy concisa para asegurar que es bien entendida y
las opiniones en contra deben ser también incorporadas y bien documentadas.
Los EIP no son una idea original de Ethereum, sino que se basan en la experiencia de
las BIP (Bitcoin Improvement Proposals) que a su vez se basan en las Python
Improvement Proposals.
Cada nueva actualización de la red incorpora un conjunto de EIP que deben ser
implementados en todos los clientes Ethereum de la red siendo pues la unidad
mínima de gobernanza.
Estándar (Standar Track EIP): que son los usados para los cambios globales en el
protocolo de red o en el consenso o en los estándares. Se subdividen en:
• Básico (core): que buscan mejorar el consenso dentro de Ethereum como los
EIP-5 y EIP-101, así como otras mejoras varias al sistema como el EIP-86 o EIP-
90.
• Redes (networking): que buscan mejorar el protocolo de red bien el devp2p
(EIP-8) o el Light Ethereum Subprotocol, Whisper o Swarm.
• Interfaz (interface): relativos a las especificaciones y estándares de API/RPC del
cliente Ethereum, como puede ser el EIP-6.
• ERC (Ethereum request for comments): relativos a los estándares y
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
31
Tema 3. Ideas clave
MetaEIP: son los usados para describir procesos generales, como el propio EIP-1
que definía la composición y uso de un EIP.
Informativos: dan pautas generales de uso a la comunidad Ethereum y son los
únicos que no tienen necesariamente el consenso de la comunidad, por lo que no
son de obligado cumplimiento.
La tercera etapa es la última llamada de revisión (last call) para que la comunidad
tenga la última oportunidad de sugerir cambios. En este momento, la propuesta
se ubica en un lugar preferente en la web de EIP para que sea validada por el
Introducción a Blockchain
32
Tema 3. Ideas clave
mayor número de personas de la comunidad Ethereum y así obtener el mayor
consenso con una implementación completamente funcional.
La cuarta etapa es la aceptación de la propuesta pasando al estado final para que
los desarrolladores de los clientes Ethereum las incorporen a sus
implementaciones. Si el EIP va a ser una mejora continua entonces pasa al estado
living.
La quinta etapa es la de mantenimiento, donde ya el EIP está en vida útil y solo se
debe modificar como consecuencia de identificación de errores.
Todos los EIP existentes que han llegado, al menos, al estado de borrador pueden
encontrarse en https://eips.ethereum.org/EIPS mientras que los que están aún como
idea inicial o abandonados se quedan en el directorio raíz https://eips.ethereum.org/
Para cerrar este punto de los EIP, vamos a mencionar a continuación algunos de los
más importantes o famosos:
Introducción a Blockchain
33
Tema 3. Ideas clave
EIP-779 (Hard Fork Meta DAO) surge para poder resolver el problema del robo de
fondos ocurrido en TheDAO y devolver los fondos a sus dueños, pero que provocó
la escisión de la cadena Ethereum en dos comunidades: Ethereum (los que
aplicaron este EIP) y Ethereum Classic (los que no lo aplicaron). Esta escisión se
produjo porque este EIP realizaba una sobreescritura hacia atrás de la cadena
hasta el momento del robo.
EIP-1559 (Cambio de comisiones) activada en agosto de 2021 en el bloque
12.965.000, mediante el Hard Fork London, incorpora el concepto de «propina» y
produce un mecanismo para quemar Ethers asociados a las comisiones para que
Ethereum se convierta en un futuro en un activo deflacionario atractivo para
inversionistas y que permite, además, una expansión o contracción del bloque de
datos para incluir más o menos transacciones por bloque y disminuir la congestión
de la red. Es importante reseñar que Ethereum sería deflacionista solo si el número
de ETH producidos en minería es inferior al número de ETH quemados en
comisiones, lo cual ahora no es así (se producen diez veces más de lo que se
quema). Este EIP es parte de la evolución a Ethereum 2.0.
Ethereum 2.0
Antes de hablar de Ethereum 2.0, hay que recordar que la red Blockchain Ethereum
1.0 ha pasado por varias fases desde su lanzamiento en 2015:
1.ª etapa: FRONTIER. La primera versión desplegada fue lanzada en 2015 y fue,
básicamente, orientada a desarrolladores para empezar a generar Ether, diseñar
Dapps y experimentar.
en protocolos.
Introducción a Blockchain
34
Tema 3. Ideas clave
3.ª etapa: METRÓPOLIS. Es la actual plataforma y se subdivide en dos subetapas:
Byzantium (octubre de 2017) y Constantinople (febrero de 2019). Con Byzantium
se introdujeron mejoras en muchos aspectos de la red:
• Ejecución más ágil y segura.
• Coste de gas más predecible.
• Verificación de conocimiento cero (zk-SNARK) que permite comprobar la
veracidad de una afirmación sin necesidad de revelar ningún dato sobre el
conocimiento a revelar.
• Se introdujo una «bomba de minería» como un ajuste del algoritmo de minado
para permitir la evolución de la siguiente fase. Este cambio básicamente viene
a permitir incrementar de formar exponencial la dificultad de la resolución de
la prueba de trabajo.
Por ello, para reducir este consumo y ser más eficiente, se introduce el concepto de
Ethereum 2.0 que no es una única actualización, sino un conjunto de EIP que,
conjuntamente, transforman la red actual en otra. Básicamente constará de tres
mejoras:
La fecha prevista para la activación del PoS (proof-of-stake) de modo genérico será el
desencadenante de la transformación y aún no está concretada, aunque se espera
Introducción a Blockchain
35
Tema 3. Ideas clave
que sea entre finales de 2021 y mediados de 2022 (ahora mismo solo está disponible
dentro de su misma cadena). Para activarla, se necesitan 16.384 validadores (lo que
equivale a 524.288 ETH) que es la cantidad que ya se ha depositado en los contratos
existentes en la cadena principal de la nueva Ethereum 2.0 a mediados de agosto de
2021, por lo que el sistema ya está en condiciones de iniciar la activación. El primer
bloque de la cadena Ethereum 2.0 fue creado a primeros de diciembre 2020, pero no
ha sido hasta esta fecha cuando se ha logrado completar el número de ETH
bloqueados necesarios para el número de validadores requerido.
Otro de los hitos para alcanzar Eth2.0 ha sido la activación del EIP-1559 para la gestión
de comisiones.
Aunque Ethereum 1.0 usa proof-of-work (PoW) como Bitcoin, en Ethereum se quiere
usar otro mecanismo de consenso denominado proof-of-stake (PoS) o prueba de
participación (en algunos casos, incluso lo nombran prueba de posesión). La
primera pregunta que debemos hacernos es ¿por qué se quiere cambiar de un
sistema PoW ya existente a un nuevo esquema basado en PoS? Básicamente porque
en un sistema distribuido basado en el PoW, los mineros en su conjunto gastan
mucha energía como se puede ver en estudios como el existente en PowerCompare
de noviembre de 2017 donde muestra que una red como Bitcoin ya consumía en ese
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
36
Tema 3. Ideas clave
bloques, debe tener primeramente una cantidad estipulada de Ether en su cuenta y
debe bloquear una cierta cantidad de ellos. Esta es la cantidad que la red usará para
elegir al minero que se encargará de minar cada bloque. Por ello, cuanto más Ether
bloqueado, más posibilidades de ser elegido (como en un sorteo). Para escoger el
ganador, se usa una función aleatoria que usa valores aleatorios del bloque y el
minero escogido será el responsable de la incorporación a la cadena unos bloques
después. Más adelante veremos más de este proceso de stacking.
Stacking
en el proceso.
Como no todas las cuentas pueden tener 32 ETH disponibles para bloquear, se
permite la creación de pools (stacking services).
Introducción a Blockchain
37
Tema 3. Ideas clave
Además, se introduce el concepto de recompensas, que se otorgan a los validadores
por acciones que ayuden al resto de la red a alcanzar el consenso, de modo que
acciones como agrupar transacciones en un nuevo bloque o comprobar el trabajo de
otros validadores serán algunas de las que asignarán nuevos ethers.
Una vez que se inicie el despliegue, la red estará constituida por sesenta y cuatro
fragmentos (o más si fuera necesario), siendo Ethereum 1.0 uno de estos fragmentos.
Cada uno de estos fragmentos será una Blockchain «independiente» y diferente del
resto, aunque todas supervisadas por la Beacon Chain como garantizadora de la
integridad global de Ethereum, como si fueran dos niveles.
Se estima que, una vez implementado este nuevo sistema de manera completa, se
podrán validar hasta 100.000 transacciones por segundo (frente a los no más de
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
38
Tema 3. Ideas clave
3.3. Las criptomonedas como usuario: wallets y
exchanges
Desde el punto de vista del usuario existen dos conceptos fundamentales para la
utilización de criptomonedas:
Es importante reseñar que tanto en los monederos digitales (wallets) como en las
exchanges no se almacenan las criptomonedas, sino las claves que permiten el acceso
a la operación con las criptomonedas al verificar nuestra propiedad sobre ellas y por
tanto nuestro derecho a la operación.
Los monederos más utilizados, por su sencillez, son los denominados light wallets. La
principal característica de estas aplicaciones es la posibilidad de empezar a utilizar
criptomonedas desde el primer momento, sin necesidad de descargar toda la cadena
de bloques, que en realidad no necesitan (puesto que solo requieren para su
funcionamiento la información relacionada con las direcciones que gestionan).
Introducción a Blockchain
39
Tema 3. Ideas clave
Para ello, estos monederos requieren de una funcionalidad ya descrita en el paper
original publicado por Satoshi Nakamoto, denominada Simplified Payment
Verification (SPV), por la cual obtienen de otros nodos de la red información sobre
las transacciones de entrada, que tienen como destino alguna de las direcciones
gestionadas, y transacciones de salida originadas en alguna de estas direcciones,
verificando que los bloques donde están incluidas estas transacciones existen y son
válidos. Esto permite evitar la descarga de la cadena de bloques en dispositivos
móviles, que no tienen espacio suficiente, y la necesidad de mantener actualizada la
información para poder operar en la red. Como contrapartida, los wallets que utilizan
SPV dependen de información externa para su funcionamiento y, potencialmente,
podrían ser susceptibles de ataques relacionados con esta dependencia.
Transacciones enviadas
Transacciones recibidas
(*) En realidad, no existe el concepto de ‘saldo’. El total de bitcoins asociados a una dirección es la suma de las transacciones
de salida generadas con destino a dicha dirección que no han sido todavía utilizadas como entradas de nuevas transacciones.
(**) El equivalente en euros se calcula en tiempo real, en función de la cotización de bitcoin (cada monedero puede calcular un
valor distinto, en función del mercado de referencia que pueda utilizar, ya que la cotización varía).
Introducción a Blockchain
40
Tema 3. Ideas clave
Para incrementar el anonimato, la mayoría de los monederos actuales implementan
direcciones HD (Hierarchical Deterministic), de forma que se origina
automáticamente una nueva dirección por cada transacción generada, impidiendo
de esta manera analizar los pagos realizados desde una misma aplicación con base
en la reutilización de una misma dirección.
Estos wallets utilizan una semilla (compuesta por un conjunto de 12 palabras) para
derivar, a partir de esta información, un conjunto ilimitado de claves privadas con su
correspondiente dirección pública.
Figura 11. Esquema de derivación de claves en wallets HD según el estándar BIP 32. Fuente:
https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
Dicha semilla permite, además, restaurar el wallet en otro dispositivo, así como
disponer de distintas instancias de este wallet en múltiples dispositivos.
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
41
Tema 3. Ideas clave
Figura 12. Wallet ligero (Jaxx) en Windows (Nótese que es idéntico al wallet para Android. Al usar
la semilla para restaurarlo en PC, permite gestionar las mismas direcciones HD.)
Para evitar este riesgo es posible generar un cold wallet, un soporte no electrónico
donde se registra la clave privada. Uno de los formatos más habituales para este tipo
de monederos son los denominados paper wallets o monederos en papel, como el
que podemos ver en la siguiente imagen.
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
42
Tema 3. Ideas clave
Figura 13. Paper wallet generado en https://walletgenerator.net/
Introducción a Blockchain
43
Tema 3. Ideas clave
https://blockchain.info/address/114MTWkUnGdDqfk39QywASX13yuXddNpXG
Para poder utilizar los fondos, basta con importar la clave privada escaneando el
código QR correspondiente en el paper wallet para incorporarla al conjunto de claves
privadas gestionadas por un monedero o bien “barrer” el paper wallet, desde el menú
correspondiente de la aplicación. De esta forma se genera una transacción utilizando
la clave privada para transferir los bitcoins a una dirección gestionada por el wallet,
de modo que el paper wallet, una vez procesado, ya no tiene valor y por tanto no hay
riesgo de que alguien pueda utilizar esa misma clave privada.
Hardware wallets
Introducción a Blockchain
44
Tema 3. Ideas clave
Este tipo de artefactos se conectan mediante un cable USB al dispositivo donde reside
el monedero. En el momento en que se genera una transacción el wallet no tiene
acceso a la clave privada, sino que el proceso de firma se realiza en la aplicación que
reside en el propio dispositivo (para garantizar que nadie tenga acceso a esta
información). Realizada la transacción y retirado el dispositivo del puerto USB, no hay
posibilidad de que alguien pueda comprometer o utilizar la clave privada (salvo
teniendo acceso al HW wallet).
Introducción a Blockchain
45
Tema 3. Ideas clave
Debemos distinguir entre dos tipos de exchanges: CEX (centralizados) y DEX
(descentralizados).
Las empresas que ofrecen este servicio facilitan a sus clientes una plataforma donde,
una vez registrados, pueden operar en el mercado. A cambio de este servicio, estas
empresas obtienen comisiones por cada operación que se realiza (compraventa,
depósito, retirada, etc.).
Una vez el cliente dispone de una cuenta validada, puede realizar una transferencia
desde su entidad financiera hacia la cuenta de la casa de cambio o bien transferir
criptomonedas para poder operar en el mercado. El tipo de órdenes que pueden
realizarse en los exchanges permite comprar o vender a precio de mercado (el valor
al que se intercambia en el momento en que se genera la orden), o bien establecer
otros criterios que dependen de cada casa de cambio (algunas posibilitan incluso
apalancamiento o ventas a corto, entre otras opciones).
© Universidad Internacional de La Rioja (UNIR)
Figura 18. Formulario para realizar distintos tipos de órdenes de compra/venta en Bitstamp.
A diferencia de un wallet, las casas de cambio tradicionales son quienes custodian los
fondos de sus clientes, estableciendo apuntes contables en su base de datos para
Introducción a Blockchain
46
Tema 3. Ideas clave
reflejar la posición de estos en cada moneda y las transacciones que realizan, así
como el estado del mercado y el libro de órdenes existente (orders book). Cuando un
usuario deposita criptomonedas en su cuenta para operar en el mercado, en realidad
transfiere a la empresa el control de estos activos (realiza una transacción hacia una
dirección controlada por el exchange, que es quien posee la clave privada que
permite generar transacciones hacia la red).
Para incrementar la seguridad y minimizar las consecuencias del robo de estas claves
(que se ha producido en múltiples ocasiones) la mayoría de los exchanges utilizan
direcciones multifirma distribuyendo las claves entre varios actores (la propia casa de
cambio, el usuario y una tercera parte de confianza), de forma que en el caso de
compromiso de una de las partes sea imposible movilizar los fondos al requerir la
firma de varias partes para generar una transacción.
En todo momento los clientes de los exchanges puede retirar sus fondos hacia sus
propios wallets, generándose al finalizar el proceso de verificación (en el que el
cliente debe proporcionar típicamente una clave y un segundo factor de
autenticación, vía SMS, TOTP, etc.) una transacción desde las direcciones donde la
casa de cambio almacena los activos de sus usuarios hacia la aplicación del cliente,
momento en el que este pasa a controlar sus criptomonedas.
© Universidad Internacional de La Rioja (UNIR)
Introducción a Blockchain
47
Tema 3. Ideas clave
Figura 19. Formulario para retirada (withdraw) de bitcoins en Bitstamp a la cartera del usuario.
Adicionalmente, las casas de cambio CEX solo disponen de una fracción de sus
reservas en criptomonedas online disponibles en el mercado. El grueso de los activos
se almacena en cold wallets custodiados con medidas de seguridad físicas y se activan
únicamente cuando es necesario para garantizar la liquidez, evitando que las claves
privadas puedan ser sustraídas por medios electrónicos.
A lo largo del tiempo, los controles exigidos por parte de distintos países (como es el
caso de EE. UU.) a las empresas que prestan estos servicios a sus ciudadanos se han
incrementado con el objetivo de cumplir la legislación y reducir el riesgo de
actividades fraudulentas. Las casas de cambio deben cumplir, en estos casos, las
normativas AML/KYC (Anti Monery Laundering / Know Your Customer) solicitando a
sus clientes en el proceso de registro la documentación necesaria para identificar de
forma fehaciente su identidad y domicilio, y registrando todas las operaciones que
realizan (información que podrá ser solicitada por las autoridades en los casos
contemplados por la ley).
Como resumen de las CEX, ofrecen gran liquidez, permiten adquirir diferentes tipos
de criptomonedas con dinero tradicional, ofrecen opciones de operación similares a
servicios de casas de cambio o de bolsa, pero tienen un control centralizado ofrecido
por un servicio de terceros, cobran comisión por el servicio (incluso, a veces,
considerable) y suponen una cierta pérdida de privacidad al usuario a cambio de esa
seguridad, aunque no están exentos de poder sufrir ataques.
Introducción a Blockchain
48
Tema 3. Ideas clave
DeCentralized exchange (DEX)
A nivel de seguridad, se puede decir que es alta, dado que las claves de operación
están en todo momento bajo control del usuario y no hay delegación en un tercero,
pero no hay en ningún momento, un respaldo en caso de robo o engaño dado que en
un instante dado perdemos la posesión de las monedas durante la operación.
Sin embargo, en los DEX no hay opciones avanzadas de operación como en los CEX ni
se pueden realizar operaciones de cambio por moneda tradicional o con
criptomonedas fuera de la red Blockchain donde están desplegados los smart
contracts, aunque están apareciendo DEX de segunda generación que permiten el
uso de múltiples redes al no tener que almacenar las monedas fuera de la wallet.
Introducción a Blockchain
49
Tema 3. Ideas clave