区块链技术是如何保证数据不可篡改的_第1页
区块链技术是如何保证数据不可篡改的_第2页
区块链技术是如何保证数据不可篡改的_第3页
区块链技术是如何保证数据不可篡改的_第4页
区块链技术是如何保证数据不可篡改的_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、区块链技术是如何保证数据不可篡改的区块链网络中应用了各种技术来保障交易在传输、存储等各个环节的可靠性(可信任,不可变更等),本篇文章将会从不同方面去介绍相关技术,主要包括非对称加密技术、数字签名技术、区块链的存储结构设计以及工作量证明等。1、以签名验证交易的有效性如何保证交易在传输过程中不能被修改呢?对密码学有过了解的可能都知道数字签名的技术,这是一项非常成熟的技术,其基础是非对称加密技术。非对称加密技术指的是加密和解密过程使用不同密钥的加密技术,每个用户有公钥和私钥一组对应的密钥,使用公钥加密后的数据需要使用相对应的私钥进行解密,反过来使用私钥加密后的数据需要通过公钥进行解密。一般每个人的公

2、钥是公开的,而私钥是保密的,具体应用的过程可以参考下图。AliceA,sPublicSendc°pvtoBQbArsPublicBob_IRLI_.,DecryptEncryptFunctionFunctionA,SPrivateDataData数字签名技术是对非对称加密技术和数字摘要技术的综合应用,其解决的问题就是当Alice发送了一份数据之后,如何认定该数据是Alice发出的而且中途没有被人篡改过。其基本原理可以理解为先使用数字摘要技术(Hash等)将数据缩短到某个固定长度,然后使用发送者(假设为Alice)的私钥对数据摘要进行加密,这样就得到了一份数字签名,任何人都可以通过Al

3、ice的公钥来解密数据以验证数据是否为Alice发出(如果解密失败则不是),同时可以验证解密后的数字摘要和收到的数据的数字摘要是否匹配来验证数据是否被篡改过。也就是通过数字签名技术,可以保证数据在传输过程中无法被篡改,实际区块链网络中会在记录数据时通过数字签名验证交易的有效性,只会将验证通过的交易打包到区块中,并且每个客户端在接收到一个新的区块时也会做这个验证。很多时候我们之所以无法验证事情的真实性,仅仅是因为我们能够得到的信息不够!举个例子,我们要判断饭店里的一盘菜是否干净卫生,大多数时候只能通过店面是否正规等判断,假如我们能了解到饭店里用的蔬菜、肉等材料从生产、加工、运输一直到进入饭店厨房

4、,甚至厨房如何保存和清洗,厨师如何加工,服务员如何端过来等所有信息,再来判断这盘菜是否干净就可以很简单,而且很有说服力了,这其实就是区块链可以解决的其中一种案例。上一节我们已经了解到,通过数字签名对交易进行验证,但是对于数字货币来说,还需要解决的是重复支付的问题,也就是签名都是有效的,但是我手中的数字货币(对于各种虚拟资产都适用)其实已经用过一次了,在没有一个公正的机构下如何验证这枚数字货币我有没有使用过呢?有,那就是公开所有交易记录,每个人都可以获取整个网络中的所有交易记录,从而验证该枚数字货币是否被使用过。为了达到目的,实际上我们需要关注的只是于本交易之前发生的交易,而不需要关注这笔交易发

5、生之后是否会有双重支付的尝试。技术上,中本村设计了首尾互联的区块结构来解决该问题。首先为每一笔交易进行排序,我们先来看一下这个区块链的逻辑结构图,这是一个简化的结构图,保留了必要的字段方便说明。我们假设每一个区块只存储了一条交易记录,每一条交易记录中除了存储交易本身,还存储了上一条交易的hash值,将这二者放在一起进行hash,得到一个值,作为该区块的hash值,这样所有的交易就通过区块串成了一条链。这样不但能验证数字货币是否被使用,当有人想要修改其中某个交易的信息时还会发现,从被修改的那个区块开始往后所有的区块都需要被修改,这几乎是不可能的,就算是修改了,其他客户端也不会接受其修改。Bloc

6、k0ndfr'Qtun55(amp.T15i1:20r由t应力MlGoala的.Mac55Block1iraie-.itltwatainp17:171/1/2017dsiahockidaiaBlock2iM2tlm«stBinpi17:19-UV2O1763tqaoct2(Jar3Hhashti-口呼:nu:卜曰清“二u,krzii【以下两段非技术人员建议跳过】上述方式虽然可以保障已经存储的交易记录不被修改,但是一条一条交易前后串联将会导致系统不能支持并发,也就严重限制了系统的吞吐量!为了解决这个问题可以让一个区块存储多条交易,将每条交易记录的hash值合并在一起,然后再取h

7、ash值,作为本区块中交易记录的总的hash,这样当区块中任意一条交易被篡改,则整个区块的hash值就会发生变更,从而很容易被识别出。在实际应用中,对于一个区块中所有交易记录的hash采用了Merkle树的形式组织,区块头中存储了MerkleRoot,这种组织形式可以精确定位到发生变更的那一条交易,有兴趣的同学可以参考下将每一个区块的关键信息提取到了区块头中,这样也能在不读取实际内在合并记录之后,容的情况下快速校验整条链是否有效(未被篡改),并有效回收硬盘空间(不需要所有人都保留完整的记录),于是形成了下图所示的区块链的基本结构(阴影部分为区块头)。但总之后以太坊和超级账本等项目根据各自项目的

8、需要对区块链的基本结构进行了扩充,体的思想还是没变。IransaelionATransaebonCTransactionBTransactonD3、随机序列的引入增加了攻击难度大家看到上面区块链的Header中,还有一个Nonce,Nonce表示一个随机数,每个Block的Nonce都是随机生成的,之所以引入Nonce一方面是通过工作量证明,公平的分配记账权(即打包区块的权利,一般每次可获取一定数额的系统奖励,另外可以拿到所打包区块中所有交易的手续费),另外还可以大幅增加攻击者篡改的难度。工作量证明指的是节点想要获取记账权,需要证明自己付出了一定的工作,怎么证明呢?就是要找到一个随机数,将这个

9、随机数和区块头中的数据放到一起获取的散列值符合一定的条件(比如散列值中需要包含18个0,难度情况不同,网络有不同的控制方案,这个过程就是俗称的挖矿)。这个过程简单可以理解为两个人一起摇20个骰子,如果有18个以上的骰子是六,则成功,获得一次记账权。这个难度会设置的非常高,拿比特币网络举例,其难度控制在全比特币网络中所有争夺记账权的计算机一起算10分钟,才能成功一次!ok,上述过程对于数据的保护有什么价值呢?大家可以想想,如果有人修改了某条交易数据(理论上可以修改知道私钥的账号发出的交易),则会导致该交易所在区块的MerkleRoot发生变化,则原来经过全网十分钟时间才计算出的Nonce值将不再适用,需要重新计算,这需要巨大的运算量,而且后面的每一个节点的Nonce值都需要重新计算!这就导致除非控制了全网一半以上的节点,否则几乎是不可能。反过来如果控制了全网一半以上的节点,他还会去篡改数据把该区块链网络推向毁灭吗?这就像掌握了一个公司50%以上股份的董事长是否会故意毁掉公司一样。4、以付出和回报反馈进行正向引导以上,一直讨论的是技术,但也不能忽视了人的重要性。区块链有一个共识就是只有最长的链才会被认可,其他由于各种原因生成的分支需要到最后重新记账,而在该分支上原先通过获取记账权打包区块获得收益的矿工的收益会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论