区块链技术本质上是一个公开的分布式账本(分布式账本数据),因此如果从账本的演变也就是记账的历史演变来理解,恐怕就明白了区块链为什么而生,它解决了安全性和建立信任两个关键的问题。
传统的记账方式是中心化的。我们以一个家庭为例来极度简化这个背景环境,以最简单的方式来阐述。假设这个家庭有爸爸、妈妈和儿子小A。他们是这样记账的:
第一天,妈妈买菜花了50元,于是爸爸做记录:“妈妈买菜花去50元,2017年12月10日。”
第二天,小A花2元买了一根棒棒糖,于是爸爸做记录:“儿子买棒棒糖花去2元,2017年12月11日。”
第三天,爸爸想抽烟,妈妈不允许爸爸抽烟,爸爸就偷偷买了一包烟,花了20元,但不记账。
第四天,小A发现了爸爸抽烟,但是爸爸为了收买儿子,以免举报,就又偷偷给儿子买了一个棒棒糖,但爸爸也没有记账。
如此,这个账本就完全不可信了,而且这种记账方式也非常不安全,一旦损毁或丢失,就无法恢复,变成一本烂账。由此可见,这种中心化的记账方式,不仅无法保证数据的安全性,还无法建立可信的机制。如果银行、企业的财务账本出现了假账,将会出现什么样的后果?如果他们的财务数据突然被一把火烧了,灾难也可想而知。
目前,中心化的记账方式主要通过人员素质的甄别、内部管理机制等形式来进行规范和防范,但依然无法阻止这种情况的发生。那么,有没有更好的方式呢?有!这就是区块链的核心机制——公开的分布式记账。
区块链在记账时会把账页信息(包含序号、记账时间、交易记录)作为原始信息进行Hash,得到一个哈希值,如787635ACD,用函数表示为Hash(序号0、记账时间、交易记录)=787635ACD。
账页信息和哈希值组合在一起就构成了第1个区块。比特币系统里约每10分钟记一次账,即每个区块生成时间大概间隔10分钟。
记第2个账页时,会把上一个区块的哈希值和当前的账页信息作为原始信息进行Hash,即Hash(上一个哈希值、序号1、记账时间、交易记录)=456635BCD。如此,第2个区块不仅包括了本账页信息,还间接包括了第1个区块的信息。按照此方法继续记账,最新的区块就会间接包括过去的所有账页信息。所有区块组合起来就会形成区块链,如此就构成了一个便于验证、不可更改的总账本。