上QQ阅读APP看书,第一时间看更新
5.2 用途一:交易信息的压缩和验证
由于区块链要处理的交易信息内容庞大,将每个块内的所有数据直接以序列的方式存储将会非常低效且耗时,但是利用哈希函数可以对信息进行压缩和验证。在 Merkle树(一种二叉树结构,可理解为存储数据的一种拓扑结构)结构中,结合哈希函数技术,可以快速验证某笔交易是否属于某个区块(图5-1)。对于打包到一个区块的所有交易,首先将它们划分为交易信息1、交易信息2等部分,并计算出对应的哈希值1、哈希值2,之后两两结合进行哈希运算,最终得到这个Merkle树的根哈希值。如果某一笔交易信息记录的数据有变化,那么最终算出来的Merkle根哈希值也会不一样。
图5-1 比特币中的Merkle树
那么为什么要使用这样的算法,而不是直接将所有的交易信息串成一个大块并且算出它的哈希值呢?原因在于这样的二叉树结构可以允许仅仅进行少量数据的验证,同时如果交易的数据信息有误,也可以快速定位至出错的位置。