REPUBLICA BOLIVARIANA
DE VENEZUELA
UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA
NÚCLEO CARACAS
Doctorado en Innovaciones Educativas
UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA
NÚCLEO CARACAS
Doctorado en Innovaciones Educativas
BLOCKCHAIN, CÓMO
DESARROLLAR CONFIANZA
Professor: Estudiante:
Miguel Álvarez Cádiz Wilson E Urueta E
Octubre
2018
Introducción
Bitcoin adapta
la tecnología blokchain, a partir del año 2008, sustentado en un interés que lo
que ha hecho es crecer. Hoy por hoy las criptomonedas son su primer y exitoso
campo de aplicación, pero también es cierto que existe un gran interés general
y interdisciplinario en su potencial para dar soluciones a gran escala en un
sin fin de campos.
El objetivo del
presente trabajo es indagar o intentar entender cómo actúa la tecnología
blokchain, y en cuáles casos de su implementación resulta beneficiosa.
De igual manera el
trabajo presenta las diferencias existentes entre las distintas características
de blokchain, afrontando las cuestiones que se han de trazar para establecer y si
es que alguno de ellos es conveniente en lo que deseamos, y en caso efectivo
cuál, como instrumento para montar un procedimiento que sea útil para el
proyecto determinado.
Nacimiento y evolución de la tecnología
blockchain
La primera
publicación sobre la tecnología blokchain se remonta a 1991. La intención que
movía a los investigadores era tener un registro digital de archivos-de imagen,
audio, video o texto, ordenado cronológicamente, que permitiera tener con
exactitud su autoría y fecha de creación y autoría.
Casi dos décadas
después, en 2008, que nace ya formalmente Bitcoin. El propósito fundamental de
esta criptomoneda es eludir el control de las instituciones financieras por
cuanto no necesita supervisión como método de pago electrónico utilizando la
tecnología blokchain. Es la combinación de la tecnología blokchain con un
protocolo que se conoce como Proof-of-Work.
El
Proof-of-Work, es un dispositivo a través de las cuales las transacciones en
criptomoneda han de ser válidas-comprobando que el dinero a trasladar está y no
se ha usado y en consecuencia los validadores son honrados con una cierta
cantidad de la dinero virtual. Hoy ya existe algo más de 2000 el número de
criptomonedas en circulación, y todo es gracias al éxito obtenido por Bitcoin.
La tecnología
blokchain se ha venido estudiando a parir del año 2008 en cuanto a su uso como
como una herramienta de múltiples aplicaciones en diversos campos. Los campos
en que es atractiva la tecnología blokchain tenemos: registro de propiedades,
historiales médicos, organización y distribución de recursos energéticos,
control de aduanas, sistemas de votación, identidad digital, monitorización de
producción.
QUÉ ES BLOKCHAIN?
Blokchain en
términos generales, es un registro de
información distribuido tipo P2P (Peer-to-Peer) en que los diferentes
copartícipes no tienen por qué confiar los unos del otro, por cuanto la
existencia del protocolo de consenso que avala la seguridad y autenticidad de
las transacciones. Se ha resaltar la inmutabilidad de la cadena una de las
características principales; en la tecnología blokchain no existe la
posibilidad de borrar o editar información.
La terminología
blokchain, o cadena de bloques en el idioma castellano, se relaciona con la
estructura como registro, radica en un conjunto de transacciones que son organizados
y recopilados en bloques. Bloques ordenados cronológicamente y con un número de
bloque, es un código alfanumérico conocido como hash, firmados digitalmente por
quien propone o valida el bloque.
Desde la
perspectiva inversa, pueden verse los bloques como conjuntos de transacciones a
las que se les ha asignado un número de bloque y código hash. En cuanto a la
inmutabilidad de la cadena, dado el caso que se quiera cambiar una información
que haya sido introducida en el bloque validado, no existe otra forma de hacer
que no sea la de emitir una nueva transacción que restablezca la información
deseada. De tal manera que de ninguna
manera será posible borrar o editar nada que haya sido anteriormente aprobado y
añadido a la cadena.
a.
Registro de información distribuido
Las
base de datos o registros de información centralizados pueden definirse como
aquellos en las que los datos se almacenan en un único lugar físico, un único
servidor- aunque sea accesible desde
otros lugares y por diferentes entidades. Por el contrario, en base de datos
centralizados y distribuidas la información se almacena en varios servidores.
Blokchain
nace como una propuesta de registro de información distribuido, el mismo opera
de tal manera que cada una de las computadoras o servidores conectados al
registro cuenta con una copia de todo el blokchain o cadena de bloques.
No es
solo una cuestión de donde se almacena la información, sino que también es una
cuestión de quién está a cargo de la misma, y es que en blokchain, todos los
participantes se encuentran al mismo nivel jerárquico, en la toma de
decisiones, proposición y validación de bloques, que los demás. Lo que
significa que cada uno de los
participantes tiene una copia del blokchain, por cuanto la cuestión de donde se
almacena la información, o quien está a cargo de la misma deja de ser un
problema. De esta manera se elude la necesidad de una entidad central. Los
participantes no podrán imponerse sobre los otros, a tal punto de no poder
añadir nueva información sin el consenso y autorización del resto.
b.- P2P (Peer-to-Peer)
P2P hace
referencia al hecho de que la interacción entre los distintos participantes a
los llamados nodos, se realizan en parejas. Los nodos no están conectados entre
sí, porque cada nodo está solamente conectado con un número determinado del
resto. Hechos que marcan la eficiencia y el anonimato, como lo veremos más
adelante. Un nodo quiere realizar una transacción, envía la información de la
misma a aquellos con los que está conectado y estos a su vez la replican con
aquellos con los que ellos, a su vez, están interconectados. Esto acurre si y
solo si la transacción es válida –no acurre si se pretende enviar dinero que no
existe, cuando los nodos la “escuchan” tan sencillo como que la ignoran.
No necesidad
de confianza
En las base de datos utilizadas tradicionalmente se asume que todos los
participantes son de confianza, es decir, que ninguno de los nodos-en el
lenguaje que estamos utilizando- va a introducir en la base de datos
información no veraz. La idea revolucionaria de blokchain consiste en ofrecer
un protocolo de consenso que permite que los distintos nodos no tengan por qué confiar unos en otros y aún así puedan
compartir un registro de información confiable. El protocolo de consenso sirve para evitar que
bloques con información no veraz sean añadidos a la cadena o que, si consiguen añadirse,
sean rechazados por el resto de nodos.
CÓMO FUNCIONA LA TECNOLOGÍA BLOKCHAIN
El proceso
mediante el cual se genera información y se publican nuevos bloques válidos
puede describirse en los siguientes 6 pasos. Es conveniente aclarar primero que
el significado de la palabra transacción, en este contexto, engloba cualquier
tipo de intercambio de información susceptible de ser contenida en un bloque. A
saber, información sobre una transacción
económica, sobre un contrato inteligente, sobre un cambio en los ´permisos de
un usuario –en caso de que la red permita tal posibilidad- y un largo etcétera.
En general, cualquier información que tenga que ver con la cadena de bloques,
ya sea relativa a sus participantes o a la información que se comparten entre
ellos, queda registrada en un bloque de blokchain en forma de transacción.
Paso 0. Cualquier persona o colectivo
de personas que quieran ser parte de la red tienen dos opciones en función de
tipo de blokchain que se esté utilizando; descargarse la aplicación
correspondiente que les convierte en un nodo con los mismos derechos que todos
los demás o acceder vía una interfaz web que los nodos administradores hayan
provisto para el resto de usuarios autorizados.
La primera opción es generalmente la correspondiente a redes públicas, donde
todo aquel que lo desee puede participar; solamente tiene que descargar el
software correspondiente y este, de forma automáticamente, se conectará con un
número determinado de nodos y les preguntará por la copia más actualizada de la
cadena. La opción alternativa le corresponde a blokchains federados o privados.
En esta cadena de bloques habrá unos nodos privilegiados administrando la
cadena y decidiendo como el “usuario promedio” accede a través de una interfaz
web que ellos suministrarán.
Paso 1. Una vez los participantes están
conectados a la cadena, el primer paso consiste en enviar información en forma
de transacciones que finalmente acabaran construyendo los bloques de la misma. Es
decir, cuando un nodo quiere realizar una transacción –ya sea una operación
económica, un Smart Contract, etc-, le envía la información sobre esa
transacción a los nodos con los que está conectado. Un primer protocolo actúa aquí
de forma que automáticamente cada nodo comprueba que las transacciones que
“escucha” sean válidas –por ejemplo, que no se esté intentando transferir un
dinero que haya sido gastado. En caso de que la transacción sea correcta, cada
nodo la añada a su lista de transacciones, en lo sucesivo llamaremos por su
nombre habitual en este contexto: pool, y la reenvía a los nodos a los cuales a
los que cada uno de ellos está conectado. El proceso continua pero no por
siempre ya que, cuando a un nodo le llega información sobre una transacción que
tiene en su lista o pool, sencillamente la ignorar.
Paso 2. Cada nodo va llenando su lista
o pool con las transacciones que va escuchando. En general, los pools de dos
nodos diferentes no tienen por qué coincidir puesto que lo normal es que
escuchen las transacciones en distintoorden.
Paso 3. En cada ronda –que dependiendo del blockchaun
tiene lugar tras un tiempo que puede variar, en promedio, desde unos pocos segundos
hasta varios minutos-, un nodo es escogido aleatoriamente para proponer un
bloque. Este proceso es el más importante, siendo es el que hace que blockchain
sea un registro en el que los distintos no tienen por qué confiar unas en otras.
La forma en la que el nodo es escogido aleatoriamente se conoce como protocolo
de consenso. La manera en la que el nodo elegido propone el bloque es tomando
la versión actual de la cadena, añadiéndole al final un bloque que contenga las
transacciones que había ido registrando en su pool y enviando esta nueva copia
de la cadena a los nodos con que está conectado, que a su vez la replicarán al
resto de la red al igual que hacían con las transacciones individuales. Los
bloques tienen un tamaño máximo que depende de blockchain por lo que han de
llenarse con un número limitado de transacciones.
Paso 4. La persona elegida propone un
bloque nuevo con las transacciones que
ha ido “escuchando” y registrando en su pool.
Antes de ser enviado a los demás nodos, este bloque ha de ser validado
con un hash -que es el código alfanumérico obtenido a partir de toda la
información del bloque.
Paso 5. El sistema –los protocolos
internos del blockchain- solo acepta el bloque si tiene un hash válido. En caso positivo, el resto de los
nodos verifican que todas las transacciones también sean correctas y actualizan
su copia de la cadena con esta nueva versión que contiene el nuevo bloque.
PROTOCOLO DE
CONSENSO
El protocolo de
consenso es el procedimiento mediante el cual se elige a un nodo para proponer
un nuevo bloque. Se pretende que esta elección sea aleatoria, aunque no todos
los participantes tengan la misma posibilidad de ganar el “sorteo”.
El propósito de
esta elección aleatoria es evitar que haya un responsable único de la
proposición de bloques que se puedan adueñar, de esta forma, de la cadena. Para
ello, se desea que todos los participantes puedan ser elegidos para proponer
bloques pero aquellos que tengan un mayor interés individual en el correcto
desarrollo del blockchain tengan mayor probabilidad de ganar ese sorteo.
Hay,
principalmente, dos formas de determinar este interés. La primera es exigir a
la persona o entidades que realicen un esfuerzo para competir por ser elegido y
darle una recompensa al ganador -en forma de criptomoneda, en general. Segunda es
distribuir las posibilidades de ganar el sorteo proporcionalmente al número de
activos, propiedades o bienes en la red de cada participante.
A continuación,
se describen algunos de los procedimientos más utilizados como protocolos de
consenso, basados en las dos metodologías anteriores.
Proof –of- Work
(PoW). PoW corresponde al grupo de protocolos de consenso donde se exige un
esfuerzo a los participantes en el sorteo para determinar quién propone el
siguiente bloque, y se da una recompensa al ganador. El esfuerzo aquí consiste
emplear capacidad computacional para encontrar el código hash que valide el
bloque anterior. Para ello se necesita una computadora que realice intentos
aleatorios para encontrarlo. Cuanto mayor es la potencia del ordenador, mayor
es el consumo energético y mayor es la probabilidad de obtener el código
válido.
Lo que ocurre
entonces es que cuando alguien propone un nuevo bloque lo hace sin un código
hash, de forma que todos los nodos pueden competir por encontrarlo, solo
algunos lo hacen y son conocidos como mineros, ya que al proceso de encontrar
el hash se le conoce como minar.
Dado que emplear
capacidad computacional para encontrar el hash implica gastar dinero, y que
ningún nodo tiene la garantía de ser el primero en encontrarlo, parece poco
razonable que un nodo maligno malgaste energía y dinero en ese propósito. Más
aun teniendo en cuenta que, en caso de que ganase el sorteo y propusiese un
bloque invalido, el resto de nodos lo rechazarían y se quedaría sin la
recompensa.
Por tanto, si
alguien consiguiese modificar el blockchain tendrá que volver a minar de nuevo
no solo ese bloque sino todos los posteriores, y tendrá que hacer eso en cada
copia del blockchain que está en propiedad de cada nodo. Como es evidente, la
dificultad que tendrá dicho hacker que superar sería la misma que tuvieron los
mineros iniciales. Cerrando el argumento, aquel que quiera corromper la red va
a tener que gastar tanta energía en hacerlo como la que se gastó en validarla
originalmente. Si la dificultad es alta, la energía empleada es mayor pero
también lo es la seguridad.
Por otro lado,
también hay que decir que, a partir de cierto nivel de dificultad en el hash,
lo que implica un mayor gasto de energético en encontrarlo, la cadena puede
considerarse suficientemente segura y la energía extra empleada para obtener
hashes validos de mayor dificultad puede considerarse desperdiciada. No solo
eso, sino que hay otros métodos para aumentar la seguridad como pueden ser
aumentar la descentralización, con más nodos manteniendo copias de la cadena.
La razón por la
cual, a pesar de ella, se gasta toda esta energía es que la dificultad del hash
no se configura en función de cuanta seguridad se pretende conseguir sino de
cuál es el tiempo promedio que se pretende que los mineros tarden en minar. Es
decir, como los mineros compiten por encontrar el hash para cada bloque, si se
fijase una dificultad de minado que aportase suficiente seguridad para la
cadena, entonces cuando los mineros aumentasen en número o incrementasen sus
recursos los bloques se minarían cada vez más rápido y por tanto estarían más
vacíos, contendrán menos transacciones. Esto no interesa, de forma que lo que
se fija es el tiempo promedio que se desea que tarden los bloques en ser
minados, en Bitcoin son 10 minutos y cada 2 semanas aproximadamente se
recalcula la dificultad de minado de forma que satisfaga ese requisito. Sí, por
ejemplo se duplica el número de nodos mineros o los que ya hay duplican su
capacidad computacional, entonces disminuirá el tiempo que tardan en minar y,
tras el periodo establecido, se recalculará la dificultad de obtener el hash a
la alza.
Para dar una
idea en términos de energía consumida, según los datos ofrecidos por el sitio
web digiconomist el consumo anual de electricidad empleada en Bitcoin es de
39.03 TWh, que es del mismo orden que los 39 TWh, que sirvieron para abastecer
energéticamente a todo Perú al pasado año, según worlddata.info.
Proof-of-Stake
(PoS). Tanto PoS como los protocolos que mencionamos a continuación consisten
en asignar mayor probabilidad de ganar el sorteo a aquellos que tienen más
activos en la red. Aquí no hay personas compitiendo por validar el bloque y por
tanto, en general, tampoco hay recompensa para quien lo consigue.
Leased-Proof-of-Stake (LPoS). LPoS
una variación de PoS en la que usuarios con poco capital pueden
ceder sus probabilidades de ganar el sorteo. En caso de que el nodo en el que
hayan delegado el ganador y haya algún tipo de recompensa por el minado, se
reparte proporcionalmente entre él y las personas que lo apoyaron.
Delegated - Proof-of-Stake (DPoS). DPoS una variación de PoS en la que los nodos pueden proponer a
cualquier otro nodo bien para validar bloques, a los que se conoce como
testigos, o bien para decidir sobre las características, como tiempo entre
bloques o tamaño del bloque, de la propia red, a los que se conoce como
delegados. Cuanto más poder tiene un nodo en la red, más cuenta su voto. Cada
nodo propone un número de nodos suficiente como para que se considere
suficientemente descentralizada la red, y la elección se repite tras un tiempo
establecido.
Es decir, en
general los protocolos de consenso buscan que la persona que propone un bloque
sea elegida de forma aleatoria, pero en esa elección o sorteo la probabilidad de
que un nodo sea elegido se asigna de forma que se intente garantizar que la
persona seleccionada no tenga interés en comportarse de forma malintencionada.
Para ello, como indicábamos al principio, unos blockchain exigen aportar
capacidad computacional que redunda en la capacidad de la cadena y dan una
recompensa por ello. Otros blockchain, en cambio, asignan distintas
probabilidades para ganar el sorteo de proponer el bloque en función de
criterios como el dinero que tienen los participantes en la cadena, su
actividad en ella, etc.
Seguridad de la cadena
Hay res puntos a
destacar en cuanto a la seguridad de la cadena.
a.- Hash
El hash es el
código alfanumérico que se obtiene aplicando una función matemática, conocida
como función hash, a un con junto de datos concatenados. A cada conjunto de
datos le corresponde un único hash. El objetivo de utilizar este hash en
blockchain es tener toda la información de cada bloque condensada en un único
código alfanumérico. Esto nos va a permitir, como ahora veremos, detectar
cambios en los bloques mirando únicamente al hash.
Sí, llegados a
este punto, nos preguntamos qué información se necesita concatenar para obtener
el hash, la respuesta rápida es toda aquella información del bloque que
queremos encriptar y sobre la que queremos poder detectar cambios. Esto es, el
número del bloque, las transacciones que contiene y la firma digital de la
persona que lo propone o lo valida, que son las partes constituyentes del
bloque tal y como se definió previamente.
Sin embargo,
aunque es cierto que esto permite tener un hash único y diferente para cada
bloque, en blockchain se introducen dos piezas más que son fundamentales para
la cadena.
La primera pieza
es el código hash del bloque previo. Hemos explicado que, si se cambia algo en
cualquier bloque, automáticamente el hash va a cambiar, de forma que si el hash
previo era el que identificábamos como válido, el nuevo lo detectaremos con
fraudulento. Si en la concatenación para obtener el código hash de cada bloque
introducimos, junto con los datos anteriores, el hash de bloque previo,
entonces conseguimos que si alguien altera la información de un bloque, tanto
el hash de ese bloque como los hashes de todos los posteriores pasaran a ser
inválidos. Es decir, propagamos el error a todos los bloques posteriores de la
cadena. Esto nos permite poder detectar cualquier modificación de cualquier
bloque de la cadena mirando solamente al último bloque.
La segunda pieza
a introducir es el nonce. El nonce es un código alfanumérico totalmente
aleatorio. Pretendemos que el hash no solo nos sirva para identificar un bloque
sino que además añada seguridad. Si simplemente concatenamos el número de
bloque, las transacciones, la firma y el hash del bloque previo para obtener el
hash de cada bloque, al aplicar la función matemática siempre obtendremos el
mismo hash porque estamos aplicándosela a un conjunto fijo de elementos.
Digamos que, por ejemplo, el código hash de una concatenación determinada es
9ka41k3h5j18403k298g. lo que se hace es exigir que los hash empiecen por un
número determinado de ceros para que sean válidos, de forma que hay que
introducir un elemento variable, que es el nonce, que concatenamos con el
resto. La forma de obtener un hash válido es, entonces, ir cambiando el nonce
de forma aleatoria y aplicar la función hash hasta que el resultado –el código
hash- empiece por el número cero exigido. Si fuesen cinco cero, un resultado
válido sería por ejemplo 00000x92ka7r91ja9k3.
Lo que hacen entonces los mineros cuando el protocolo de consenso de la
red PoW, es probar nonces aleatoriamente hasta conseguir un hash valido. El
primero que lo encuentra tiene derecho a proponer el bloque siguiente y, si
este es aceptado, recibe la recompensa en forma de criptomoneda que la red haya
establecido –en Bitcoin, tal y como comentábamos en la sección previa, la
recompensa actual es de 12,5 Bitcoins y el tiempo promedio de minado es de un
bloque cada 10 minutos.
b.-
Capacidad de rechazar transacciones y bloques inválidos.
c.-
Protocolos de consenso, descentralizados y teoría de juegos.
Los protocolos
de consenso permiten tener un registro distribuido en la que las distintas
partes, sin necesidad de confiar unas en otras, puedan estar seguras de que la
información que comparten y aceptan es veraz, y puedan además rechazar una
información que no lo sea, en el caso de que consiga colarse en la red. Además,
dado que PoW requiere del empleo de capacidad computacional para validar
bloques y en PoS se va a penalizar tu stake –que viene a ser tu valoración
dentro de la red- en caso de que actúes de forma negativa para la red, y
teniendo en cuenta que tu actuación maliciosa va a poder ser rechazada por el
resto de la misma, estudios utilizando la teoría de juegos concluyen que la
forma más beneficiosa para una persona en una cadena blockchain es siempre
actuar en beneficio de la red, ya que este será el suyo propio.
Tipos de Blockchain
Pueden
distinguirse al menos tres tipos de blockchain: las públicas, las federales y
las privadas. Cabe mencionar asimismo la opción Blockchain as a Service para
servicios en nube-
Públicas. Las
redes blockchain públicas son aquellas a las que cualquier persona tiene
acceso. En general, el procedimiento para participar es descargarse la
aplicación correspondiente y conectarse, de forma automática, con un
determinado número de nodos a los que se le pregunta por la versión más
actualizada de la cadena. Una vez el nodo está actualizado, tiene los mismos
derechos y deberes que el resto de los participantes a la hora de proponer y
validar transacciones, replicar las transacciones que escucha o minar- si desea
hacerlo-. También en su mayoría, la seguridad de estas redes está basada en
protocolos de consenso y funciones hash, y los usuarios interactúan con la red
de forma anónima.
Federadas. Los
blockchain federados son un concepto de red diferente a los públicos e incluso
podrían considerarse una tecnología diferente, puesto que no satisfacen en
muchas ocasiones la definición o descripción que hemos abordado en las
secciones previas. Estos blockchain han ido surgiendo con la idea de servir como
registros descentralizados que permiten generar confianza en tornos complejos
con entidades con diferentes intereses. En general nos son públicas, sino que
un número determinado de organizaciones, entidades o compañías se encargan de
administrar la red y mantener copias sincronizadas del blockchain. El acceso
generalizado es en este caso mediante una interfaz web que estos
administradores ponen a disposición de los usuarios.
Es por eso de
vital importancia, a la hora de diseñar e implementar soluciones de este tipo,
acompañar a la herramienta blockchain con un plan estratégico adecuado
consistente en definir quiénes son los participantes, quién y cómo se va a
administrar la red, quién va a validar las transacciones y qué información se
les va a mostrar a los usuarios vía interfaz web.
En muchos casos
el usuario que accede vía web puede no tener interés ni conocimiento sobre
blockchain, pero necesitar de una plataforma que involucre entidades diferentes
y requiera confianza y transparencia. Un blockchain federado puede ser entonces
una buena opción siempre que las reglas del juego establecidas en la
administración y mantenimiento de la cadena sean las adecuadas y se ofrezca al
usuario, a través de la interfaz web, el grado de transparencia requerido.
Queda claro
entonces que, al ser su acceso vía web y no como nodos de pleno derecho, los
usuarios comunes o corrientes tendrán acceso a tanta información como se les
decida mostrar a través de la misma. Se tendrán entonces alternativas que
varíen desde un gran nivel de transparencia hasta una transparencia mínima.
El minado de
bloques actúa aquí también de forma diferente. En general ahora la red ni
siquiera tendrá una crptomoneda asociada, de forma que el modelo de minado de
bloques con recompensa que tiene lugar en muchas de las redes públicas no es
posible. Sin embargo, sigue siendo necesario que los bloques tengan un hash.
¿Quién es entonces el encargado de encontrarlo? Una opción razonable es que las
propias organizaciones o entidades al mando de la red se encarguen de
proporcionar y mantener servidores que cumplan con este propósito. Es decir, la
labor de minado que en las redes públicas es el corazón que las mantiene vivas
y es responsabilidad de los usuarios, ahora pasa a jugar un papel secundario y
son los administradores de la red quienes se encargan de proporcionar los
recursos computacionales necesarios para encontrar –o minar bloques-.
Actualmente hay
varias opciones de código abierto para construir un blockchain federado como Hyperledger,
Corda, EFW o Multichain donde puedes descargar la aplicación de blockchain y
programar la cadena a tu gusto, decidiendo quien quieres que participe, bajo
qué reglas se regulan las transacciones, entre otros. Las redes públicas como
Ethereum o Litecoin también ofrecen la oportunidad de hacer un fork para crear
entornos federados o privados.
Privadas. Los blockchain
privados son aquellos en los que el control está reducido a una única entidad
que se encarga de mantener la cadena, dar permisos a los usuarios que se desea
que participen, proponer transacciones y aceptar los bloques. Son iguales que
las federadas pero con solo una entidad a cargo, de forma que además de todas
las diferencias con respecto a las públicas que ya encontrábamos en las
federadas, hay que añadir que se pierde la descentralización.
Blockchain as a Service (BaaS). Algunas
grandes compañías ofrecen servicios de blockchain en la nube. Algunos ejemplos
son IBM especializada en Hyperledger Fabric, Amazon colaborando con Digital
Currency Group, o Microsoft ofreciendo servicios de R3, Hyperledger Fabric o
Quorum, entre otras. Estos servicios no solo consisten en almacenamiento de
información, en este caso del blockchain, sino que las ventajas de este tipo de
servicios son un aumento en la seguridad, la no necesidad de invertir en
hardware y la posibilidad de un entorno más amigable con el que trabajar,
pudiendo crear tu propio canal de
blockchain sin necesidad de programar.
Entre las características que convierten a blockchain
en una herramienta ´til pueden destacarse transparencia, descentralización y no
necesidad de intermediarios.
·
El concepto de transparencia, o la forma en que
se consigue, varía en función del tipo de red estamos utilizando. En las redes
públicas, en general, la transparencia es total puesto que cualquier usuario
que se registre en la cadena es provisto de una copia de todo el blockchain,
pudiendo ver en ella el estado actual de los archivos y el historial de
transacciones. En las redes privadas y federadas el acceso es restringido y
mediante vía web para la mayoría de los usuarios, como comentábamos en la
sección previa. Para estos usuarios el nivel de transparencia es el que los
administradores de la red decidan afrecerles mediante esta interfaz wrb.
·
La descentralización es un requisito
determinante a la hora de decidir si blockchain es o no una buena herramienta
para un caso concreto. En la medida en que la descentralización es deseada,
blockchain gana enteros. Sí, en cambio, se pretende tener una base de datos
centralizada, entonces blockchain en general no va a ser en absoluto la mejor
opción. La descentralización consiste básicamente en determinar el número de
nodos que van a mantener la cadena. Sin embargo, es interesante mencionar que
esto no implica necesariamente transparencia, puesto que los propios nodos
pueden tener diferentes roles dentro del sistema que les den acceso a un tipo
determinado de información, teniendo vetado el acceso a ciertos contenidos de
la red.
El
tener distintos servidores con una copia sincronizada de la cadena añade un
gran valor en cuanto a seguridad, dado que si alguna consiguiese modificar o
corromper una de las copias, sería tan sencillo como re-sincronizarla con las
demás.
· En cuanto a la no necesidad de intermediarios,
conviene hacer énfasis en las palabras, “necesidad”. Blockchain nace con
Bitcoin para evitar necesidad de que instituciones financieras tengan que
intervenir o verificar transacciones monetarias –o cryptomonetarias- entre
individuos, de forma que aquí la eliminación de la intermediación de las mismas
era un objetivo deseado y conseguido.
Sin
embargo, a la hora de añadir un blockchain privado o federado la situación es
diferente. Podría ser que, en un sistema funcionando con blockchain consistente
en el envío de un producto o un material determinado de un lugar a otro, se de
interés para las dos partes realizar ciertos controles intermedios. Digamos,
por ejemplo, que se pretende llevar a cabo un envío de productos alimenticios
que requieren unos ciertos controles de humedad y temperatura durante su
transporte por avión y barco. Las dos partes establecerían entonces el acuerdo
–en forma de Smart Contract- de los parámetros a evaluar en los controles y el
pago a realizar en caso de que todo siga su curso de la forma deseada.
Estas
instituciones podrían tener su propio nodo provisto solo con permisos para ver
información sobre las condiciones de temperatura y humedad que tienen que
verificar, y no podrían saber en ningún momento cual es el precio que se ha
acordado pagar por el cargamento, por ejemplo. Al finalizar satisfactoriamente
el proceso establecido en el Smart Contrat, el dinero se transferiría
automáticamente al vendedor.
Queda
claro con lo anterior que blockchain no es una herramienta tecnológica que
ofrezca una única solución poco flexible sino todo lo contrario. La tecnología
blockchain permite construir soluciones que van desde un registro centralizado
y sin transparencia hasta una red descentralizada, con complejas reglas de
validación y gran nivel de transparencia. Por eso es importante resaltar la
necesidad de entender blockchain no como la solución a cualquier problema sino
como una herramienta que será útil si se emplea de forma adecuada, lo que
implica estudiar de forma individual cada caso particular.
Entre
los numerosos casos de uso de esta tecnología de esta forma son interesantes
las posibilidades de aplicación para elecciones políticas transparentes y
púbicas, registro de procesos de fabricación de ropa o comida –al que luego se
podría tener acceso mediante un código QR en el producto-, registro de
propiedad –los gobiernos de Georgia, honduras
o Suecia han sido pioneros explorando esta vía-, todo tipo de
operaciones como alquileres o ventas de propiedades sin necesidad de
intermediarios, controles de aduanas, registros médicos, IPFS –almacenamiento
de datos inter-planetario- y un largo etcétera.
Smart Contracts & IoT
Los
Smart Contracts o contratos inteligentes son un elemento fundamental de la
tecnología blockchain, ya que establecen y definen cómo y quién puede llevar a
cabo una transacción. Son contratos en los que se define y especifican una
serie de cláusulas, como los controles a cumplir por las mercancías mencionadas
en la sección previa y el pago final acordado en caso de que estos sean
superados. La diferencia con los contratos usuales es que estos son
incorporados a un blockchain a cadena de bloques en la red, que garantiza su
seguridad y proporciona el entorno adecuado para su procesamiento automático.
Por IoT-Internet
de las cosas en castellano- se entiende la red de objetivos, instrumentos o
dispositivos conectados a internet, que van desde una automóvil hasta una
lavadora. Distintas estimaciones calculan que en 2020 el número de dispositivos
conectados a internet será de entre 25 y 30 millones. Estos dispositivos son de
gran utilidad como complemento a la tecnología blockchaun, puesto que permiten
la comprobación automática de cláusulas establecidas en los Smart Contracts,
desde medir la temperatura hasta realizar reconocimientos faciales. Esto
acelera, abarata y optimiza la realización de las transacciones y el
funcionamiento del blockchain. Los dispositivos inteligentes que envíen
información al blockchein han de tener una identidad digital que les permita
firmar digitalmente dicha información, dado que en caso contrario la
información no sería de confianza. Es por eso que no cualquier dispositivo
conectado a internet es válido para blockchain.
Cómo identificar cuándo blockchain es una
herramienta útil
Como
hemos venido discutiendo, blockchain tiene unas características determinadas y
ofrece unas prestaciones concretas. A la hora
de responder la pregunta de sí blockchain es útil para un caso
determinado, conviene considerar en primer lugar que blockchain no es una
solución en sí misma. Blockchain es una herramienta tecnológica que ha de ser
rodeada de un plan estratégico que entienda las necesidades del proyecto,
identifique el grado de transparencia y descentralización, determine los
miembros que actuarán como nodos y establezca la estructura de blockchain
adecuada, definiendo cómo van a ser las transacciones y/o los Smart Contracts a
ejecutar. Blockchain es un software que permite crear cosas muy diferentes
entre sí, por lo que la implementación concreta que se lleve a cabo será
determinante a la hora de decir si añade valor o no.
Esencialmente,
blockchain será útil en la medida que el caso de uso tenga necesidad de
descentralización, registro inmutable, transparencia, consenso y validación.
Una
forma de ver si blockchain es necesario y útil es hacerse una serie de
preguntas como la que ahora vamos a detallar, y ver si entre las respuestas
aparecen los anteriores 5 componentes. Dado que en la actualidad hay un gran
interés en blockchain, no son pocas las veces que se pretende hacer algo con
blockchain sin saber qué. Nuestro punto de vista es que como entrenamiento para
entender la tecnología es positivo, pero de cara a querer llevar un proyecto a
una fase de producción es altamente desaconsejable. Es por eso que la primera
pregunta que consideramos hay que plantearse es:
-
¿Cuál es el problema que se está tratando de
resolver?
Esto
evita empezar con “quiero utilizar blockchain para algo pero aun no sé qué”. Es
imposible encontrar una buena solución si no se tiene bien definido un
problema, y es imposible saber si utilizar blockchain y cómo sin saber para
qué.
-
¿Quién va a tener acceso a la red blockchain?
¿Quién va a administrar los permisos?
Es
importante establecer bien quién y cómo va a participar en la red. Si es una
red privada o federada, habrá que diseñar cuidadosamente la estructura de nodos
y las transacciones que cada uno puede efectuar y/o validar. En cuanto al
acceso web para los usuarios corrientes, en el caso de haberlo, también será
importante estudiar qué se les va a mostrar y cómo se va a mostrar. No es
necesario que el usuario sepa que detrás de la interfaz web que está utilizando
hay una red blockchain al igual que ahora no tiene información de qué base de
datos utilizan las páginas que frecuenta. Ahora bien, como comentábamos
anteriormente, si se quiere utilizar blockchain por motivos de transparencia,
entonces no solo se le informará de que está utilizando blockchain sino que se
aprovechará para hacerle partícipe quizás del historial de transacciones o
incluso de ciertas validaciones.
-
¿Son diferentes categorías (gobiernos, empresas,
trabajadores,…)?
-
Cuanto más diferentes sean los participantes de
la red, más complejos habrán de ser los consensos y más variadas serán las
transacciones, y ahí es donde blockchain puede ayudar. Cada organización podrá
desempeñar un papel distinto y a la vez importante para el sistema.
Por
ejemplo, para una red de registro de vehículos en un país determinado podría
ser que el gobierno, la agencia tributaria, las aseguradoras y las grandes
empresas de compra/venta de vehículos fuesen nodos de la red. Por otro lado,
cada ciudadano accedería a través de la interfaz web proporcionada para dicho
propósito y tendría acceso a la ficha técnica de su vehículo sin necesidad de
ser un nodo.
A
la hora de realizar una compra/venta, comprador y vendedor informaran al
sistema vía página web y la transacción sería validada por la aseguradora
–verificando que todo estaba en regla con respecto a pago de seguro-, la
agencia tributaria –tomando nota de los impuestos y verificando igualmente que
no hay insolvencia o deudas por ninguna de las partes- y el ministerio
correspondiente –que daría el visto bueno y tomaría nota para sus propios
registros.
¿Confían
los distintos participantes unos en otros? En caso contrario ¿Cuáles son las
causas de disputa? ¿Tienen intereses diferentes?
De nuevo blockchain es de mayor utilidad cuanto
más disperso son los intereses, puesto que va a obligar a los participantes a
llegar a acuerdos en cuanto a las reglas del juego – acerca
de cómo serán permisos, transacciones, Smart Contracts-. Sin embargo, es
necesario decir que blockchain no va a obligar a los participantes a dejar de
ser corruptos, si estos establecen una regla del juego deficiente que les
permiten actuar de forma maligna o si se conceden permisos de validación a
entidades que no van a realizar su trabajo de forma honesta, blockchain no va a
poder evitarlo.
De
ahí que volvamos a hacer énfasis lo importante que es envolver la herramienta
blockchain con una buena solución que emerja de un correcto estudio del
problema. Bien es cierto, eso sí, que blockchain va a ofrecer siempre un
registro de las transacciones realizadas y que, si bien no puede evitar que
haya comportamientos fraudulentos sí un número determinado de nodos se ponen de
acuerdo en acometerlos, al menos va a quedar registrado y se les podrá exigir
responsabilidades por ello.
¿Hay
intermediarios involucrados? ¿Quién o quiénes serán encargados de validar? ¿Cuáles
son las reglas para validar?
El
involucramiento de intermediarios no es algo negativo pero si ha de ser bien
manejado puesto que, como veníamos comentando, la puerta de entrada para la
corrupción del sistema está en las validaciones. Sí se le da a un intermediario la posibilidad
de validar habrá que estudiar la forma más eficiente y segura para la red de
hacerlo.
¿Cuál
es el presupuesto?
Dado
que la tecnología no está pensada para soluciones a pequeñas escalas y las
posibles implementaciones componen un abanico muy grande y diverso, es
imposible estimar un presupuesto general sobre cuánto puede costar una solución
utilizando blockchain. Es interesante, sin embargo, detallar los diferentes
componentes de la solución.
En
lo relativo al blockchain, se necesitarán recursos para financiar la
programación de la cadena en la etapa inicial y el minado de transacciones una
vez está en funcionamiento.
En
cuanto a la primera, actualmente hay varias opciones de software gratuito que
cualquier desarrollador podrá utilizar. La dificultad a la hora de programar
reside en el número de nodos que vayan a participar, el número de activos que
se vayan a intercambiar y la dificultad en las transacciones o Smart Contracts
a llevar a cabo. Por ejemplo, una solución utilizando blockchain en la que dos
compañías intercambian un único certificado será mucho más económica que otra
en la que el gobierno de un país desee albergar el registro de automóviles de
toda la población, con múltiples posibilidades de intercambio de información entre ellos.
En
cuanto al minado de transacciones, es importante diferenciar si el blockchain
estará sobre una red pública o en un ambiente privado o federado. En las redes
públicas la dificultad de minado y el tamaño de bloque esta predefinido, por lo
que el costo de validación de cada transacción no podrá ser controlado y
dependerá de cada red. En la red Ethereum
la tasa promedio por transacción a finales de 2017 es de entre uno y dos
dólares, mientras que en Bitcoin alcanzó los 50. Si bien muchas otras redes
tienen tasas mucho más bajas, un ambiente aislado podría ser más interesante
para un proyecto ambicioso que requiriese un gran volumen de transacciones. En
una red aislada –como serían las federadas o privadas- se puede elegir el
tamaño del bloque y la dificultad del minado. Por tanto, el costo vendría dado
por el número de computadoras necesarias –y en este caso provistas por los
administradores- para minar las transacciones realizadas en la red, sin estar condicionado
a agentes externos.
Si
bien estos son los dos aspectos económicos a tener en cuenta en cuanto a la
herramienta blockchain, esto no constituye toda la solución. En la solución
completa será necesario conectar el blockchain con una interfaz web que también
habrá de ser diseñada e implementada, y en la mayoría de los casos acompañarla
con una base de datos que albergue los documentos –ya que en el blockchain solo
se almacenan los hoshes de los mismos-.
Actualmente
la mayoría de los proyectos empleando blockchain se encuentran en fase de
piloto, que parece lo más recomendable para comenzar dada la fase prematura de
la tecnología y la muy probable gran envergadura de la solución. Varias
compañías tienen equipos que ofrecen levantar un piloto en un plazo de 3 meses.
Cómo empezar a construir una solución con
blockchain
Una
vez se haya definido con claridad el problema que se quiere resolver; se haya
analizado el grado de descentralización, transparencia, consenso y validación;
se hayan identificado los participantes y se haya llegado a la conclusión de
que blockchain es la herramienta adecuada para comenzar a resolver el problema,
es el momento de comenzar a usar dicha herramienta.
Una
forma de hacerlo es clasificar en tres grupos todos los elementos que van a
estar involucrados en la solución. Vamos primero a definirlos y después veremos
un ejemplo.
Participantes: Los participantes son
todos aquellos colectivos que van a jugar un papel, después las compañías que
administran la red –en el caso de que las haya- hasta los usuarios de a pie,
pasando por entidades auditoras, instituciones financieras, etc. La pregunta
que hay que hacerse es quién es cada grupo, cuáles son los permisos que tiene
sobre la red –es decir, si va a mantener una copia de toda la cadena, si va a poder
ver solo las transacciones en que participe o va a tener acceso a más
información, etc. – y cuáles van a ser las transacciones que va a poder
realizar.
Activos/haberes/valores: Una vez
tenemos claro quién va a participar, necesitamos saber qué van a intercambiar.
Quizás ahora pueda parecer un poco abstracto, pero la forma de entender este
grupo es pensar que cuando los participantes hacen una transacción, ciertamente
están transfiriendo algo. Ese algo es el activo, y puede ser desde un
certificado o documento –en realidad en el blockchain no se guardan los
documentos en sí sino solo su hash-, un token que dé por ejemplo derecho a voto
en una votación, una certificación, etc.
Transacciones: El tercer elemento son
las transacciones. Si bien ya sabemos quién va a “jugar” y cuáles van a ser los
“juguetes”, falta definir cuáles van a ser las reglas del juego. Sin las
transacciones tenemos a todo el mundo estático sin poder moverse, y son estas
las que permiten que la rueda empiece a girar. Las transacciones son las
operaciones mediante la cual los participantes crean, intercambian, modifican o
destruyen activos. Además, al definir
las transacciones podemos también especificar qué participante tienen permisos
para realizar una determinada transacción y cuáles son las validaciones
necesarias para que esa transacción se procese y se añada al blockchain. Como
hemos venido manteniendo en este documento, una transacción es en realidad
cualquier cambio o actualización que se lleve a cabo en la red que es recogido
en los bloques de blockchain.
Veamos
un ejemplo. Supongamos que una empresa uruguaya quiere exportar un cargamento
de carne a México. El gobierno mexicano exige que la carne esté certificada
como libre de aftosa y que no sobrepase una temperatura determinada en todo el
recorrido. Con este objetivo, se realizará un control periódico de la
temperatura, digamos cada 15 minutos, en el contenedor en el que viaja la
carne. Si la carne llaga a México teniendo el certificado “libre de aftosa” y
sin haber superado la temperatura exigida, se desea que el gobierno mexicano
realice el pago acordado a la empresa uruguaya. ¿Cómo sería en este caso una
solución utilizando blockchain? ¿Cuáles son los participantes,, los activos y
las transacciones?
Participantes: La empresa exportadora
uruguaya, el gobierno de México, una entidad financiera que retendrá el dinero
de México mientras el cargamento viaja, un dispositivo IoT que va a enviar
información periódica sobre la temperatura del contenedor, una entidad
certificadora que compruebe que el cargamento está libre de aftosa y emita el
correspondiente certificado y una posible entidad auditora que supervise todo
el proceso.
Activos/haberes/valores: las
transacciones podrán ser el certificado de que la mercancía está libre de aftosa
y el historial de evolución de la temperatura medido por el dispositivo IoT,
que se emite solo en caso de que la temperatura no haya sobrepasado el umbral
deseado.
Participantes Assets
Empresa uruguaya Certificado "libre de aftosa"
Gobierno de México Certificado "temperatura apropiada"
Dispositivo IoT
Entidad sanitaria
Entidad financiera
Transacciones
1.- Notificación envío de cargamento
2.- Notificación depósito de pago
3.- Emisión de certificado "libre de aftosa"
4.- Medición de temperatura
5.- Notificación recibo de cargamento
6.- Notificación de pago
La forma en que
el proceso tendría lugar sería entonces la siguiente:
0 -
La empresa uruguaya y el gobierno de México
firman un acuerdo –en forma de Smart Contract- mediante el cual todo lo
anterior se implementa en un blockchain , y el gobierno de México reserva el
dinero acordado en la entidad financiera correspondiente para ser enviado si
todo procede de la forma establecida.
1.
La empresa exportadora uruguaya envía el
cargamento y notifica en el blockchain que ha sido así.
2.
La entidad asignada verifica que el producto
está en las condiciones requeridas y emite el certificado “libre de aftosa” que
se registra en el blockchain.
3.
El dispositivo inteligente colocado en el
contenedor mide y envía cada 15 minutos el valor de la temperatura al
blockchain.
4.
El contenedor llega al punto de recepción del
gobierno mexicano, emitiéndose la notificación correspondiente en el
blockchain.
5.
La entidad financiera que tenía retenido el
dinero del gobierno mexicano lo libera en favor de la empresa uruguaya.
PARTICIPANTE COPIA DEL BLOCKCHAIN
GOBIERNO -- 0 — 1 — 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 --
EMPRESA URUGUAYA -- 0 — 1 — 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 --
DISPOSITIVO IoT -- — — 2 – –
4 – 5 – 6 – 7 – – --
ENTIDAD FINANCIERA -- 0 — — – – –
– –
– – 9 --
INSPECTOR SANITARIO -- — — –
3 – –
– –
– – --
No hay comentarios.:
Publicar un comentario