git与区块链
最近这几天,沉寂已久的区块链突然火了起来,各种文章铺天盖地,起因是,10月24号习大大把区块链技术提升到国家高度,希望借此技术能够实现弯道超车。说起区块链,不得不提比特币,前几年比特币大火,也带火了区块链技术,笔者还曾长时间跟进一个区块链创新项目storj。当时也简单了解过背后的原理,其实,对于现在的码农来说,区块链技术并不神秘,我们每天在用的git就跟它比较相似。本文就来简单对比下这两种技术的异同。
相似点
可追溯
- 区块链,顾名思义,是由区块组成的链式结构,每个区块都包含前一个区块的索引(除了第一块,即创世区块),所以从任一块出发,可以到追溯之前所有的交易。
- git在每次提交代码时,会将本次修改内容打成一个快照(可以理解为区块),并跟上一次提交进行关联(除了第一次commit),这样也可以从任意提交记录出发,追溯之前的提交。
分布式存储
- 区块链,每一个节点都记录了完整的数据。
- 通过git clone后,本地不仅会保存完整的代码,还保存了每次提交的详细信息,可以追溯到每行代码的提交人。
支持离线访问
既然本地保存了完整的数据,当然可以离线访问。
不可篡改
无论是区块链还是git,每个块的唯一标示都是根据块内容算出来的,并且保存了上一个块的信息,如果修改,标示信息会不一致(当然这里可能会有hash碰撞,但是概率极低),所以是无法修改的。
差异点
合并方式
- 区块链是基于集体共识(POW/POS)来合入一个区块,形成最长链,最长链即为主链。
- git一般是由项目的管理者合入一个提交,管理者可能是一个人,或者几个人的小团队,但是权利掌握在少数人手里。
一致性
- 区块链要求强一致性,冲突时根据链的长度决定,自动废弃多余分支
- git不追求强一致性,人工解决冲突
总结
git和区块链在很多方面都很像,不知道谁借鉴的谁,不过从时间上看,git发起于2005年,区块链(比特币)发起于2008年,可能区块链借鉴了git的一些思想。但也不好说,可能世界就是这样奇妙,就像微积分的出现,当年莱布尼兹和牛顿几乎同时发明了这一伟大的工具,可能这就是英雄所见略同。
鉴于笔者对区块链了解不深,如有纰漏,还望批评指正。