不适合人类阅读的学习笔记
简述
区块链在当今可以说是非常的火了,但也有人批判区块链被炒得过于浮夸了。这里我们姑且不论,毕竟这只是一门技术,关键在于我们怎么利用它。
区块链是一种特殊的 分布式数据库,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
区块链的数据安全性问题
区块链由一个个区块(block)构成,区块很像数据库的记录,每次写入数据,就是创建一个区块。
每个区块包含两个部分:区块头(head)——记录当前区块的元信息,区块体(body)——实际信息
区块头的元信息包括:生成时间,实际数据(即区块体)的 Hash,上一个区块的 Hash等等。区块链的 Hash 长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。因此,每个区块的hash值一定是不同的,可以根据hash值区分不同的区块。而如果区块的内容变了,那么他的hash值也一定会变
一个区块的hash是对这个区块的区块头计算的。区块头包含了区块体的hash(注意不是整个区块的hash)和上个区块的hash(这个是整个区块的hash),只要这个区块的内容或者上个区块的hash(内容)变了,那么一定会引起这个区块内容的改变。因此,要想修改某个区块,那么就会引起一系列连锁反应,被修改区块后面的所有的区块的内容都必须修改,否则这个被改掉的区块就脱离区块链了,而这是不可能的,因为计算hash值是非常耗费时间和资源的,除非他一个人控制了全网一半以上的计算能力。 因此,区块一旦被写入便不可能被修改了,就像发生过的历史永远刻在时间上了一样,因此区块链的数据是十分安全可靠的。
区块链的分叉
在上述区块链的添加过程中,有一个问题,就是:如果有一个节点同时有两个区块加入,他们都连向前一个区块,那么这时候就形成了 分叉。
现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认。(区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个)。因此新的区块链的生成规则就是,拥有计算能力更强的那条链,就是正宗的区块链。
回顾
区块链作为无人管理的分布式数据库,从2009年运行至今无明显问题,体现了其设计的合理性。
但是,有利必有弊。区块链的安全可靠是建立在效率和能耗的牺牲上的。生成一个区块最少要等待十分钟,而等待所有节点同步就更久了。同时,生成一个新的区块,需要矿工做许多无意义的挖矿,极其地耗费能源。
展望
- 区块链虽然有许多争议,但是其在某些领域确实有其独特的作用。其最大的特点就是数据的追踪和溯源。对于管理那些流通的物品,比如虚拟货币,一些农产品,枪支等等,区块链可以十分有效地保证这些领域的物资安全可靠性。
最后更新于2018.4.28