decentralized git




Pourquoi Git n'est-il pas considéré comme une "chaîne de bloc"? (4)

Contrairement aux blockchains de crypto-monnaie ; git n'a pas de mécanisme de consensus p2p sans confiance.

La structure de données interne de Git est un arbre d'objets de données, chaque objet ne faisant que pointer vers son prédécesseur. Chaque bloc de données est haché. La modification (erreur de bit ou attaque) d'un bloc intermédiaire sera notée lorsque le hachage enregistré et le hachage actuel s'écartent.

Comment ce concept est-il différent de la chaîne de blocs?
Git ne figure pas à titre d'exemple de chaîne 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 inversée unidirectionnelle, hachages, ...).

Alors, où est la différence, que Git ne s'appelle pas une chaîne de blocs?


La raison pour laquelle Git et les chaînes de blocs semblent similaires est due au fait qu’ils utilisent tous les deux des arbres à pastilles comme structure de données sous-jacente. Un merkle est un arbre où chaque nœud est étiqueté avec la valeur de hachage cryptographique de son contenu, qui inclut les étiquettes de ses enfants.

Le graphe acyclique dirigé de Git est exactement ce qu'il est, un merkle tree où chaque nœud (tag, commit, tree ou blob object) est étiqueté avec le hachage de son contenu et l'étiquette de son «enfant». Notez que pour les commits, le terme «enfant» est en conflit avec la compréhension de Git des parents: les commits parent sont les enfants des commits, il vous suffit de regarder le graphique comme un arbre qui continue de grandir en le réenracinant.

Les Blockchains ressemblent beaucoup à cela, puisqu'elles continuent également de croître, et utilisent également sa propriété merkle tree pour assurer l'intégrité des données. Mais en général, les blockchains sont bien plus que de simples arbres à pastilles. C’est là qu’ils se séparent du «suiveur de contenu stupide» Git . Par exemple, blockchains signifie aussi généralement avoir un système hautement décentralisé au niveau des blocs (il n'est pas nécessaire que tous les blocs soient au même endroit).

Comprendre les blockchains est un peu difficile (personnellement, je suis encore loin de tout comprendre), mais je considère que la compréhension des composants internes de Git est un bon moyen de comprendre les arbres à carreaux, ce qui aide à comprendre un aspect fondamental des blockchains.


Blockchain n'est pas n'importe quelle chaîne de blocs.

Blockchain se Blockchain lorsqu'il existe un moyen de déterminer la chaîne principale lorsque deux personnes ou plus sont détournées , et lorsqu'aucune autorité centrale n'est nécessaire pour cette détermination.


git n’est pas un exemple de technologie de blockchain pour plusieurs raisons (c’est la première qui m'est venue à l’esprit):

  1. Dans une implémentation blockchain, chaque bloc est vérifié indépendamment plusieurs fois avant d'être ajouté à la blockchain. C’est en effet l’un des aspects les plus importants de la technologie de la blockchain et garantit son "inhackability". Par ailleurs, de nombreux projets git ne nécessitent pas de vérification indépendante et ne requièrent qu'une seule personne pour approuver une modification avant que celle-ci 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 casse l’un des principes fondamentaux de la technologie blockchain.

  2. Un référentiel git n'est pas nécessairement dupliqué sur de nombreux serveurs. Vous pouvez travailler à partir d'un référentiel git localement et si votre disque local était corrompu, vous perdriez tout. La technologie Blockchain implique la reproduction du grand livre sur plusieurs serveurs.

  3. Vous pouvez réécrire l'historique git . Un git push <remote> <branch> --force<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.





blockchain