Чому Git не вважається "ланцюгом блоків"?


174

Внутрішня структура даних Git - це дерево об'єктів даних, де кожен об'єкт вказує лише на свого попередника. Кожен блок даних хешований. Змінюючи (бітову помилку або атаку) проміжний блок буде помічено, коли збережений хеш і фактичний хеш відхиляться.

Чим ця концепція відрізняється від блокової ланцюга?
Git не вказаний як приклад блокових ланцюгів, але принаймні у підсумках обидва описи структури даних виглядають однаково: блок даних, односпрямоване зворотне посилання, хеші, ...).

Тож де різниця в тому, що Git не називається блок-ланцюгом?


2
Git не вказаний як приклад блокових ланцюгів Коли я вперше спробував дізнатися, що таке блокчейн, мене назвали git як найвидатніший приклад (у мене зараз немає точного посилання, але це було з вершини список, повернутий Google пошуком "blockchain")
Леон

2
І Git, і blockchain використовують мерклеві дерева в якості основної структури даних. Але це одне не робить Git блокчеєм, або навпаки. - Якщо ви знаєте Git (та його внутрішні), то ви знаєте меркливі дерева, але це може бути дуже корисним відкриттям для розуміння того, як працюють блокчейки.
ткнути

24
Шановні близькі виборці, чи можете ви пояснити свої причини? Я бачу 2 лайки, хороші коментарі та відповідь. Чому вона заснована на думці? Йдеться про структури даних та алгоритми, які не можуть кваліфікувати Git як блок-ланцюг.
Paebbels

2
На вашу думку, "це НЕ вважається ..." bitcoin.stackexchange.com/a/43627/77469
v.oddou

4
@ v.oddou Дерева Меркле існують з 1979 року. Тільки тому, що дві технології широко застосовують дерева Меркле як частину їхньої концепції, це не робить їх однаковими. Неправильно зводити або Git, або блокувати ланцюги до просто меркливих дерев, оскільки жодне з них не є меркле. Вони лише ними користуються. Це робить пов'язаний пост абсолютно несуттєвим, оскільки він насправді говорить про меркле дерева, а не блокує ланцюги.
ткнути

Відповіді:


53

git не є прикладом технології blockchain з кількох причин (це були перші, які прийшли в голову):

  1. У реалізації блокчейна кожен блок перевіряється незалежно кілька разів, перш ніж він буде доданий до блокчейн. Це справді одна з найважливіших речей щодо технології blockchain, і це те, що забезпечує її "непридатність". З іншого боку, для багатьох gitпроектів не потрібна незалежна перевірка, і, коли вони робляться, вони вимагають лише однієї особи, яка підписується на зміну, перш ніж вона буде прийнята до сховища. Отже, щонайменше один момент підтвердження, якому ви повинні довіряти, gitпорушує один із основних принципів технології blockchain.

  2. gitРепозиторій не обов'язково дублюється на багатьох серверах. Ви можете працювати з gitсховища локально, і якби ваш локальний диск був пошкоджений, ви втратили б усе. Технологія blockchain передбачає відтворення книги на серверах.

  3. Можна переписати gitісторію. git push <remote> <branch> --force, Де <branch>встановлюється в попередній стан , ніж при <remote>б переписати історію. У блокчейнах головна книга - це незмінна історія.


104
"У blockchains головна книга - це незмінна історія". - Так є історія git. "Переписуючи історію", ви починаєте з пункту минулого та додаєте нові коміти. Те саме можливо з блоковими ланцюгами, і насправді це відбувається кожного разу, коли виникає вилка, навіть якщо її згодом відмовити.
Холгер Тільки

8
Наскільки я розумію блок-ланцюги проти Git, ви також можете переписати блок-ланцюги, якщо ви не вирішите проблему хеш-зіткнення. А для Git - так, ви можете переписати, але всі видалення все ще мають оригінальну історію. Переписування історії створює нові хеші та інше дерево. Якщо ланцюжок блоків не виконує таку операцію, це не є коректним аргументом, тому що я міг би її реалізувати, якщо хочу. Або в зворотному порядку я можу відхилити примусові натискання, встановивши гілку як захищену.
Paebbels

4
@HolgerJust історія git змінена. Працюючи push --forceна одній гілці, ви втрачаєте посилання на документи, які очищуються сміттєзбірником. Це відрізняється від вилки, яка є не переписуванням історії, а скоріше альтернативним шляхом розвитку.
хотанб

24
Чи можемо ми підсумувати, що Git може працювати в режимі блокової ланцюга, застосовуючи спеціальний робочий процес і забороняючи кілька операцій?
Paebbels

4
@Paebbels так, я би погодився з цим. За замовчуванням і в регулярному використанні це не так, але зі спеціальним робочим процесом це було б.
хотанб

123

Причина, по якій Git і blockchains виглядають подібними, полягає в тому, що вони обидва використовують дерева merkle як основу структури даних. Меркелеве дерево - це дерево, де кожен вузол позначений криптографічним значенням хешу їх вмісту, що включає мітки його дітей.

Ациклічний графік Гіта - це саме те, меркеле дерево, де кожен вузол (тег, фіксація, дерево або об'єкт блобу) позначений хешем його вмісту та міткою його "дочірки". Зауважте, що для комітетів термін "дочірній" дещо суперечить розумінням Гітом батьків: Батьківські коміти є дітьми комітетів, потрібно просто дивитися на графік як на дерево, яке постійно зростає шляхом його повторного вкорінення.

Blockchains дуже подібні до цього, оскільки вони також постійно ростуть, і вони також використовують його властивість дерева merkle для забезпечення цілісності даних. Але зазвичай блокчейн розуміють як набагато більше, ніж просто мерклі дерева, де вони відокремлюються від " глупого трекера вмісту" Гіта . Наприклад, blockchains зазвичай також означає наявність сильно децентралізованої системи на рівні блоку (не всі блоки повинні знаходитися в одному місці).

Зрозуміти блокчейн - це складно (особисто, я все ще далеко від розуміння всього про це), але я вважаю розуміння внутрішніх справ Git хорошим способом зрозуміти меркливі дерева, що безумовно допомагає зрозуміти фундаментальну частину про блокчейни.


24
Вибачте, але ніде blockchains не приносить нічого іншого, ніж git. blockchains такі ж дурні, як git. Якщо ви не вірите в це, ви переоцінені. Мережа однолітків та консенсус-системи - це окрема річ.
v.oddou

2
приватні книги (blockchains) концептуально ідентичні git
Munhitsu

Як правило, у сховищі git є одна коренева фіксація, але може бути будь-яка кількість гілок. Якщо ви бачите останнє зобов’язання у гілці як кореневе зобов’язання, а батьки як діти, у вас є дерево з багатьма коріннями, які ростуть ... Я думаю, що це лише варіація на дереві Меркле, де батьківські посилання містяться в вмісті замість посилання на дітей. Тут може бути кілька батьків і дітей, тому це навіть не дерево.
герман

22

Кібер-валюти, як Біткойн, використовують розподілений консенсус криптографічного ланцюга блоків (меркле дерево). Поширене використання скоротило це до "blockchain"

У той час як git використовує ланцюжок блоків (меркле дерево), йому не вистачає розподілених консенсусів криптографічних компонентів, що загальне використання терміна "BlockChain" означає.


17

Blockchainце не просто будь-який ланцюжок будь-яких блоків.

Blockchainце коли існує спосіб визначення основної ланцюга, коли два або більше відволікаються , і коли для цього визначення не потрібен центральний орган.


17

На відміну від блокчейн криптовалют ; git не має надійного механізму консенсусу p2p.


Чому ви вважаєте недовірну систему консенсусу частиною блок-ланцюга? Існує багато способів завоювати довіру до ланцюга блоків, адже для git це просто те, що ви знаєте, що все з вашої локальної копії неможливо видалити наступним потягом, і ви вказуєте, що ви хочете, щоб зміни були у віддаленій копії. Вам потрібен недовірливий консенсус лише тоді, коли інакше буде незрозуміло, що правильно. У git декілька гілок можуть бути "правильними" і об'єднувати eventuell разом.
Алло

@allo GitHub, як правило, використовується як центральне джерело істини, але що заважає адміністратору силою натискати та переосмислювати історію? Якщо GitHub не було, і ви витягнули з своїх однолітків, то як ви вирішите конфлікти злиття? Як визначити, чиє право?
Мігель Мота

1
Ніщо не зупиняє вас від силового натиску. Але як блокчейн гарантує мені, я можу його виявити, оскільки мій ланцюг не може перевірити ці зобов'язання як такі, що базуються на ньому. Це справа з блокчейном, а не децентральною згодою. І в git явно не хочу мати протокол згоди на те, що я зливаю (розвиток - це не демократія), але я фактично читаю нові комітети, коли об'єдную їх у свій ланцюжок. Тож моя копія є правильною, тому що вона складається з матеріалів, які я вже маю, і таким чином я можу перевірити (тобто, побачивши конфлікти злиття) та матеріалів, які я переглядаю, а потім приймаю до неї.
Алло

1
@allo ви правдиві в цьому відношенні, проте я відповів, що я відповів "blockchains криптовалюти", а не blockchains взагалі, але тепер, коли я думаю про це, моя відповідь не дуже відповідає питанню, яке мені задають, тому що я був думати про систему в цілому, а не про основні структури даних
Мігель Мота,

Ви абсолютно праві щодо різниці блокових ланцюгів, що використовуються в git та криптовалютах. Це просто не відповідь на питання, чому (або якщо) git не вважається ланцюгом блоків при використанні терміна rigorouly. Навіть прийнята на даний момент відповідь схожа на вашу відповідь. Я все ще віддаю перевагу відповіді, яка отримала щедрість.
Алло

1

Цілі відрізняються від blockchain та git, хоча обидва використовують дерева merkle як структуру даних.

A, blockchainяк правило, керується одноранговою мережею, яка дотримується протоколу для зв'язку між вузлами та перевірки нових блоків. Після запису дані в будь-якому даному блоці не можуть бути змінені заднім числом без зміни всіх наступних блоків, що вимагає консенсусу більшості мережі.

Як повідомляє Біткойн:

Суто рівноправна версія електронних готівкових коштів дозволить переказувати онлайн-платежі безпосередньо від однієї сторони до іншої, не проходячи через фінансову установу. Цифрові підписи є частиною рішення, але основні переваги втрачаються, якщо для запобігання подвійних витрат все-таки потрібна довірена третя сторона. Ми пропонуємо вирішити проблему подвійних витрат за допомогою однорангової мережі. Мережеві часові позначки транзакцій шляхом їх перемішування в поточний ланцюжок хеш-перевірки роботи, утворюючи запис, який неможливо змінити без повторного підтвердження роботи. Найдовший ланцюг слугує не лише доказом послідовності подій, але й доказом того, що він походить від найбільшого пулу потужності процесора. Поки більшість потужностей процесора контролюються вузлами, які не співпрацюють для атаки на мережу, вони " Створять найдовших зловмисників ланцюга та випередження. Сама мережа вимагає мінімальної структури. Повідомлення транслюються з найкращого зусилля, і вузли можуть за власним бажанням залишати мережу та знову приєднуватися до неї, приймаючи найдовший ланцюжок перевірки роботи як доказ того, що сталося, поки їх не було.

Хоча Gitце розподілена система контролю версій для відстеження змін у вихідному коді під час розробки програмного забезпечення. Він призначений для координації роботи серед програмістів, але його можна використовувати для відстеження змін у будь-якому наборі файлів. Її цілі включають швидкість, цілісність даних та підтримку розподілених, нелінійних робочих процесів.

Як стверджує Лінус Торвальдс:

Багато в чому ви можете просто бачити git як файлову систему - це адресована контентом і має поняття про версію, але я дійсно спроектував це з проблемою з точки зору людини файлової системи (ей, ядра - це я роблю) , і я насправді абсолютно не зацікавлений у створенні традиційної системи SCM.


0

Як сказав poke :

Git і Blockchains виглядають схожими, оскільки вони обидва використовують Merkle Trees для зберігання впорядкованих транзакцій, розмічених часом. Меркелеве дерево - це структура даних дерева, де кожен вузол позначений криптографічним значенням хешу їх вмісту, що включає мітки його дочірніх.

Перша відмінність полягає у функції Hash : Blockchain має дуже дорогу хеш-функцію, так що кожен блок повинен бути видобутий, коли "блок" Git можна створити за допомогою простого повідомлення про фіксацію.

Мета Bitcoin - додати довіру до порядку транзакцій. Основна увага приділяється найдовшій ланцюжку, оскільки обчислити це найдорожче, і, отже, це правда.

Біткойн виконує це, вимагаючи, щоб хеш відповідав певним параметрам (починається з певної кількості 0с), збільшуючи в повідомленні значення ("немає"), поки не знайдеться задовільний хеш. Для цього потрібні зусилля для пошуку, але лише 1 розрахунок, щоб перевірити його на відсутність; і якщо декілька значень дають задовільний хеш, то один буде нижчим і вважатиметься правдою. Інші схеми аутентифікації роблять хеш надійним, централізуючи видачу хешу органу, можливо, проголосованому мережевою угодою чи іншим методом.

Дані блокчейн обмежені транзакціями, які повинні відповідати валідації. Трансакція повинна бути дійсною для включення в наступний блок. Угода про біткойн відповідає чомусь важливому в реальному світі, що виправдовує використання дорогого блоку для запису такого переказу, як, наприклад, обмін грошової вартості. Нас нас справді не цікавить остаточна книга, це метафора чогось у реальному світі.

Навпаки, блоки Git є довільними, оскільки фіксація може містити будь-яку кількість даних. Цінність полягає у зміні даних, що впорядковуються в дереві git, оскільки ми дбаємо про кінцевий продукт, це підтверджено наявністю сховища git.

Мета Git - дозволити дешевим «книгам» відстежувати декілька альтернатив продукту. «Ведення книги» в Git - це те, про що ми дбаємо, це наш кінцевий продукт; дані транзакцій просто записують, як продукт був побудований. Ми хочемо зробити дуже дешевим виготовлення декількох версій кінцевої продукції, достатньо накладних витрат, щоб вимагати від творця записати, як вони побудували цей продукт. Ніякої чіткої перевірки даних не робиться, ви підтримуєте кінцевий продукт, якщо він виглядає добре, і це існування робить корисним ланцюжок створення цього продукту. Якщо кінцевий продукт поганий або порядок комісій недійсний, ця "книга" буде видалена під час вивезення сміття.

Друга відмінність полягає в тому, що транзакції Blockchain повинні надходити з попереднього дійсного джерела. У Git нам не байдуже, які дані ви використовуєте для розширення дерева. У Blockchain транзакції повинні надходити з попереднього дійсного джерела. У цьому сенсі Git відстежує розширення нашого середовища, тоді як Blockchain відстежує обмін цінності в закритому середовищі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.