比特币的验证原理,你知晓了吗?

比特币属于去中心化的记账系统,那么它的账本是如何验证的呢?所谓的账本如何验证,实际上就是如何证明各个结点中数据的真实有效性。

作为对比,先来了解一下中心化系统的验证,在中心化的系统里面,系统中心服务器存储的数据就是最终的结果,如果该数据被篡改的话,在中心化的系统中是没有办法验证的,因为只有一方拥有这个数据,其他各方根本没有办法证明数据的真实有效性,即中心化系统是不可验证的。

在明确了中心化系统的不可验证性后,我们来了解一下比特币是如何验证的。首先,应该提及的是一个函数-Hash函数,这个函数跟比特币的验证是密不可分的。Hash函数是这样定义的:通过Hash之后,任何的原始信息都可以得到一个简短的摘要信息。并且Hash函数具有这么几个特点,第一个特点是:同样的原始信息用同一个哈希函数总能够得到相同的摘要信息;第二个特点是:原始信息任何微小的变化都会哈希出面目全非的摘要信息;第三个特点是:从摘要信息里面是无法逆向推算出原始信息。

在做开发时经常会接触的MD5函数就属于哈希函数的一种,MD5可以用来检验下载的文件是否有错,如果MD5和下载的网站提供的M值无法对应,就证明下载的文件存在错误了。同样的道理,Hash函数也是可以应用于比特币账本的校验中。例如存在一个账本,它的内容包括账本的序号(序号为1),账本生成的时间(时间戳),以及用户的相关资金流动信息(交易记录),这个账本在经过Hash后得到一个摘要信息(Hash值),假如说此刻的摘要信息为585963A,如果之前该账本Hash后得到的摘要信息不是585963A,说明序号1账本的原始信息已将发生了变化。此外,比较账本的摘要信息要比比较其原始信息要简单的多。

账本的Hash值、序号、时间戳、交易记录保存下来就形成了一个区块,而且把Hash值、序号、时间戳称为区块的头。

假如说,这时候又来了另外一个账本,该账本的序号为2,账本生成的时间比序号1账本晚10分钟(比特币的记账时间大约是每10分钟一次),并且该账本里的用户与序号1账本的用户是完全不同的。在对序号2账本进行Hash时,会加入序号1账本的Hash值,即将585963A同序号2账本的原始信息一块进行Hash,假如是Hash后得到的值为459963B,此时进行对账的话,要对比的是第二个账本的Hash值-585963B,如果这个值是正确的,就说明第二个账本的原始信息、第一个账本的摘要信息都是正确的。当然,第一个账本的摘要信息是正确的,就代表了它的原始信息也是正确的。

第二个账本也会形成一个区块,包括它的序号、时间戳、Hash值以及交易记录。以此类推,就可以产生第三个块、第四个块……第n个块,这样就形成了区块链。该链条上的所有区块在核对数据时,只需要去核对最后一个区块的摘要信息,如果该摘要信息是正确的,就可以证明区块链的账本是正确的,由此就完成了高效的验证。

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢