区块链这么火,咱也跟个风。
一、前言
最近,银行总行关于数字货币即将推出的消息频传,把BTC也带得来了一波反弹。
借着这个风,我们也研究一下区块链。
通常大家说到区块链,实际包括两部分概念:
第一个概念,就是狭义上的区块链。听起来很高大上又很复杂,但追根到底,它就是一种加密应用。
提起加密,我们脑袋里会显现出:DES、3DES、AES、RSA、DSA、SHA-1、MD5……很多很多。
狭义的区块链,其实就是使用这些加密技术而形成的一种应用。
这个应用又分为两个部分:
- 区块
区块就是存放数据的一个独立空间。
不好理解?举个例子:我们在纸上写个作文,写了好几篇。那每一篇纸上,都会有一些我们写的内容。这个内容,就是数据。而这张纸,就是一个区块。
所以,区块就是放某些数据的一个特定的独立的空间。
根据需要,一个数据可以放在一个区块上,也可以放在多个区块上。同时,一个区块可以只存放一个数据,也可以存放很多个数据。这儿不需要太纠结怎么放,自己决定就好。区块链关注的是数据的存放方式,而不是数据本身。
- 链
链这个概念更简单,就是把上面说的区块,用一个链表记录下来。
既然说到链表,就能想到,在链表上记录的区块,是有次序的。此外,最重要的是,链里的每一个区块,在记录数据的同时,也同时记录了他的前一个区块的信息(在区块链里,称之为指纹)。
换句话说就是,每个区块里,都记录着这个区块前边所有区块的信息,同时,每个区块,都对这个区块后边的所有区块产生影响。
这样的设计,会形成这样的效果:当改变一个区块的数据时,需要同时把这个区块后边所有区块的指纹信息全部进行同步更新。如果仅仅只改变这个区块本身的内容,那后边的区块会很容易通过指纹来验证这个区块非法和无效。
第二个概念,是分布式存储
上面区块链的概念中,在数据保存上有一个漏洞:如果一个非法用户真的把一个区块以及这个区块后边的所有区块都修改了,那他就改变了这个区块链里保存的数据。怎么破?
一个有效的方式,就是分布式存储。把这样一个链,存放在很多个地方,每个地方都有这个链的一个副本。系统验证一个区块是否合法,除了验证链的合法性外,还需要验证这个区块在各处保存的副本是否一致。系统认可超过半数一致的区块为合法区块。
这样,非法用户如果想改变一个区块的数据,不仅需要修改这个链,同时还需要把这个链在各处的副本中半数以上的记录也修改了。当这个副本的数量很大时,这将变成一个不可能完成的任务。
当然,在互联网上&#