(本文转载,自己做了少许修改)

原来是hash函数的妙用

之前整了整hash,现在来看看它在区块链交易中的应用。假设有一个账页序号为0的账页交易记录如下:

账号入账出账余额备注说明
王二100190收到xxx货款
张三10030xxxx
李四12090170xxxx

假设记账时间为:2017-10-22 10:22:02

区块链在记账是会把账页信息(包含序号、记账时间、交易记录)作为原始信息进行Hash, 得到一个Hash值,如:787635ACD, 用函数表示为:

Hash(序号0、记账时间、交易记录) = 787635ACD

账页信息和Hash值组合在一起就构成了第一个区块。(好像又叫创世区块,反正就是第一个块,不用记上一个块的hash值)

比特币系统里约10分钟记一次账,即每个区块生成时间大概间隔10分钟

在记第2个账页的时候,会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash,即:

Hash(上一个Hash值、序号1、记账时间、交易记录) = 456635BCD

这样第2个区块不仅包含了本账页信息,还间接的包含了第一个区块的信息。依次按照此方法继续记账,则最新的区块总是间接包含了所有之前的账页信息。

img

所有这些区块组合起来就形成了区块链,这样的区块链就构成了一个便于验证(只要验证最后一个区块的Hash值就相当于验证了整个账本),不可更改(任何一个交易信息的更改,会让所有之后的区块的Hash值发生变化,这样在验证时就无法通过)的总账本。

转载资料

区块链记账原理