Vous êtes sur la page 1sur 33

¿Que es y como

funciona
Blockchain?
Explicación detallada

Recopilado y escrito por Jaime


Crispí
1. Introducción
Hace tiempo que viene sonando todo el tema del Bitcoin y dentro de la
comunidad de programadores hispano americana, sigue habiendo un halo de
misterio sobre como realmente esta tecnología funciona, escuchamos
términos como Blockchain, CriptoMoneda, Minado, y como programador
uno ve conferencias, lee un poco, pero aveces se siente como si el tiempo no
fuera el suficiente para explicar estos conceptos que suenan tan raros.
Yo me di el tiempo de recopilar toda la información relevante de la
comunidad de habla inglesa sobre el tema y compuse por decirlo de una
manera, un documento que intenta explicarlo de la manera mas clara posible,
para todas las personas que les interesaría saber realmente como funciona
este mundo del Blockchain y las criptomonedas en general, para tener
fundamentos para hablar del tema, saber esclarecer dudas, e incluso traer la
claridad cuando un debate de Blockchain se sale de control, un inciso que
quiero hacer es que el documento que estas leyendo no tiene finalidades
comerciales, solo es para informar, y no se puede comercializar bajo ni un
motivo o circunstancia, es totalmente abierto para la comunidad, sin mas que
decir vamos a comenzar

2. Que es Blockchain
Blockchain no es un termino introducido por las criptomonedas, viene de
mucho antes, precisamente de Stuart Haber y W. Scott Stornetta las
criptomonedas vienen mucho después del un termino introducido por Satoshi
Nakamoto, bueno Stuart Haber y Scott Stornetta en 1991 publicaron un
paper llamado How to TimeStamp a Digital que se puede encontrar en el
enlace: https://www.anf.es/pdf/Haber_Stornetta.pdf

y si revisamos el paper encontraras conceptos que hoy llamamos como


Blockchain, y la mayoría de las especificaciones, y características, están en
ese paper, la manera en que wikipedia define BlockChain es:

Un BlockChain, es una lista de registros o bloques que continuamente va en


crecimiento enlazados y asegurados con un método criptográfico

Entonces, esta es una definición bastante general, pero es un buen punto de


partida.
3. Como se constituyen los bloques

bueno un bloque como es un registro obviamente tiene datos dentro, por


ejemplo una cadena de caracteres, por ejemplo "Hola Mundo", y a este
bloque se le asocia un "Hash" que es un valor encriptado y único dentro de la
cadena de bloques, así como lo seria una huella digital de cada dato, y deben
tener en ellos la referencia del bloque anterior para poder recorrer la cadena
de bloques desde el bloque nuevo al bloque origen

Veamos un Ejemplo:
Cuando inicializamos el blockchain tenemos el bloque que inicia la cadena
que se llama bloque génesis, al cual no le antecede ni un bloque, es decir es
el primer bloque que existe dentro de la cadena, por lo que su referencia
anterior no existe, luego cuando se conecta el siguiente bloque debe
consultar cual es el hash del bloque anterior para ser agregado al blockchain,
por lo que tanto el primer como el segundo bloque están vinculados por los
hashes, a medida que avance dentro del tema iré profundizando pero en
esencia ese es el funcionamiento. Si alguien manosea los datos, el hash
propio del bloque cambiara y no va a calzar con la referencia del hash
anterior en el hash siguiente lo que provocara que el blockchain sea
invalido y el sistema fallara desde el bloque corrupto, lo que
imposibilitara la navegación por los bloques siguientes a ese bloque
corrupto.

4. SHA-256
Ahora voy a explicar cual es el rol del algoritmo SHA-256 dentro del
algoritmo de blockchain.

Pensemos en una persona, cada persona tiene una huella digital, es un rasgo
distintivo por lo que cada persona tiene una huella digital diferente, hay una
probabilidad de que 2 personas tengan la misma huella digital pero es muy
baja aproximadamente 1 en 60 millones.

Entonces en cierta manera podríamos decir que la huella digital es un


identificador único para cada persona, y es uno de los recursos más
poderosos que usan los forenses a la hora de identificar criminales es la
huella digital.
Ahora que pasaría si tomamos el mismo concepto y lo aplicamos en
documentos digitales. Que podamos plasmar una especie de huella digital
dentro de cualquier tipo de documento para identificar esos documentos
como nuestros. Esa forma de _"huella digital"_ existe y se llama SHA-256 o
Secure Hash Algorithm y se ve más o menos así.

El algoritmo SHA-256 Fue desarrollado por la NSA. Sin importar opiniones


personales, ellos fueron quienes desarrollaron el algoritmo SHA-256 y
funciona bien y es muy seguro. Se usa en muchos lugares para almacenar
contraseñas, comprobar la integridad de documentos digitales. Y el algoritmo
SHA-256 es totalmente abierto cualquiera puede explorarlo, entenderlo.

Ahora este hash es llamado SHA-256 porque SHA significa Algoritmo de


Hash Seguro y el 256 es el numero en bits que pesa en la memoria, este
algoritmo siempre devuelve 64 caracteres mezclando dígitos y caracteres, y
esto se debe a que es un hash hexadecimal, entonces toma caracteres del 1-9
y letras de la A-F.
Algo importante a notar es que este algoritmo no funciona tan solo para
palabras ni documentos de texto, funciona para cualquier tipo de documento
digital. Es decir puedes poner videos, música, ejecutables, puedes poner
incluso un sistema operativo codificado en SHA-256. Cualquier cosa que
pongas, el algoritmo devolverá una huella digital.

Bueno ahora vamos a verlo en acción es muy interesante ver todo lo que
puede hacer, pero vamos a ver como funciona.

Para ver visualmente como funciona el algoritmo SHA-256 aquí está el demo
de Anders96 lo que vamos a hacer para ver el algoritmo en funcionamiento y
su calculo en tiempo real es escribir e ir viendo como se actualiza el Hash.

Por más que borres y vuelvas a poner exactamente los mismos datos, el hash
sera totalmente el mismo, lo que es obvio si tomo una persona le tomo la
huella digital, y luego de un tiempo vuelvo a tomar a esa persona, la huella
digital va a seguir siendo la misma, otra cosa importante a notar es que si
cambias cualquier tipo de símbolo el hash es totalmente diferente al anterior,
a eso se le denomina Efecto Avalancha de lo cual hablaremos más adelante,
lo que debes notar es que cualquier cambio por pequeño que sea cambio nos
da un hash completamente diferente.

Y aunque tomes un capitulo completo de cualquier libro existente por más


largo que sea, el has seguirá siendo de 64 dígitos y 256 bits.

Ahora hablaremos sobre los 5 requerimientos para de un algoritmo de hash:


4.1 Solamente tener una direccion:

Básicamente, que un hash pueda codificar pero no ir hacia atrás, es decir, no


poder reconstruir el documento en base al hash, solo poder obtener un hash
con el documento, como las huellas digitales, no puedo restaurar la
apariencia de alguien basándome en su huella digital. Pero todas las personas
solo tienen una huella digital

4.2. Ser determinante

puedo tomar exactamente el mismo documento y aplicar el algoritmo y tiene


que ser el mismo resultado, sin importar el tiempo, o de donde sé este
codificando, si el documento es el mismo el resultado tiene que ser
exactamente igual en todos los casos
4.3. Debe ser de computacion rapida

4.4. Efecto avalancha

Este es el requerimiento más importante a la hora de tener un algoritmo de


hasheo y vamos a ver que es lo que implica.

El efecto avalancha implica que tome exactamente el mismo documento y le


haga un pequeño cambio, por ejemplo un bit de datos, el resultado será
totalmente diferente, no es algo que explicaremos a fondo, pero si enfatizarlo,
se llama asi porque cualquier cambio trae más cambios y más cambios y más
cambios, el termino que se utiliza es muy sabio porque realmente causa una
avalancha de cambios, cualquier paso en falso puede derrumbar el equilibrio
de la nieve y se empieza a ir hacia abajo arrazando todo a su paso
4.5 Debe ser resistente a colisiones:

Bueno esto significa, que aunque las probabilidades de que haya 2 personas
con la misma huella digital en el mundo, existe porque cualquier tipo de
algoritmo por muchas combinaciones que tenga esta limitado, y la cantidad
de documentos digitales que podemos crear ilimitada, cada día se crean
toneladas y toneladas de documentos, en esencia la cantidad de documentos
que se pueden crear es mucho más grande, a diferencia de todas las
variaciones que tienen son siempre mayores a lo que puedan representar 64
caracteres en si mismo.

Este es un principio conocido como el principio del palomar, que dice:

Si tenemos más palomas que huecos en el palomar, significa que en un hueco


hay más de una paloma.

Llevándolo a este problema la colisión se da cuando tenemos más


documentos que se puedan codificar, que combinaciones resultantes de ese
algoritmo lo que representa una colisión, ya que puede haber dos
combinaciones que sean iguales, pero esta bien, pueden existir colisiones
pero debemos saber sobrellevar estas raras excepciones para que no arruinen
el algoritmo.

El problema viene cuando alguien logra crear una colisión, si por alguna
razón, una persona logra crear estas colisiones, es decir, si una persona logra
crear un archivo con la misma huella digital de otro archivo, es un problema
grave ya que ese hash puede pertenecer a la identidad del dueño de una
propiedad, podría tener un nombre dentro y si alguien sabe la manera de
generar estas colisiones, podría incluso cambiar el nombre dentro del
documento, imagina que es el nombre del propietario de una casa, y alguien
va a requerir esa información, y gracias a esta colisión artificial, se logra
cambiar el nombre del propietario, podría robarse ese titulo de propiedad, y a
eso se refiere que sea resistente a las colisiones, es decir las colisiones
artificiales no deberían ser posibles de ningún modo.
Para discutir que es el blockchain entender esta información será muy útil
para seguir profundizando en la materia.

5. Registro inmutable

Vamos a partir por una analogía, imagina que yo egreso de mi carrera


universitaria, para eso debo pagar por un titulo universitario, y registrarlo
ante la autoridad para poder ejercer legalmente como profesional en mi
campo de estudio, y pasa lo mismo cuando adquiero títulos de propiedad o
cualquier tipo de titulo legal, esto es un ejemplo de registro tradicional.

En algunos casos los gobiernos modernos usan una plataforma digital para
administrar todos estos registros, pero aun hay una gran cantidad de
gobiernos que usan un registro tradicional, es decir, libros físicos.

Entonces de esos registros físicos depende tu titulo, hay que rezar cada día
porque esos registros estén cuidadosamente archivados, si llega a haber un
incendio, o simplemente se pierden, ya no puedes probar a la autoridad que
ese registro te pertenece. O peor aún, que pasaría si alguien '''Hackea''' el
libro y logra adjudicarse una propiedad que es tuya como si fuese de él, es
decir puedes conducir tu auto como si fuese tuyo, pero realmente no se puede
probar que es tuyo, y por consecuencia alguien podría apoderarse de este bien
que en principio es tuyo, pero legalmente es de otra persona, y no tan solo
puede pasar con papel y lápiz, también puede pasar con archivos digitales,
como documentos excel, preguntate que tan difícil es que alguien abra un
documento excel y cambie la primera línea de texto, aún es demasiado fácil,
¿no crees?.

En este momento hay miles de personas que les ha pasado, producto de


muchos errores en títulos de propiedad, que viven pensando en que están
viviendo en su casa, aunque legalmente no sea suya porque se extraviaron, o
modificaron esos documentos, y ahora la pregunta es ¿como arreglar esta
situación?

Digamos que todos estos documentos están dentro de una cadena de bloques,
y cada vez que alguien vende, compra, o hace cualquier acción con estos
títulos importantes, se añade un bloque a la cadena, y mientras eso pasa en el
sistema se hacen más y más transacciones, y se añaden más bloques a la
cadena, y viene alguien y cambia la información de el bloque que pertenece a
tu propiedad, lo que supondría el cambio de un solo registro dentro de la
cadena es que los bloques siguientes no son validos, porque el registro del
bloque anterior se cambio, por tanto su hash cambio y el bloque siguiente no
podrá conectarse el porque el hash no es valido, porque esté cambio, a eso se
refiere el registro inmutable, que cualquier acción que se haga o deshaga
dentro del blockchain deja huella, incluso si se intento hackear el blockchain
quedara un registro de ello.

Entonces. ¿Hay una manera de hackear un sistema Blockchain?. La


respuesta es si pero no. Teóricamente Blockchain es hackeable, pero para
hackearlo, debes hackear todos los bloques siguientes del bloque que quieres
corromper, lo que lo hace imposible a dia de hoy porque el sistema tiene en
su registro el bloque anterior, pero no el bloque siguiente. Entonces
necesitarías la capacidad de calculo equivalente a todos los súper
computadores que existen para eso, y cuando lleguemos al item de P2P veras
que es prácticamente imposible modificar la información de un solo bloque.
Este no es un ejemplo dado porque si, el registro de patentes y propiedades,
es el campo donde mas se esta innovando con la tecnología BlockChain.
Sobre todo en los registros de propiedades.

Y un hecho sobre la importancia de esto en que países como Haití es


ciertamente imposible saber a quien pertenece una propiedad, por todos los
desastres naturales, los registros en el gobierno desafortunadamente quedaron
destruidos, y cuando se tiene un registro tradicional, es prácticamente
imposible saber específicamente las transacciones históricas de aquel país. Y
fuera de eso en algunos países puede haber corrupción y otros factores que
influyan esto. Y esto es un gran problema.

6.P2P

Imaginemos que queremos atacar el sistema, para intentar hacer un cambio,


vemos que los registros tradicionales son muy fáciles de atacar, e incluso los
registros digitales antiguos como tablas excel, etc. Y remontando un poco a lo
anterior, nace la pregunta, ¿Que me impide a mi cambiar todos los bloques
siguientes al bloque que yo modifique? y otra pregunta es. ¿Que pasaría si
por error alguien modifica el registro de un bloque anterior, se podría
arreglar?, y estas dos preguntas serán respondidas en este ítem.

Las redes distribuidas P2P es un sistema donde hay montones de


computadoras idealmente interconectadas, al final no están interconectadas
pero accediendo a una puedes acceder a todas, algunas estaran menos
interconectadas, pero en si se puede conectar con todas las computadoras de
la red solo conectándose a una.
¿Y como esto se puede aplicar al Blockchain?, el blockchain esta copiado en
cada una de las computadoras, imagina que un sistema Blockchain del
gobierno fuera copiado a miles de computadores, que pueden ser
computadores de personas, notebooks, puede ser tu computadora, mi
computadora, obviamente no hay nombres de usuarios, están conectados con
una serial criptográfica, entonces en este registros donde todas las
computadoras están conectadas, cualquiera puede cambiar la información en
su computadora, y vamos a ver como funciona

cada vez que un bloque se agrega, este computador comunica al blockchain


del cambio, y lo propaga y agrega ese bloque en todas las computadores del
sistema
en este caso se compra una propiedad y se copia en todos los computadores
en la red, ahora imaginemos que pasa un tiempo, algunos años, se agregan
muchas mas transacciones al blockchain.

Y ahora viene una persona e intenta hackearlo. entonces logra cambiar la


información de uno de los bloques verdes, por lo que el resto de bloques ya
no tienen validez criptográfica, es decir fallan en la validación del
blockchain, y se produce un error, y supongamos que cambia toda la
información de los siguientes bloques del blockchain, lo que daría un crimen
perfecto. Pero la solución a eso es que la red P2P esta constantemente
comprobando la información de la misma y el blockchain ve en todos los
computadores de la red si la información calza con la que esta almacenada,
entonces estos computadores verán que hay un problema, entonces verán que
la información del blockchain no calza en la red, lo que indicara que alguien
Hackeo la información del blockchain y los computadores en la red,
copiaran de nuevo la información en este computador, solucionando el
problema, por lo que el Hacker no puede atacar un solo computador, si no
tiene que atacar a todos los computadores de la red Al mismo tiempo, es
decir que son millones de computadores en una red, y como sabemos eso es
prácticamente imposible
7. Como funciona la minería

Porque hay tantos computadores compitiendo por la minería, que están


haciendo en concreto todos juntos, para responder esto, supongamos tenemos
un bloque lo tomamos y lo leemos

imaginemos que estos datos falsos son criptomonedas adquiridas en algún


lugar donde vendan criptomonedas, algo a notar es como el bloque no tiene
una transacción, si no es mas bien un historial de transacciones, luego
veremos mas a fondo esto, pero una buena idea para tener en mente es que el
bloque no contiene una transacción, es mas bien un historial de transacciones,
entonces también tenemos la referencia del hash del bloque anterior, como
ya vimos es necesario tenerlo porque es la manera de encadenar estos bloques
a un blockchain, y tenemos el hash del bloque actual, que se obtiene
poniendo toda la información del bloque, y el algoritmo nos retornara un
hash para esa información, y instantáneamente nos nace una pregunta, ¿Si es
tan simple agregar un bloque, y enlazarlo al anterior. Cual es la gracia de la
minería, cual es la competición en la que todos están, porque si es tan fácil
todos quieren minar un bloque?. En realidad no es tan fácil del todo.

Hay otro valor en el bloque que lleva tiempo en ser revelado, este valor en
ingles se llama Nonce y el minado esta basado en este valor. Todos están
cambiando este valor constantemente, para entender esto, vamos a ver que
valores entran dentro del hash.

Tenemos el Numero del bloque, este nuevo valor llamado Nonce, tenemos
los Datos y el Hash anterior. todos estos valores se ponen en el algoritmo de
hasheado y devuelve el valor del hash actual, y lo que nos da este nuevo
valor, es mas control, ahora podemos cambiar el valor del hash actual
manipulando el valor Nonce, y esto nos ayuda a proteger el principio del
algoritmo blockchain que es el registro inmutable, entonces el valor Nonce
cualquiera es libre de cambiarlo, es solo un numero y esto nos da la libertad
de manipular el Hash a un Hash Variable. Entonces no podemos controlar ni
predecir que va a devolver el algoritmo de Hashing pero si podemos
manipular el hash en si.

Entonces si nosotros cambiamos el numero, ya sea de 1 a 2 el Hash cambiara


dramáticamente, total y completamente.

Para seguir, tenemos que comprender algo, un hash es un numero.


C0535E4BE2B79FFD93291305436BF889314E4A3FAEC05ECFFCBB7DF31AD9E51A

Este es un hash SHA256 podemos ver que hay números y letras pero estan
limitadas solo de la A a la F esto es lo que se conoce como Hexadecimal,
que es como un Numero Decimal pero incluye 6 digitos mas que son
caracteres de la A a la F y podemos convertir este Numero Hexadecimal a
un numero Decimal y se vera asi
86991366044392467661783165166973309023807181648024718778313526389892860994842

esta es una representación decimal de un numero Hexadecimal y como


podemos ver es un numero mucho mas grande, y esto es porque en el sistema
decimal hay 10 dígitos pero en un sistema Hexadecimal tenemos 16 dígitos
entonces cada dígito puede codificar un valor numérico mas grande, entonces
el numero visualmente es mas corto, pero el valor numérico es exactamente
el mismo, solo que representado en un sistema diferente, para probarlo vamos
a ver un ejemplo mas ilustrativo

HEX:

000000000000000000000000000BF889314E4A3FAEC05ECFFCBB7DF31AD9E51A

DEC:
000000000000000000000000000266958728317858456489206265390295151766267162

De esta manera se puede ilustrar mucho mejor el problema.

ahora veamos esta ilustración


Imaginemos todos los hashes posibles están dentro de esta agrupación, donde
tenemos el mas pequeño que es:

0000000000000000000000000000000000000000000000000000000000000000

y todo el camino son todas las convinaciones hasta llegar a la convinacion


mas grande que es:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

y todo el espacio en blanco es como un mapa de todos los valores posibles


entre el mas pequeño al mas grande entonces nuestros valores de ejemplo
quedarían así
Entonces tenemos dos valores, ubicados de ejemplo y tenemos un hash de
objetivo, entonces al llegar a ese objetivo todos los hashes de arriba no
importan, el único hash que importa es el hash de objetivo

Entonces la linea representa el hash de objetivo y nada mas importa, lo que


debemos sabe es que es algo Arbitrario no hay razones económicas, ni
comerciales, ni matemáticas detrás, es solo una manera de poner metas, crear
desafíos para resolver, y esta es la única razón por la que se empieza,
entonces si encontramos el hash de arriba, no nos sirve, pero si encontramos
el de abajo nos sirve para contribuir a completar o alcanzar el objetivo, esta
es la idea mas general de la minería.
Entonces como sabemos que el numero que nos sirve empieza por ceros, el
objetivo también empezara por ceros

Y viajando al ejemplo anterior, tenemos ese numero llamado Nonce y el hash


de salida es resultado de el Numero de bloque, El valor Nonce los datos y el
Hash Anterior

Entonces estos valores no podemos tocarlos, no podemos cambiar el Numero


de Bloque, ni los Datos, ni el Hash Anterior, para entender esto tenemos
que olvidarnos un poco de la cadena porque tratamos de añadir un bloque
nuevo, entonces para llegar al objetivo tenemos que ir variando el valor
nonce como podemos ver en esta ilustración

y esto es lo que hacen los mineros, los mineros cambian el valor Nounce
constantemente tratando de generar un hash por abajo del objetivo, y cuando
se genera un valor por abajo del objetivo, por fuerza bruta, el gana, y puede
poner un bloque en el blockchain y tiene el premio, en criptomonedas, pero
en ese punto es cuando un nuevo bloque es aceptado en el blockchain
El resto del tiempo lo que hacen los mineros es iterar ese valor, esperando
adivinar el hash correcto y cuando lo adivina comienza el juego de nuevo
para el siguiente bloque.

Hay un par de cosas importantes a notar aqui:

Lo importante sobre los hashes, es el Efecto Avalancha recordemos cuando


vimos el Efecto Avalancha. Cambiando ligeramente el valor el hash
cambiaba dramática y totalmente, y es importante para la minería, porque
evita que la gente haga trampa dentro del sistema, si apreciamos en la
imagen, el valor Nounce cambia total y completamente el valor del hash sin
seguir ni una lógica, no es escalar, no sigue reglas, es totalmente aleatoria,
por lo que es completamente impredecible, y esa es la característica mas
importante, entonces a esto se le denomina el Puzzle Criptografico porque
nadie puede predecir a ciencia cierta los valores requeridos para llegar al
Hash Correcto.

Y esta es la razón de porque se usa un valor en hash, porque no se puede


crackear, y llegar al valor correcto, si se hace un algoritmo que si se pueda
reversar, el concepto entero se cae, porque los usuarios podrían ganar
recompensas ilimitadas.
8. Consenso de Pericles

Esta es una historia, que no solo es necesario entender para blockchain, si no


para cualquier sistema descentralizado.

Hace mucho mucho tiempo había un castillo que el imperio bizantino quería
atacar, y apoderarse de el, habían 4 generales rodeando el castillo y querían
atacarlo, y el problema es que solo podían ganar si la mayoría llegaba a un
consenso la decisión de atacar o no se daba solo si la mayoría de estos
generales llegaba a un acuerdo, sobre que se debía hacer, si tres de los cuatro
decidía atacar, se atacaba porque tres ya es una mayoría, de otro modo no se
atacaba al castillo, entonces si había caos y no se llegaba a un consenso
podían ser destruidos por el enemigo.

Entre estos generales, había uno que era el líder de este ejercito, y al mismo
tiempo había un traidor y ellos no saben cual de estos generales, podría ser el
traidor, podría haber un traidor, pero podría no haber un traidor, pero ellos no
saben quien es el traidor, y este traidor pone obstáculos en el camino, para
evitar llegar al consenso. La pregunta es, ¿Como se puede hacer un algoritmo
para descubrir quien es el traidor?.
Bueno vamos a ver, ellos pueden comunicarse, pueden escribir un mensaje y
pasárselo entre ellos, supongamos que el general rojo es el traidor y el de
general verde es el líder
Ahora ¿que pasaría si el líder da una orden?. En este momento ellos no saben
quien es el traidor, podría ser cualquiera, incluso el general podría ser el
traidor, suena como un problema trivial, pero es un problema muy complejo,
asique necesitas poner mucha atención a esta historia.

Entonces el líder da su orden, la cual es atacar, entonces obviamente el


traidor le dirá a los otros que el general dio orden de retirarnos, las flechas
verdes significan atacar y las rojas retirarse.
Si contamos las flechas, el General da la orden, el de abajo acepta la orden de
atacar porque tiene mas flechas verdes que rojas, el siguiente igual, y el
traidor no acepta atacar, entonces la mayoría esta en un consenso, hacia
atacar, tenemos tres de cuatro que aceptaron el acuerdo.

Este es el caso en que uno de los comandantes es el traidor, ahora vamos a


ver que pasa si el general principal es el traidor

Si le dice a todos que se retiren, gana, si le dice a todos que ataquen gana, la
unica manera que tendria de traicionar es decirle a uno que se retire y a dos
que atacaran
Veamos como funcionaria el algoritmo
Entonces si vamos contando, el general no va atacar, pero el de abajo tiene
mas flechas positivas por lo que atacara, el siguiente igual atacara, y el
siguiente igual y ganaran.

Entonces como podemos ver el algoritmo tiene tolerancia total a fallos, la


pregunta es, ¿Hasta que punto va la tolerancia de este algoritmo? que pasa si
tenemos dos traidores, puedes intentarlo pero no hay una solución, no hay
una manera de solucionar el problema, si la mitad de los generales es un
traidor, entonces según el paper que propone este problema si hay mas del
33% de traidores con n numero de generales, no se puede llegar a un
consenso, si tenemos a cien generales decidiendo, y cuarenta de ellos son
traidores, no van a ganar, si 30 son traidores, este algoritmo funciona.

Ahora volvamos al blockchain o otros algoritmos descentralizados, lo que


pasa en un sistema descentralizado, va a haber gente tratando de atacar al
sistema, y tenemos que aplicar un protocolo de consenso, en forma
algorítmica, este protocolo nos ayudara a proteger el sistema de los traidores,
o de personas tratando de atacarlo, y debemos hacerlo lo mas tolerante
posible.

9. Protocolo de consenso

En nuestro caso hacer un consenso dentro del blockchain, representa 2


desafíos.

Proteger la red de los atacantes:

Ya hablamos que para los atacantes cambiar un bloque es imposible, porque


debería cambiar todos los bloques de toda la red al mismo tiempo, ese no e el
problema. El problema es ¿Que pasaría si el atacante, logra poner un bloque
al final de la cadena?, intentar poner de forma maliciosa un bloque al final
del blockchain

Las cadenas competitivas

En un BlockChain grande que esta distribuido a través del mundo podría


haber lag dentro de los nodos, especialmente las que están demasiado lejos
geográficamente, entonces existe la posibilidad de que dos computadoras
minen exactamente el mismo bloque al mismo tiempo, no es nada malicioso,
solamente para porque una vez la computadora 1 mina un bloque tarda
tiempo en actualizar la cadena, las personas no cometieron ni un error, pero
para el blockchain es una falla, porque significa que no hay un consenso

Y estos son los desafíos, para que una red tenga un consenso, para poder
seguir creciendo correctamente, si no hay consenso, las cadenas se dividirían,
y cada uno minaría una cadena distinta con la misma información, y se
generaría un caos

Para entrar al protocolo de consenso, hay que entender que hay distintos tipos
de protocolos de consenso, pero los mas famosos y usados son el protocolo
Proof of Work (PoW) y el Proof Of Stake (PoS), y el que quiero abordar es
el protocolo PoW, porque este es el que se explica en el paper original de
Bitcoin y la mayoría de las criptomonedas mas importante lo usan

Vamos de nuevo al minado.


Remontando un poco nuestro valor Nounce tiene que llegar a un valor debajo
del objetivo para que se le permita crear un bloque, este es el desafió
criptográfico, y necesita cientos de millones de iteraciones para llegar a ese
objetivo, esto significa que tomara mucho tiempo, se invertirá mucho
hardware, y mucha electricidad, entonces hay mucho tiempo de lado de la
minería, y el hash, que es la solución al puzzle criptográfico, es la prueba de
que se realizo el trabajo o Proof Of Work, es la prueba de que le llevo un
trabajo resolver el puzzle criptográfico, de hay viene el termino.

ahora imaginemos de nuevo la red P2P


Cuando un minero pone un bloque, este es recompensado con una
transacción en CriptoMoneda, y esta recompensa es fija, y el minero tendrá el
impuesto de la transacción del bloque, este es el incentivo monetario detrás
de la minería, y este incentivo debe ser recompensado, porque ellos ponen a
disposición mucho trabajo, entonces si se agrega de forma maliciosa el
bloque, no debería ser recomenzado, porque solo se agrego un bloque
saltándose todo el trabajo, entonces a ese usuario malicioso, se le penaliza no
se le da una paga, pero la pregunta es. ¿Como el sistema sabe que el bloque
que agregamos es legitimo?.

es simple. Cada bloque que se agrega y se propaga por la red, pasa una serie
de checkeos, y este checkeo es muy riguroso. Entre algunos de los checkeos
están los siguientes, no los nombrare todos porque son bastantes

- Chequea que el hash anterior calce con el bloque anterior


- Que la transacción no esté vaciá
- Chequea la marca de tiempo (Time Stamp)

La verdad Chequea muchas cosas, entonces esto evita que un bloque


malicioso no se agregue al blockchain y este incentivo financiero se da por
ajustarse a las reglas, así es como resolvemos el desafió numero 1.
Otra cosa de remarcar es que el Puzzle Criptográfico debe ser Difícil de
Resolver y Fácil de Verificar.

Ahora vamos a hablar del desafió numero 2. ¿Que pasa cuando 2 mineros
minan el mismo bloque al mismo tiempo?, bueno este bloque en esta bien, es
legitimo, se va a propagar por la red
Entonces tenemos dos bloques iguales y se propagan por la red de esta
manera, primero a los vecinos mas cercanos, porque no es tan distante la red,
y el otro bloque que es exactamente el mismo, se hace exactamente lo
mismo, obviamente esto va a suceder a mucha mayor escala, pero a este
punto ya se puede explicar, esto es muy parecido al la historia que conté
anteriormente, algunos dicen que ataquen, otros que se retiren, en esa historia
el protocolo de consenso se basaba en la mayoría, bueno aquí es un poco
diferente

En el BlockChain lo que hacen los nodos es de algún modo decir, bueno


tengo un bloque rojo tu uno verde, tenemos dos versiones de la cadena ahora
mismo, entonces lo que harán sera esperar, se esperaran a que un nuevo
bloque sea añadido y una vez que ese bloque se añade, se ve cual de las dos
cadenas es mas larga, en blockchain en esencia la cadena mas larga es el rey,
y eventualmente es la que va a ganar y reemplazara a la otra cadena, la clave
aquí es que la parte que tenga mayor cantidad de poder de hasheo, es la que
eventualmente va a tener la cadena mas larga, en este ejemplo se ve mas claro
que el bloque verde, tiene mas poder de hasheo que el bloque rojo, porque la
mayoría de computadoras estadisticamente y suponiendo que tienen el mismo
poder de hasheo, pondrán antes el bloque siguiente a la cadena, entonces los
rojos ponen el siguiente bloque.
Y el conflicto aquí se resuelve. Lo que pasa es que se aparta el bloque verde y
se reemplaza por los dos bloques rojos.

entonces lo importante de remarcar es que si se tiene el 51% del poder de


hasheo o >50% esa parte ganara entonces como hablamos en el problema del
consenso de pericles, que si mas del 33% son traidores no se podía resolver,
en este problema hay mas tolerancia porque si hay mas de un 50% el
problema se puede resolver, en la historia se necesitaba el 70% aquí las
probabilidades son del 50%.

Bueno y los bloques que se apartan, se conocen con el nombre de Bloques


Huérfanos entonces la recompensa del bloque apartado no sera valida, solo
la recompensa del bloque rojo sera la que se entregue y se haga valida.

10. Fin

Bueno después de este viaje concluimos pasamos por todos los conceptos que
engloba el BlockChain como lo son

El Registro inmutable
Redes P2P
Criptografía
Minado
Y Protocolo de consenso

Y espero que ahora tengas una buena base tanto para hablar del tema
Blockchain como para implementar tu propio algoritmo blockchain, gracias
por leer, espero puedan compartir este documento que me llevo 2 semanas
transcribir, buscar información, hacer diagramas para darle un uso libre para
la comunidad hispana de programadores.

Vous aimerez peut-être aussi