加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘孜站长网 (https://www.0836zz.com.cn/)- 运维、物联设备、数据计算、智能推荐、云管理!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

区块链技术的7层架构

发布时间:2019-01-04 03:20:06 所属栏目:经验 来源:区块链思维
导读:中本聪提出了去中心化账本的构想,目的是在没有一个可信中心的环境建立一个全民账本,这个账本主要原理是大家一起记账,每笔账目都需要所有记账人共识,并且每个人都存在这样一份相同的账本,这样就不用担心有个别记账员造假、丢失的问题了。一是个人造假
副标题[/!--empirenews.page--]

中本聪提出了去中心化账本的构想,目的是在没有一个可信中心的环境建立一个全民账本,这个账本主要原理是大家一起记账,每笔账目都需要所有记账人共识,并且每个人都存在这样一份相同的账本,这样就不用担心有个别记账员造假、丢失的问题了。一是个人造假的账本不会得到大家的认可,二是个人丢失账本可以通过其他人重新获取这个账本来恢复所有的历史交易记录。不过这种分布式账本会有一些问题需要解决:

  • 第一个问题:账本一致问题,因为所有人都参与记账,每个人账本如何保持一致是最关键的一个问题;
  • 第二个问题:每个人都有这样的账本,意味着所有人的交易都是公开的,很可能所有人的余额也是公开的,能否做到对交易匿名处理,就是把所有人资产信息隐藏起来;
  • 第三个问题:交易怎么鉴别真伪?即如何防止别人冒充你花你的钱?
  • 第四个问题:大家都记账,记账肯定有消耗,需要消耗存储、消耗精力,如何让记账员长期维持下去?

针对这几个问题,中本聪提出一些关键技术来解决这些问题,我们后面会一一讲解。

区块链技术架构可以分为七层,从底层往上依次是加密层、数据层、网络层、共识层、激励层、合约层和应用层,而每一层都运用了一些技术来保证整个区块链系统的正常运作。

区块链

一、加密层

1. 哈希函数;

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

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

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

哈希函数有什么用?

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

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

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

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

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

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

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

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

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

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

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

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

二、数据层

刚才说到区块的概念,可以理解为账本中的一页记账纸,里面记录了若干笔交易,除此以外,区块里需要包含哪些信息?

首先有一个区块高度,可以理解为账本的页码;包含上一个区块摘要信息,这个是为了保证整个区块链链式账本不可篡改性;包含本区块里所有数据交易哈希摘要值。

三、网络层

网络层是用P2P网络来进行消息的传播,P2P网络是对等式网络,也可以称为是无中心的自组织网络,特点是没有中心化的服务器,任何节点在这个网络中既是服务器,也是客户端。

消息的发送、网络的组织都是自发的,整个网络可以无限扩展,任何节点可以随时加入、随时退出。网络层规定了区块链系统中交易是怎么传输的,以及每一页账本(即区块)是怎么传输的。

四、共识层

就是要让全网所有记账员账本保持一致,也就是说对所有交易有一个先后顺序,达成完全一致。具体而言,共识机制主要需要解决以下三个问题:

  • What,下一个区块包含哪些交易;
  • Who,下一个区块由谁产生;
  • When,下一个区块在什么时候产生;

区块链共识算法用的最多的是PoW,字面意思是工作量证明,即证明你做了一定量的工作。

工作量证明官方定义是要求用户进行一些比较耗时的复杂运算,然后得出这个答案能够被其他人快速验证,用工作期间耗用的时间、设备、能源作为担保成本,来确保资源是被真正需求方所使用。

(编辑:甘孜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读