Académique Documents
Professionnel Documents
Culture Documents
funciona
Blockchain?
Explicación detallada
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
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.
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.
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.
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
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?.
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.
6.P2P
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.
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
HEX:
000000000000000000000000000BF889314E4A3FAEC05ECFFCBB7DF31AD9E51A
DEC:
000000000000000000000000000266958728317858456489206265390295151766267162
0000000000000000000000000000000000000000000000000000000000000000
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
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.
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.
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.
9. Protocolo de 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
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
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
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.