
随着对区块链行业的深入了解,对于什么是区块链这个问题,每次都有不同的答案。当然对于区块链的定义来说,它是不变的。区块链就是由区块组成的链式结构。
如图所示,这是一个目前只有4个区块的区块链,区块4指向区块3,说明区块4引用了区块3。实际上,区块链中,后一个区块的确包含前一个区块的哈希值。
而区块3引用了区块2,区块2引用了区块1。这样就形成了一个强关联的关系。随着时间关系,新加入的区块在下面,区块链就越来越长。
我们也可以使用python来写一个只有4个区块的区块链:
输出结果就是:
不过,上面的区块链并没有防止篡改的功效。为什么呢?我们接着看。
为了弄清楚为什么区块链可以防篡改,这就要了解一下什么叫做哈希值,哈希值是一种算法,可以把任意内容通过计算,得到一串字符。它的特点是,相同的内容,哈希值必然是一样的,而不同的内容,哈希值都不同。
有人问,直接比较不就行了吗?为什么要用哈希值呢?
因为,有些文件难以比较。如果是文本或字符串会很容易,如果是图片、视频、软件等其他格式的大文件,就不好做比较了。而哈希值可以把任何内容,不论格式,都能计算出哈希值。而哈希值是字符串,长度与大文件比起来,就很短了。
所以使用哈希值来验证文件是否被篡改,是一个很好的办法。一般软件下载站都会给出文件的哈希值,从而下载后可以对比。
而区块链也是如此
如图是3个区块构成的区块链,下面的引用上面的。如果哈希值不对,就说明被篡改了。
但是黑客可以一直改下去,所以构建成分布式,那么只要黑客不能成功篡改超过1/2,就等于篡改失败。
如图,这是一个只有4个节点的区块链,节点之间相互传递数据。
