La structure de données interne de Git est une arborescence d'objets de données, dans laquelle chaque objet pointe uniquement vers son prédécesseur. Chaque bloc de données est haché. En modifiant (erreur de bit ou attaque) un bloc intermédiaire sera remarqué lorsque le hachage enregistré et le hachage réel s'écartent.
En quoi ce concept est-il différent de la blockchain?
Git n'est pas répertorié comme un exemple de chaînes de blocs, mais au moins dans les résumés, les deux descriptions de structure de données se ressemblent: bloc de données, liaison inverse unidirectionnelle, hachages, ...).
Alors, où est la différence, que Git ne s'appelle pas une chaîne de blocs?
git
hash
blockchain
Paebbels
la source
la source
Réponses:
git
n'est pas un exemple de technologie blockchain pour plusieurs raisons (ce sont les premières qui me viennent à l'esprit):Dans une implémentation de blockchain, chaque bloc est vérifié indépendamment plusieurs fois avant d'être ajouté à la blockchain. C'est en effet l'un des éléments les plus importants de la technologie blockchain et c'est ce qui garantit son "non piratage". D'un autre côté, de nombreux
git
projets ne nécessitent pas de vérification indépendante et, lorsqu'ils le font, ils exigent qu'une seule personne approuve une modification avant qu'elle ne soit validée dans le référentiel. Par conséquent, avec au plus un point de validation auquel vous devez faire confiance,git
rompt l'un des principes fondamentaux de la technologie blockchain.Un
git
référentiel n'est pas nécessairement dupliqué sur de nombreux serveurs. Vous pouvez travailler à partir d'ungit
référentiel localement et si votre disque local était corrompu, vous perdriez tout. La technologie blockchain implique la reproduction du registre sur les serveurs.Vous pouvez réécrire l'
git
histoire. Ungit push <remote> <branch> --force
where<branch>
est défini sur un état antérieur à celui de<remote>
réécrirait l'historique. Dans les blockchains, le grand livre est une histoire immuable.la source
push --force
sur une seule branche, vous perdez les références aux validations qui sont nettoyées par le garbage collector. C'est différent d'un fork qui n'est pas une réécriture de l'histoire mais plutôt une voie de développement alternative.La raison pour laquelle Git et les blockchains semblent similaires est qu'ils utilisent tous les deux des arbres de merkle comme structure de données sous-jacente. Un arbre merkle est un arbre dans lequel chaque nœud est étiqueté avec la valeur de hachage cryptographique de son contenu, qui comprend les étiquettes de ses enfants.
Le graphe acyclique dirigé de Git est exactement cela, un arbre de merkle où chaque nœud (tag, commit, arbre ou objet blob) est étiqueté avec le hachage de son contenu et l'étiquette de son «enfant». Notez que pour les commits, le terme «enfant» est un peu en conflit avec la compréhension de Git des parents: les commits parents sont les enfants des commits, il vous suffit de regarder le graphique comme un arbre qui ne cesse de grandir en le re-rootant.
Les blockchains sont très similaires à cela, car elles continuent également de croître de cette façon et utilisent également sa propriété d'arbre de merkle pour garantir l'intégrité des données. Mais généralement, les blockchains sont comprises comme bien plus que de simples arbres de merkle où ils se séparent du «traqueur de contenu stupide» Git . Par exemple, les blockchains signifie généralement avoir un système hautement décentralisé au niveau du bloc (tous les blocs ne doivent pas nécessairement être au même endroit).
Comprendre les blockchains est un peu difficile (personnellement, je suis encore loin de tout comprendre), mais je considère que comprendre les internes de Git est un bon moyen de comprendre les arbres de merkle, ce qui aide définitivement à comprendre une partie fondamentale des blockchains.
la source
Les cyber-monnaies comme Bitcoin utilisent une chaîne cryptographique de consensus distribuée de blocs (arbre de merkle). L'utilisation courante a raccourci cela en `` blockchain ''
Bien que git utilise une chaîne de blocs (arbre merkle), il lui manque les composants cryptographiques de consensus distribués qu'implique l'utilisation courante du terme 'BlockChain'.
la source
Blockchain
n'est pas n'importe quelle chaîne de blocs.Blockchain
c'est quand il existe un moyen de déterminer la chaîne principale lorsque deux ou plus sont détournés , et lorsqu'aucune autorité centrale n'est nécessaire pour cette détermination.la source
Contrairement aux blockchains de crypto-monnaie ; git n'a pas de mécanisme de consensus p2p sans confiance.
la source
Les objectifs sont différents pour la blockchain et git bien que les deux utilisent des arbres de merkle comme structure de données.
A
blockchain
est généralement géré par un réseau peer-to-peer adhérant à un protocole de communication inter-nœuds et de validation de nouveaux blocs. Une fois enregistrées, les données d'un bloc donné ne peuvent pas être modifiées rétroactivement sans modification de tous les blocs suivants, ce qui nécessite le consensus de la majorité du réseau.Comme selon le livre blanc Bitcoin:
While
Git
est un système de contrôle de version distribué pour suivre les modifications du code source pendant le développement de logiciels.Il est conçu pour coordonner le travail entre les programmeurs, mais il peut être utilisé pour suivre les modifications dans n'importe quel ensemble de fichiers. Ses objectifs incluent la vitesse, l'intégrité des données et la prise en charge des flux de travail distribués et non linéaires.Comme selon Linus Torvalds:
la source
Comme l'a dit Poke :
Git et Blockchains semblent similaires car ils utilisent tous les deux des arbres Merkle pour stocker des transactions horodatées ordonnées. Un arbre merkle est une structure de données arborescente où chaque nœud est étiqueté avec la valeur de hachage cryptographique de son contenu, qui comprend les étiquettes de ses enfants.
La première différence est la fonction Hash : Blockchain a une fonction de hachage très coûteuse de sorte que chaque bloc doit être miné, alors qu'un "bloc" Git peut être créé avec un simple message de validation.
Le but de Bitcoin est d'ajouter de la confiance à l'ordre des transactions. L'accent est mis sur la chaîne la plus longue, car elle est la plus coûteuse à calculer et donc la plus susceptible d'être la vérité.
Bitcoin accomplit cela en exigeant que le hachage réponde à certains paramètres (commence par un nombre spécifique de 0), en incrémentant une valeur ("nonce") dans le message jusqu'à ce qu'un hachage satisfaisant soit trouvé. Cela demande un effort pour trouver, mais un seul calcul pour vérifier un nonce; et si plusieurs nonces produisent un hachage satisfaisant, alors l'un sera inférieur et considéré comme la vérité. D'autres schémas d'authentification rendent le hachage digne de confiance en centralisant l'émission du hachage à une autorité, peut-être votée par accord de réseau, ou par une autre méthode.
Les données de la blockchain sont limitées aux transactions, qui doivent être conformes à la validation. La transaction doit être valide pour être incluse dans le bloc suivant. Une transaction Bitcoin correspond à quelque chose d'important dans le monde réel qui justifie l'utilisation d'un bloc coûteux pour enregistrer ce transfert, comme l'échange de valeur monétaire. Nous ne nous soucions pas vraiment du grand livre final, c'est une métaphore de quelque chose dans le monde réel.
En revanche, les blocs Git sont arbitraires, car un commit peut contenir n'importe quelle quantité de données. La valeur réside dans les changements de données organisés dans l'arbre git car nous nous soucions du produit final, il est validé par l'existence du référentiel git.
Le but de Git est de permettre à des «registres» bon marché de suivre plusieurs alternatives de produits. Le "grand livre" dans Git est ce qui nous tient à cœur, c'est notre produit final; les données de transaction enregistrent simplement la façon dont le produit a été construit. Nous voulons rendre très bon marché la création de plusieurs versions de produits finaux, juste assez de frais généraux pour obliger le créateur à enregistrer comment il a construit ce produit. Aucune validation explicite n'est faite sur les données, vous maintenez le produit final s'il semble bon, et cette existence rend utile la chaîne de création de ce produit. Si le produit final est incorrect ou si l'ordre des validations n'est pas valide, ce «grand livre» est supprimé lors du garbage collection.
La deuxième différence est que les transactions Blockchain doivent provenir d'une source valide antérieure. Dans Git, nous ne nous soucions pas des données que vous utilisez pour étendre l'arborescence. Dans Blockchain, les transactions doivent provenir d'une source valide préalable. En ce sens, Git suit l'extension de notre environnement, tandis que Blockchain suit l'échange de valeur dans un environnement fermé.
la source