Git的内部数据结构是一个数据对象树,其中每个对象只指向它的前一个对象。每个数据块都是散列的。当保存的哈希值与实际哈希值偏离时,修改中间块(比特错误或攻击)将被注意到。
这个概念与区块链有何不同? Git并没有被列为区块链的例子,但至少在摘要中,这两个数据结构的描述看起来很相似:数据块、单向反向链接、哈希等等)。
那么区别在哪里,Git不被称为区块链?
Git的内部数据结构是一个数据对象树,其中每个对象只指向它的前一个对象。每个数据块都是散列的。当保存的哈希值与实际哈希值偏离时,修改中间块(比特错误或攻击)将被注意到。
这个概念与区块链有何不同? Git并没有被列为区块链的例子,但至少在摘要中,这两个数据结构的描述看起来很相似:数据块、单向反向链接、哈希等等)。
那么区别在哪里,Git不被称为区块链?
当前回答
像比特币这样的网络货币,使用分布式共识加密区块链(默克尔树)。常用的缩写是'区块链'
虽然git使用区块链(默克尔树),但它缺乏术语“区块链”所暗示的分布式共识加密组件。
其他回答
没有理由不认为Git是区块链。Git专注于一组非常特殊(也非常重要)的资产:源代码。在这种情况下,共识是手动的,我们可以认为事务(提交)在合并到发布分支时被接受。 实际上,考虑到事务(提交)的数量,Git是迄今为止最成功的区块链。
摘自:https://arxiv.org/pdf/1803.00892.pdf ”……我们定义了“区块链”和“区块链网络”,然后讨论了两种非常不同的、众所周知的区块链网络:加密货币和Git存储库……”
请参见下一篇文章,解释为什么谷歌使用一个单一的monorepo作为单一的真相来源(基本上,作为区块链)。 https://research.google/pubs/pub45424/
Git和区块链之所以看起来相似,是因为它们都使用默克尔树作为底层数据结构。merkle树是一种树,其中每个节点都用其内容的加密散列值标记,其中包括其子节点的标签。
Git的有向无环图就是这样,一个merkle树,其中每个节点(标签、提交、树或blob对象)都用其内容的散列及其“子”的标签进行标记。注意,对于提交,“子”术语与Git对父提交的理解有点冲突:父提交是提交的子提交,您只需要将图看作是一棵通过重新根来不断生长的树。
区块链与此非常相似,因为它们也在以这种方式增长,并且它们也在使用其默克尔树属性来确保数据完整性。但通常情况下,区块链不仅仅被理解为默克尔树,这是它们与“愚蠢的内容跟踪器”Git分开的地方。例如,区块链通常还意味着在区块级别上拥有一个高度分散的系统(并非所有的区块都需要在同一个地方)。
理解区块链有点困难(就我个人而言,我还远远没有理解它的一切),但我认为理解Git内部是理解默克尔树的好方法,这肯定有助于理解区块链的基本部分。
区块链不是任意区块的任意链。
区块链是指当两个或多个主链被转移时,有一种方法可以确定主链,并且不需要中央机构来确定主链。
与加密货币区块链不同;Git没有p2p的无信任共识机制。
理解任何技术的一个好方法是问,“它能解决什么问题”?Git的用例非常简单,因为它的预期用途是版本控制/源代码控制。
Git是什么?
“Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有内容。”参见https://www.git-scm.com/
所以很明显,要解决的用例问题是“分布式版本控制”。仅此而已,不多不少。对此有许多现成的证据。
版本控制——也称为源代码控制或修订控制——是跟踪和管理对代码和其他文件所做更改的重要软件开发实践。它与源代码管理密切相关。
什么是区块链?
“区块链是一种点对点去中心化分布式账本技术,它使任何数字资产的记录透明且不可更改,并且不涉及任何第三方中介。这是一项新兴的革命性技术,因其能够以可扩展的方式降低风险和欺诈而吸引了大量公众的关注。
没有重复区块链的技术细节已经概述在前面的答案(即。挖矿,分布式网络),简单地说,区块链是一个完全不同于Git解决的问题的解决方案。