Blockchain, vamos a definirla!

En este foro se tratan los temas de interés general.
Avatar de Usuario
jochemin
Mensajes: 46
Registrado: Dom Sep 09, 2018 8:55 pm
GnuPG: 8009 FEB1 1A79 C293 5D17 72D5 0E1E DC2D 57F8 D07F
Twitter: jochemin
Agradecido : 14 veces
Agradecimiento recibido: 38 veces

Blockchain, vamos a definirla!

Mensaje por jochemin » Dom Sep 09, 2018 9:04 pm

Si preguntamos "¿qué es blockchain?" nos encontraremos disparidad de definiciones, una BBDD, un protocolo, una estructura de datos,....

Vamos a intentar llegar a un acuerdo sobre que es blockchain, que requisitos debe tener para llamarse así y que ventajas inherentes tiene.
Si te ha servido alguna de mis guías o simplemente me quieres invitar a un café --> https://tippin.me/@jochemin

Avatar de Usuario
Rutrus
Mensajes: 11
Registrado: Jue Sep 13, 2018 10:54 am
GnuPG:
Twitter: rutrus
Agradecido : 5 veces
Agradecimiento recibido: 9 veces

Re: Blockchain, vamos a definirla!

Mensaje por Rutrus » Vie Sep 14, 2018 5:08 pm

Tema complejo, pero buen tema para comenzar los primeros pasos del foro.

Personalmente no me gusta llamarlo base de datos porque, aunque existen las bases de datos estáticas, lo normal es pensar en sus propiedades CRUD que implican modificación.

Diría que una propiedad de la blockchain es la inmutabilidad. Por un lado estrictamente hablando, llamamos bloques a cada árbol de Merkle con las transacciones y cadena a cada referencia al bloque anterior. Por otro lado, la inmutabilidad no se podría conseguir únicamente con la estructura, sino con el protocolo en conjunto. Es decir, algo que dificulta la modificación es la creación de bloques superpuestos con la potencia de trabajo unido a la propagación de un bloque correcto.

Así que si nos quedamos en la mera "base de datos estática" no aportaría ninguna novedad. Si nos basamos en su propiedad de inmutabilidad no sería posible sin los protocolos que le dan esa propiedad. Y si nos basamos únicamente en esa propiedad, una cadena lineal de árboles de Merkle no es la única manera de conseguirla. Entraríamos por tanto a discutir si cada DLT (Distributed Ledger Technology) es apta para ser llamada así.

En lo personal, yo no llamo blockchain a las DLT, ya que en mi opinión blockchain sería un subconjuto de ellas. Pero estaremos intentando luchar contra los elementos sin éxito alguno (y personalmente me gusta ser más práctico), ya que la keyword "blockchain" ha ganado tracción en los medios, y todas las criptos se asocian a blockchain.

Avatar de Usuario
jochemin
Mensajes: 46
Registrado: Dom Sep 09, 2018 8:55 pm
GnuPG: 8009 FEB1 1A79 C293 5D17 72D5 0E1E DC2D 57F8 D07F
Twitter: jochemin
Agradecido : 14 veces
Agradecimiento recibido: 38 veces

Re: Blockchain, vamos a definirla!

Mensaje por jochemin » Sab Sep 15, 2018 8:59 am

Bien, partiendo de que una blockchain como conjunto de datos no es inmutable por sí misma, yo creo que una característica inherente a blockchain como conjunto de datos es la relación criptográfica entre los bloques, por lo que si se podría decir que todas las blockchain son a prueba de manipulaciones (TamperProof).

Comentas que consideras a la inmutabilidad como una propiedad de blockchain. La inmutabilidad viene dada por la dificultad de rehacer la cadena, y esta dificultad viene marcada por la capacidad de añadir bloques válidos a la cadena. En Bitcoin esta dificultad la da el POW, si tú quieres reescribir parte de la cadena válida debes rehacer el trabajo que llevó construirla. En POS aumenta la probabilidad de minar un bloque dependiendo del stake,...

En blockchain privadas por ejemplo, ¿quien firma los bloques? ¿Podríamos meter el algoritmo de consenso y la inmutabilidad (¿no sería mejor decir "dificilmente mutable"?) como características si o si de una cadena de bloques?
Si te ha servido alguna de mis guías o simplemente me quieres invitar a un café --> https://tippin.me/@jochemin

Avatar de Usuario
Rutrus
Mensajes: 11
Registrado: Jue Sep 13, 2018 10:54 am
GnuPG:
Twitter: rutrus
Agradecido : 5 veces
Agradecimiento recibido: 9 veces

Re: Blockchain, vamos a definirla!

Mensaje por Rutrus » Sab Sep 15, 2018 12:30 pm

jochemin escribió:
Sab Sep 15, 2018 8:59 am
yo creo que una característica inherente a blockchain como conjunto de datos es la relación criptográfica entre los bloques, por lo que si se podría decir que todas las blockchain son a prueba de manipulaciones (TamperProof).

Comentas que consideras a la inmutabilidad como una propiedad de blockchain. La inmutabilidad viene dada por la dificultad de rehacer la cadena, y esta dificultad viene marcada por la capacidad de añadir bloques válidos a la cadena. En Bitcoin esta dificultad la da el POW, si tú quieres reescribir parte de la cadena válida debes rehacer el trabajo que llevó construirla. En POS aumenta la probabilidad de minar un bloque dependiendo del stake,...
Podemos acordar entonces que lo que hace a la blockchain única es que:
Blockchain es un conjunto de datos con relación criptográfica entre ellos a prueba de manipulaciones.
jochemin escribió:
Sab Sep 15, 2018 8:59 am
En blockchain privadas por ejemplo, ¿quien firma los bloques? ¿Podríamos meter el algoritmo de consenso y la inmutabilidad (¿no sería mejor decir "dificilmente mutable"?) como características si o si de una cadena de bloques?
Lo ideal es que fuera inmutable o no manipulable (tamperproof). Difícilmente mutable es más preciso a la realidad, pero es una consecuencia de que no vivimos en el mundo ideal que nos gustaría. Algo que me gustaría es que fuera inmutable, es decir, que en el estado de la tecnología actual no pudiera aparecer una cadena con más PoW que reemplace transacciones ya difundidas a los nodos. Esto en cambio no sucede en PoS, por lo que las cadenas (x)PoS son más inmutables que las PoW. Esta característica también se podría añadir a PoW, pero creo que en el pasado fue útil para deshacer algunos bugs aparecidos en mainnet. Si bien, hacer inmutables los bloques consensuados evitaría el self-mining, y por tanto un ataque dañino del 51%.

En mi opinión, PoW sólo dificulta la modificación, pero la difusión de los bloques minados correctamente, difundirlos y estar consensuados,es lo que puede hacer la blockchain verdaderamente inmutable.

Avatar de Usuario
jochemin
Mensajes: 46
Registrado: Dom Sep 09, 2018 8:55 pm
GnuPG: 8009 FEB1 1A79 C293 5D17 72D5 0E1E DC2D 57F8 D07F
Twitter: jochemin
Agradecido : 14 veces
Agradecimiento recibido: 38 veces

Re: Blockchain, vamos a definirla!

Mensaje por jochemin » Sab Sep 15, 2018 2:43 pm

Rutrus escribió:
Sab Sep 15, 2018 12:30 pm
Podemos acordar entonces que lo que hace a la blockchain única es que:
Blockchain es un conjunto de datos con relación criptográfica entre ellos a prueba de manipulaciones.
Si, si la relación criptográfica permitiera manipular un bloque sin afectar a los siguientes yo no lo llamaría blockchain.
Rutrus escribió:
Sab Sep 15, 2018 12:30 pm
Lo ideal es que fuera inmutable o no manipulable (tamperproof). Difícilmente mutable es más preciso a la realidad, pero es una consecuencia de que no vivimos en el mundo ideal que nos gustaría. Algo que me gustaría es que fuera inmutable, es decir, que en el estado de la tecnología actual no pudiera aparecer una cadena con más PoW que reemplace transacciones ya difundidas a los nodos. Esto en cambio no sucede en PoS, por lo que las cadenas (x)PoS son más inmutables que las PoW. Esta característica también se podría añadir a PoW, pero creo que en el pasado fue útil para deshacer algunos bugs aparecidos en mainnet. Si bien, hacer inmutables los bloques consensuados evitaría el self-mining, y por tanto un ataque dañino del 51%.

En mi opinión, PoW sólo dificulta la modificación, pero la difusión de los bloques minados correctamente, difundirlos y estar consensuados,es lo que puede hacer la blockchain verdaderamente inmutable.
La finalidad en los bloques es algo que se esa mirando, la verdad es que no tengo opinión formada al respecto pero en principio me parece bien que se consiga finalidad en los bloques.

POW lo que tiene es un coste de reescritura de bloques, en POS todos los nodos pueden proponer un bloque y el algoritmo selecciona el que finalmente se añadirá a la cadena. Lo malo de esto es que no hay coste en el ataque. https://download.wpsoftware.net/bitcoin/pos.pdf
Si te ha servido alguna de mis guías o simplemente me quieres invitar a un café --> https://tippin.me/@jochemin

Avatar de Usuario
Rutrus
Mensajes: 11
Registrado: Jue Sep 13, 2018 10:54 am
GnuPG:
Twitter: rutrus
Agradecido : 5 veces
Agradecimiento recibido: 9 veces

Re: Blockchain, vamos a definirla!

Mensaje por Rutrus » Sab Sep 15, 2018 5:27 pm

jochemin escribió:
Sab Sep 15, 2018 2:43 pm
POW lo que tiene es un coste de reescritura de bloques, en POS todos los nodos pueden proponer un bloque y el algoritmo selecciona el que finalmente se añadirá a la cadena. Lo malo de esto es que no hay coste en el ataque. https://download.wpsoftware.net/bitcoin/pos.pdf
PoW tiene un coste de reescritura de bloques. Pero lo que hay que buscar es la imposibilidad de reescritura una vez aceptado un bloque válido. No hay que olvidar por otro lado que PoS tiene muchas variantes, y como mínimo ha demostrado ser viable. Está claro que no basa su seguridad en la prueba de trabajo, sino en el correcto consenso y difusión de los bloques "forjados". El PoW puede ser superado maliciosamente, pero no existe la habilidad de entrar en cada nodo para modificar el consenso. Es decir, se trataría de que el verdadero vector de inmutabilidad esté en la replicación y descentralización, y no en el poder de cómputo durante la creación de bloques.

Lo que me lleva a pensar:

¿Por qué la blockchain PoW de Bitcoin es mutable?
Es decir, ¿porqué una vez difundidos los bloques, los nodos podrían modificar sus datos previamente consensuados si encuentran de repente una cadena más larga?
  1. Porque se ha visto beneficioso en el caso de posibles bugs en mainnet.
  2. Porque le da a PoW una razón de ser que lo hace imprescindible.
  3. ...alguna otra?
Uno de los bugs en mainnet podrían haberse evitado checkeando overflows como se hace en Solidity.

Hubo una vez que se bifurcó la cadena espontáneamente y cada grupo de mineros estaba añadiendo bloques a una diferente. Esto se solucionaría comprobando el consenso de los bloques difundidos a la red: Preguntando cuál es la cadena que han recibido mayoritariamente. O dicho de otro modo, cuando un nodo reciba una cadena diferente a la que tiene guardada, que pregunte a la red si es la cadena consensuada antes de borrar los datos. En ese caso todos los nodos son importantes y no solo los mineros.

Igual me he perdido algo conceptualmente, pero por eso estamos aquí para aprender.

Avatar de Usuario
Javier Domínguez G.
Mensajes: 41
Registrado: Sab Sep 08, 2018 12:25 pm
GnuPG: 94AD 19F4 9005 EEB2 3384 C20F 5BDC C668 D664 8E2B
Twitter: JavDomGom
Agradecido : 63 veces
Agradecimiento recibido: 29 veces

Re: Blockchain, vamos a definirla!

Mensaje por Javier Domínguez G. » Dom Sep 16, 2018 4:21 pm

Blockchain no es una base de datos, es un protocolo para sincronizar bases de datos. El hecho de que al sincronizar estemos almacenando bytes en nuestras computadoras, no lo convierte automáticamente en base de datos, no tiene como objetivo principal almacenar o distribuir, si no sincronizar, garantizar seguridad y poner de acuerdo a partes que no confían entre sí. Todo lo demás está ahí y si, es muy técnico y muy matemático, pero no forma parte de la definición "corta".

Si definimos Blockchain como todas su cualidades (protocolo, conexión, almacenamiento, distribución, seguridad, criptografía, Merkle, SHA256, bla, bla, bla) corremos el riesgo de que otras personas, sobre todo los que se están iniciando, no lo entiendan bien y puede que se hagan un lío.

Blockchain = Protocolo para sincronizar bases de datos.

Un saludo.
"With Free Software You Have Freedom!"
[Free Software Foundation] :: [Electronic Frontier Foundation]

Avatar de Usuario
DineroNuevo
Mensajes: 3
Registrado: Sab Sep 15, 2018 1:37 pm
GnuPG:
Twitter: dineronuevo
Agradecido : 3 veces
Agradecimiento recibido: 3 veces

Re: Blockchain, vamos a definirla!

Mensaje por DineroNuevo » Dom Sep 16, 2018 5:06 pm

Blockchain es una estructura de datos almacenados por bloques encadenados que hacen imposible cambiar cualquier dato sino es cambiando todos los bloques posteriores, BTC logra esto a partir de hashes una analogía más sencilla sería la siguiente:

Suponemos que escribimos en un papel una serie de frases y a cada letra le ponemos un número, sumamos todos los números de cada frase y luego sumamos los resultados de cada frase y nos saldrá A, aquí tenemos un bloque; ahora cogemos el siguiente papel y en el encabezado ponemos A (resultado del papel anterior) y volvemos a hacer lo mismo, asignamos un número a cada letra y sumamos el resultado de las frases, obtenemos B, se suma A+ B y tenemos C, este será el segundo bloque, el tercer bloque irá encabezado con C, sumamos el resultado de las frases y a tenemos D, sumamos C+D y obtenemos E.... Y así sucesivamente.

Con eso conseguimos que si se cambia cualquier letra del bloque 2, el resultado de la suma de las frases ya no será B sino otra cifra y sumado al cabecero A ya no tendremos C y si no tenemos C no podremos E cuando lo sumemos con D.

Con esta estructura de datos nos es imposible cambiar cualquier cosa de bloques anteriores sin cambiar los bloques posteriores a no ser que se reescriba todo. Sí está cadena de bloques está centralizada y solo lo controla un organismo, sí que puede cambiar un dato y reescribir todos los bloques siguientes, aún siendo más difícil que si fuera una base de datos con una estructura clásica, pero podría hacerlo, sin embargo, si está base de datos con una estructura blockchain está descentralizada, cualquiera podría vez fácilmente si la base de datos está manipulada simplemente viendo el cabecero del último bloque y comparándolo con la base de datos con estructura blockchain que el almacena, podiendola dar por buena o por mala sin ni siquiera tener que revisar todo su contenido.

Avatar de Usuario
jochemin
Mensajes: 46
Registrado: Dom Sep 09, 2018 8:55 pm
GnuPG: 8009 FEB1 1A79 C293 5D17 72D5 0E1E DC2D 57F8 D07F
Twitter: jochemin
Agradecido : 14 veces
Agradecimiento recibido: 38 veces

Re: Blockchain, vamos a definirla!

Mensaje por jochemin » Lun Sep 17, 2018 7:45 am

Rutrus escribió:
Sab Sep 15, 2018 5:27 pm
jochemin escribió:
Sab Sep 15, 2018 2:43 pm
POW lo que tiene es un coste de reescritura de bloques, en POS todos los nodos pueden proponer un bloque y el algoritmo selecciona el que finalmente se añadirá a la cadena. Lo malo de esto es que no hay coste en el ataque. https://download.wpsoftware.net/bitcoin/pos.pdf
PoW tiene un coste de reescritura de bloques. Pero lo que hay que buscar es la imposibilidad de reescritura una vez aceptado un bloque válido. No hay que olvidar por otro lado que PoS tiene muchas variantes, y como mínimo ha demostrado ser viable. Está claro que no basa su seguridad en la prueba de trabajo, sino en el correcto consenso y difusión de los bloques "forjados". El PoW puede ser superado maliciosamente, pero no existe la habilidad de entrar en cada nodo para modificar el consenso. Es decir, se trataría de que el verdadero vector de inmutabilidad esté en la replicación y descentralización, y no en el poder de cómputo durante la creación de bloques.

Lo que me lleva a pensar:

¿Por qué la blockchain PoW de Bitcoin es mutable?
Es decir, ¿porqué una vez difundidos los bloques, los nodos podrían modificar sus datos previamente consensuados si encuentran de repente una cadena más larga?
  1. Porque se ha visto beneficioso en el caso de posibles bugs en mainnet.
  2. Porque le da a PoW una razón de ser que lo hace imprescindible.
  3. ...alguna otra?
Uno de los bugs en mainnet podrían haberse evitado checkeando overflows como se hace en Solidity.

Hubo una vez que se bifurcó la cadena espontáneamente y cada grupo de mineros estaba añadiendo bloques a una diferente. Esto se solucionaría comprobando el consenso de los bloques difundidos a la red: Preguntando cuál es la cadena que han recibido mayoritariamente. O dicho de otro modo, cuando un nodo reciba una cadena diferente a la que tiene guardada, que pregunte a la red si es la cadena consensuada antes de borrar los datos. En ese caso todos los nodos son importantes y no solo los mineros.

Igual me he perdido algo conceptualmente, pero por eso estamos aquí para aprender.
Te entiendo pero la inmutabilidad tiene que tener un coste a mi parecer, sólo atando esa posibilidad de mutación a un coste económico se puede conseguir el mayor grado de inmutabilidad.

En cuanto a porqué POW es mutable, creo que la finalidad no se puede conseguir de manera descentralizada, algo puede ser mas o menos inmutable, pero incluso en las propuestas de finalidad de CASPER (ETH) consiste en un grupo de validadores que firman el estado de la cadena hasta un punto concreto comprometiéndose a una pérdida económica si este cambia, el propio concepto admite que se puede cambiar, pero tendrá una penalización.

Si un nodo recibe una cadena y tiene que preguntar a la red si esa cadena es la correcta estás confiando en terceros. No es cuestión de lo que diga la mayoría a la hora de validar, lo importante es lo que dice tu nodo.
Si te ha servido alguna de mis guías o simplemente me quieres invitar a un café --> https://tippin.me/@jochemin

Avatar de Usuario
Rutrus
Mensajes: 11
Registrado: Jue Sep 13, 2018 10:54 am
GnuPG:
Twitter: rutrus
Agradecido : 5 veces
Agradecimiento recibido: 9 veces

Re: Blockchain, vamos a definirla!

Mensaje por Rutrus » Mié Sep 19, 2018 2:43 am

Javier Domínguez G. escribió:
Dom Sep 16, 2018 4:21 pm
Blockchain no es una base de datos, es un protocolo para sincronizar bases de datos. El hecho de que al sincronizar estemos almacenando bytes en nuestras computadoras, no lo convierte automáticamente en base de datos, no tiene como objetivo principal almacenar o distribuir, si no sincronizar, garantizar seguridad y poner de acuerdo a partes que no confían entre sí. Todo lo demás está ahí y si, es muy técnico y muy matemático, pero no forma parte de la definición "corta".

Si definimos Blockchain como todas su cualidades (protocolo, conexión, almacenamiento, distribución, seguridad, criptografía, Merkle, SHA256, bla, bla, bla) corremos el riesgo de que otras personas, sobre todo los que se están iniciando, no lo entiendan bien y puede que se hagan un lío.

Blockchain = Protocolo para sincronizar bases de datos.

Un saludo.
Me gusta mucho esta definición. Explica de forma concisa la novedad que aporta. Incluso al no entrar en detalles técnicos, podría incluir a los DAG, algo que la gente hace en la práctica.

Blockchain = Protocolo para sincronizar bases de datos.
jochemin escribió:
Lun Sep 17, 2018 7:45 am
Te entiendo pero la inmutabilidad tiene que tener un coste a mi parecer, sólo atando esa posibilidad de mutación a un coste económico se puede conseguir el mayor grado de inmutabilidad.
No necesariamente tiene por qué ser un coste energético, ni computacional ni siquiera económico. Sobre todo cuando en el momento en el que entran diferentes participantes todos se pueden convertir en "centinelas" que impidan la mutación. Que de alguna forma es lo que soluciona el problema de los generales bizantinos.
jochemin escribió:
Lun Sep 17, 2018 7:45 am
Si un nodo recibe una cadena y tiene que preguntar a la red si esa cadena es la correcta estás confiando en terceros. No es cuestión de lo que diga la mayoría a la hora de validar, lo importante es lo que dice tu nodo.
Sí, y nadie tiene por qué permitir modificar la cadena salvo que se pongan todos de acuerdo y hagan un fork. Es decir, si la red no acepta modificaciones en bloques del pasado, el consenso es permanente, nadie puede llegar con muchos bloques auto-minados (desde bloques atrás) y cambiar las reglas.

Responder