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?
git
hash
blockchain
Paebbels
fuente
fuente
Respuestas:
git
No es un ejemplo de tecnología blockchain por varias razones (estas fueron las primeras que se me ocurrieron):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
git
proyectos 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.Un
git
repositorio no está necesariamente duplicado en muchos servidores. Puede trabajar desde ungit
repositorio localmente y si su disco local estuviera dañado, lo perdería todo. La tecnología Blockchain implica la reproducción del libro mayor en los servidores.Puedes reescribir la
git
historia. Ungit push <remote> <branch> --force
dónde<branch>
se establece en un estado anterior que en<remote>
reescribiría el historial. En blockchains, el libro mayor es una historia inmutable.fuente
push --force
en una sola rama, está perdiendo referencias a confirmaciones que limpia el recolector de basura. Esto es diferente a una bifurcación que no es una reescritura de la historia, sino más bien una ruta de desarrollo alternativa.La razón por la que Git y blockchains parecen similares es porque ambos usan árboles de 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 elementos secundarios.
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 generalmente, las cadenas de bloques se entienden como mucho más que merkle trees, que es donde se están separando del "estúpido rastreador de contenido" 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 los componentes internos de Git como una buena manera de comprender los árboles de merkle que definitivamente ayudan a comprender una parte fundamental sobre blockchains.
fuente
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'
Mientras que 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'.
fuente
Blockchain
es no sólo cualquier cadena de los 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.fuente
A diferencia de las blockchains de criptomonedas ; git no tiene un mecanismo de consenso sin confianza p2p.
fuente
Los objetivos son diferentes para blockchain y git, aunque ambos usan árboles merkle como estructura de datos.
A
blockchain
es típicamente administrado por una red de igual a igual que se adhiere a un protocolo para la comunicación entre nodos y la validación de nuevos bloques. Una vez registrados, los datos en cualquier bloque dado no pueden ser alterados retroactivamente sin alterar todos los bloques posteriores, lo que requiere el consenso de la mayoría de la red.Según el documento técnico de Bitcoin:
Mientras que
Git
es un sistema de control de versiones distribuido para rastrear cambios en el código fuente durante el desarrollo de software, está diseñado para coordinar el trabajo entre los programadores, pero se puede usar para rastrear cambios en cualquier conjunto de archivos. Sus objetivos incluyen velocidad, integridad de datos y soporte para flujos de trabajo no lineales distribuidos.Según Linus Torvalds:
fuente
Como poke dijo :
Git y Blockchains parecen similares porque ambos usan Merkle Trees para almacenar transacciones ordenadas con marca de tiempo. Un árbol de merkle es una estructura de datos de árbol donde cada nodo está etiquetado con el valor hash criptográfico de sus contenidos, que incluye las etiquetas de sus elementos secundarios.
La primera diferencia es la función Hash : Blockchain tiene una función hash muy costosa, por lo que cada bloque debe ser extraído, donde se puede crear un "bloque" Git con un simple mensaje de confirmación.
El propósito de Bitcoin es agregar confianza al orden de las transacciones. La atención se centra en la cadena más larga, ya que es más costoso de calcular y, por lo tanto, es más probable que sea la verdad.
Bitcoin logra esto al exigir que el hash cumpla con ciertos parámetros (comienza con un número específico de 0s), al incrementar un valor ("nonce") en el mensaje hasta que se encuentre un hash satisfactorio. Esto requiere esfuerzo para encontrar, pero solo 1 cálculo para verificar un nonce; y si múltiples nonces producen un hash satisfactorio, entonces uno será más bajo y se tomará como la verdad. Otros esquemas de autenticación hacen que el hash sea confiable al centralizar la emisión del hash a una autoridad, quizás votada por acuerdo de red, o algún otro método.
Los datos de la cadena de bloques se limitan a las transacciones, que deben cumplir con la validación. La transacción debe ser válida para ser incluida en el siguiente bloque. Una transacción de Bitcoin corresponde a algo importante en el mundo real que justifica el uso de un bloque costoso para registrar esta transferencia, como el intercambio de valor monetario. En realidad, no nos importa el libro final, es una metáfora de algo en el mundo real.
Por el contrario, los bloques Git son arbitrarios, ya que una confirmación puede contener cualquier cantidad de datos. El valor radica en los cambios de datos que se organizan en el árbol git porque nos importa el producto final, está validado por la existencia del repositorio git.
El propósito de Git es permitir que los "libros de contabilidad" baratos rastreen múltiples alternativas de productos. El "libro mayor" en Git es lo que nos importa, es nuestro producto final; Los datos de las transacciones solo registran cómo se construyó el producto. Queremos que sea muy barato hacer múltiples versiones de productos finales, lo suficiente para que el creador registre cómo construyeron este producto. No se realiza una validación explícita de los datos, usted mantiene el producto final si se ve bien, y esa existencia hace que sea útil tener la cadena de creación de este producto. Si el producto final es malo o el orden de las confirmaciones no es válido, este "libro mayor" se elimina durante la recolección de basura.
La segunda diferencia es que las transacciones de Blockchain deben provenir de una fuente válida anterior. En Git, no nos importa qué datos utilizas para extender el árbol. En Blockchain, las transacciones deben provenir de una fuente válida anterior. En ese sentido, Git rastrea la extensión de nuestro entorno, mientras que Blockchain rastrea el intercambio de valor dentro de un entorno cerrado.
fuente