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?
git
hash
blockchain
Paebbels
sumber
sumber
Jawaban:
git
bukan contoh teknologi blockchain karena beberapa alasan (ini adalah yang pertama kali muncul di benak):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
git
proyek 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,git
hancurkan salah satu prinsip inti dari teknologi blockchain.Sebuah
git
repositori tidak selalu diduplikasi di banyak server. Anda dapat bekerja darigit
repositori secara lokal dan jika disk lokal Anda rusak, Anda akan kehilangan segalanya. Teknologi Blockchain menyiratkan reproduksi buku besar di seluruh server.Anda dapat menulis ulang
git
riwayat. Digit push <remote> <branch> --force
mana<branch>
diatur ke keadaan sebelumnya daripada itu<remote>
akan menulis ulang sejarah. Dalam blockchain, buku besar adalah sejarah abadi.sumber
push --force
pada 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.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.
sumber
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.
sumber
Blockchain
adalah tidak hanya rantai dari setiap blok.Blockchain
adalah ketika ada cara untuk menentukan rantai utama ketika dua atau lebih dialihkan , dan ketika tidak ada otoritas pusat diperlukan untuk penentuan itu.sumber
Tidak seperti blokir cryptocurrency ; git tidak memiliki mekanisme konsensus p2p yang tidak dapat dipercaya.
sumber
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:
Sementara
Git
adalah 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:
sumber
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.
sumber