厦门IT培训
美国上市IT培训机构

13429669395

热门课程

区块链的详解之二

  • 时间:2018-12-13 17:07
  • 发布:转载
  • 来源:网络

区块链的架构主要分为7个层级,分别是加密层、数据层、网络层、共识层、激励层、合约层和应用层。七个层级,下面就是针对不同的层级讲解一下包含的知识点以及他们之间的小小的区别和关联性。

加密层

1.哈希函数;

也叫散列函数,是把一段数据压缩成一个摘要,这个摘要相比原始信息更小,但有一些比较特别的性质,首先是确定性,如果相同的输入数据得到的输出是相同的。

基本是不可逆的,给定一个输出,无法直接推算出输入,虽然我们知道有无数个输入会输出同一个哈希值,但如果知道哈希值的话,很难计算出任何一个输入。

“雪崩”效应,输入信息只要修改一小部分,哪怕是一个单词,一个字母,甚至1bit值,输出的哈希值就会产生翻天覆地的变化,这一点保证它是不可逆的。

我们在来研究下哈希函数有什么用?

在分布式账本里,为了保证数据完整性,会采用哈希值进行校验。如,一笔交易、一页账本(也就是区块的概念),用了哈希之后生成摘要,意味着整个区块交易信息无法进行篡改(即无法在篡改数据之后保持摘要不变)。

区块链原始的定义或狭义的理解就是区块+链的形式,这个链是通过哈希链接起来,每一个区块可能都有很多交易,整个区块又可以通过哈希函数产生摘要信息,然后规定每一个区块都需要记录上一个区块的摘要信息,这样一来所有区块都可以连成一条链。

如果改了历史中某一个区块的数据,意味着这个区块摘要值(即哈希值)会改变,那么下一个区块中记录的上一个区块的哈希也得做相应的修改,以此类推,也就是说如果要修改历史记录的话,要从那一个点开始往后所有记录都要修改才能保证账本的合法性,哈希函数就提高了账本篡改的难度。

2.采用非对称加密技术。

这是相对对称加密而言的,对称加密中加密和解密过程用的是同一把钥匙,而非对称加密是加密和解密过程用的是一对密钥,这对密钥分别称为“公钥”和“私钥”,公钥是可以公开的,私钥是个人存储、个人维护的。

公钥加密的数据只能用配对的私钥来解密,私钥加密的数据同样也只能用配对的公钥来解密。用非对称加密就可以产生数字签名。

假设有一笔交易,我给你转10元,这个消息或这笔交易有固定的数据格式,通过哈希函数算出这个交易的哈希值(即消息摘要),通过使用私钥加密,得到一个数字签名,然后可以把数字签名以及这个消息同时发送给其他人。

其他人拿到这个消息和数字签名后,首先可以把这个消息的消息摘要算出来,然后就可以用公钥验证这个签名是否真的是由这个消息摘要算出来的,进而判断这个消息是否由我签署并且没有被篡改。

这就是数字签名的效果,它的作用:一是可以确认消息归属,即检验消息是否真的由私钥拥有者发出的,只要拿对应的公钥验证去签名,验证通过就可以证明消息是由私钥拥有者发出的;二是确保消息完整,如果消息被篡改,那么哈希值就发生了变化,用同样的数字签名就无法验证通过。

非对称加密和数据签名解决了“比特村”的两个问题:第一,交易可以鉴别真伪;第二,可以保证交易进行匿名化。

现在不需要实名认证每个人有多少钱,只需要用公钥作为钱包的地址,要花公钥钱包里的钱只需要用对应私钥对一笔交易签名,即可证明你是钱包的所有者,这笔交易别人无法篡改和伪造。

而且公私钥可以在线下自己生成,并不需要在账本里进行实名注册,如果没有账本外的额外信息,任何人都不知道某个公钥钱包到底属于谁的,这就达到了交易匿名的目的。

上面我们总共讲了加密层。加密层分为哈希函数和非对称加密技术两个模块。首先哈希函数主要就是不可逆性,运用在数据的不可篡改特性上面。非对称加密技术主要是非对称这个概念引用了公钥和私钥两个概念。还有主要就是无论公私钥都是匿名的,这个是很完美的。

上一篇:区块链的详解之一
下一篇:区块链的详解之三

C语言的正确打开方式!

学好C语言&C++,掌握自己的未来

献给Java初学者,没基础如何学Java?

如何选择java学习方法?自学or培训?

选择城市和中心
贵州省

广西省

海南省