区块链
区块链:是一种特殊的分布式数据库
区块链的而主要作用:是存储信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
任何人都可以架构服务器,加入区块链网络,成为一个节点。区块链的世界里没有中心点,每个节点都是平等的,都保存着整个数据库。可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
区块链的最大特点:
区块链没有管理员,它是彻底无中心的。其它的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止居于中心地位的管理当局。
正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他的使用者就都必须听命于他们了
区块链:由一个个区块组成。区块很像数据库的记录,每次写入数据,就是创建一个区块
每个区块包含两个部分:
* 区块头:记录当前区块的元信息
* 区块体:实际数据
区块头包含了当前区块的多项元信息
* 生成时间
* 实际数据(即去块体)的Hash
* 上一个区块的Hash
所谓Hash就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的Hash长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的Hash一定是不同的。
Hash = SHA256(区块头)
上面就是区块Hash的计算公式,Hash由区块头唯一决定,SHA256是区块链的eHash算法
前面说过,区块头包含很多内容,其中有当前去块体的Hash(注意是‘去块体’的Hash,而不是整个区块),还有上一个区块的Hash。这意味着,如果当前区块的内容变了,或者上一个区块的Hash变了,一定会引起当前区块的Hash改变。
这一点对区块链有重大意义。如果有人修改了一个区块,改区块的Hash就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,Hash的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
每个区块都连着上一个区块,这也是‘区块链’这个名字的由来。
采矿:
由于必须保证节点之间的同步,所以新区块的添加速度不能太快。事项一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新去开生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。
区块链的分叉:
即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为他们都连着前一个区块,就形成了分叉。如何解决呢?
现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分叉在分叉点后面,先达到6个新区块(称为‘六次确认’)。按照10分钟一个区块计算,一小时就可以确认。
由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的比特链。
总结:
区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年了,没有出现大的问题,这说明它是可行的。
但是,为了保证数据的可靠性,区块链也有自己的e代驾。意识效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。
因此,区块链的使用场景,其实非常有限。
1. 不存在所有成员都信任的管理当局
2. 写入的数据不要求实时使用
3. 挖矿的收益能够弥补本身的成本
目前,区块链最大的应用场景(可能也是唯一应用),就是以比特币为代表的加密货币。