区块链技术栈-密码算法
密码算法
密码算法的应用在区块链中是个很巧妙的东西,它应用的点也很多,我们在这里不详细介绍密码算法的原理,就从几个关键的应用来介绍一下。
首先我们回顾一下区块链账本格式,通过上述讲解我们已经知道,区块链账本就是连接起来的一个个区块,那么到底是通过什么来连接的呢?学过数据结构的朋友都知道,在数据结构中有一种变量叫做指针,它可以用来指向某数据的地址,那么区块的连接是不是用过这样的方式呢?生活中地址连接的例子很多,比如路牌、门牌等,然而区块之间的连接,往往都不是靠数据地址来连接的,而是靠一种叫做哈希值的数据来关联的,什么叫哈希值?这是通过密码算法中的哈希算法计算得出的,哈希算法可以通过对一段数据计算后得出一段摘要字符串,这种摘要字符串与原始数据是唯一对应的,什么意思呢?如果对原始数据进行修改,哪怕修改一点点,那么计算出来的哈希值都会完全变化。区块链账本对每个区块都会计算一个哈希值,称为区块哈希,通过区块哈希来串联区块。这里有个很好的作用就是,如果有人篡改了中间的某一区块数据,那么后面的区块都要进行修改,这个时候并不是简单的修改一下后面区块的地址指向就能结束,由于后面的区块是通过区块哈希来指向的,只要前面的区块发生变动,这个区块哈希就无效了,就指不到正确的区块了。
另外一个对密码算法的应用就是梅克尔树结构,梅克尔树在之后会详细讲解,我们先初步认识一下,通过上述讲解我们知道,每个区块会被计算出一个哈希值,实际上,除了整个区块会被计算哈希值之外,区块中包含的每一笔事务数据都会计算一个哈希值,称为事务哈希,每一个事务哈希都可以唯一的表示一个事务,对一个区块中所有事务进行哈希计算后,可以得出一组事务哈希,再通过对这些事务哈希进行加工处理,最终得出一颗哈希树的数据结构,哈希树的顶部就是树根,称为梅克尔根。通过这个梅克尔根就可以将整个区块中的事务约束起来,只要区块中的事务有任何改变,梅克尔根就会发生变化,利用这一点可以保证区块数据的完整性。
当然,密码算法在区块链系统中的应用还远不止这些,比如通过密码算法来创建账户、地址、签名交易事务等,这些应用在后续会逐步介绍。