Git neden “blok zincir” olarak kabul edilmiyor?


174

Git'in iç veri yapısı, her nesnenin yalnızca selefine işaret ettiği bir veri nesneleri ağacıdır. Her veri bloğu karma yapılır. Kaydedilen karma ve gerçek karma saptığında bir ara bloğun değiştirilmesi (bit hatası veya saldırı) fark edilir.

Bu kavramın blok zincirinden farkı nedir?
Git, blok zincirlerinin bir örneği olarak listelenmez, ancak en azından özetlerde, her iki veri yapısı açıklaması birbirine benzer: veri bloğu, tek yönlü ters bağlantı, karma, ...).

Peki fark nerede, Git'in blok zinciri olarak adlandırılmadığı?


2
Git, blok zincirlerinin bir örneği olarak listelenmiyor Bir blockchain'in ne olduğunu ilk kez öğrenmeye çalıştığımda, git'e en belirgin örnek olarak atıfta bulunuldum (şimdi tam bağlantım yok, ancak "blockchain" için Google araması tarafından döndürülen liste)
Leon

2
Hem Git hem de blockchain , temel veri yapısı olarak merkle ağaçlarını kullanıyor . Ancak bu tek başına Git'i bir blockchain veya başka bir yol yapmaz. - Git'i (ve içini) biliyorsanız, yine de merkle ağaçlarını biliyorsunuz, bu da blok zincirlerinin nasıl çalıştığını anlamak için çok yararlı bir vahiy olabilir.
dürtmek

24
Sevgili yakın seçmenler, nedenlerinizi açıklayabilir misiniz? 2 beğeni, iyi yorum ve bir cevap görüyorum. Neden fikir temelli? Git'i bir blok zinciri olarak nitelememek için dikiş yapan veri yapıları ve algoritmalar hakkında.
Paebbels


4
@ v.oddou Merkle ağaçları 1979'dan beri var. İki teknoloji, Merkle ağaçlarını konseptlerinin bir parçası olarak belirgin bir şekilde kullandıkları için onları aynı yapmıyor. Git veya blok zincirlerini sadece karışık ağaçlara düşürmek yanlıştır, çünkü ikisi de karışık ağaç değildir. Sadece onları kullanıyorlar. Bu, bağlantılı postayı tamamen ilgisiz kılar, çünkü aslında zincirleri değil, merkle ağaçları hakkında konuşur.
dürtmek

Yanıtlar:


53

git çeşitli nedenlerle blockchain teknolojisinin bir örneği değildir (bunlar ilk akla gelenlerdi):

  1. Bir blockchain uygulamasında, her blok, blockchain'e eklenmeden önce birkaç kez bağımsız olarak doğrulanır. Bu gerçekten blockchain teknolojisi ile ilgili en önemli şeylerden biridir ve "kırılmazlığını" sağlayan şeydir. Öte yandan, birçok gitproje bağımsız doğrulama gerektirmez ve yaptıklarında, depoya bağlanmadan önce yalnızca bir kişinin bir değişikliği imzalamasını gerektirir. Bu nedenle, güvenmeniz gereken en fazla bir doğrulama noktasıyla git, blockchain teknolojisinin temel ilkelerinden birini kırar.

  2. Bir githavuz birçok sunucuda çoğaltılamaz. gitYerel olarak bir havuzdan çalışabilirsiniz ve yerel diskiniz bozulduysa, her şeyi kaybedersiniz. Blockchain teknolojisi, defterlerin sunucular arasında çoğaltılmasını ima eder.

  3. gitGeçmişi yeniden yazabilirsiniz . Bir de bundan daha önceki durumuna ayarlanır Tarihi yeniden olacaktır. Blok zincirlerde, defter değişmez bir tarihtir.git push <remote> <branch> --force<branch><remote>


104
"Blok zincirlerde, defter değişmez bir tarihtir." - Git tarihi de öyle. "Geçmişi yeniden yazarken", geçmişte bir noktadan başlayıp yeni taahhütler eklersiniz. Aynı şey blok zincirleri için de mümkündür ve aslında, daha sonra terk edilmiş olsa bile, her çatal ortaya çıktığında olur.
Holger

8
Blok zincirlerini Git'e karşı anladığım kadarıyla, karma çarpışma sorununu çözmediğiniz sürece blok zincirlerini de yeniden yazabilirsiniz. Git için, evet, yeniden yazabilirsiniz, ancak tüm uzaktan kumandaların orijinal geçmişi hala vardır. Tarihi yeniden yazmak yeni karmalar ve farklı bir ağaç oluşturur. Eğer blok zincir böyle bir operasyonu geçmezse, bu geçerli bir argüman değildir, çünkü eğer istersem onu ​​uygulayabilirim. Veya tersine, bir kolu korumalı olarak ayarlayarak zorlamalı itmeleri reddedebilirim.
Paebbels

4
Sadece git geçmişi değiştirilebilir. Bir yaparken push --forcetek dal üzerinde çöp toplayıcısı tarafından temizlenir kaydedilmesini başvurular kaybediyor. Bu, tarihin yeniden yazılması değil, alternatif bir gelişim yolu olan bir çataldan farklıdır.
houtanb

24
Git'in özel bir iş akışı uygulayarak ve birkaç işlemi yasaklayarak bir blok zincir modunda çalıştırılabileceğini özetleyebilir miyiz?
Paebbels

4
@Paebbels evet, buna katılıyorum. Varsayılan olarak ve düzenli kullanımda değildir, ancak özel bir iş akışı ile olur.
houtanb

123

Git ve blok zincirlerinin benzer görünmesinin nedeni, her ikisinin de altta yatan veri yapısı olarak merkle ağaçları kullanmasıdır . Merkle ağacı, her bir düğümün, çocuklarının etiketlerini içeren içeriklerinin kriptografik karma değeri ile etiketlendiği bir ağaçtır.

Git'in yönlendirilmiş döngüsel grafiği, her düğümün (etiket, taahhüt, ağaç veya blob nesnesi) içeriğinin karması ve “alt” etiketiyle etiketlendiği bir merkle ağacıdır. Kaydedilmesini için, “çocuk” terimi ebeveynlerin seyahatseverlerin Git kendi algılama biraz çelişki yaratacak Not: Veli kaydedilmesini olan kaydedilmesini çocukları, şunu yeniden köklendirdiği büyüyen tutan bir ağaç olarak grafiğe bakmak gerekir.

Blockchains buna çok benzer, çünkü aynı şekilde büyümeye devam ediyorlar ve ayrıca veri bütünlüğünü sağlamak için merkle tree özelliğini kullanıyorlar. Ancak genellikle, blok zincirleri, “aptal içerik izleyici” Git'ten ayrıldıkları yer olan karışık ağaçlardan çok daha fazlası olarak anlaşılır . Örneğin, blok zincirleri genellikle bir blok seviyesinde oldukça merkezi olmayan bir sisteme sahip olmak anlamına gelir (tüm blokların aynı yerde olması gerekmez).

Blok zincirleri anlamak biraz zordur (kişisel olarak, hala onunla ilgili her şeyi anlamaktan çok uzaktayım), ancak Git iç kısımlarını, blok zincirleri hakkında temel bir parçayı anlamaya yardımcı olan merkle ağaçlarını anlamanın iyi bir yolu olarak görüyorum.


24
Üzgünüm ama hiçbir yerde blockchainler git'ten daha fazlasını getirmiyor. blok zincirleri git kadar aptal. Eğer buna inanmıyorsanız, aşırıya kaçmışsınız demektir. Akran ağı ve fikir birliği sistemleri ayrı bir şeydir.
v.oddou

2
özel defterler (blok zincirleri) kavramsal olarak git ile aynıdır
Munhitsu

Tipik olarak, bir git deposunda bir kök işlemi vardır, ancak herhangi bir sayıda dal olabilir. Bir daldaki son taahhüdü kök taahhüdü ve ebeveynleri çocuk olarak görüyorsanız, büyüyen birçok kökü olan bir ağacınız var ... Bence bu sadece Merkle ağacında ebeveyn referanslarının içeriklerde olduğu bir varyasyon. çocuk referansları. Birden fazla ebeveyn ve çocuk olabilir, bu yüzden bir ağaç bile değildir.
Herman

22

Bitcoin gibi Siber Paralar, dağıtılmış bir konsensüs kriptografik blok zinciri (merkle ağacı) kullanır. Ortak kullanım bunu 'blockchain'e kısalttı

Git bir blok zinciri (merkle ağacı) kullanırken, 'BlockChain' teriminin ortak kullanımının ima ettiği dağıtılmış mutabakat şifreleme bileşenlerinden yoksundur.


17

Blockchainolduğu değil herhangi blokların sadece herhangi zinciri.

Blockchainzaman olduğu iki veya daha fazla yönlendirilir ana zinciri saptanması için bir yol vardır ve merkezi bir otorite bu belirleme için zaman ihtiyaç vardır.


17

Kripto para bloğu zincirlerinden farklı olarak ; git'in p2p güvenilir bir uzlaşma mekanizması yok.


Neden güvensiz bir konsensüs sistemini bir blok zincirinin parçası olarak görüyorsunuz? Bir blok zincirine güven oluşturmanın birçok yolu vardır, çünkü git, yerel kopyanızdaki her şeyin bir sonraki çekimle kaldırılamayacağını ve uzak kopyadaki değişiklikleri istediğinizi belirtmenizdir. Güvensiz bir fikir birliğine sadece doğru olanın ne olacağı belirsiz olduğu zaman ihtiyacınız olur. Git'te birden çok dal "doğru" olabilir ve olayı bir araya getirebilir.
allo

@allo GitHub genellikle gerçeğin merkezi kaynağı olarak kullanılır, ancak bir yöneticiyi tarihi zorlayan ve tarihi geçersiz kılan şeylerden alıkoyan nedir? GitHub yoksa ve akranlarınızdan çekildiyseniz, birleştirme çatışmalarını nasıl ele alırsınız? Kimin hakkını nasıl belirliyorsunuz?
Miguel Mota

1
Hiçbir şey sizi zorla itmekten alıkoyamaz. Ama bir blockchain beni garanti ettiği gibi, bunu tespit edebilirim çünkü zincirim bu taahhütleri buna dayanarak doğrulayamıyor. Bu , blok zinciri ile ilgili, merkezi olmayan rıza değil. Ve GIT'de ben explicitely yok (geliştirme bir demokrasi değildir) Ben birleştirmek için ne bir rıza protokolünü olsun istiyorum, ama benim zincirine onları birleştirirken aslında yeni hareketin okuyun. Kopyam Yani olduğunu o ve malzeme ı gözden (birleştirme çatışmaları görerek yani) Zaten doğrulayabilirsiniz böylece sahip ve malzeme oluşur ve çünkü, hemen sonra içine kabul edin.
allo

1
@allo bu konuda haklısın, ancak cevabında genel olarak blok zincirleri değil, "kripto para birimi blok zincirleri" ifadesinde söyledim, ama şimdi düşünüyorum ki cevabım sorulan soruya uymuyor gibi görünüyor çünkü temel veri yapılarından ziyade sistemi bir bütün olarak düşünmek
Miguel Mota

Git ve kripto para birimlerinde kullanılan blok zincirlerinin farkı konusunda tamamen haklısınız. Bu, titiz bir şekilde kullanıldığında, git'in neden bir blok zinciri olarak düşünülmediği sorusuna bir cevap değildir. Şu anda kabul edilen cevap bile cevabınıza benzer. Hala ödülü alan cevabı tercih ederim.
allo

1

Her ikisi de veri yapısı olarak merkle ağaçları kullanmasına rağmen, Hedefler blockchain ve git için farklıdır.

bir blockchain tipik olarak düğümler arası iletişim için bir protokole bağlı olan ve yeni blokları doğrulayan eşler arası bir ağ tarafından yönetilir. Bir kez kaydedildikten sonra, herhangi bir bloktaki veriler, ağ çoğunluğunun konsensüsü gerektiren sonraki tüm bloklar değiştirilmeden geriye dönük olarak değiştirilemez.

Bitcoin teknik incelemesine göre:

Tamamen eşler arası elektronik nakit sürümü, çevrimiçi ödemelerin bir finansal kuruma gitmeden doğrudan bir taraftan diğerine gönderilmesine izin verecektir. Dijital imzalar çözümün bir bölümünü sağlar, ancak çift harcamaları önlemek için güvenilir bir üçüncü tarafın hala gerekli olması durumunda ana avantajlar kaybolur. Eşler arası ağ kullanarak çift harcama sorununa bir çözüm öneriyoruz. Ağ, işlemleri sürekli bir karma tabanlı çalışma kanıtı zincirine ayırarak zaman damgasını vurur ve çalışma kanıtını yeniden yapmadan değiştirilemeyen bir kayıt oluşturur. En uzun zincir sadece tanık olunan olaylar dizisinin kanıtı değil, aynı zamanda en büyük CPU gücü havuzundan geldiğinin kanıtıdır. CPU gücünün çoğunluğu ağa saldırmak için işbirliği yapmayan düğümler tarafından kontrol edildiği sürece, En uzun zincir ve uzay saldırganlarını üretecek. Ağın kendisi minimum yapı gerektirir. Mesajlar en iyi çaba temelinde yayınlanır ve düğümler ağdan istedikleri zaman ayrılabilir ve ağa yeniden katılabilir, en uzun iş kanıtı zincirini gittiklerinde olanların kanıtı olarak kabul edebilir

Süre Git programcılar arasında çalışmayı koordine için tasarlanmıştır yazılım development.It sırasında kaynak kodunda değişiklikleri izleme dağıtılmış sürüm kontrol sistemi, ancak dosyalarının herhangi grubundaki değişiklikleri izlemek için kullanılabilir. Hedefleri arasında hız, veri bütünlüğü ve dağıtılmış, doğrusal olmayan iş akışları için destek yer alıyor.

Linus Torvalds'a göre:

Birçok yönden git'i bir dosya sistemi olarak görebilirsiniz - içeriğe adreslenebilir ve bir sürüm oluşturma kavramına sahiptir, ancak gerçekten bir dosya sistemi kişisinin bakış açısından soruna gelmesini tasarladım (hey, çekirdekler yaptığım şeydir) ve aslında geleneksel bir SCM sistemi oluşturma konusunda kesinlikle sıfır ilgim var.


0

As dürtme söyledi :

Git ve Blockchains benzer görünüyor çünkü ikisi de sıralı zaman damgalı işlemleri saklamak için Merkle Ağaçları kullanıyor . Merkle ağacı, her düğümün, çocuklarının etiketlerini içeren içeriklerinin kriptografik karma değeri ile etiketlendiği bir ağaç veri yapısıdır.

İlk fark Hash fonksiyonudur. : Blockchain çok pahalı bir hash fonksiyonuna sahiptir, böylece her bloğun mayınlanması gerekir, basit bir taahhüt mesajı ile bir Git "bloğu" oluşturulabilir.

Bitcoin'in amacı, işlemlerin sırasına güven eklemektir.Odak, en uzun zincir üzerindedir, çünkü bu hesaplanması en pahalıdır ve bu nedenle büyük olasılıkla gerçek olacaktır.

Bitcoin bunu, hash'ın belirli parametreleri karşılamasını (belirli bir 0s ile başlar), tatmin edici bir karma bulunana kadar mesajdaki bir değeri ("nonce") artırarak başarır. Bu bulmak için çaba gerektirir, ancak bir nonce doğrulamak için sadece 1 hesaplama; ve eğer birden fazla nonces tatmin edici bir karma üretiyorsa, o zaman kişi daha düşük olacak ve gerçek olarak kabul edilecektir. Diğer kimlik doğrulama düzenleri, karma işleminin, belki de ağ anlaşması veya başka bir yöntemle oylanan bir otoriteye verilmesini merkezileştirerek hash'ı güvenilir kılar.

Blockchain verileri, validasyona uyması gereken işlemler ile sınırlıdır. İşlem bir sonraki bloğa eklenecek şekilde geçerli olmalıdır. Bir Bitcoin işlemi, gerçek dünyada önemli bir şeye karşılık gelir, bu para transferini kaydetmek için pahalı bir blok kullanmayı haklı çıkarır, örneğin para değeri değişimi.Aslında nihai defterle ilgilenmiyoruz, gerçek dünyada bir şey için bir metafor.

Bunun aksine, Git blokları herhangi bir miktarda veri içerebileceğinden Git blokları isteğe bağlıdır. Değer git ağacında düzenlenen veri değişikliklerinde yatmaktadır, çünkü nihai ürünü önemsiyoruz, git deposunun varlığıyla doğrulanıyor.

Git'in amacı ucuz "defterlerin" birden fazla ürün alternatifini izlemesine izin vermektir.Git'teki "defteri" önemsediğimiz şey, bu bizim son ürünümüz; işlem verileri sadece ürünün nasıl inşa edildiğini kaydeder. Nihai ürünlerin birden fazla versiyonunu yapmayı çok ucuz hale getirmek istiyoruz, sadece içerik oluşturucunun bu ürünü nasıl oluşturduklarını kaydetmesini gerektirecek kadar ek yük. Veriler üzerinde açık bir doğrulama yapılmaz, iyi görünüyorsa son ürünü korur ve bu varlık bu ürünün yaratılma zincirine sahip olmayı yararlı kılar. Son ürün kötüyse veya taahhütlerin sırası geçersizse, bu "defteri" çöp toplama sırasında silinir.

İkinci fark, Blockchain işlemlerinin daha önce geçerli bir kaynaktan gelmesi gerektiğidir. Git'te, ağacı genişletmek için hangi verileri kullandığınız umurumda değil. Blockchain'de, işlemlerin önceden geçerli bir kaynaktan gelmesi gerekir. Bu anlamda Git, ortamımızın uzantısını takip ederken, Blockchain kapalı bir ortamdaki değer alışverişini izler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.