git hash blockchain

¿Por qué Git no se considera una "cadena de bloques"?



hash blockchain (5)

A diferencia de las cadenas de bloques de criptomonedas ; git no tiene un mecanismo de consenso sin confianza p2p.

La estructura de datos interna de Git es un árbol de objetos de datos, en el que cada objeto solo apunta a su predecesor. Cada bloque de datos es hash. Al modificar (error de bit o ataque) se notará un bloque intermedio cuando el hash guardado y el hash real se desvíen.

¿En qué se diferencia este concepto de la cadena de bloques?
Git no aparece como un ejemplo de cadenas de bloques, pero al menos en los resúmenes, ambas descripciones de la estructura de datos se parecen: bloque de datos, enlace inverso de una sola dirección, hashes, ...).

Entonces, ¿dónde está la diferencia, que Git no se llama una cadena de bloques?


La razón por la cual Git y blockchains parecen similares es porque ambos usan árboles merkle como su estructura de datos subyacente. Un árbol de merkle es un árbol donde cada nodo está etiquetado con el valor hash criptográfico de sus contenidos, que incluye las etiquetas de sus hijos.

El gráfico acíclico dirigido de Git es exactamente eso, un árbol de merkle donde cada nodo (etiqueta, commit, árbol u objeto blob) está etiquetado con el hash de su contenido y la etiqueta de su "hijo". Tenga en cuenta que para los commits, el término "hijo" entra en conflicto con la comprensión de Git de los padres: los commits de los padres son los hijos de los commits, solo necesita ver el gráfico como un árbol que sigue creciendo al volver a enraizarlo.

Las cadenas de bloques son muy similares a esto, ya que también siguen creciendo de esa manera, y también están utilizando su propiedad de árbol de merkle para garantizar la integridad de los datos. Pero por lo general, las cadenas de bloques se entienden como mucho más que merkle trees, que es donde se están separando del "rastreador de contenido estúpido" Git . Por ejemplo, blockchains generalmente también significa tener un sistema altamente descentralizado a nivel de bloque (no todos los bloques deben estar en el mismo lugar).

Comprender blockchains es un poco difícil (personalmente, todavía estoy lejos de entender todo al respecto), pero considero entender las partes internas de Git como una buena forma de entender los árboles de merkle que definitivamente ayudan a comprender una parte fundamental sobre blockchains.


Las monedas cibernéticas como Bitcoin, utilizan una cadena criptográfica de bloques de consenso distribuido (árbol de merkle). El uso común ha acortado esto a ''blockchain''

Si bien git usa una cadena de bloques (árbol de merkle), carece de los componentes criptográficos de consenso distribuido que implica el uso común del término ''BlockChain''.


Blockchain no es cualquier cadena de bloques.

Blockchain es cuando hay una manera de determinar la cadena principal cuando se desvían dos o más , y cuando no se necesita una autoridad central para esa determinación.


git no es un ejemplo de tecnología blockchain por varias razones (estas fueron las primeras que se me ocurrieron):

  1. En una implementación de blockchain, cada bloque se verifica de forma independiente varias veces antes de agregarse a la cadena de bloques. De hecho, esta es una de las cosas más importantes sobre la tecnología blockchain y es lo que garantiza su "imposibilidad de respuesta". Por otro lado, muchos proyectos de git no requieren verificación independiente y, cuando lo hacen, solo requieren que una persona firme un cambio antes de que se envíe al repositorio. Por lo tanto, con a lo sumo un punto de validación en el que debe confiar, git rompe uno de los principios básicos de la tecnología blockchain.

  2. Un repositorio git no está necesariamente duplicado en muchos servidores. Puede trabajar desde un repositorio git localmente y si su disco local estuviera dañado, lo perdería todo. La tecnología Blockchain implica la reproducción del libro mayor a través de los servidores.

  3. Puedes reescribir el historial de git . Un git push <remote> <branch> --force donde <branch> se establece en un estado anterior al de <remote> volvería a escribir el historial. En blockchains, el libro mayor es una historia inmutable.