BLOCKCHAIN
CURSO ONLINE 2018
UNIVERSIDAD DE SALAMANCA
ENRIQUE DÍAZ-PLAZA SANZ | LUIS SERRANO SANTOS
BLOCKCHAIN. CURSO ONLINE.
                                           ÍNDICE DE CONTENIDOS
  1.- INTRODUCCIÓN Y GENERALIDADES.........................................................................3
     1.1.- ESTADO ACTUAL............................................................................................... 3
        1.1.1.- CONCEPTOS PREVIOS.............................................................................................. 4
     1.2.- TECNOLOGÍA BASE: SISTEMAS DISTRIBUIDOS..................................................6
        1.2.1.- TEOREMA DEL CAP................................................................................................... 7
        1.2.2.- CONSENSO.............................................................................................................. 8
            1.2.2.1.- MECANISMO DE CONSENSO.............................................................................. 8
            1.2.2.2.- TIPOS DE MECANISMO DE CONSENSO..............................................................9
     1.3.- BREVE REFERENCIA E HISTORIA DE BLOCKCHAIN...........................................10
        1.3.1.- DINERO ELECTRÓNICO........................................................................................... 10
     1.4.- INTRODUCCIÓN A BLOCKCHAIN......................................................................13
        1.4.1.- SELECCIÓN DE DEFINICIONES TÉCNICAS DE BLOCKCHAIN.....................................15
        1.4.2.- CLASIFICACIÓN DE BLOCKCHAIN BASADO EN SU EVOLUCIÓN................................16
  2.- CARACTERÍSTICAS BÁSICAS...................................................................................18
     2.1.- ALGUNOS COMPONENTES DESTACADOS EN BLOCKCHAIN..............................18
        2.1.1.- TRANSACCIÓN....................................................................................................... 18
        2.1.2.- BLOQUE................................................................................................................. 18
        2.1.3.- DIRECCIÓN............................................................................................................. 21
        2.1.4.- RED PEER-TO-PEER................................................................................................ 22
     2.2.- DESCENTRALIZACIÓN.....................................................................................23
        2.2.1.- MÉTODOS DE DESCENTRALIZACIÓN...................................................................... 23
            2.2.1.1.- DESINTERMEDIACIÓN..................................................................................... 23
            2.2.1.2.- A TRAVÉS DE LA COMPETENCIA...................................................................... 24
            2.2.1.3.- RUTAS HACIA LA DESCENTRALIZACIÓN...........................................................25
     2.3.- SMART CONTRACT.......................................................................................... 25
  3.- APLICACIÓN PRÁCTICA A CASOS DE NEGOCIO.......................................................27
     3.1.- RETOS PLANTEADOS POR TRANSACCIONES EN NEGOCIOS............................27
     3.2.- EVOLUCIÓN DE LA RED EMPRESARIAL............................................................28
     3.3.- CASO DE USO EJEMPLO: ALQUILER DE VEHÍCULOS.........................................29
     1.3.4.- VENTAJAS DERIVADAS DEL USO DE BLOCKCHAIN........................................31
  4.- CRIPTOGRAFÍA: BASE Y APLICACIÓN......................................................................33
     4.1.- INTRODUCCIÓN A LA CRIPTOGRAFÍA..............................................................33
     4.2.- CRIPTOGRAFÍA SIMÉTRICA..............................................................................33
     4.3.- CRIPTOGRAFÍA ASIMÉTRICA. CIFRADO DE CLAVE PÚBLICA.............................34
     4.4.- FIRMA DIGITAL................................................................................................ 36
     4.5.- PROTOCOLOS DE FIRMA DIGITAL....................................................................37
     4.6.- HASH.............................................................................................................. 38
     4.7.- TRANSPOSICIÓN A BLOCKCHAIN.....................................................................43
     4.7.1.- BIFURCACIONES........................................................................................... 44
                                                         Página 1 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
     4.7.2.- RAÍZ DE ÁRBOL DE MERKLE.........................................................................45
  BIBLIOGRAFÍA............................................................................................................. 47
  ILUSTRACIONES........................................................................................................... 48
                                                     Página 2 de 49
BLOCKCHAIN. CURSO ONLINE.
              1.- INTRODUCCIÓN Y GENERALIDADES
       El presente capítulo se encarga de introducir la tecnología, aplicaciones y algunos
aspectos relevantes a ser considerados de cara al posterior desarrollo de contenido.
1.1.- ESTADO ACTUAL
       Con la invención de la criptomoneda Bitcoin en 2008, el mundo experimentó el
conocimiento de un nuevo concepto que ahora es muy probable revolucione a toda la
sociedad, cuyo impacto impactará a múltiples sectores distintos y multidisciplinares,
abarcando desde industria, finanzas, gobierno o hasta medios de comunicación.
       Algunos “gurús” lo describen como una revolución tecnológica actual y de carácter
permanente, mientras que desde otras perspectivas quizá menos pretenciosas se propone
como una evolución tecnológica, cultural y de negocio, previendo que pasen muchos años
antes de que los beneficios prácticos de la cadena de bloques lleguen a fructificar. Ambas
posturas pueden ser igual de ciertas, si bien es cierto que aún nos encontramos en una fase
mayoritariamente de desarrollo experimental y desarrollo, aunque ya existen proyectos en
marcha muy ambiciosos que denotan el futuro prometedor que le espera a blockchain en el
mundo de la tecnología.
       Muchas organizaciones en todo el mundo ya están realizando pruebas de concepto
utilizando blockchain como tecnología base, ya que su potencial de disrupción y ventajas
aportadas es a día de hoy, universalmente reconocido. Sin embargo, algunos organismos aún
se encuentran en una etapa de exploración muy preliminar, si bien se espera que avancen
más rápidamente a medida que la tecnología se está haciendo más madura. De hecho, ésta es
una aproximación que también está teniendo un considerable impacto en otras tecnologías
muchas de ellas vinculadas con la transformación digital. De este modo, blockchain se
combina con ellas, complementándolas y mejorando su aplicación y casos de uso de
aplicación. Ello lo consigue gracias a la posibilidad de obtener aplicaciones más avanzadas
de manera ágil, capaces de dotar de nuevas funcionalidades hasta ahora no posibles o de
complicada consecución a negocios y agentes participantes de toda índole.
                                        Página 3 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       1.1.1.- CONCEPTOS PREVIOS
          Blockchain se presenta como un conjunto de tecnologías mayormente pertenecientes
a la disciplina de las tecnologías de información (P2P, sellado de tiempo, criptografía, etc.),
que combinadas hacen posible que entornos de computación y otros dispositivos sean
capaces de gestionar la información, compartiendo registros distribuidos, descentralizados y
sincronizados entre todos ellos. Ello lo consigue en vez de utilizar sistemas basados en
aplicaciones o bases de datos centralizadas en algún grado.
          Pero no es sólo eso, sino que dicha tecnología permite trasmitir y almacenar la
información de un modo extremadamente seguro, respetando la identidad y privacidad
gracias al uso de claves criptográficas. Además, los registros generados no permiten su
alteración (es decir, no se permite deshacer o reescribir lo ya registrado), lo cual puede ser
además visible y compartido con cualquier participante de la red (e.g. redes públicas
blockchain). Ello eleva la transparencia y facilita la colaboración entre múltiples agentes
deslocalizados, cuya relación hasta la fecha era impensable, bien por la dificultad a la hora
de realizar dicha colaboración bien por la falta de confianza o desconocimiento entre las
partes.
          Como analogía, podemos asemejar el blockchain a un libro de cuentas donde en cada
página se registran las operaciones necesarias para llevar a cabo un cálculo que parte del
resultado obtenido en la página anterior. Considerando este paradigma, podemos destacar
dos propiedades relevantes asociados a las cadenas de bloques:
         Distribuido: existirán tantas copias potenciales como usuarios.
         Inmutable: la modificación de un bloque invalidaría los sucesivos.
          Es fácil observar que intentar cambiar un solo apunte de una página, conlleva
también modificar todas las páginas sucesivas… y no sólo en una de las copias, sino en
todas las existentes o distribuidas. Por tanto, dado el gran número de copias distribuidas del
mismo libro, intentar alterar datos en una cadena de bloques puede ser una tarea titánica si
no imposible dado que, conforme se indicaba, la modificación no debe realizarse en una sola
copia, sino en todas las existentes para guardar así la coherencia y consistencia necesaria.
                                          Página 4 de 49
BLOCKCHAIN. CURSO ONLINE.
       Todas estas características posicionan al blockchain como una “tecnología para dar la
confianza más importante de la historia”, según citan algunos expertos, hasta tal punto que
ha abierto las puertas a algo hasta hace poco impensable: prescindir de los intermediarios
que eran necesarios para dar esa confianza, ya sean ciberfísicos (e.g. servidores de
verificación y control) o incluso personas y entidades (notarios, bancos centrales,
mediadores, etc.).
       La disrupción tecnológica y de cultura empresarial que este concepto del registro
distribuido ha traído, está empezando a cobrar una importante dimensión, con lo que las
aplicaciones potenciales para diversos sectores y negocios están ya pasando del mero plano
conceptual a ofrecerse en las primeras soluciones reales.
       De este modo, las primeras aplicaciones en llegar han sido financieras, para redes
que dan soporte a las criptomonedas o monedas digitales (e.g. Bitcoin), permitiendo realizar
de forma rápida, segura y más barata pagos directos entre usuarios, sin necesidad de que una
entidad intermediaria (e.g. bancos) sea interviniente. Así, la confianza en la validez y
seguridad de las transacciones la proporciona la tecnología blockchain, y su naturaleza de
registro compartido, consensuado, transparente e inviolable.
       Considerando lo anterior, y aunque pudiera parecer lo contrario, los propios bancos y
entidades de intermediación están plenamente inmersos en la adopción de la tecnología
blockchain en sus procesos de negocio, como, por ejemplo, en la creación y disponibilidad
de registros interbancarios compartidos y gestionados de forma común, que evite la
duplicidad y complejos sistemas de intercambio de información entre agentes distribuidos.
Por ello, el financiero, con numerosas entidades bancarias colaborando en la actualidad en
explorar diversos usos de blockchain para reducir costes operativos, ha sido uno de los
primeros sectores en adoptar esta tecnología en su estrategia de innovación.
       De este modo se identifica que la práctica totalidad de las industrias y sectores (e.g.
seguros, transporte, salud, logística, industria…) es capaz de encontrar ventajas y aplicación
de casos de uso, siempre que aplique adecuadamente el blockchain, ya que les ayuda tanto
en la mejora de sus procesos de negocio actuales, como en el descubrimiento y explotación
de otros nuevos hasta la fecha no posibles o muy complicados de implementar.
                                        Página 5 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
         Como decimos, el concepto de un registro consensuado, compartido e inmutable, que
elimina la necesidad de intermediarios de confianza entre las partes, tiene múltiples ventajas
y aplicaciones. Una de ellas permite asegurar la procedencia de ciertos bienes y productos
(alimentos, medicamentos, joyas u objetos de valor, etc.), así como llevar a cabo el
seguimiento de sus movimientos y/o transformaciones a lo largo de una cadena de
suministro (trazabilidad), sin que nadie pueda manipular la información registrada. Para ello,
en la cadena de bloques se conserva una representación digital del producto vinculada a un
registro de todas las operaciones que le van afectando. De este nodo, el carácter distribuido e
inviolable de blockchain impide que se pueda falsear la información ya registrada.
1.2.- TECNOLOGÍA BASE: SISTEMAS DISTRIBUIDOS
         Entender qué son los sistemas distribuidos es básico para comprender el
funcionamiento de blockchain, ya que en esencia una cadena de bloques (blockchain) es un
sistema distribuido; y, en concreto, un sistema distribuido descentralizado.
         Los sistemas distribuidos son un paradigma de computación mediante el cual dos o
más nodos trabajan de manera conjunta y coordinada para lograr un resultado común.
         Un nodo puede definirse como un participante individual en un sistema distribuido.
Así, todos los nodos son capaces de enviar mensajes y recibirlos por parte del resto de
nodos.
         Los nodos poseen memoria y un procesador propio, y pueden tener un
comportamiento adecuado favoreciendo el correcto funcionamiento de la red, si bien hay
que considerar que pudieran estar en un estado defectuoso o exhibir un comportamiento
malicioso. Así, un nodo cuyo comportamiento es de carácter arbitrario, se denomina nodo
Byzantine. Este comportamiento arbitrario pudiera ser intencionado con objeto de perjudicar
el funcionamiento de la red. De este modo, y en general, cualquier comportamiento
inesperado de un nodo en la red se puede categorizar como bizantino.
                                         Página 6 de 49
BLOCKCHAIN. CURSO ONLINE.
           El principal desafío en el diseño de sistemas distribuidos suele centrarse en la
coordinación entre los nodos y tolerancia a errores. Incluso si algunos de los nodos tuvieran
problemas porque se haya roto su enlace con la red, el sistema distribuido deberá tolerarlo y
seguir trabajando perfectamente con el fin de lograr el resultado deseado. Las soluciones a
este tipo de problemas son un área de investigación activa durante muchos años, basándose
en distintas aproximaciones, mecanismos y algoritmia para superarlos y preservar su
correcto funcionamiento.
           La siguiente figura muestra un sistema distribuido ejemplo. En el mismo, los
distintos nodos vienen representados por N#, mientras que las conexiones de red entre ellos
por L#. Así, en dicha figura, N4 representaría un nodo bizantino, y L2 una conexión rota o
degradada. Se puede comprobar que, dependiendo de la topología de la red distribuida y los
mecanismos utilizados en la misma, la existencia de este tipo de nodos y/o conexiones
ponen en compromiso el propósito general para el que la red es utilizada por los usuarios
finales.
                          Ilustración 1: Redes distribuidas y nodos bizantinos.
     1.2.1.- TEOREMA DEL CAP
           El teorema del CAP, también conocido como Teorema de Brewer, fue introducido
originalmente, como conjetura, por Eric Brewer en 1998. Más tarde, en 2002 se demostró
como un teorema por Seth Gilbert y Nancy Lynch.
                                             Página 7 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
        El teorema establece que cualquier sistema distribuido no puede tener consistencia,
disponibilidad y tolerancia a la partición al mismo tiempo, considerando dichos atributos
como:
   Consistencia (Consistency): propiedad que asegura que todos los nodos en un sistema
    distribuido tienen una copia de datos actualizada.
   Disponibilidad (Availability): significa que el sistema es accesible para su uso,
    verificándose para ello la aceptación de las solicitudes entrantes y su posterior respuesta
    sin errores.
   Tolerancia a la partición (Partition tolerance): asegura que, si un nodo deja de
    funcionar, el resto de nodos del sistema distribuido no se ven afectados, continuando con
    su correcto funcionamiento.
     De este modo, y conforme se comentaba, el teorema del CAP demuestra que un sistema
distribuido no puede tener esas tres propiedades al mismo tiempo.
     Para lograr tolerancia a fallos, un método común y ampliamente utilizado es la
replicación. Así, la consistencia se logra utilizando algoritmos de consenso para asegurar que
todos los nodos tienen la misma copia de los datos. Esto también se denomina “máquina de
estado de replicación”, por lo que blockchain es básicamente un método para lograr
máquinas de estado de replicación.
     1.2.2.- CONSENSO
        Consenso, es un proceso mediante el cual se llega a un acuerdo o se desconfía de
nodos en un estado final de datos. Para lograrlo, existen diferentes tipos de algoritmos de
consenso que pueden ser utilizados.
        Es fácil llegar a un acuerdo entre dos nodos, como por ejemplo en sistemas cliente-
servidor; pero cuando múltiples nodos participan en un sistema distribuido y necesitan
ponerse de acuerdo sobre un único valor, se puede tornar realmente complicado alcanzar un
                                         Página 8 de 49
BLOCKCHAIN. CURSO ONLINE.
consenso. Este concepto de lograr consenso entre varios nodos se conoce como “consenso
distribuido”.
            1.2.2.1.- MECANISMO DE CONSENSO
       Los mecanismos de consenso (estudiado durante más de tres décadas tanto por
profesionales de la industria como académicos), son un conjunto de medidas que se toman
en todos -o casi todos- los nodos, para estar de acuerdo sobre un estado o valor determinado.
Así, y si bien el concepto no es nuevo, actualmente ha adquirido un interés especial gracias a
la irrupción de Bitcoin y blockchain.
       Hay varios requisitos que deben cumplirse para proporcionar los resultados deseados
en un mecanismo de consenso, como por ejemplo:
   Validez: el valor acordado por todos los nodos “honestos” debe ser el mismo que el
    valor inicial propuesto por al menos un nodo honesto.
   Integridad: ningún nodo toma la decisión más de una vez, de modo que los nodos
    toman decisiones sólo una vez en un solo ciclo de consenso.
   Acuerdo: todos los nodos honestos deciden sobre el mismo valor.
   Finalización: todos los nodos honestos terminan la ejecución del proceso de consenso y
    eventualmente llegan a una decisión.
   Tolerancia a fallos: el algoritmo de consenso se ejecutará en presencia de nodos
    defectuosos o maliciosos (nodos bizantinos).
            1.2.2.2.- TIPOS DE MECANISMO DE CONSENSO
    Si bien existen varios tipos de mecanismos de consenso, la tipología básica para ellos
puede ser descrita del siguiente modo:
   Mecanismos de consenso basado en liderazgo: este tipo de mecanismo requiere que
    los nodos compitan para lo que se denomina “lotería líder-electoral”, de modo que el
    nodo ganador propone un valor final.
                                         Página 9 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
   Tolerancia a fallos bizantinos: basado en un esquema simple de nodos que están
    publicando mensajes firmados. Así, mediante este mecanismo, cuando se recibe un cierto
    número de mensajes es cuando se llega a un acuerdo.
       Se han propuesto muchas implementaciones prácticas como Paxos, introducido por
Leslie Lamport en 1989. En los nodos Paxos se asignan varios roles como el “proponente”,
el “aceptador” y el “aprendiz”. Así, los nodos o procesos se denominan réplicas y se logra
consenso en presencia de nodos defectuosos por acuerdo entre la mayoría de nodos.
       Otra alternativa a Paxos es RAFT, que trabaja asignando a los nodos uno de los
siguientes tres estados: líder, seguidor o candidato. De este modo, un líder es elegido
después de que un nodo candidato reciba suficientes votos. En ese momento, todos los
cambios tienen que pasar por el nodo líder, quien confirma los cambios propuestos una vez
que se complete la replicación en la mayoría de los nodos seguidores.
1.3.- BREVE REFERENCIA E HISTORIA DE BLOCKCHAIN
       El concepto de dinero electrónico, al igual que el de sistema distribuido, es necesario
para entender la tecnología blockchain.
       Desde la década de 1980 han existido protocolos de dinero electrónico que se basan
en un modelo propuesto por David Chaum; pero no es hasta 2008, con la creación del
Bitcoin, cuando se introduce blockchain como concepto.
       De este modo, los conceptos teóricos que se utilizan en sistemas distribuidos influyen
tanto en el sistema del Bitcoin como en los algoritmos de consenso que constituyen la base
de la aplicación práctica de sus propias aplicaciones, si bien las propuestas, ideas y
conclusiones extraídas de las diferentes monedas electrónicas lanzadas también han
favorecido la invención de las criptomonedas actuales.
     1.3.1.- DINERO ELECTRÓNICO
                                          Página 10 de 49
BLOCKCHAIN. CURSO ONLINE.
         El concepto de criptomoneda (o moneda criptográfica) fue introducido por Wei Dai
en 1988, donde se proponía el uso de un nuevo tipo de dinero basado en criptografía para
controlar las transacciones en vez de la acción de una autoridad centralizada.
         Claramente, se identifica la responsabilidad y el anonimato como las cuestiones
fundamentales a abordar en los sistemas de moneda electrónica. Así, David Chaum abordó
ambas cuestiones en su publicación de 1984 mediante la introducción de dos operaciones
criptográficas: firmas ciegas y secretos compartidos. Las firmas ciegas permiten firmar un
documento sin verlo, mientras que los secretos compartidos introducen un concepto que
permite detectar si un mismo token de E-Cash se está utilizando dos veces.
         Después de éste han surgido otros protocolos, como por ejemplo el CFN (Chaum-
Fiat- Naor), el cual ha introducido aspectos como el de anonimato y detección de doble
gasto.
         CFN introduce y crea nuevos protocolos de dinero electrónico basados en él,
incorporando conceptos como el de reducción de la seguridad para probar declaraciones
sobre el esquema de dinero electrónico. La reducción de la seguridad es una técnica que se
utiliza en criptografía para demostrar que un cierto algoritmo es seguro mediante el uso de
otro problema como una comparación. Dicho de otro modo, un algoritmo de seguridad
criptográfica es tan difícil de romper como lo sea algún otro problema; así, por comparación,
se puede deducir que el algoritmo de seguridad criptográfica es seguro también.
         Por otra parte, el concepto HashCash fue introducido por Adam Back en 1997 como
un sistema PoW (Proof of Work) para controlar el spam de correo electrónico. PoW es un
protocolo diseñado con el principal objetivo de evitar ciberataques en la red, lo cual también
permite llevar a cabo un consenso distribuido de transacciones "sin confianza". Tener un
consenso distribuido significa que no es necesaria la confianza y participación de terceros
(mediadores) para enviar o recibir datos en línea, dado que sólo es necesario verificar que la
transacción sea exitosa.
         La idea base es simple: para el caso de introducción de envío de correos electrónico y
evitar spam, si los usuarios legítimos quieren enviar correos electrónicos entonces tendrán
que calcular una cadena tipo hash como una prueba de que han pasado una cantidad
                                         Página 11 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
razonable de recursos de computación antes de enviar el correo electrónico. La generación
de un HashCash es un proceso de cálculo intensivo pero que no inhibe a un usuario legítimo
de enviar un correo electrónico, ya que el número habitual de mensajes de correo electrónico
que debe ser enviado por un usuario legítimo es probablemente muy bajo. Por otro lado, si
un spammer quisiera enviar mensajes de correo electrónico a miles de personas a la vez,
entonces sería inviable realizar el cómputo del HashCash para todos los correos electrónicos.
Como resultado, este mecanismo se ha utilizado para frustrar el spam de correo electrónico.
       A pesar de que HashCash toma una cantidad considerable de recursos
computacionales para calcular, la verificación es fácil y rápida y es realizada por el usuario
que recibe el e-mail. Esta idea de usar rompecabezas computacionales o funciones de
precios para prevenir el spam de correo electrónico fue introducida originalmente en 1992
por Cynthia Dwork y Moni Naor. Más adelante, Adam Back inventó en 1997 el HashCash
de forma separada, lo cual introdujo el uso de funciones hash computacionales como PoW.
       En 1998 b-money fue creado por Wei Dai, el cual propuso la idea de crear dinero a
través de la resolución de puzzles computacionales como HashCash. La propuesta se basa en
una red peer-to-peer (P2P) donde cada nodo mantiene su propia lista de transacciones. Otra
idea similar (BitGold) fue introducida por Nick Szabo en 2005, el cual también propuso
resolver rompecabezas computacionales para acuñar monedas digitales. En 2005, Hal
Finney introdujo el concepto de moneda criptográfica mediante la combinación de ideas de
b-money y rompecabezas HashCash, si bien éste se basó en una autoridad de confianza
centralizada.
       Sin embargo, y pese a las ventajas incorporadas, se detectaron muchos problemas
con las aproximaciones descritas anteriormente, incorporando retos que abarcaban desde que
ninguna solución daba una clara respuesta a la resolución de desacuerdos entre nodos, hasta
la dependencia de un tercero que actuara como entidad centralizada de confianza, así como
de registro temporal de transacciones.
       Así, en 2009 se introdujo la primera implementación práctica de una criptomoneda,
llamada Bitcoin, resolviéndose por primera vez el problema del consenso distribuido en una
red de confianza. Bitcoin utiliza criptografía de clave pública con HashCash como PoW,
para proporcionar un método seguro, controlado y descentralizado de acuñar moneda digital.
                                         Página 12 de 49
BLOCKCHAIN. CURSO ONLINE.
La innovación clave que introduce es la idea de disponer de una lista ordenada de bloques
compuestos por transacciones, asegurados criptográficamente por el mecanismo de PoW.
Así, PoW se utiliza por su capacidad para resolver problemas matemáticos
excepcionalmente difíciles, usado para gestionar (y escribir) nuevos grupos de transacciones
sin confianza. Dicho proceso intensivo es conocido como “minería”, inspirado en la minería
del oro.
        Considerando todas las tecnologías mencionadas y su historia, es fácil ver cómo se
combinaron ideas y conceptos de esquemas electrónicos de dinero y sistemas distribuidos
para inventar Bitcoin y lo que ahora se conoce como cadena de bloques.
1.4.- INTRODUCCIÓN A BLOCKCHAIN
        Hay distintas definiciones de blockchain, dependiendo además de quién las lleve a
cabo y las distintas perspectivas consideradas (empresarial o de negocio, técnico, académico,
estratégico, etc.).
        Por una parte, blockchain puede definirse como una tecnología capaz de gestionar
transacciones complejas basándose en técnicas criptográficas. De este modo, la tecnología se
basa en un registro compartido de transacciones (ledger), un consenso (que verifica dichas
transacciones), y un contrato (que determina las reglas de funcionamiento de dichas
transacciones). Por ello, se dice que blockchain es un sistema de contabilidad (o libro
mayor) distribuido (peer-to-peer), criptográficamente seguro, inmutable (ya que es
extremadamente difícil de cambiar) y actualizable sólo mediante consenso o acuerdo entre
pares. Por este motivo a ciertos sistemas blockchain comúnmente se les conoce como
Distributed Ledger Technology (DLT), es decir Tecnología de Libro Mayor.
        Relacionado con el enfoque anterior, también se dice que la cadena de bloques actúa
como una base de datos distribuida capaz de registrar bloques de información y conectarlos
entre sí, para facilitar la recuperación de información y asegurar que los datos almacenados
son veraces y no han sufrido modificaciones. De este modo, cada bloque de información es
relacionado con el siguiente mediante punteros (apuntadores) tipo hash que conectan cada
                                       Página 13 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
bloque con el anterior en modo cascada, hasta llegar a un nodo origen; por ello es la
denominación de cadena de bloques, o blockchain.
       Considerando dicho contexto, la información contenida en cada bloque únicamente
puede ser editada modificando todos los bloques conectados, lo cual permite al blockchain
actuar como una base de datos pública no relacional de no repudio.
                     Ilustración 2: Estructura básica de una cadena de bloques.
       Por otra parte, la cadena de bloques también puede ser considerada como una capa de
red peer-to-peer distribuida basada en Internet, análogamente a como ocurre con los
protocolos SMTP, HTTP o FTP sobre la capa Internet de la pila TCP/IP.
                           Ilustración 3: Visión de blockchain como red.
                                          Página 14 de 49
BLOCKCHAIN. CURSO ONLINE.
       Desde el punto de vista empresarial, una cadena de bloques puede definirse como
una plataforma mediante la cual los participantes son capaces de intercambiar valores
mediante transacciones sin necesidad de una gestión central de confianza. Ello permite que
blockchain sea un mecanismo de consenso descentralizado en el que ninguna autoridad se
encargue de la base de datos como tal.
       Así queda representado en la figura siguiente, donde se compara el modo de
gestionar las transacciones entre los distintos agentes de manera “tradicional” o soportado
por una infraestructura blockchain.
                          Ilustración 4: Estructura general de blockchain.
       De este modo, la tecnología blockchain permite el establecimiento digital de
acuerdos e interacciones basadas en transacciones de manera directa entre partes, evitando
así, y conforme se indicaba, la intermediación de otros agentes.
     1.4.1.- SELECCIÓN DE DEFINICIONES TÉCNICAS DE BLOCKCHAIN
                                          Página 15 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       Si bien comentábamos antes algunas definiciones también desde un punto de vista
técnico, destacamos a continuación algunos conceptos derivados de las mismas que deben
de ser tenidos en cuenta:
   Blockchain es una estructura de datos. Se estructura como una lista, cuyas
    transacciones están vinculadas entre sí mediante unos punteros (apuntadores) hash en
    lugar de punteros normales. Los punteros hash se utilizan para apuntar al bloque anterior
    y generar la cadena.
   Blockchain es un mecanismo de consenso descentralizado. En un blockchain todos
    los nodos llegan a un acuerdo con respecto al estado de una transacción.
   Blockchain es un libro de contabilidad compartido y distribuido. Puede considerarse
    como un libro contable que almacena las transacciones y del que todos los participantes
    tienen copia, donde la transacción se ordena y se agrupa en bloques. Este modelo difiere
    de las bases de datos tradicionales en que, mientras que en las bases de datos cada
    organización tiene que poseer (y gestionar) la suya propia, un blockchain puede servir
    como una única fuente para todas las organizaciones que formen parte del sistema.
       Considerando lo anterior, la estructura genérica de una cadena de bloques se puede
representar fácilmente mediante el siguiente diagrama.
                            Ilustración 5: Estructura general de blockchain.
     1.4.2.- CLASIFICACIÓN DE BLOCKCHAIN BASADO EN SU EVOLUCIÓN
       Si bien hay muchos modos por los cuales las cadenas de blockchain se pueden
clasificar (e.g. según sus permisos, el acceso a los datos, por combinación de acceso vs
permiso, dependiendo del modelo de cambio de estado, etc.), habitualmente, las aplicaciones
de blockchain también son clasificadas dependiendo de su estado de desarrollo, destacando
tres categorías principales:
                                            Página 16 de 49
BLOCKCHAIN. CURSO ONLINE.
   Blockchain 1.0: comprende las criptomonedas virtuales (Bitcoin), siendo las
    aplicaciones pertenecientes a este estado son las más conocidas a nivel general. Sus
    comienzos, como se ha indicado, datan de 2009, teniendo entre 2013 y 2014 una gran
    repercusión.
   Blockchain 2.0: supone una evolución sobre el estado 1.0, permitiendo la extensión de
    dicho enfoque a entornos privados, la introducción de smart contracts (contratos
    inteligentes) y la aparición de tokens y capacidades no nativas. Un smart contract
    representa un protocolo digital que ejecuta de manera automática los procesos
    predefinidos por una transacción sin requerir la participación de un tercero. En este
    estado, los participantes tienen la capacidad de decidir si construyen sus aplicaciones en
    un blockchain público (donde la identidad de los participantes permanece anónima) o
    privada (donde todos los participantes son conocidos). Casos ejemplo de blockchain
    públicos son Ethereum, mientras que entre las cadenas de bloques privadas podemos
    destacar Hyperledger (entre otros).
   Blockchain 3.0: en este grado de madurez se produce una evolución donde, por ejemplo,
    el concepto de smart contract evoluciona en cuanto a funcionalidades y enfoque,
    incorporando, entre otros aspectos, aplicaciones M2M (machine-to-machine), servicios
    de capa 2 que permitan la gestión de transacciones baratas e instantáneas en el
    blockchain, y la agrupación de protocolos de cadenas de bloques que permiten la
    creación y participación de organizaciones autónomas verdaderamente descentralizadas.
    Su enfoque, por tanto, va más allá de la propia criptomoneda o contratos inteligentes,
    orientándose a distintas áreas y negocios. Además, dicho estadio se centra sobre todo en
    resolver los problemas de escalabilidad, velocidad y consumo energético detectados en
    1.0 y 2.0.
   Blockchain 4.0 (y versiones superiores): supone la evolución de los estados anteriores,
    mejorando capacidades como el establecimiento de consensos, la creación y
    confirmación de transacciones más rápidas y eficientes, el establecimiento de mejores
    mecanismos de gobierno, el soporte a alta concurrencia, la mejora de funcionalidad y
    usabilidad, la integración con otras tecnologías existentes y disruptivas, etc.
                                          Página 17 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
                      2.- CARACTERÍSTICAS BÁSICAS
          En esta sección se enumeran algunas características y elementos básicos que
forman parte en arquitecturas blockchain.
2.1.- ALGUNOS COMPONENTES DESTACADOS EN BLOCKCHAIN
          A continuación, se procederá a indicar a nivel introductorio, algunos elementos
destacados en aplicaciones y arquitecturas blockchain.
     2.1.1.- TRANSACCIÓN
          Una transacción es la unidad fundamental de una cadena de bloques. Una transacción
representa, por tanto, una transferencia de valor de una dirección a otra.
          Así, cuando un agente (e.g. proveedor) y otro (e.g. consumidor) acuerdan llevar a
cabo una transacción, ellos definen las variables de dicha transacción, quién la envía, quién
la recibe y el tamaño de la misma, entre otros aspectos. Toda la información relativa a una
determinada transacción es, por tanto, combinada con la información de otras transacciones
llevadas a cabo en el mismo periodo, creando lo que se denomina como un “bloque de
datos”.
     2.1.2.- BLOQUE
          Un bloque es una agrupación de transacciones organizadas lógicamente. Su tamaño
es variable dependiendo del tipo y del diseño del blockchain que se esté utilizando. En el
bloque, se almacena de forma permanente (e inalterable) toda la información (transacciones)
generadas y manejadas por el blockchain.
                                         Página 18 de 49
BLOCKCHAIN. CURSO ONLINE.
              Ilustración 6: Infográfico representativo de un proceso genérico de blockchain.
         Conforme se indicaba anteriormente, todos los bloques cuentan con una referencia a
un bloque anterior, a excepción del bloque origen o de “Génesis”. Se denomina “bloque de
Génesis” al primer bloque de la cadena que ha sido codificado en el momento en que la
cadena de bloques se ha creado.
         Cada bloque contiene información relativa a las transacciones asociadas a un
periodo, siguiendo una estructura denominada Markle Tree.
         La estructura de un bloque también depende de las características del blockchain en
uso; pero, generalmente, hay algunos atributos que son esenciales para la funcionalidad de
un bloque, como son el encabezado de bloque y el cuerpo del bloque.
         De este modo, el encabezado está compuesto por los siguientes componentes, entre
otros:
   Timestamp: fecha y hora (timestamp) de generación del bloque.
   Versión: versión del software que ha generado el bloque.
   Hash: campo que almacena el hash asociado al bloque inmediatamente anterior de la
    cadena, pudiendo incluso referirse al bloque actual, anterior o siguiente.
   Raíz del árbol de Merkle: Indica la raíz del árbol de Merkle de todas las transacciones
    recogidas en el bloque.
   Target: parámetro que muestra la dificultad de resolución del bloque. Dicho parámetro
    marca el valor por debajo del cual debe estar el hash resultante del bloque para que sea
    aceptado como válido.
                                             Página 19 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
   Nonce: campo de tamaño fijo que se incrementa iterativamente hasta encontrar un hash
    sobre la cabecera que cumpla la condición expresada por el componente target, y cuyo
    valor se establece de forma que el hash del bloque contenga una ristra de ceros. En
    criptografía, se conoce por nonce a un número arbitrario, aleatorio o secuencial que sólo
    es utilizado una única vez para realizar algún tipo de operación. El nonce nos asegura,
    por tanto, que el hash resultante es distinto en cada intento.
       Se debe indicar que en apartados posteriores se procederá a profundizar sobre alguno
de los conceptos asociados a los componentes indicados.
       Por otra parte, en el cuerpo, sin embargo, se almacena el contenido completo de
todas las transacciones agregadas en el mismo.
                           Ilustración 7: Ejemplo de estructura de bloque.
De este modo, si bien anteriormente introducíamos el concepto de PoW (Proof of Work), se
debe indicar que PoW es el mecanismo de consenso más utilizado conjuntamente en
plataformas blockchain, el cual se basa en miners (mineros). Eso significa que blockchain
utiliza PoW para securizar su entorno de base de datos de modo que cada bloque es
verificado a través de la minería antes de que cada información sea almacenada. Así, los
datos contenidos en cada bloque son verificados utilizando algoritmos que asocian un hash
único a cada bloque, basado en los datos almacenados en él. En este caso, y dado que el
hash puede ser ordinario o criptográfico, el reto que plantea el método es el de encontrar un
hash correspondiente al contenido del bloque, por lo que el nivel de dificultad está
                                          Página 20 de 49
BLOCKCHAIN. CURSO ONLINE.
correlacionado con la capacidad de computación disponible en la red de mineros, con el
objetivo de que los nuevos bloques puedan ser “hasheados” a intervalos predefinidos (e.g.
10 segundos en Ethereum, o 10 minutos para Bitcoin).
Los sistemas tipo Proof-of-Work, generalmente pueden ser implementados mediante los
siguientes protocolos:
   Desafío-Respuesta, el cual asume una comunicación continua entre cliente y servidor.
    Primero, el cliente solicita el servicio, de modo que el servidor elige posteriormente una
    “prueba de trabajo” (PoW), y desafía al cliente. En este punto, el cliente debe resolver
    dicha prueba de trabajo y enviar la respuesta al servidor. Finalmente, el servidor verifica
    que la prueba de trabajo se ha realizado correctamente, y luego otorga al cliente acceso
    al servicio. Este es el modelo utilizado, por ejemplo, en CAPTCHA. La ventaja de este
    protocolo es que el servidor puede adaptar la dificultad de la prueba de trabajo a las
    condiciones, como la capacidad de cómputo y estado de procesamiento del servidor.
   Solución-Verificación, siendo éste asíncrono ya que los procesos de solución y
    verificación pueden ser realizados en diferentes momentos, por lo que la comunicación
    continua y mantenida entre el cliente y el servidor no es necesaria. Primero, el cliente
    crea un problema de prueba de trabajo (PoW) y lo resuelve, con lo que este problema
    debería ser diferente cada vez y elegido por un algoritmo. Luego, el cliente envía la
    solución al servidor, quien la verifica y procede en consecuencia.
     2.1.3.- DIRECCIÓN
       Las direcciones son identificadores únicos que se utilizan dentro de blockchain para
identificar al remitente y al destinatario de una transacción. Una dirección suele ser una
clave pública o derivada de una clave pública. Además, son únicas y no se pueden repetir
por distintos usuarios, a pesar de que un mismo usuario si puede reutilizar una dirección.
       En la práctica, es habitual que un usuario no vuelva a utilizar una antigua dirección y
genere una nueva para cada transacción. En el caso de Bitcoin, el sistema se establece
mediante pseudónimos, ya que los usuarios finales no son generalmente identificables
directamente. No obstante, hay algunas líneas de investigación que han demostrado que sí es
posible identificar a los usuarios con éxito.
                                         Página 21 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       Como buena práctica se aconseja que los usuarios generen una nueva dirección para
cada transacción, con el fin de evitar la vinculación de las transacciones con el propietario,
evitando así que pueda ser identificado.
     2.1.4.- RED PEER-TO-PEER
       Si bien hay muchas referencias (e.g. SETI@home, Freenet, Gnutella, Jabber…)
algunas de ellas ya introducidas, la red peer-to-peer (P2P) fue generalizada (y popularizada)
por la aplicación de intercambio de archivos Napster en 1999, donde archivos con contenido
de música o películas, si bien estaban protegidos por derechos de autor, eran almacenados en
múltiples ordenadores. En dicha aproximación, cuando un usuario desea descargar un
álbum, cada "par" en la red enviará al descargador una parte del álbum. Al mismo tiempo, el
programa de descarga también estaría cargando los archivos que se están recibiendo o se
hayan recibido, a otras localizaciones que también estén descargando el álbum. Ello supuso
en su día un desafío legal (por la protección de derechos de autor), pero una solución
tecnológica muy aceptada y utilizada por la comunidad de usuarios.
       Añadido a lo anterior, a nivel conceptual y como curiosidad, se debe indicar que
Internet se concibió a finales de la década de los sesenta como un sistema peer-to-peer, ya
que el objetivo de ARPANET era compartir recursos informáticos en los Estados Unidos.
       Viendo algunos ejemplos tomados como base, se puede afirmar que una red peer-to-
peer (P2P) es una red en la que todos o algunos de los nodos trabajan sin ser clientes ni
servidores fijos, sino que se comportan como iguales entre sí. Es decir, actúan
simultáneamente como clientes y servidores respecto a los demás nodos de la red. De este
modo, las redes P2P permiten el intercambio directo de información, en cualquier formato,
entre los miembros de la red.
       En una arquitectura P2P, cada “par” (sistema informático en la red) se considera
igual a otro, el cual es conocido comúnmente como “nodo”. Así, un par (nodo) hace que una
parte de los recursos informáticos (e.g. capacidad de proceso, espacio de almacenamiento en
disco, ancho de banda de la red de comunicaciones, etc.), esté disponible para ser utilizado
por otros participantes de la red, sin la necesidad de una coordinación central.
                                           Página 22 de 49
BLOCKCHAIN. CURSO ONLINE.
       A pesar de que todos los nodos son considerados por igual, éstos pueden asumir
diferentes roles dentro del blockchain, como es el caso del "nodo completo". En el caso de
un nodo completo, toda la cadena de bloques se copia en un solo dispositivo, mientras el
dispositivo está conectado a la red. Ello significa es que la información almacenada en un
blockchain no puede perderse o destruirse, porque hacerlo significaría tener que destruir
cada nodo completo en la red. Por lo tanto, siempre que exista un único nodo con una copia
de una cadena de bloques, todos los registros permanecerán intactos, lo que brindará la
posibilidad de reconstruir esa red.
2.2.- DESCENTRALIZACIÓN
     La idea básica de descentralización es distribuir el control y la autoridad a las periferias
en lugar de que una autoridad central esté en pleno control de la organización. Esto da como
resultado varios beneficios para las organizaciones, como una mayor eficiencia, una toma de
decisiones más rápida, una mejor motivación y una carga reducida desde un punto de vista
ejecutivo.
     La descentralización es un beneficio y servicio básico proporcionado por la tecnología
de bloques. Bloques by Design es un vehículo perfecto para proporcionar una plataforma
que no necesita intermediarios y puede funcionar con muchos líderes diferentes elegidos a
través de mecanismos de consenso.
     La descentralización se puede ver como un mecanismo que proporciona una manera de
remodelar las aplicaciones y paradigmas existentes o construir nuevas aplicaciones, con el
fin de dar un control total a los usuarios.
     2.2.1.- MÉTODOS DE DESCENTRALIZACIÓN
     Para realizar la descentralización se pueden identificar varios métodos, si bien destacan
dos de ellos: la desintermediación y la competencia.
             2.2.1.1.- DESINTERMEDIACIÓN
                                          Página 23 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       Este método se puede explicar mediante el siguiente ejemplo. Imagine que desea
enviar dinero a un amigo en otro país. Usted va a un banco que transferirá su dinero al banco
en el país de su elección por un honorario. En este caso, el banco mantiene una base de datos
central que se actualiza, confirmando que ha enviado el dinero. Con la tecnología de
bloques, es posible enviar este dinero directamente a su amigo sin necesidad de un banco.
Todo lo que se necesita es la dirección del amigo en la blockchain.
       De esta manera, el intermediario ya no es requerido y la descentralización es
alcanzada por desintermediación. Sin embargo, es discutible cómo la descentralización
práctica se implantará en el sector financiero por desintermediación debido a los requisitos
de regulación y de cumplimiento legal. Sin embargo, este modelo se puede utilizar no sólo
en las finanzas sino también en muchas otras diversas industrias, conforme se verá con
posterioridad.
            2.2.1.2.- A TRAVÉS DE LA COMPETENCIA
       En este método, un grupo de prestadores de servicios compiten entre sí para ser
seleccionados para la prestación de servicios por el sistema. Este paradigma no logra la
descentralización completa, pero hasta cierto punto asegura que un intermediario o
proveedor de servicios no está monopolizando el servicio. En el contexto de la tecnología de
bloques, se puede imaginar un sistema en el que los contratos inteligentes puedan elegir un
proveedor de datos externo de un gran número de proveedores basándose en su reputación,
puntuación anterior, revisiones y calidad de servicio. Esto no dará lugar a una
descentralización total, pero permite que los contratos inteligentes hagan una elección libre
basándose en los criterios mencionados anteriormente. De esta manera, se cultiva un entorno
de competencia entre los proveedores de servicios, por el cual compiten entre sí para
convertirse en el proveedor de datos de elección.
       En el siguiente diagrama se muestran diferentes niveles de descentralización. En el
lado izquierdo hay un enfoque convencional en el que se controla un sistema central; en el
lado de la derecha, se alcanza la desintermediación completa; y en medio, se muestran
intermediarios o proveedores de servicios competidores, donde los intermediarios o
                                        Página 24 de 49
BLOCKCHAIN. CURSO ONLINE.
proveedores de servicios son seleccionados basándose en la reputación o la votación,
logrando así una descentralización parcial.
       Si bien hay muchos beneficios de la descentralización –incluyendo, pero sin
limitarse, la transparencia, la eficiencia, el ahorro de costes, el desarrollo de ecosistemas de
confianza y, en algunos casos, la privacidad y el anonimato– algunos desafíos, como los
requisitos de seguridad, los errores de software, y los errores humanos, también deben ser
examinados a fondo. Por ejemplo, en un sistema descentralizado como Bitcoin o Ethereum,
donde la seguridad suele ser proporcionada por claves privadas, es necesario ver cómo se
puede asegurar que una propiedad inteligente asociada con estas claves privadas no pueda
ser inservible si, debido a un error humano, las claves privadas se pierden o si, debido a un
error en el código de contrato inteligente, la aplicación descentralizada es vulnerable a los
ataques de adversarios. De este modo, antes de acometer proyectos de descentralización
basados en blockchain, es importante entender que no todo es idóneo para ser
descentralizado.
            2.2.1.3.- RUTAS HACIA LA DESCENTRALIZACIÓN
       A pesar de que existen sistemas antes de Bitcoin que pueden ser clasificados como
descentralizados hasta cierto punto (e.g. BitTorrent o Gnutella), con el advenimiento de la
tecnología bloques muchas iniciativas se están tomando para aprovechar esta nueva
tecnología para la descentralización. Por lo general, el Bitcoin ha supuesto la primera opción
para muchos, ya que ha demostrado ser el más resistente y seguro con una capitalización de
mercado de casi 12 mil millones dólares (dependiendo de cuándo se haga dicha evaluación).
Un acercamiento alternativo es utilizar otras cadenas de bloques, como Ethereum que,
actualmente se constituye como plataforma de desarrollo de aplicaciones descentralizadas.
2.3.- SMART CONTRACT
     Un contrato inteligente puede ser considerado como un pequeño programa
descentralizado. Los contratos inteligentes no necesitan necesariamente que se ejecute una
blockchain; sin embargo, debido a los beneficios de seguridad que proporciona este tipo de
                                         Página 25 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
tecnología, ahora se está convirtiendo en casi un estándar para utilizarla como una
plataforma de ejecución descentralizada para contratos inteligentes.
     Un contrato inteligente usualmente contiene cierta lógica de negocio y una cantidad
limitada de datos. Los actores o participantes en la blockchain utilizan estos contratos
inteligentes o se ejecutan de forma autónoma en nombre de los participantes de la red.
     Estos pequeños programas residen en la blockchain y ejecutan la lógica empresarial si
se cumplen algunos criterios específicos.
                                        Página 26 de 49
BLOCKCHAIN. CURSO ONLINE.
      3.- APLICACIÓN PRÁCTICA A CASOS DE NEGOCIO
       El presente capítulo describe distintas capacidades relevantes aportadas por la
tecnología blockchain, considerando aplicación práctica a casos de uso de negocio.
3.1.- RETOS PLANTEADOS POR TRANSACCIONES EN NEGOCIOS
       En todas las épocas (no sólo en la era digital), se han utilizado elementos de
confianza, como puedan ser monedas acuñadas, papel moneda, cartas de crédito y sistemas
bancarios. Ello ha permitido facilitar el intercambio seguro de bienes, con imparcialidad
entre compradores y vendedores.
       Los avances tecnológicos y transformación digital, como son los introducidos por la
telefonía móvil, sistemas de tarjetas de crédito o el propio Internet, han conseguido, gracias
a su continua mejora en velocidad y eficiencia, acercar a clientes y compradores (o emisores
y receptores) de todo el mundo, y aumentar así el número de transacciones efectuadas de
manera exponencial.
       Sin embargo, se detecta que las transacciones actuales cuentan con cierto tipo de
limitaciones e imprecisiones que hacen que éstas sean consideradas de manera especial.
Algunas características de dichos retos planteados por las transacciones podrían ser
recogidos por los siguientes apartados:
   El efectivo sólo resulta útil en las transacciones locales y en cantidades relativamente
    pequeñas.
   El tiempo entre transacción y liquidación puede ser largo.
   La duplicación del esfuerzo y la necesidad de validación por parte de terceros y/o la
    presencia de intermediarios, contribuyen a la ineficiencia.
   El fraude, los ciberataques e incluso los errores simples, se suman al costo y la
    complejidad de hacer negocios, y exponen a todos los participantes de la red a
    arriesgarse si un sistema central (e.g. bancos) está comprometido.
                                          Página 27 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
   Las organizaciones de tarjetas de crédito esencialmente han creado “jardines
    amurallados” con un alto precio de entrada. De este modo, los comerciantes deben pagar
    los altos costos del embarque, lo que a menudo implica un papeleo considerable y un
    proceso de investigación que requiere mucho tiempo.
   La mitad de las personas en el mundo no tienen acceso a una cuenta bancaria y han
    tenido que desarrollar sistemas de pago paralelo para realizar transacciones.
       Aun así, los volúmenes de transacciones en todo el mundo están creciendo
exponencialmente, lo cual magnificará las complejidades, vulnerabilidades, ineficiencias y
costos de los sistemas de transacciones actuales.
       El comercio electrónico, el aumento del uso de la banca online y el crecimiento de
las compras basadas en aplicaciones (in-app), además de una creciente movilidad de las
personas por todo el mundo, han favorecido que el volumen de las transacciones se haya
incrementado de forma notable.
       Para cubrir todas estas necesidades, se necesitan redes de pago más rápidas y que
aseguren la confianza, mediante mecanismos de seguridad, eficaces y transparentes.
3.2.- EVOLUCIÓN DE LA RED EMPRESARIAL
       En los métodos tradicionales para registrar transacciones y seguimiento de activos,
los participantes de una red poseen sus propios libros de contabilidad. Además, ello implica
la presencia de intermediarios de confianza, que cobran honorarios por sus servicios.
       Dicha aproximación presenta claras ineficiencias, debido a los retrasos en los
acuerdos de ejecución y a la duplicación del esfuerzo requerido para mantener numerosos
libros de contabilidad. También, dicha aproximación resulta vulnerable, ya que si un sistema
central (por ejemplo, un banco) está comprometido (e.g. debido a fraude bancario, fraude
cibernético o simples errores), toda la red empresarial se ve afectada.
       Como hemos visto en secciones anteriores, la arquitectura blockchain ofrece a los
participantes la posibilidad de compartir un libro mayor que se actualiza, mediante
                                         Página 28 de 49
BLOCKCHAIN. CURSO ONLINE.
replicación basada en redes peer-to-peer, cada vez que se produce una transacción. Como
indicábamos, la replicación P2P significa que cada participante (nodo) de la red actúa como
un editor y un suscriptor, de modo que cada nodo puede recibir o enviar transacciones a
otros nodos, y los datos se sincronizan a través de la red a medida que se transfiere.
       La red blockchain es, por ello, económica y eficiente si nos centramos en que elimina
la duplicación de esfuerzos y reduce la necesidad de intermediarios. También, es menos
vulnerable porque utiliza modelos de consenso para validar la información. Las
transacciones son, por tanto, seguras, autenticadas y verificables.
       Los participantes en ambos sistemas de transacciones son los mismos. Lo que cambia
con la introducción de dicha tecnología es que el registro de transacciones ahora se comparte
y está disponible para todas las partes.
                    Ilustración 8: Redes de negocios antes y después de blockchain.
3.3.- CASO DE USO EJEMPLO: ALQUILER DE VEHÍCULOS
       Con el objetivo de ver un ámbito de aplicación de blockchain y analizar los retos y
ventajas derivadas de la aplicación de dicha tecnología, vamos a analizar en este apartado el
caso ejemplo del sector del alquiler de vehículos.
       Las compañías de vehículos se encargan de facilitar el proceso de alquiler de
vehículos por parte de sus clientes. Sin embargo, la realidad es que definir y ejecutar dichos
procesos suelen ser complejos. Por poner un ejemplo, un reto importante al que se enfrentan
las redes de alquiler de automóviles de hoy es que, aunque la cadena de suministro física
                                           Página 29 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
suele estar integrada, los sistemas de soporte suelen estar fragmentados, de modo que cada
elemento de la red y proceso mantiene su propio libro de contabilidad y registro, que puede
tardar días o semanas en sincronizarse.
        Al utilizar una contabilidad compartida en una red de bloques, cada participante
puede acceder, monitorear y analizar el estado del vehículo independientemente de dónde
esté dentro de su ciclo de vida.
                 Ilustración 9: Seguimiento de la propiedad del vehículo sin blockchain.
        Así, mediante el uso de bloques, los participantes de la red pueden interactuar de la
siguiente manera:
   1.   El regulador del gobierno crea y llena el registro del nuevo vehículo en la blockchain
        y transfiere la propiedad del vehículo al fabricante.
   2.   El fabricante agrega el número de marca, modelo y vehículo a la plantilla del
        vehículo dentro de los parámetros permitidos por el smart contract (acuerdo digital o
        conjunto de reglas que rigen una transacción).
   3.   El concesionario puede ver la nueva disponibilidad de stock, y la propiedad del
        vehículo puede ser transferida del fabricante al concesionario después de que un
        contrato inteligente sea ejecutado para validar la venta.
                                            Página 30 de 49
BLOCKCHAIN. CURSO ONLINE.
    4.   La compañía de leasing puede ver el inventario del distribuidor. La propiedad del
         vehículo puede ser transferida del distribuidor a la compañía de leasing después de
         que se ejecute un contrato inteligente para validar la transferencia.
    5.   El arrendatario puede ver los coches disponibles para alquilar y completar cualquier
         formulario requerido para ejecutar el contrato de arrendamiento.
    6.   El proceso de leasing continúa entre varios arrendatarios y la compañía de leasing,
         hasta que la compañía de leasing esté dispuesta a retirar el vehículo. En este punto, la
         propiedad del activo se transfiere al comerciante de chatarra, quien, según otro
         contrato inteligente, tiene permiso para deshacerse del vehículo.
                 Ilustración 10: Seguimiento de la propiedad del vehículo con blockchain.
1.3.4.- VENTAJAS DERIVADAS DEL USO DE BLOCKCHAIN
         Visto el caso anterior, podríamos decir que, entre otros, utilizar mecanismos basados
en blockchain nos aporta los siguientes beneficios (entre otros):
   Ahorro de tiempo: los tiempos de transacción para las interacciones complejas y
    multipartidistas se recortan de días a minutos. El acuerdo de transacción es más rápido,
    porque no requiere verificación por una autoridad central.
   Ahorro de costes: una red bloques reduce los gastos de varias maneras:
                                             Página 31 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       •   Se necesita menos supervisión porque la red es “autovigilada” por los
           participantes de la red.
       •   Los intermediarios se reducen porque los participantes pueden intercambiar
           objetos de valor directamente.
       •   Se elimina la duplicación del esfuerzo porque todos los participantes tienen
           acceso a la contabilidad compartida.
   Seguridad más estricta: las características de seguridad de blokchain protegen contra la
    manipulación, el fraude y la delincuencia cibernética. Si además la red es privada, se
    permite la creación de una red sólo para miembros con la prueba de que los miembros
    son quienes dicen que son y que los bienes o activos intercambiados son exactamente
    como están representados.
       Relacionado con el beneficio anteriormente indicado, se debe incidir en que no todas
las redes blockchain pudieran ser idóneas para ser utilizadas para todos los fines (e.g.
negocios). De este modo, y como hemos introducido, algunos negocios son privados y, por
tanto, se pueden basar en redes blockchain privadas, en cuyo caso resultan especialmente
aptas para la industria regulada, ya que ofrecen:
   Mejora de la capacidad de auditoría: tener un libro de contabilidad compartido que
    sirva como una única fuente de verdad mejora la habilidad de monitorear y auditar
    transacciones.
   Mejora de la privacidad: mediante el uso de Identificadores específicos y permisos, los
    usuarios pueden especificar los detalles de la transacción que desean que otros
    participantes puedan ver. Los permisos se pueden expandir para usuarios especiales,
    como los auditores, que pueden necesitar acceso a más detalles de transacciones.
   Aumento de la eficiencia operacional: la digitalización pura de los activos agiliza la
    transferencia de propiedad, por lo que las transacciones pueden realizarse a una
    velocidad más acorde con el ritmo de hacer negocios.
                                        Página 32 de 49
BLOCKCHAIN. CURSO ONLINE.
               4.- CRIPTOGRAFÍA: BASE Y APLICACIÓN
       Mediante esta sección se pretende profundizar un poco más en las bases de las
principales técnicas y enfoques criptográficos, con el objetivo de comprender mejor su
necesidad, uso y aplicación en redes blockchain.
4.1.- INTRODUCCIÓN A LA CRIPTOGRAFÍA
       La criptografía es la rama de la informática y matemáticas que estudia los algoritmos
utilizados para ocultar información a agentes no deseados o que no tengan permisos para
verla. La criptografía asegura, por tanto, la comunicación de la información en presencia de
adversarios.
       La criptografía clásica (simétrica) está directamente relacionada con el cifrado (e.g.
convertir un mensaje en un texto cifrado), dado que un texto cifrado es aparentemente
absurdo para el adversario que escucha en el canal de comunicación; pero el destinatario sí
es capaz de traducirlo al mensaje original.
       A priori, la recomendación realizada por criptógrafos se basa en que el algoritmo de
encriptación sea público, y que sólo la clave de cifrado sea secreta (claves privadas), lo cual
se conoce como el Principio de Kerckhoff. Dicho principio se basa en que es fácil crear un
algoritmo de encriptación que no pueda ser roto por su creador, si bien es sumamente
complicado crear un algoritmo de encriptación que no pueda ser vulnerado por nadie en el
mundo. Así, con independencia de la inteligencia del creador de un cifrado, hay una gran
probabilidad de que haya alguien más inteligente o más imaginativo, por lo que el hecho de
hacer público un algoritmo de encriptación y someterlo a un enfoque de prueba y error por la
comunidad criptográfica parece, a priori, una buena idea.
4.2.- CRIPTOGRAFÍA SIMÉTRICA
                                        Página 33 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       La mayor parte de los enfoques iniciales en criptografía han sido llevados a cabo
mediante cifrado simétrico. Dicho objetivo se basa en transformar un mensaje “en claro” en
otro de tipo cifrado (texto cifrado), utilizando para ello una clave secreta de manera que el
mensaje original pueda recuperarse sólo si se conoce ésta.
       Dicha aproximación no data de los últimos años o siglos, sino que el propio Julio
César en la época romana inventó su propio sistema de cifrado que consistía en, dado un
mensaje escrito, desplazar cada letra un cierto número de veces. De este modo, el cifrado de
César se corresponde con un cifrado simétrico, donde la clave secreta aplica el cambio
basado en el número de lugares desplazados en el alfabeto. En este caso, además de que la
clave secreta es muy pequeña por depender del número de letras del alfabeto (e.g. 26 claves
posibles, dependiendo del alfabeto elegido), se considera que este tipo de cifrados no son
recomendables ya que filtran por sí mismos una gran cantidad de información del propio
mensaje, como por ejemplo permitir a un tercero conocer la longitud del mensaje y la
frecuencia de ciertas letras en el propio mensaje, lo cual en muchos casos es suficiente para
descifrar el cifrado.
       Por lo tanto, un cifrado simétrico ideal será aquel que produce un texto cifrado que es
indistinguible del ruido aleatorio.
       Si buscáramos una analogía para el cifrado de clave simétrica es la de una caja fuerte
con una clave. Esta clave (simétrica) se puede usar tanto para bloquear la caja fuerte (cifrar)
como para desbloquear la caja fuerte (descifrar).
4.3.- CRIPTOGRAFÍA ASIMÉTRICA. CIFRADO DE CLAVE PÚBLICA
       En la década de los 70, y gracias al desarrollo y avance de la computación, surgen los
sistemas de clave asimétrica, impulsados por Diffie, Hellman and Merkle como respuesta al
reto (o problema) inherente por la debilidad de los métodos de clave simétrica basada en la
distribución de la propia clave, como indicábamos en el apartado anterior.
       Cuando dos agentes utilizan un cifrado simétrico, deberán asegurarse de antemano
que ambos comparten la misma clave simétrica, debiendo intercambiar las claves a través de
                                        Página 34 de 49
BLOCKCHAIN. CURSO ONLINE.
un canal seguro antes de usar el sistema de cifrado simétrico. No obstante, hay muchas
situaciones en las que no es posible intercambiar la clave simétrica a través de un canal
seguro. Este es el caso de Internet, el cual es un canal inseguro dado que el tráfico puede
escucharse e incluso modificarse en tránsito, no siendo posible establecer una conexión
segura a través de Internet utilizando solo un cifrado simétrico.
       Para evitar esta casuística, se propone una aproximación basada en la utilización de
dos claves: una pública (para ejecutar el cifrado) y otra privada (para descifrar el mensaje).
Así, conociendo sólo la clave pública no será posible descifrar el mensaje, si bien solamente
podrá hacerlo quien además disponga de la clave privada. Por otra parte, se debe indicar que
dichas claves son invertibles, de modo que un mensaje cifrado con la clave privada debe ser
descifrado con la clave pública.
       Una analogía similar para el cifrado de clave pública es la de una caja fuerte con un
par de claves, de modo que una de las claves (clave pública) sólo podrá ser utilizada para
bloquear la caja fuerte, mientras que la otra clave (clave privada) solo se podrá usar para
desbloquear la caja. De esta forma, sólo la clave privada (la que desbloquea la caja) debe
mantenerse en secreto. Sin embargo, es seguro publicar la clave pública (la que bloquea la
caja), ya que cuanto más se publique esta clave más fácil le resultará a la otra parte acceder a
esta clave y usarla para comunicarse.
       En el siguiente ejemplo se puede ver cómo funciona un proceso de cifrado basado en
clave pública. Primero, el receptor del mensaje cifrado (Bob) genera un par de claves
(pública y privada), ejecutando un algoritmo de generación de clave (paso 1). Las claves
pública y privada se denominan par de claves público-privadas, y están vinculadas
matemáticamente, con lo que cada protocolo de clave pública tiene su propio algoritmo de
generación de clave. Posteriormente, el receptor (Bob) envía su clave pública al remitente
(Alice), si bien mantiene su clave privada asegurada (paso 2). Después de recibir la clave
pública de Bob, Alice procede a encriptar el mensaje usando la clave pública de Bob (paso
3). El resultado es el mensaje cifrado (texto cifrado), el cual es enviado por el canal inseguro
a Bob (paso 4). Si bien un atacante que escuche a escondidas la conexión podría hacerse con
el mensaje cifrado, no podrá descifrarlo, ya que solamente Bob puede descifrar el mensaje
cifrado utilizando el algoritmo de descifrado con la clave privada correspondiente a la clave
pública (paso 5). Por último y de este modo, Bob obtendría el mensaje original (paso 6).
                                         Página 35 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
                      Ilustración 11: Ejemplo de cifrado basado en clave pública.
4.4.- FIRMA DIGITAL
       Una segunda aplicación de criptografía de clave pública es la firma digital, cuya
razón de ser es similar a la de las firmas manuscritas: asegurar que se ha generado un
mensaje por un agente firmante, que éste no ha sido alterado, y que la firma no es repudiable
(el firmante de un mensaje no debería poder negarlo habiéndolo firmado).
       La siguiente figura muestra gráficamente el proceso seguido. Primero, el firmante
(Alice) genera un par de llaves público-privada utilizando un algoritmo de generación de
claves (paso 1). Posteriormente, Alice envía su clave pública a través del canal de
comunicación (paso 2) y, a continuación, usa la clave privada para firmar digitalmente el
mensaje (paso 3), guardando la clave privada sin revelarla a nadie. Una vez que se ha
firmado el mensaje, tanto el mensaje como la firma se envían al receptor (Bob), de modo
que este mensaje no está cifrado sino sólo autenticado (paso 4). Así, Bob verifica la firma
utilizando la clave pública de Alice (paso 5), y si la verificación deriva un resultado positivo
Bob sabrá que el mensaje fue originado por Alice (paso 6); de lo contrario, podrá rechazar el
mensaje como no válido.
                                           Página 36 de 49
BLOCKCHAIN. CURSO ONLINE.
                          Ilustración 12: Ejemplo de proceso de firma digital.
         Como se puede comprobar, la condición de no repudio no puede ser satisfecha
utilizando criptografía simétrica, ya que como el emisor y receptor sólo conocen la clave
simétrica, solamente el receptor sabe que el emisor ha emitido dicho mensaje. Sin embargo,
el receptor no podrá probar ante un tercero que el emisor le ha enviado el mensaje, sino que
sólo podrá probar que el emisor alguien que tenía la clave simétrica generó el mensaje; y
como tanto el emisor y el receptor tienen dicha clave, ambos podrían haber generado dicho
mensaje. Además, para demostrar que el mensaje fue cifrado por la clave simétrica, el
receptor debería revelar la clave a un tercero, lo cual permitirá a éste firmar cualquier
mensaje, debilitando aún más la seguridad de la firma.
         En la criptografía de clave pública, la firma vincula al remitente con el mensaje, de
modo que sólo el firmante tiene una copia de la clave privada, por lo que solo éste puede
firmar un mensaje con dicha clave. Además, para demostrar que el mensaje fue firmado por
el emisor, el receptor sólo tendrá que mostrar al tercero el mensaje, la clave pública y la
firma.
         Cabe destacar que un aspecto técnico asociado a las firmas digitales radica en que el
mensaje podría, por definición, tener longitud arbitraria. Así, esta característica podría
suponer un problema, ya que los algoritmos empleados por la criptografía de clave pública
son bastante lentos. Para resolver dicho reto, una aproximación es la de tomar el hash del
mensaje (arbitrariamente largo) y firmar luego dicho hash. Así, la salida de una función
hash es de la misma longitud (más corta), independientemente del tamaño de la entrada.
                                            Página 37 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
4.5.- PROTOCOLOS DE FIRMA DIGITAL
       Un protocolo de firma digital es la combinación de un algoritmo de clave pública con
un esquema de firma digital. El algoritmo de clave pública proporciona el algoritmo
matemático asimétrico subyacente, de modo que el esquema de firma digital propone una
forma de utilizar este algoritmo asimétrico para llegar a una firma digital viable.
Considerando dichos aspectos, se puede indicar que destacan tres tipologías de protocolos
asociados, los cuales son:
      Logaritmo discreto (DL): está basado en la intratabilidad del problema del
       logaritmo discreto en grupos cíclicos finitos, introducido en 1976 por Diffie y
       Hellman.
      Factorización de enteros: estos algoritmos se basan en la dificultad de factorizar
       enteros grandes. Dentro de este grupo encontramos RSA, introducido en 1977.
      Curva elíptica (EC): apoyado en la dificultad de calcular el problema del logaritmo
       generalizado en una curva elíptica. Fue introducido en 1985, si bien su adopción ha
       sido un tanto limitada por las patentes que lo cubren, a pesar de sus ventajas técnicas
       (e.g. mejora en rapidez de procesamiento y uso de claves más cortas), en relación
       con otros métodos como RSA ya que, a diferencia de éste (que multiplica dos
       grandes números primos para obtener una clave pública), el método de curva elíptica
       utiliza una serie de operaciones aritméticas especiales sobre puntos en una curva
       elíptica (suma y multiplicación de puntos en la curva).
       Bitcoin, Ethereum y la mayor parte de los protocolos de blockchain, utilizan
criptografía de curva elíptica (ECC), en su especificación secp256k1, para obtener una clave
publica a partir de una clave privada aleatoria y de un punto dado (punto base, que siempre
es el mismo para todas las bases). De este modo, la clave pública es generada mediante el
producto de la clave privada y el punto base.
4.6.- HASH
       Si bien se ha introducido repetidamente hasta ahora como elemento básico del
blockchain, un hash (o función de resumen) es un elemento que se obtiene mediante la
                                        Página 38 de 49
BLOCKCHAIN. CURSO ONLINE.
aplicación de una función tipo hash. A estas funciones también se las conoce como
“digestivas”, ya que transforman la información a un elemento de tamaño fijo y con unas
ciertas características, como si se tratase un “digerido” de la información.
                              Ilustración 13: Ejemplo de función Hash.
       Como se puede comprobar en la figura anterior, el hash consigue crear a partir de
una entrada dada, y basado en la aplicación de una algoritmia, una salida alfanumérica de
longitud normalmente fija, que es capaz de representar un resumen de la información
completa de entrada. Esta cadena alfanumérica sólo puede ser creada de nuevo a partir de
esos mismos datos, y mediante la aplicación de la citada algoritmia.
       Los algoritmos utilizados por el hash aseguran que la respuesta (hash) no permita
saber cuáles han sido los datos de entrada utilizados para la generación de dicha salida. Es
por ello que se dice que ésta es una función unidireccional, considerando que la salida
siempre es la misma para los mismos datos de entrada.
       A modo práctico, el funcionamiento del hash es similar al ADN de los seres vivos. El
ADN es un conjunto de elementos (casi siempre con el mismo número de elementos en
todos los seres) que todos tienen, pero que con muy pequeñas variaciones que son capaces
de crear de forma única a cada uno.
                                          Página 39 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
       Considerando lo anterior, dado que el hash de cualquier archivo es un conjunto de
caracteres que se genera de manera única para ese archivo, si se ejecuta el hash de dos
archivos distintos, se obtendrán dos hashes distintos como salida, de la misma longitud.
       Este mecanismo resulta muy potente, ya que permite, siempre y cuando utilicemos el
mismo algoritmo, crear el hash de un elemento obteniendo un identificador único para dicho
elemento. Esto nos permite también saber si un elemento ha sido modificado, dado que, si el
elemento cambia, no puede mantener el mismo “ADN”. Gracias a este mecanismo, la
tecnología blockchain adquiere una característica esencial para su funcionamiento, y es
permitir la creación de un “ADN único” para toda la información, asegurando así su
inmutabilidad.
       El hash es utilizado para la ejecución de un PoW. De este modo, las funciones
criptográficas de tipo hash (también a veces llamadas funciones hash seguras) imponen
requerimientos adicionales sobre las funciones hash estándar, destacando (entre otros
aspectos positivos) la:
      “Unidireccionalidad” (resistencia de preimagen): dado un valor hash, debe ser
       computacionalmente inviable descubrir los datos de entrada. Ésta es, por tanto, una
       propiedad clave para la aplicación del PoW. No factible, desde el punto de vista de
       computación, significa que no existe un algoritmo conocido capaz de recuperar el
       mensaje dentro de un tiempo relacionado polinomialmente con el tamaño de la
       entrada. Ello significa en la práctica que los algoritmos más conocidos para romper
       una función hash (recuperar el mensaje de entrada que genera el hash), son lo que se
       denominan algoritmos de “fuerza bruta”, los cuales toman una cantidad de tiempo
       poco práctica (dado que es exponencial) o necesitan una capacidad de cómputo muy
       elevada para rebajar dicho tiempo empleado y dar con la solución.
      Resistencia a la colisión débil: dada una entrada, es computacionalmente inviable
       encontrar otra entrada con el mismo valor hash.
      Fuerte resistencia a la colisión: es computacionalmente inviable encontrar dos
       conjuntos de datos de entrada que den como resultado el mismo valor hash de salida.
       Por ejemplo, Bitcoin utiliza el protocolo SHA256^2 como función PoW, siendo éste
la ejecución de la función de hash SHA256 dos veces. SHA256 es parte de del conjunto de
                                       Página 40 de 49
BLOCKCHAIN. CURSO ONLINE.
funciones hash definidas por la NSA (National Security Agency) y publicadas por la NIST
(National Institute of Standards and Technology) en 2001, con la particularidad de que la
salida generada tiene una longitud de 256 bits.
                              Ilustración 14: Ejemplo de función Hash.
       Muchas funciones criptográficas hash, entre ellas la SHA256, son construidas a
partir de una primitiva más simple denominada “función de compresión”. Una función de
compresión opera en una entrada de una longitud fija y es capaz de producir una salida de la
misma longitud. El objetivo de una función de compresión es codificar los bits de la entrada
de una manera determinista pero complicada, para obtener el dato de salida. Esto es posible
gracias al procesamiento del mensaje original mediante la manipulación de datos (data-
shifting) y la combinación de la información utilizando constantes de generación aleatoria.
       Para la securización del blockchain en casos como el de Bitcoin, se requiere ejecutar
un PoW en bloques de transacciones basado en el protocolo de Solución-Verificación
explicado anteriormente. Para ello, Bitcoin utiliza como función PoW una inversión parcial
del hash, lo cual requiere que el hash generado por un bloque de transacciones cumpla con
un determinado patrón definido. El patrón a seguir se basa en que el hash comience con al
menos un cierto número de bits a cero. Esto se denomina inversión de hash porque el PoW
debe invertir (o hacer coincidir) un cierto patrón en parte del hash.
       En el caso ejemplo que se indica a continuación, el cual está basado en una función
hash tipo SHA256^2, la inversión parcial de hash requiere que los primeros 12 bits (tres
caracteres hexadecimales) valgan cero. Para resolver la inversión parcial, es necesario
encontrar un nonce (número usado una sola vez – Number used Once), de manera que el
hash del mensaje y el nonce coincidan con el hash parcial; es decir, que hash comience con
                                          Página 41 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
al menos tres caracteres cero. En dicho ejemplo, la frecuencia se incrementa hasta que se
encuentra una solución con un valor de nonce de 6193.
                             Ilustración 15: Ejemplo de función Hash.
        En dicho ejemplo se puede comprobar que es computacionalmente costoso resolver
la inversión parcial de hash, ya que hay muchos nonces (6,193 en este caso) que tuvieron
que ser probados antes de encontrar una solución. De este modo, si el hash calculado no
comienza con dichos ceros, el nonce cambiará y se intentará de nuevo (conforme hemos
visto en el ejemplo), hasta que aleatoriamente (es decir, por fuerza bruta) el sistema de
computación dé con un hash que tenga ese número de ceros delante. Así, dado que es
imposible saber de antemano cuál será el hash, ello significará que habrá que hacer un
número sumamente elevado de intentos (e.g. miles o millones) antes de dar con el hash
requerido. Sin embargo, es computacionalmente ligero verificar que el trabajo se haya
realizado, ya que solo requiere llevar a cabo una evaluación de hash. Por ello, una de las
ventajas de utilizar la inversión parcial de hash es que la dificultad de la PoW se puede
ajustar fácilmente cambiando la cantidad de 0 bits con los que debe comenzar la solución
hash.
        Considerando lo anterior, cuando se pide que el hash comience con una determinada
cantidad de ceros, en realidad se está buscando cualquier número inferior a una cifra
predeterminada. Ese número predeterminado se le conoce por target (objetivo). Por poner un
ejemplo análogo, si consideráramos un sistema de lotería con un bombo de 99.999.999 bolas
numeradas desde cero, un target de 00009.999 supondría que cualquier bola entre la cero y
la 9.999 tendría premio; por tanto, la primera bola que sacáramos con un número inferior a
9.999, sería la bola del número premiado. Así, cuanto menor sea el target, mayor será la
dificultad (y más bolas habrá que extraer hasta dar con una bola premiada).
                                         Página 42 de 49
BLOCKCHAIN. CURSO ONLINE.
       De este modo, y como se introducía con anterioridad, Bitcoin tomó prestada la idea
de utilizar la inversión de hash parcial como una función de PoW de tipo Hashcash, con las
características y funcionalidades ya introducidas.
4.7.- TRANSPOSICIÓN A BLOCKCHAIN
       En el caso de Blockchain, y vistos los componentes principales de la tecnología, cada
bloque es securizado mediante una PoW de inversión parcial de hash, donde cada bloque
incluye un grupo de transacciones válidas, el hash del bloque previo, y un nonce que se
encarga de resolver (en el bloque en cuestión) la inversión parcial de hash. Es decir, el
nonce es un número tal que el hash de todo el bloque (incluido el nonce) comienza con un
cierto número de bits de valor cero. De este modo es fácil ajustar la “dificultad” del bloque
mediante el incremento del número de bits de comienzo de valor cero. Por eso se traduce
dicha dificultad a la variable tiempo, y el protocolo Bitcoin (por ejemplo) ajusta dicha
dificultad a un objetivo de 10 minutos de tiempo transcurrido entre generación de bloques,
conforme ya se indicó con anterioridad.
       Así, y considerando lo indicado anteriormente, las personas o instituciones que
contribuyen al uso y cesión de capacidad computacional para la resolución de la inversión
parcial de hash son los “mineros” descritos en apartados anteriores.
                                          Página 43 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
                         Ilustración 16: Estructura general de blockchain.
4.7.1.- BIFURCACIONES
       Un caso particular en blockchain, además de los componentes introducidos
anteriormente, es del de las bifurcaciones (forks). Una bifurcación ocurre cuando dos
mineros llegan a un nuevo bloque al mismo tiempo, de modo que ambos bloques resuelven
el problema de la inversión parcial hash, pero sólo uno de ellos puede ser parte de la cadena
de bloques, con lo que se debe descartar uno de los bloques generados. En este caso, el
bloque descartado se llama “bloque huérfano”, y la decisión de qué rama del blockchain es
la válida no es tomada por ninguna parte, sino que más bien la disputa se resuelve de manera
natural.
       Aunque varios bloques pueden persistir en una bifurcación creada, esto suele suceder
cuando hay una división y algunos mineros creen que una rama de la bifurcación es la
cadena de bloques legítima, mientras que los otros siguen la otra rama. Ante ello, el
protocolo determina que la cadena de bloques correcta es la más larga. Por tanto, los
                                         Página 44 de 49
BLOCKCHAIN. CURSO ONLINE.
mineros tienen un incentivo para dejar de trabajar en una rama tan pronto como quede claro
que ésta queda huérfana, ya que el trabajo en una sucursal huérfana se desperdicia; por ello,
habitualmente las bifurcaciones generalmente quedan resueltas en un solo bloque, siendo el
promedio de bifurcaciones de alrededor del 2% (es decir, en promedio, cada 50 bloques hay
una bifurcación en el blockchain).
       Cada resolución de la bifurcación produce ganadores (los mineros que resolvieron
bloques en la rama aceptada) y perdedores (mineros cuyos bloques huérfanos resueltos), si
bien el protocolo evita que un agente centralizado o mediador decida sobre la rama correcta,
de acuerdo con la filosofía de descentralización.
       Por otra parte, las transacciones incluidas en los bloques huérfanos, no se pierden.
Cuando se procede a resolver la bifurcación y se descarta una rama de la cadena de bloques,
las transacciones en esa rama se vuelven a introducir en un pool de memoria de
transacciones no confirmadas, la cuales estarán listas para ser incluidas en el siguiente
bloque extraído. Dado que algunas de estas transacciones ya pueden aparecer en un bloque
de la rama legítima de la bifurcación, en este caso, estas transacciones serán descartadas y
excluidas del grupo de memoria de transacciones no confirmadas.
4.7.2.- RAÍZ DE ÁRBOL DE MERKLE
       Dado que la generación del hash puede tener algunos inconvenientes a la hora de que
determinadas acciones sean ejecutadas (e.g. cambios en las transacciones, verificación de
que una transacción pertenece a un bloque), en blockchain se utiliza una estructura de árbol
hash denominada “Árbol de Merkle”, propuesta por Ralph Merkle en 1982.
                                        Página 45 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
                    Ilustración 17: Árbol de Merkle de transacciones en un bloque.
       Como se puede apreciar en la figura anterior, un árbol binario se forma tomando los
hashes de las transacciones individuales como hojas (Hash0, Hash1…). Dado que
manejamos un árbol binario, en el mismo, cada padre tendrá dos hijos, siendo el hash del
nodo padre el hash de los dos hijos.
       Así, la cabecera del bloque contiene el hash del bloque anterior en el blockchain, la
raíz del árbol Merkle de las transacciones, y el nonce incluido. El hash del bloque es, por
tanto, el hash del encabezado del bloque solamente, dado que las transacciones se
representan en este hash a través de la raíz del árbol de Merkle.
       Una de las ventajas de usar árboles de Merkle es la verificación de transacciones.
Siguiendo el supuesto de la figura indicada a continuación, supongamos que un nodo
quisiera verificar que una transacción (e.g. Tx3) pertenece a un bloque como el representado
en dicha figura. De este modo, un nodo puede realizar esta operación empleando un tiempo
que está relacionado logarítmicamente con el número de nodos en el árbol. Así, y siguiendo
con el supuesto indicado, el nodo solo tendrá que calcular Hash3, Hash23 y Root Hash, y
verificar el resultado contra el hash de la raíz almacenado en el bloque. Por tanto, el nodo
sólo tendrá que verificar en la rama de Merkle la parte del árbol que permite probar
criptográficamente que se incluye una transacción en el árbol.
                                           Página 46 de 49
BLOCKCHAIN. CURSO ONLINE.
                                 BIBLIOGRAFÍA
 Back, A. (2002) Hashcash - a Denial of Service Counter-measure.
 Bashir, I. (2017). Mastering Blockchain. Birmingham, UK: Packt Publishing Ltd.
 BlockchainLab. (2018). Criptografía básica para entender la tecnología blockchain.
  Blockchain GT.
 Bruce, J.D. (2013) Purely P2P Crypto-Currency with Finite Mini-Blockchain
 Buterin, V. (2013) Primecoin: The Cryptocurrency Whose Mining is Actually Useful.
  BitcoinMagazine.
 Buterin, V. (2013) In Defense of Alternative Crypto currencies. Bitcoin Magazine.
 Ferguson, N., Schneier, B., Kohno, T. (2010) Cryptography Engineering: Design
  Principles and Practical Applications. John Wiley & Sons.
 Franco, P. (2014) Understanding Bitcoin: Cryptography, Engineering and Economics.
  John Wiley & Sons.
 Friedenbach, M., Timón, J. (2013) Freimarkets: Extending Bitcoin Protocol with User-
  specified Bearer Instruments, Peer-to-peer Exchange, Off Accounting, Auctions,
  Derivatives and Transitive Transactions.
 Gentry, C. (2010) “Computing Arbitrary Functions of Encrypted Data.”
  Communications of the ACM, 53(3).
 Grigg, I. (2014) A Quick History of Cryptocurrencies BBTC—Before Bitcoin. Bitcoin
  Magazine.
 Gupta, M. (2017). Blockchain for Dummies, IBM Limited Edition. John Wiley & Sons,
  Inc.
 Moreno, M. (2017). Tecnología Blockchain (I): Sistema Criptográfico. Blog NewDeal.
 Nakamoto, S. (2008) Bitcoin: A Peer-to-Peer Electronic Cash System.
 Oram (2001). Peer-to-Peer. O’Reilly Media, Inc.
 Preukschat, A. (2017). Blockchain: la revolución industrial de internet. Barcelona,
  España: Gestión 2000.
 PwC (2016). Blockchain – an opportunity for energy producers and consumers? PwC
                                       Página 47 de 49
G1: LA TECNOLOGÍA BLOCKCHAIN.
                                ILUSTRACIONES
   Ilustración 1: Redes distribuidas y nodos bizantinos (fuente: I.Bashir)
   Ilustración 2: Estructura básica de una cadena de bloques. Fuente: Univ. Princeton
   Ilustración 3: Visión de Blockchain como red. Fuente: Bashir.
   Ilustración 4: Estructura general de blockchain. Fuente: PwC.
   Ilustración 5: Estructura general de blockchain. Fuente: Bashir.
   Ilustración 6: Infográfico representativo de un proceso genérico de
    blockchain. Fuente: PwC.
   Ilustración 7: Ejemplo de estructura de bloque. Fuente: Bitcoin.
   Ilustración 8: Redes de negocios antes y después de blockchain. Fuente: Blockchain for
    Dummies.
   Ilustración 9: Seguimiento de la propiedad del vehículo sin blockchain. Fuente:
    Blockchain for Dummies.
   Ilustración 10: Seguimiento de la propiedad del vehículo con blockchain. Fuente:
    Blockchain for Dummies.
   Ilustración 11: Ejemplo de cifrado basado en clave pública. Fuente: Pedro Franco.
   Ilustración 12: Ejemplo de proceso de firma digital. Fuente: Pedro Franco.
   Ilustración 13: Ejemplo de función Hash. Fuente: Wikipedia.
   Ilustración 14: Ejemplo de función Hash. Fuente: Pedro Franco.
   Ilustración 15: Ejemplo de función Hash. Fuente: Pedro Franco.
   Ilustración 16: Estructura general de blockchain. Fuente: Pedro Franco.
   Ilustración 17: Arbol de Merkle de transacciones en un bloque. Fuente: Pedro Franco.
                                       Página 48 de 49