你听过许多比喻和类比,可你还是不知道究竟什么是区块链。其实区块链很简单,下面就是一条区块链:
囗~囗~囗~囗~囗~囗~。。。
其中囗表示一个区块,用~连起来就是区块链。
囗里可以存储一些数据,好让这个区块有意义,比如可以作为一个共同账本,记账用,例如可以存储一个字符串:“我有一个亿”,为了方便记录,再加上编号,现在区块链是这样的了:
1我有一个亿~
2我又挣了一个亿我有两个亿~
3我给你一个亿你有一个亿我有一个亿~
4你有一个亿我有一个亿~
5你有两个亿我有一个亿~
6你有一个亿我有一个亿~
。。。
问题来了,第5个区块你怎么突然就有两个亿了呢,肯定是你私自篡改了区块链,怎么防止篡改呢,世界上有一种叫哈希加密的东西正好可以做到。
哈希加密是一种加密数据的方法,它的核心是哈希算法,一般可以写作H(x)->y,其中H代表哈希算法,x、y分别是输入和输出数据,一般x可以是任意字符串,y是一段固定长度的字符串,理想的哈希算法可以把输入字符串完全随机地转换成另一个字符串作为输出,相同的输入有相同的输出,而稍有不同的输入则有大不相同的输出,例如比特币使用的SHA-256哈希算法,由美国国家安全局在2001年设计,可以输入任意字符串,输出一个长度为256的输出字符串,可以使用它将上面的区块数据加密,用SHA-256将第一个区块“1我有一个亿”加密后的数据为
A1AD711680B0CD215BE89BE25060FBBBB9AEBC53
“
如果把数据中的1去掉,变成“我有一个亿”,哈希后的数据变为
C1E5B4B0C0E2C5828217D40962F27A54B9C2E4ED
可以看出输入数据只改动了一点,输出的哈希值却发生了翻天覆地的变化。
好了,有了哈希算法这个东西就可以重新设计一下这个区块链了,可以让每个区块都要保存上一个区块的哈希值,构成一条以哈希值连接的哈希链,这样历史记录就不会被篡改了,如果你修改了历史中某一个区块的数据,那这个区块的哈希值就会改变,已保存在下一个区块的哈希值就找不到对应的区块,区块链就会断裂,除非你能修改以后每个区块里保存的哈希值,这种情况以后再说明,现在可以把区块数据按下面的结构保存:
。。。
其中区块哈希值是对包括大括号在内的整个区块的哈希,第一个区块没有前一区块哈希值,称为创世区块,创世区块就比较随意了,像上帝创造世界一样,想写什么写什么,比特币创世区块里就写了一条英国央行又要滥发货币的新闻,情怀的很,或许我也该写我有十个亿,一个亿少点了,以后的区块数据都应该符合某种逻辑,这样就构建了一条完善的区块链。
再看看最原始的那个区块链:
囗~囗~囗~囗~囗~囗~。。。
囗表示一个区块,~表示哈希链,即不同区块之间以哈希值的方式确立的前后关系。
到这里其实区块链已经说完了,区块链就是以哈希链确立前后关系的数据保存方法,现在就可以把这条区块链保存在你和我的电脑或手机里,表示我们互相承认对方各有一个亿,但这或许没什么意义,可以把一个亿换成一个人情,表示我们互相承认欠对方一个人情,这就有意义了,人情只要互相承认就是真的了,至于怎么增加区块,如何保证哈希链不被篡改,这就涉及区块链的应用目的了,为了保存人情,当然需要保证哈希链不被篡改,但或许别的应用,不需要保证哈希链不被篡改,区块链本身只是保存数据的一种方式,至于保存的数据有什么用,就写在所谓的白皮书里,和区块链关系不大了,不说了,我要去写一个人情区块链的白皮书,发人情币了。
(下一篇写一下区块链最大的应用:比特币)
领取专属 10元无门槛券
私享最新 技术干货