Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Git不被视为“一个”;区块链;?_Git_Hash_Blockchain - Fatal编程技术网

为什么Git不被视为“一个”;区块链;?

为什么Git不被视为“一个”;区块链;?,git,hash,blockchain,Git,Hash,Blockchain,Git的内部数据结构是一棵数据对象树,其中每个对象只指向其前身。每个数据块都是散列的。当保存的哈希值与实际哈希值发生偏差时,会注意到修改(位错误或攻击)中间块 这个概念与区块链有何不同? Git没有被列为块链的示例,但至少在摘要中,两种数据结构描述看起来都很相似:数据块、单向反向链接、散列等等 那么区别在哪里,Git不被称为区块链呢?Git不是区块链技术的一个例子,原因有几个(首先想到的是这些): 在区块链实施中,在将每个区块添加到区块链之前,对其进行多次独立验证。这确实是区块链技术最重要的事情

Git的内部数据结构是一棵数据对象树,其中每个对象只指向其前身。每个数据块都是散列的。当保存的哈希值与实际哈希值发生偏差时,会注意到修改(位错误或攻击)中间块

这个概念与区块链有何不同?
Git没有被列为块链的示例,但至少在摘要中,两种数据结构描述看起来都很相似:数据块、单向反向链接、散列等等


那么区别在哪里,Git不被称为区块链呢?

Git
不是区块链技术的一个例子,原因有几个(首先想到的是这些):

  • 在区块链实施中,在将每个区块添加到区块链之前,对其进行多次独立验证。这确实是区块链技术最重要的事情之一,也是确保其“不可包装性”的因素。另一方面,许多
    git
    项目不需要独立验证,当它们需要独立验证时,它们只需要一个人在更改提交到存储库之前签字。因此,
    git
    打破了区块链技术的一个核心原则,您最多只能信任一个验证点

  • git
    存储库不一定在许多服务器上重复。您可以在本地使用
    git
    存储库,如果您的本地磁盘损坏,您将丢失一切。区块链技术意味着跨服务器复制账本


  • Git和区块链之所以看起来相似,是因为它们都使用作为基础数据结构。merkle树是一种树,其中每个节点都用其内容的加密哈希值进行标记,其中包括其子节点的标签

    Git的有向无环图就是一个merkle树,其中每个节点(标记、提交、树或blob对象)都用其内容的散列和“子节点”的标签进行标记。请注意,对于提交,“子”一词与Git对父项的理解有点冲突:父项提交是提交的子项,您只需将该图视为一棵树,它通过重新根继续生长

    区块链与此非常相似,因为它们也以这种方式不断增长,并且它们还使用其merkle树属性来确保数据完整性。但通常情况下,区块链不仅仅被理解为merkle树,而merkle树正是区块链与市场分离的地方。例如,区块链通常还意味着在区块层面上拥有一个高度分散的系统(并非所有区块都需要位于同一位置)


    理解链链有点困难(个人来说,我还远远不能理解它的一切),但是我认为理解Git内部是理解Melkle树的一个好方法,这肯定有助于理解BooChants的一个基本部分。git没有p2p无信任共识机制

    比特币等网络货币使用分布式一致加密区块链(merkle树)。常见用法将其缩短为“区块链”


    虽然git使用块链(merkle树),但它缺少“块链”这一术语的常见用法所暗示的分布式一致加密组件。

    块链是而不是任何块链


    区块链
    是指当两个或多个区块链被转移时,有一种确定主链的方法,并且不需要中央机构来确定主链。

    区块链和git的目标不同,尽管两者都使用merkle树作为数据结构

    区块链
    通常由遵守用于节点间通信和验证新块的协议的对等网络管理。一旦记录,任何给定块中的数据都不能在不更改所有后续块的情况下进行追溯性更改,这需要网络多数人的一致意见

    根据比特币白皮书:

    纯点对点版本的电子现金将允许在线支付 直接从一方发送到另一方的付款,无需 通过金融机构。数字签名提供了 这是一个解决方案,但是如果有一个可信的第三方 为了防止双重开支,仍然需要采取措施。我们提出了一个解决方案 使用对等网络的双重开销问题。网络 通过将事务散列到正在进行的事务链中,为事务添加时间戳 基于哈希的工作证明,形成无法更改的记录 没有重做工作证明。最长的链条不仅服务于 作为见证事件顺序的证据,但证明它发生了 来自最大的CPU电源池。只要占用大部分CPU电源 由不合作攻击网络的节点控制, 他们将生成最长的链并超过攻击者。网络 它本身需要最小的结构。信息以最好的方式广播 努力的基础上,节点可以随意离开和重新加入网络, 接受最长的工作链证明作为发生情况的证明 他们不在的时候

    Git是一个分布式版本控制系统,用于在软件开发过程中跟踪源代码的更改。它是为协调程序员之间的工作而设计的,但它可以用于跟踪任何一组文件中的更改。其目标包括速度、数据完整性以及对分布式非线性工作流的支持

    根据Linus Torvalds的说法:

    在许多方面,您可以将git看作一个文件系统——它是 内容可寻址,它有版本控制的概念,但我真的 从文件系统的角度设计它来解决这个问题 人(嘿,内核是我做的),一个