区块链中的密码学
密码学在区块链中的应用主要有两个:哈希算法与非对称加密算法。这次主要对哈希算法进行详细的说明。
哈希算法
哈希算法的特点有:
1、输入可以为任意大小的字符串;
2、产生固定大小的输出;
3、可以在合理的时间内算出输出值。
若要满足密码学的安全性,哈希算法还应该具有以下三个特性:
1、碰撞阻力:不同的输入不会产生相同的输出;
2、不可逆性:若y = Hash (x) ,根据y无法倒推出x;
3、谜题友好:若想倒推出x,只能通过暴力枚举破解。
以比特币为例,来看一下哈希算法的具体应用: 在比特币中,使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值(block? header hash),后面一个区块又包含当前区块的哈希值(),就这样一个接一个的连接起来,形成一个哈希指针链表,如下图:
每个区块中的具体内容:
这所有的字段一起就组成了 block header(区块头),然后需要对 block header 进行2次hash计算,计算完成的值就是当前比特币区块的hash值。因为比特币系统要求计算出来的这个hash值满足一定的条件(小于某个数值),因此需要我们不断的遍历Nonce值去计算新的hash值以满足要求,只有找到了满足要求的hash值,那么这就是一个合法区块了(这一系列动作也叫作挖矿)。
Merkle Tree字段:
简单来说Merkle Root就是区块里记录的所有交易的几次Hash(结果组合后再Hash)结果,在比特币区块链和以太坊区块链中,Merkle Root字段的产生略有不同,比特币进行2次计算,以太坊3次。
总结
本次对哈希算法的学习与整理过程中,还有些疑惑,merkle tree的底部若不按照ABCD的顺序进行排列,是否会对整个区块的Block header造成影响,从而影响整个区块链。参考文章地址: cloud.tencent.com/developer/a…
每天进步一点点~!
转载于:https://juejin.im/post/5c067ae8f265da6166243d49