Mengapa Git tidak dianggap sebagai "rantai blok"?

174

Struktur data internal Git adalah pohon objek data, di mana setiap objek hanya menunjuk ke pendahulunya. Setiap blok data di-hash. Memodifikasi (kesalahan bit atau serangan) blok perantara akan terlihat ketika hash yang disimpan dan hash yang sebenarnya menyimpang.

Bagaimana konsep ini berbeda dari rantai blok?
Git tidak terdaftar sebagai contoh rantai blok, tetapi setidaknya dalam ringkasan, kedua deskripsi struktur data terlihat sama: blok data, penautan balik arah tunggal, hash, ...).

Jadi di mana bedanya, bahwa Git tidak disebut rantai blok?

Paebbels
sumber
2
Git tidak terdaftar sebagai contoh rantai blok Ketika saya pertama kali mencoba mempelajari apa itu blockchain, saya dirujuk ke git sebagai contoh yang paling menonjol (saya tidak memiliki tautan persis sekarang, tetapi itu dari atas daftar dikembalikan oleh pencarian Google untuk "blockchain")
Leon
2
Baik Git dan blockchain menggunakan pohon merkle sebagai struktur data mendasar yang mendasarinya. Tapi itu saja tidak membuat Git menjadi blockchain, atau sebaliknya. - Jika Anda tahu Git (dan bagian dalamnya), Anda tahu pohon merkle, yang bisa menjadi wahyu yang sangat membantu untuk memahami cara kerja blockchains.
colek
24
Para pemilih yang dekat, dapatkah Anda menjelaskan alasan Anda? Saya melihat 2 suka, komentar baik dan jawaban. Mengapa itu berbasis opini? Ini tentang struktur data dan algoritme, yang tidak sesuai dengan Git sebagai rantai blok.
Paebbels
2
Pendapat Anda bahwa "itu TIDAK dianggap ..." bitcoin.stackexchange.com/a/43627/77469
v.oddou
4
@ v.oddou Merkle trees ada sejak 1979. Hanya karena dua teknologi menggunakan pohon Merkle secara mencolok sebagai bagian dari konsep mereka, itu tidak menjadikannya sama. Tidak benar untuk mengurangi baik Git atau memblokir rantai menjadi hanya pohon merkle karena tidak satupun dari mereka adalah pohon merkle. Mereka hanya menggunakannya. Itu membuat posting yang terhubung benar-benar tidak relevan karena sebenarnya berbicara tentang pohon merkle, dan bukan memblokir rantai.
aduk

Jawaban:

53

git bukan contoh teknologi blockchain karena beberapa alasan (ini adalah yang pertama kali muncul di benak):

  1. Dalam implementasi blockchain, setiap blok diverifikasi secara independen beberapa kali sebelum ditambahkan ke blockchain. Ini memang salah satu hal yang paling penting tentang teknologi blockchain dan yang memastikan "ketidaktertarikannya". Di sisi lain, banyak gitproyek tidak memerlukan verifikasi independen dan, ketika mereka melakukannya, mereka hanya meminta satu orang untuk menandatangani perubahan sebelum dilakukan ke repositori. Karenanya, dengan paling banyak satu poin validasi yang harus Anda percayai, githancurkan salah satu prinsip inti dari teknologi blockchain.

  2. Sebuah gitrepositori tidak selalu diduplikasi di banyak server. Anda dapat bekerja dari gitrepositori secara lokal dan jika disk lokal Anda rusak, Anda akan kehilangan segalanya. Teknologi Blockchain menyiratkan reproduksi buku besar di seluruh server.

  3. Anda dapat menulis ulang gitriwayat. Di git push <remote> <branch> --forcemana <branch>diatur ke keadaan sebelumnya daripada itu <remote>akan menulis ulang sejarah. Dalam blockchain, buku besar adalah sejarah abadi.

houtanb
sumber
104
"Dalam blockchain, buku besar adalah sejarah abadi." - Begitu juga sejarah git. Saat "menulis ulang riwayat", Anda mulai dari titik di masa lalu dan menambahkan komit baru. Hal yang sama dimungkinkan dengan rantai blok dan pada kenyataannya, itu terjadi setiap kali garpu terjadi, bahkan jika kemudian ditinggalkan.
Holger Just
8
Sejauh yang saya mengerti rantai blok vs Git, Anda juga dapat menulis ulang rantai blok, kecuali jika Anda memecahkan masalah tabrakan hash. Dan untuk Git, ya Anda dapat menulis ulang, tetapi semua remote masih memiliki sejarah asli. Menulis ulang sejarah menciptakan hash baru dan pohon yang berbeda. Jika blok rantai tidak lebih dari operasi seperti itu, itu bukan argumen yang valid, karena saya bisa mengimplementasikannya jika saya mau. Atau secara terbalik saya bisa menolak dorongan paksa dengan menetapkan cabang sebagai terlindungi.
Paebbels
4
@ HolgerHanya sejarah git bisa berubah. Dalam melakukan push --forcepada satu cabang Anda kehilangan referensi untuk melakukan yang dibersihkan oleh pengumpul sampah. Ini berbeda dari garpu yang bukan penulisan ulang sejarah tetapi lebih merupakan jalur pengembangan alternatif.
houtanb
24
Bisakah kita meringkas, bahwa Git dapat dioperasikan dalam mode rantai blok dengan menerapkan alur kerja khusus dan melarang beberapa operasi?
Paebbels
4
@ Paebbels ya, saya setuju dengan itu. Secara default dan penggunaan biasa tidak, tetapi dengan alur kerja khusus itu akan menjadi.
houtanb
123

Alasan mengapa Git dan blockchains tampak serupa adalah karena keduanya menggunakan pohon merkle sebagai struktur data yang mendasarinya. Pohon merkle adalah pohon di mana setiap node diberi label dengan nilai hash kriptografis dari isinya, yang mencakup label anak-anaknya.

Grafik asiklik yang diarahkan Git persis seperti itu, pohon merkle tempat setiap node (tag, komit, pohon, atau objek gumpalan) diberi label dengan hash dari kontennya dan label "anak" -nya. Perhatikan bahwa untuk komit, istilah "anak" sedikit bertentangan dengan pemahaman Git tentang orang tua: Komit orang tua adalah anak-anak dari komit, Anda hanya perlu melihat grafik sebagai pohon yang terus tumbuh dengan me-rooting ulang.

Blockchain sangat mirip dengan ini, karena mereka juga terus tumbuh seperti itu, dan mereka juga menggunakan properti pohon merkle untuk memastikan integritas data. Tapi biasanya, blockchain dipahami lebih dari sekadar pohon merkle yang memisahkan mereka dari “pelacak konten bodoh” Git . Sebagai contoh, blockchain biasanya juga berarti memiliki sistem yang sangat terdesentralisasi pada level blok (tidak semua blok harus berada di tempat yang sama).

Memahami blockchains agak sulit (secara pribadi, saya masih jauh dari memahami segala sesuatu tentang hal itu), tetapi saya menganggap memahami internal Git sebagai cara yang baik untuk memahami pohon merkle yang pasti membantu memahami bagian mendasar tentang blockchains.

menyodok
sumber
24
Maaf, tapi tidak ada blockchain yang membawa lebih dari git. blockchain persis sama bodohnya dengan git. Jika Anda tidak percaya demikian, Anda overhyped. Jaringan rekan dan sistem konsensus adalah hal yang terpisah.
v.oddou
2
buku besar pribadi (blockchains) secara konseptual identik dengan git
Munhitsu
Biasanya, dalam repositori git ada satu root commit tetapi bisa ada sejumlah cabang. Jika Anda melihat komit terakhir di cabang sebagai komit root dan orang tua sebagai anak-anak, Anda memiliki pohon dengan banyak akar yang tumbuh ... Saya pikir itu hanya variasi pada pohon Merkle di mana referensi orang tua ada di konten alih-alih referensi anak. Mungkin ada banyak orang tua dan anak-anak sehingga itu bahkan bukan pohon.
herman
22

Mata Uang Cyber ​​seperti Bitcoin, menggunakan rantai blok kriptografi konsensus terdistribusi (pohon merkle). Penggunaan umum telah mempersingkat ini menjadi 'blockchain'

Sementara git menggunakan rantai blok (pohon merkle), ia tidak memiliki komponen kriptografi konsensus terdistribusi yang penggunaan umum istilah 'BlockChain' menyiratkan.

Brian Sullivan
sumber
17

Blockchainadalah tidak hanya rantai dari setiap blok.

Blockchainadalah ketika ada cara untuk menentukan rantai utama ketika dua atau lebih dialihkan , dan ketika tidak ada otoritas pusat diperlukan untuk penentuan itu.

Daniel Vartanov
sumber
17

Tidak seperti blokir cryptocurrency ; git tidak memiliki mekanisme konsensus p2p yang tidak dapat dipercaya.

Miguel Mota
sumber
Mengapa Anda menganggap sistem konsensus tanpa kepercayaan sebagai bagian dari rantai blok? Ada banyak cara untuk menciptakan kepercayaan pada rantai blok, karena git hanya Anda tahu bahwa segala sesuatu dalam salinan lokal Anda tidak dapat dihapus oleh tarikan berikutnya dan Anda menentukan bahwa Anda ingin perubahan dalam salinan jarak jauh. Anda hanya perlu konsensus tanpa kepercayaan saat itu kalau tidak jelas apa yang benar. Dalam beberapa git cabang bisa "benar" dan mendapatkan eventuell digabung bersama.
allo
@allo GitHub biasanya digunakan sebagai sumber utama kebenaran, tetapi apa yang menghentikan admin untuk memaksakan dan mengesampingkan sejarah? Jika tidak ada GitHub dan Anda menarik dari rekan-rekan Anda lalu bagaimana Anda menangani konflik gabungan? Bagaimana Anda menentukan hak siapa?
Miguel Mota
1
Tidak ada yang menghentikan Anda dari kekuatan mendorong. Tetapi seperti blockchain yang menjamin saya, saya dapat mendeteksinya karena rantai saya tidak dapat memverifikasi komitmen ini berdasarkan pada itu. Itulah intinya dengan blockchain, bukan persetujuan desentralisasi. Dan di git saya jelas tidak ingin memiliki protokol persetujuan untuk apa yang saya gabungkan (pembangunan bukan demokrasi), tetapi saya benar-benar membaca komitmen baru ketika menggabungkan mereka ke dalam rantai saya. Jadi salinan saya adalah benar, karena terdiri dari barang-barang saya sudah punya dan dengan demikian dapat memverifikasi (yaitu dengan melihat konflik penggabungan) dan hal-hal yang saya review dan kemudian menerima ke dalamnya.
allo
1
@ tidak ada yang benar dalam hal itu, namun saya menyatakan dalam jawaban "cryptocurrency blockchains", bukan blockchains secara umum, tetapi saya sekarang karena saya memikirkannya, jawaban saya sepertinya tidak cocok dengan pertanyaan yang diajukan karena saya adalah berpikir tentang sistem secara keseluruhan daripada struktur data yang mendasarinya
Miguel Mota
Anda sepenuhnya benar tentang perbedaan rantai blok yang digunakan dalam git dan cryptocurrency. Ini bukan jawaban untuk pertanyaan mengapa (atau jika) git tidak dianggap sebagai rantai blok, saat menggunakan istilah rigorouly. Bahkan jawaban yang diterima saat ini mirip dengan jawaban Anda. Saya masih lebih suka jawaban yang mendapat hadiah.
allo
1

Sasaran berbeda untuk blockchain dan git meskipun keduanya menggunakan pohon merkle sebagai struktur data.

SEBUAH blockchain biasanya dikelola oleh jaringan peer-to-peer yang mematuhi protokol untuk komunikasi antar-node dan memvalidasi blok baru. Setelah direkam, data dalam blok apa pun yang diberikan tidak dapat diubah secara surut tanpa perubahan semua blok berikutnya, yang memerlukan konsensus mayoritas jaringan.

Seperti Menurut whitepaper Bitcoin:

Versi elektronik murni peer-to-peer akan memungkinkan pembayaran online dikirim langsung dari satu pihak ke pihak lain tanpa melalui lembaga keuangan. Tanda tangan digital menyediakan bagian dari solusi, tetapi manfaat utama hilang jika pihak ketiga tepercaya masih diperlukan untuk mencegah pengeluaran ganda. Kami mengusulkan solusi untuk masalah pengeluaran ganda menggunakan jaringan peer-to-peer. Stempel waktu transaksi jaringan dengan hashing mereka ke dalam rantai bukti-of-work berbasis hash yang sedang berlangsung, membentuk catatan yang tidak dapat diubah tanpa mengulangi bukti-of-work. Rantai terpanjang tidak hanya berfungsi sebagai bukti dari urutan peristiwa yang disaksikan, tetapi bukti bahwa itu berasal dari kumpulan kekuatan CPU terbesar. Selama mayoritas daya CPU dikendalikan oleh node yang tidak bekerja sama untuk menyerang jaringan, mereka Saya akan menghasilkan penyerang rantai dan keluar terpanjang. Jaringan itu sendiri membutuhkan struktur minimal. Pesan disiarkan berdasarkan upaya terbaik, dan node dapat pergi dan bergabung kembali dengan jaringan sesuka hati, menerima rantai bukti kerja terlama sebagai bukti dari apa yang terjadi ketika mereka pergi

Sementara Gitadalah sistem kontrol versi terdistribusi untuk melacak perubahan dalam kode sumber selama pengembangan perangkat lunak. Ini dirancang untuk mengoordinasikan pekerjaan di antara programmer, tetapi dapat digunakan untuk melacak perubahan dalam set file apa pun. Tujuannya termasuk kecepatan, integritas data, dan dukungan untuk alur kerja non-linear yang didistribusikan.

Sesuai dengan Linus Torvalds:

Dalam banyak hal Anda hanya dapat melihat git sebagai sistem file - itu content-addressable, dan memiliki gagasan versi, tetapi saya benar-benar mendesainnya datang pada masalah dari sudut pandang orang sistem file (hei, kernel adalah apa yang saya lakukan) , dan saya sebenarnya sama sekali tidak tertarik untuk menciptakan sistem SCM tradisional.

asing177
sumber
0

Seperti kata poke :

Git dan Blockchains tampak serupa karena keduanya menggunakan Merkle Trees untuk menyimpan transaksi dengan timestamp yang dipesan. Pohon merkle adalah struktur data pohon di mana setiap node diberi label dengan nilai hash kriptografis dari isinya, yang mencakup label anak-anaknya.

Perbedaan pertama adalah fungsi Hash : Blockchain memiliki fungsi hash yang sangat mahal sehingga setiap blok harus ditambang, sedangkan "blok" Git dapat dibuat dengan pesan komit sederhana.

Tujuan Bitcoin adalah untuk menambah kepercayaan pada urutan transaksi. Fokusnya adalah pada rantai terpanjang, karena itu yang paling mahal untuk dihitung dan dengan demikian kemungkinan besar menjadi kebenaran.

Bitcoin menyelesaikan ini dengan mensyaratkan bahwa hash memenuhi parameter tertentu (dimulai dengan jumlah 0s tertentu), dengan menambahkan nilai ("nonce") dalam pesan sampai hash yang memuaskan ditemukan. Ini membutuhkan upaya untuk menemukan, tetapi hanya 1 perhitungan untuk memverifikasi untuk suatu nonce; dan jika beberapa nonces menghasilkan hash yang memuaskan, maka satu akan lebih rendah dan dianggap sebagai kebenaran. Skema autentikasi lain membuat hash dapat dipercaya dengan memusatkan penerbitan hash ke otoritas, mungkin memilih dengan perjanjian jaringan, atau metode lain.

Data Blockchain terbatas pada transaksi, yang harus sesuai dengan validasi. Transaksi harus valid untuk dimasukkan dalam blok berikutnya. Transaksi Bitcoin terkait dengan sesuatu yang penting di dunia nyata yang dibenarkan menggunakan blok mahal untuk mencatat transfer ini, seperti pertukaran nilai uang. Kami sebenarnya tidak peduli dengan buku besar terakhir, ini adalah metafora untuk sesuatu di dunia nyata.

Sebaliknya, blok Git bersifat arbitrer, karena komit dapat berisi sejumlah data. Nilainya terletak pada perubahan data yang diorganisasikan ke dalam pohon git karena kami peduli dengan produk akhir, itu divalidasi oleh keberadaan repositori git.

Tujuan Git adalah untuk memungkinkan "buku besar" murah untuk melacak beberapa alternatif produk."Buku besar" di Git adalah yang kami pedulikan, ini adalah produk akhir kami; data transaksi hanya mencatat bagaimana produk itu dibangun. Kami ingin membuatnya menjadi sangat murah untuk membuat beberapa versi produk akhir, cukup biaya overhead untuk meminta pencipta mencatat bagaimana mereka membuat produk ini. Tidak ada validasi eksplisit dilakukan pada data, Anda mempertahankan produk akhir jika terlihat bagus, dan keberadaan itu membuatnya berguna untuk memiliki rantai kreasi produk ini. Jika produk akhir buruk atau urutan komit tidak valid, "buku besar" ini akan dihapus selama pengumpulan sampah.

Perbedaan kedua adalah bahwa transaksi Blockchain harus berasal dari sumber yang valid sebelumnya. Di Git, kami tidak peduli data apa yang Anda gunakan untuk memperpanjang pohon. Di Blockchain, transaksi harus berasal dari sumber yang valid sebelumnya. Dalam hal itu, Git melacak ekstensi dari lingkungan kita, sedangkan Blockchain melacak pertukaran nilai dalam lingkungan tertutup.

Alex F
sumber