Die interne Datenstruktur von Git ist ein Baum von Datenobjekten, wobei jedes Objekt nur auf seinen Vorgänger verweist. Jeder Datenblock wird gehasht. Das Ändern (Bitfehler oder Angriff) eines Zwischenblocks wird bemerkt, wenn der gespeicherte Hash und der tatsächliche Hash abweichen.
Wie unterscheidet sich dieses Konzept von der Blockkette?
Git ist nicht als Beispiel für Blockketten aufgeführt, aber zumindest in Zusammenfassungen sehen beide Datenstrukturbeschreibungen gleich aus: Datenblock, Rückwärtsverknüpfung in eine Richtung, Hashes, ...).
Wo ist also der Unterschied, dass Git nicht als Blockkette bezeichnet wird?
git
hash
blockchain
Paebbels
quelle
quelle
Antworten:
git
ist aus mehreren Gründen kein Beispiel für Blockchain-Technologie (dies waren die ersten, die mir in den Sinn kamen):In einer Blockchain-Implementierung wird jeder Block mehrmals unabhängig überprüft, bevor er zur Blockchain hinzugefügt wird. Dies ist in der Tat eines der wichtigsten Dinge an der Blockchain-Technologie und stellt deren "Unhackbarkeit" sicher. Andererseits
git
erfordern viele Projekte keine unabhängige Überprüfung, und wenn dies der Fall ist, muss nur eine Person eine Änderung abzeichnen, bevor sie in das Repository übernommen wird. Mit höchstens einem Validierungspunkt, dem Sie vertrauen müssen, wird dahergit
einer der Grundpfeiler der Blockchain-Technologie gebrochen.Ein
git
Repository wird nicht unbedingt auf vielen Servern dupliziert. Sie könnengit
lokal von einem Repository aus arbeiten. Wenn Ihre lokale Festplatte beschädigt wäre, würden Sie alles verlieren. Die Blockchain-Technologie impliziert die Reproduktion des Hauptbuchs über Server hinweg.Sie können den Verlauf neu schreiben
git
. A ,git push <remote> <branch> --force
wo<branch>
in einem früheren Zustand als gesetzt an<remote>
würde die Geschichte neu zu schreiben. In Blockchains ist das Hauptbuch eine unveränderliche Geschichte.quelle
push --force
einzelnen Zweig ausführen, verlieren Sie Verweise auf Commits, die vom Garbage Collector bereinigt werden. Dies unterscheidet sich von einer Gabelung, die keine Umschreibung der Geschichte, sondern einen alternativen Entwicklungspfad darstellt.Der Grund, warum Git und Blockchains ähnlich aussehen, liegt darin, dass beide Merkle-Bäume als zugrunde liegende Datenstruktur verwenden. Ein Merkle-Baum ist ein Baum, in dem jeder Knoten mit dem kryptografischen Hash-Wert seines Inhalts gekennzeichnet ist, der die Bezeichnungen seiner untergeordneten Knoten enthält.
Gits gerichteter azyklischer Graph ist genau das, ein Merkle-Baum, in dem jeder Knoten (Tag, Commit, Baum oder Blob-Objekt) mit dem Hash seines Inhalts und der Bezeichnung seines „Kindes“ gekennzeichnet ist. Beachten Sie, dass bei Commits der Begriff „Kind“ ein wenig im Widerspruch zu Gits Verständnis der Eltern steht: Übergeordnete Commits sind die Kinder von Commits. Sie müssen das Diagramm nur als einen Baum betrachten, der durch erneutes Rooten weiter wächst.
Blockchains sind dem sehr ähnlich, da sie auch auf diese Weise weiter wachsen und die Merkle-Tree-Eigenschaft verwenden, um die Datenintegrität sicherzustellen. Aber normalerweise werden Blockchains als weit mehr als nur Merkle-Bäume verstanden, bei denen sie sich vom Git des „dummen Content-Trackers“ trennen . Zum Beispiel bedeutet Blockchains normalerweise auch ein stark dezentrales System auf Blockebene (nicht alle Blöcke müssen sich an derselben Stelle befinden).
Blockchains zu verstehen ist etwas schwierig (ich persönlich bin immer noch weit davon entfernt, alles darüber zu verstehen), aber ich betrachte das Verstehen von Git-Interna als einen guten Weg, um Merkle-Bäume zu verstehen, was definitiv dazu beiträgt, einen grundlegenden Teil über Blockchains zu verstehen.
quelle
Cyber-Währungen wie Bitcoin verwenden eine verteilte kryptografische Blockkette von Konsens (Merkle-Baum). Die allgemeine Verwendung hat dies zu "Blockchain" verkürzt.
Während Git eine Kette von Blöcken verwendet (Merkle-Baum), fehlen ihm die kryptografischen Komponenten des verteilten Konsenses, die die übliche Verwendung des Begriffs "BlockChain" impliziert.
quelle
Blockchain
ist nicht irgendeine Kette von Blöcken.Blockchain
Dies ist der Fall, wenn es eine Möglichkeit gibt, die Hauptkette zu bestimmen, wenn zwei oder mehr umgeleitet werden und wenn für diese Bestimmung keine zentrale Autorität erforderlich ist.quelle
Im Gegensatz zu Kryptowährungs-Blockchains ; git hat keinen vertrauenswürdigen p2p-Konsensmechanismus.
quelle
Die Ziele sind für Blockchain und Git unterschiedlich, obwohl beide Merkle-Bäume als Datenstruktur verwenden.
A
blockchain
wird normalerweise von einem Peer-to-Peer-Netzwerk verwaltet, das ein Protokoll für die Kommunikation zwischen Knoten einhält und neue Blöcke validiert. Einmal aufgezeichnet, können die Daten in einem bestimmten Block nicht rückwirkend geändert werden, ohne dass alle nachfolgenden Blöcke geändert werden, was einen Konsens der Netzwerkmehrheit erfordert.Wie laut Bitcoin Whitepaper:
Es handelt sich zwar
Git
um ein verteiltes Versionskontrollsystem zur Verfolgung von Änderungen im Quellcode während der Softwareentwicklung. Es dient zur Koordinierung der Arbeit zwischen Programmierern, kann jedoch zur Verfolgung von Änderungen in einem beliebigen Satz von Dateien verwendet werden. Zu den Zielen gehören Geschwindigkeit, Datenintegrität und Unterstützung für verteilte, nichtlineare Workflows.Wie nach Linus Torvalds:
quelle
Wie Poke sagte :
Git und Blockchains sehen ähnlich aus, da beide Merkle Trees zum Speichern geordneter Transaktionen mit Zeitstempel verwenden. Ein Merkle-Baum ist eine Baumdatenstruktur, in der jeder Knoten mit dem kryptografischen Hashwert seines Inhalts gekennzeichnet ist, der die Bezeichnungen seiner untergeordneten Knoten enthält.
Der erste Unterschied ist die Hash-Funktion : Blockchain hat eine sehr teure Hash-Funktion, so dass jeder Block abgebaut werden muss, wobei ein Git- "Block" mit einer einfachen Commit-Nachricht erstellt werden kann.
Der Zweck von Bitcoin besteht darin, der Reihenfolge der Transaktionen Vertrauen zu verleihen. Der Fokus liegt auf der längsten Kette, da diese am teuersten zu berechnen ist und daher höchstwahrscheinlich die Wahrheit ist.
Bitcoin erreicht dies, indem verlangt wird, dass der Hash bestimmte Parameter erfüllt (beginnt mit einer bestimmten Anzahl von Nullen), indem ein Wert ("nonce") in der Nachricht erhöht wird, bis ein zufriedenstellender Hash gefunden wird. Dies erfordert Mühe zu finden, aber nur 1 Berechnung, um eine Nonce zu überprüfen; und wenn mehrere Nonces einen zufriedenstellenden Hash erzeugen, wird einer niedriger sein und als die Wahrheit angesehen werden. Andere Authentifizierungsschemata machen den Hash vertrauenswürdig, indem sie die Ausgabe des Hash an eine Behörde zentralisieren, die möglicherweise durch eine Netzwerkvereinbarung oder eine andere Methode abgestimmt wurde.
Blockchain-Daten sind auf Transaktionen beschränkt, die der Validierung entsprechen müssen. Die Transaktion muss gültig sein, um in den nächsten Block aufgenommen zu werden.Eine Bitcoin-Transaktion entspricht etwas, das in der realen Welt wichtig ist und die Verwendung eines teuren Blocks zur Aufzeichnung dieser Überweisung rechtfertigt, z. B. den Austausch von Geldwerten. Das endgültige Hauptbuch ist uns eigentlich egal, es ist eine Metapher für etwas in der realen Welt.
Im Gegensatz dazu sind Git-Blöcke beliebig, da ein Commit eine beliebige Datenmenge enthalten kann. Der Wert liegt in den Änderungen der Daten, die im Git-Baum organisiert werden, da uns das Endprodukt am Herzen liegt. Es wird durch das Vorhandensein des Git-Repositorys bestätigt.
Der Zweck von Git ist es, billigen "Ledgern" zu ermöglichen, mehrere Produktalternativen zu verfolgen. Das "Hauptbuch" in Git ist das, was uns wichtig ist, es ist unser Endprodukt; Die Transaktionsdaten zeichnen lediglich auf, wie das Produkt erstellt wurde. Wir möchten es sehr billig machen, mehrere Versionen von Endprodukten herzustellen, gerade genug Aufwand, damit der Ersteller aufzeichnen muss, wie er dieses Produkt hergestellt hat. Es wird keine explizite Validierung der Daten durchgeführt. Sie pflegen das Endprodukt, wenn es gut aussieht, und diese Existenz macht es nützlich, die Kette der Produkterstellung zu haben. Wenn das Endprodukt fehlerhaft ist oder die Reihenfolge der Festschreibungen ungültig ist, wird dieses "Hauptbuch" während der Speicherbereinigung gelöscht.
Der zweite Unterschied besteht darin, dass Blockchain-Transaktionen aus einer zuvor gültigen Quelle stammen müssen. In Git ist es uns egal, welche Daten Sie zum Erweitern des Baums verwenden. In Blockchain müssen die Transaktionen aus einer zuvor gültigen Quelle stammen. In diesem Sinne verfolgt Git die Erweiterung unserer Umgebung, während Blockchain den Werteaustausch in einer geschlossenen Umgebung verfolgt.
quelle