区块链学习笔记4

有关密码算法(参考自《白话区块链》)

1.哈希算法

通过某个方法将一段任意输入 的字符串计算出一个固定长度的值,相当于计算出一个身份证号。通过 哈希算法计算出的结果,是无法再通过一个算法还原出原始数据的,即 是单向的,因此适合用于一些身份验证的场合,同时由于哈希值能够起 到一个类似于身份证号的作用,因此也可以用于判断数据的完整性,哪 怕数据发生微小的变化,重新计算后的哈希值都会与之前的不一样。

用处:

1.区块哈希(前面讲过,懒得再写了)

2.梅克尔树(和区块哈希有异曲同工之妙...)

举一个生活中常见的例子,当我们签订一份n页的合同时,通常都 会在每页合同上盖章,只不过每一页上的章都是一样的,这就给作弊留 下了空间。如果我们稍微改变一下做法,给每一页合同盖一个数字印 章,并且每一页上的数字印章是前一页数字印章和本页内容一起使用哈 希算法生成的哈希值。例如:
1)合同第一页的数字印章是本页内容的哈希值,即第一页数字印 章=Hash(第一页内容)。

2)合同第二页的数字印章是第一页的数字印章及第二页内容加在一起后再哈希的值,第二页数字印章=Hash(第一页的数字印章+第二页 内容)。

3)合同第三页的数字印章是第二页的数字印章及第三页内容加在 一起后再哈希后的值,即第三页数字印章=Hash(第二页的数字印章+第 三页内容)。
4)上述过程以此类推。
这样对第一页合同的篡改必然使其哈希值和第一页上的数字印章不 符,且其后的2,3,4,5,…,n页也是如此;对第二页合同的篡改必 然使其哈希值和第二页上的数字印章不符,且其后的3,4,5,…,n页 也是如此。

结构如图所示:

区块链学习笔记4_第1张图片

我们看到,首先这是一个树结构,在底部有4个哈希值,假设某个 区块中一共有4条交易事务,那么每条交易事务都计算一个哈希值,分 别对应这里的Hash1到Hash4,然后再两两结对,再次计算哈希值,以此 类推,直到计算出最后一个哈希值,也就是根哈希。这样的一棵树结构 就称为梅克尔树(merkle tree),而这个根哈希就是梅克尔根(merkle root)。

梅克尔根的用途:比特币是分布式的网络结构,当一个节点需要同步自己的区块链账 本数据时,并没有一个明确的服务器来下载,而是通过与其他的节点进 行通信实现的。在下载区块数据的时候,难免会有部分数据会损坏,对 于这些一条条的交易事务,如何去校验有没有问题呢?这个时候,梅克 尔树就能发挥作用了,由于哈希算法的特点,只要参与计算的数据发生 一点点的变更,计算出的哈希值就会改变。我们以第一个示意图来说 明,假设A通过B来同步区块数据,同步完成后,发现计算出的梅克尔 根与B不一致,也就是有数据发生了损坏,此时先比较Hash12和Hash34 哪个不一致,假如是Hash12不一致,则再比较Hash1和Hash2哪个不一 致,如果是Hash2不一致,则只要重新下载交易事务2就行了。重新下载 后,再计算出Hash12并与Hash34共同计算出新的梅克尔根比较,如果一 致,则说明数据完整。我们发现,通过梅克尔树,可以很快找到出问题 的数据块,而且本来一大块的区块数据可以被切分成小块处理。

2.公开密钥算法

1)RSA算法(具体操作不记了,上网一找就能找着)

2)椭圆曲线密码算法(同上)

3.编码、解码算法(没看明白应该用在什么地方..)

 

 

明天争取看完共识算法..

 

你可能感兴趣的:(区块链学习笔记4)