Wewnętrzna struktura danych Gita to drzewo obiektów danych, w którym każdy obiekt wskazuje tylko na swojego poprzednika. Każdy blok danych jest haszowany. Modyfikacja (błąd bitowy lub atak) bloku pośredniego zostanie zauważona, gdy zapisany hash i rzeczywisty hash odejdą.
Czym ta koncepcja różni się od łańcucha bloków?
Git nie jest wymieniony jako przykład łańcuchów bloków, ale przynajmniej w podsumowaniu oba opisy struktury danych wyglądają podobnie: blok danych, jednokierunkowe łączenie zwrotne, hashe, ...).
Więc gdzie jest różnica, że Git nie jest nazywany łańcuchem bloków?
git
hash
blockchain
Paebbels
źródło
źródło
Odpowiedzi:
git
nie jest przykładem technologii blockchain z kilku powodów (były to pierwsze, które przyszły mi do głowy):W implementacji blockchain każdy blok jest wielokrotnie weryfikowany niezależnie, zanim zostanie dodany do łańcucha bloków. Jest to rzeczywiście jedna z najważniejszych rzeczy w technologii blockchain i zapewnia jej „niehakowalność”. Z drugiej strony, wiele
git
projektów nie wymaga niezależnej weryfikacji, a kiedy już tak się dzieje, wymaga tylko jednej osoby do podpisania zmiany, zanim zostanie ona wprowadzona do repozytorium. W związku z tym, mając co najwyżej jeden punkt weryfikacji, któremu musisz zaufać,git
łamie jedną z podstawowych zasad technologii blockchain.git
Repozytorium niekoniecznie jest powielany na wielu serwerach. Możesz pracować zgit
repozytorium lokalnie, a gdyby twój dysk lokalny był uszkodzony, straciłbyś wszystko. Technologia Blockchain implikuje reprodukcję rejestru na serwerach.Możesz przepisać
git
historię.git push <remote> <branch> --force
Gdzie<branch>
jest ustawiony do poprzedniego stanu, niż na<remote>
to przepisać historię. W łańcuchach bloków księga główna jest niezmienną historią.źródło
push --force
na pojedynczej gałęzi tracisz odniesienia do zatwierdzeń, które są czyszczone przez moduł odśmiecania pamięci. To coś innego niż rozwidlenie, które nie jest przepisywaniem historii, lecz alternatywną ścieżką rozwoju.Powodem, dla którego Git i łańcuchy bloków wyglądają podobnie, jest to, że oba używają drzew Merkle jako podstawowej struktury danych. Drzewo Merkle to drzewo, w którym każdy węzeł jest oznaczony kryptograficzną wartością skrótu jego zawartości, która obejmuje etykiety jego dzieci.
Skierowany acykliczny wykres Gita jest dokładnie tym, drzewem merkle, w którym każdy węzeł (tag, zatwierdzenie, drzewo lub obiekt typu blob) jest oznaczony hashem swojej zawartości i etykietą swojego „dziecka”. Zwróć uwagę, że w przypadku zatwierdzeń termin „dziecko” jest nieco sprzeczny ze sposobem rozumienia rodziców przez Git: zatwierdzenia rodziców są elementami potomnymi zatwierdzeń, wystarczy spojrzeć na wykres jako drzewo, które rośnie po ponownym zakorzenieniu.
Blockchainy są bardzo podobne do tego, ponieważ również rozwijają się w ten sposób, a także wykorzystują właściwość drzewa Merkle, aby zapewnić integralność danych. Ale zwykle łańcuchy bloków są rozumiane jako coś więcej niż tylko drzewa merkle, które są miejscem, w którym oddzielają się od „głupiego narzędzia do śledzenia zawartości” Gita . Na przykład łańcuchy bloków zwykle oznaczają również posiadanie wysoce zdecentralizowanego systemu na poziomie bloków (nie wszystkie bloki muszą znajdować się w tym samym miejscu).
Zrozumienie blockchainów jest dość trudne (osobiście nadal daleko mi do zrozumienia wszystkiego na ten temat), ale uważam, że zrozumienie wewnętrznych elementów Git jest dobrym sposobem na zrozumienie drzew Merkle, co zdecydowanie pomaga zrozumieć podstawową część dotyczącą łańcuchów bloków.
źródło
Cyberwaluty, takie jak Bitcoin, używają rozproszonego konsensu kryptograficznego łańcucha bloków (drzewo Merkle). W powszechnym użyciu skrócono to do „łańcucha bloków”
Chociaż git używa łańcucha bloków (drzewo Merkle), brakuje mu rozproszonych komponentów kryptograficznych, które sugerują powszechne użycie terminu „BlockChain”.
źródło
Blockchain
nie jest zwykłym łańcuchem bloków.Blockchain
jest wtedy, gdy istnieje sposób określenia głównego łańcucha, gdy dwa lub więcej są przekierowane , i gdy do tego celu nie jest potrzebny żaden organ centralny.źródło
W przeciwieństwie do blockchainów kryptowalut ; git nie ma mechanizmu konsensusu bez zaufania p2p.
źródło
Cele są różne dla blockchain i git, chociaż oba wykorzystują drzewa Merkle jako strukturę danych.
blockchain
Zwykle A jest zarządzany przez sieć typu każdy z każdym, przylegającą do protokołu komunikacji między węzłami i sprawdzania poprawności nowych bloków. Raz zarejestrowane dane w danym bloku nie mogą być zmienione z mocą wsteczną bez zmiany wszystkich kolejnych bloków, co wymaga zgody większości sieci.Zgodnie z raportem Bitcoin:
Chociaż
Git
jest rozproszonym systemem kontroli wersji do śledzenia zmian w kodzie źródłowym podczas tworzenia oprogramowania, jest przeznaczony do koordynowania pracy między programistami, ale może być używany do śledzenia zmian w dowolnym zestawie plików. Jego cele obejmują szybkość, integralność danych i obsługę rozproszonych, nieliniowych przepływów pracy.Jak twierdzi Linus Torvalds:
źródło
Jak powiedział szturchanie :
Git i Blockchain wyglądają podobnie, ponieważ oba używają drzew Merkle do przechowywania zamówionych transakcji ze znacznikiem czasu. Drzewo Merkle to drzewiasta struktura danych, w której każdy węzeł jest oznaczony kryptograficzną wartością skrótu jego zawartości, która obejmuje etykiety jego dzieci.
Pierwszą różnicą jest funkcja Hash : Blockchain ma bardzo kosztowną funkcję mieszającą, więc każdy blok musi zostać wydobyty, podczas gdy „blok” Gita można utworzyć za pomocą prostego komunikatu o zatwierdzeniu.
Celem Bitcoin jest dodanie zaufania do kolejności transakcji. Skupiamy się na najdłuższym łańcuchu, ponieważ jest on najdroższy do obliczenia, a zatem najprawdopodobniej jest prawdą.
Bitcoin osiąga to, wymagając, aby hash spełniał określone parametry (zaczyna się od określonej liczby zer), zwiększając wartość („nonce”) w wiadomości, aż do znalezienia zadowalającego hasha. To wymaga wysiłku, aby znaleźć, ale tylko jedno obliczenie do zweryfikowania przez nonce; a jeśli wiele wartości jednorazowych daje zadowalający hash, to jeden będzie niższy i uznany za prawdę. Inne schematy uwierzytelniania sprawiają, że hash jest wiarygodny dzięki scentralizowaniu wysyłania skrótu do organu, być może przegłosowanego na podstawie umowy sieciowej lub innej metody.
Dane Blockchain są ograniczone do transakcji, które muszą być zgodne z walidacją. Transakcja musi być ważna, aby została zawarta w następnym bloku. Transakcja Bitcoin odpowiada czemuś ważnemu w prawdziwym świecie, co uzasadnia użycie drogiego bloku do zarejestrowania tego przelewu, na przykład wymiana wartości pieniężnej. Tak naprawdę nie obchodzi nas ostateczna księga, to metafora czegoś w prawdziwym świecie.
Z kolei bloki Gita są dowolne, ponieważ zatwierdzenie może zawierać dowolną ilość danych. Wartość polega na tym, że zmiany danych są organizowane w drzewie git, ponieważ zależy nam na produkcie końcowym, jest to potwierdzone przez istnienie repozytorium git.
Celem Git jest umożliwienie tanim „księgom” śledzenia wielu alternatyw produktów. „Księga główna” w Git jest tym, na czym nam zależy, to nasz produkt końcowy; dane transakcji rejestrują tylko sposób budowy produktu. Chcemy, aby tworzenie wielu wersji produktów końcowych było bardzo tanie, tylko na tyle narzutów, aby twórca musiał rejestrować, jak zbudował ten produkt. Dane nie są poddawane jawnej walidacji, utrzymujesz produkt końcowy, jeśli wygląda dobrze, a istnienie to sprawia, że warto mieć łańcuch tworzenia tego produktu. Jeśli produkt końcowy jest zły lub kolejność zatwierdzeń jest nieprawidłowa, ta „księga” zostanie usunięta podczas czyszczenia pamięci.
Druga różnica polega na tym, że transakcje Blockchain muszą pochodzić z wcześniejszego ważnego źródła. W Gicie nie obchodzi nas, jakich danych używasz do rozszerzenia drzewa. W Blockchain transakcje muszą pochodzić z wcześniejszego ważnego źródła. W tym sensie Git śledzi rozszerzenie naszego środowiska, podczas gdy Blockchain śledzi wymianę wartości w zamkniętym środowisku.
źródło