分享

更多

   

零基础也能看懂的区块链原理

2017-02-12  360YC3301

不难看出,与中心式网络强调的保密性不同,分布式网络安全的关键在于公开性,所有信息都公布出来,接受公众的监督和审核。不过这种“民主模式”也有一个弊端,那就是会有人注册大量“僵尸账户”并利用虚拟IP操纵这些账户投自己的赞成票,从而让虚假的交易记录通过审核,实现网络攻击的目的。只要操纵的僵尸账户的数量超过投票节点总数的51%,攻击就可以成功,因此这种攻击被称作“51%攻击”。51%攻击不仅可以用于发布错误交易信息,还可以用于修改历史交易记录牟利。如何防范51%攻击,并保证历史交易记录不能被轻易篡改,正是区块链技术的设计初衷。下面,我们就来介绍一点技术背景。

技术背景:Hash算法
Hash算法是一种加密算法,是区块链技术的基础。所谓Hash,就是指对原始信息进行特定的转换运算,换算成对应的加密值(称作Hash值)。如下图所示,一段文字经过Hash以后被转化成没人能认识的字符串。

Hash算法有一系列特殊性质,下面我们集中介绍一下:
等长性:不管原始信息多长或者多短, 计算出来的hash值具有固定的长度。
单向性:由原文获得Hash值很容易,但是根据Hash值推测原文是不可能的。
确定性:同一个原始信息用相同的Hash算法永远得到同一个hash值。
分散性:原始信息的微小改动(即使只改动一个比特),就会导致hash值面目全非。

Hash算法的上述特性使它特别适合做真实性审核的用途。例如,你有一本100万字的小说要通过电子邮件发给出版社。那么怎么保证在发送过程中没有被篡改呢?如果采用逐字对照的方法可能要读一个月,还可能出错。这时就可以采用Hash的办法。首先把小说文本做Hash,得到一个hash值。然后把原文发送给出版社的同时把hash值也加密发过去。出版社收到后,通过解密得到你发过去的hash值,然后在把小说原文用同样的hash算法得到一个hash值。只要把它和你发过去的hash值对比,就可以知道原文有没有变动,因为同样的原文得到的hash值永远是相同的(确定性)。如果原文哪怕只被改动了一个字,这两个hash值就完全对应不上了(分散性)。Hash值通常很短,一般是200多个字节或500多个字节。即使原文有100万字,得到的hash值也是同样的长度(等长性),很方便比对。而且攻击者不能通过hash值来推测原文的内容(单向性),因此在传输的过程中也是很安全的。这就是所谓的“数字签名”。

Hash算法的这些优良特性也可以被用在分布式系统中,下面就介绍区块链中的hash算法应用。首先我们先谈一谈什么叫区块。区块链的英文名叫Blockchain,其中chain是链的意思,bolck有街区的意思也有模块的意思,这可能是为什么它被译作区块的原因。但是母星哥认为,“区块”中的“区”字纯属画蛇添足,因为在这里,block一词完全没有和区域、位置相关的意思,它只是模块的意思。可能翻译成“模块链”或者“数据块链”更合适。其实一个区块(block)就是一个单独的数据结构(数据块),而区块链则是把这些数据块通过hash算法链接起来。下图就是比特币所使用的区块链的结构示意图。


区块链的数据结构
图中共有三个区块。每个区块大体上包含三个部分:1,最下面的“Merkle tree”存的是交易记录,至于Merkle tree到底是什么这里就不展开讲了,总之它是一个非常高效的存储交易记录的形式,是一个区块内容的主体。2,左边的“Prev hash”指的是“前一个区块的hash值”,也就是把上一个区块的整体做hash运算,得到的值存在这里(这是“链”的关键)。3,是“Nonce”,这个是与比特币挖矿有关的,稍后细说。

交易记录大家都知道是什么,就是我们需要保护的内容。而第二部分“Prev hash”是区块链技术的核心。我们可以从图中看到,链条就是这么形成的:前一个区块的hash值是下一个区块的一部分,而下一个区块的hash值是下下个区块的一部分。以此类推,所有区块串成一个链条,就是“区块链”了。这种链条式的设计使修改历史记录变得极为困难。试想如果一个攻击者想篡改一个历史区块,由上文“hash的分散性”可知,这个区块的hash值会变得面目全非。而这个hash值又是下一个区块的一部分,也就是说,下一个区块的内容也被篡改了,这又导致下一个区块的hash值面目全非,而这又影响到下下个区块。也就是说,对一个历史区块的篡改会形成连锁反应,波及其后的所有区块,“动静非常大”。这使得篡改历史记录变得几乎不可能。


也许有的朋友会说:“那我在生成新区块的时候做手脚不久得了?反正新区块在被后来的区块埋起来之前是脆弱的。”诚然,新区块比老区块要脆弱一些,但是还是有一些手段可以增加新区块的安全性,例如比特币的发明者中本聪就引入了一种叫“挖矿”的机制。


挖矿挖的是什么
“挖矿”的学名叫“工作量证明”。以比特币为例,新区块的生成过程是这样的:任何节点都有权收集最新的交易记录放到一个区块中,然后把这个区块提交投票审核。如果有恶意的攻击者没有收集真实的交易信息,而是伪造交易记录生成一个假的区块,然后再发动虚拟IP进行51%攻击,那么就有可能生成一个虚假区块。为了避免这种情况发生,比特币的协议要求,生成一个区块之前,要完成一定量的比较耗费CPU的工作量,这样就可以让攻击者的速度减慢。只要网络中的大部分计算能力都是诚实的,最终真实区块链的发展速度就会超过虚假区块链并占据上风。



而这个工作量证明的任务需要有如下特征:
1.完成困难(只有这样才能起到拖垮恶意区块的作用)。
2.验证容易(任何一个网络节点都可以轻松审核)。
3.难度可调(可以根据网络计算力灵活调整难度,保持系统节奏感)。

这也就是上文提到的“Nonce”发挥作用的地方。在比特币中,工作量认证的任务就是寻找合适的nonce。所谓nonce,其实就是一个没有什么实际含义的很大的数字。它的唯一功能就是改变所在区块的hash值。由于Nonce是hash的一部分,nonce改变了,这个区块就改变了,区块的hash值自然也会改变。在比特币中,要想生成一个有效的区块,必须找到一个合适的nonce,使得这个区块的hash值的前n位是零(n的值可变,用于调整难度)。



由于hash值是不可预测的(分散性),唯一的找到nonce的方法就是暴力破解,也就是一个一个试。这个过程是很耗CPU的(见上图,经过4000多次尝试以后,最后一行才找到了“0000”开头的hash值)而通过调整需要的首位0的个数,可以轻松调整任务难度。而且,验证过程很容易,只需要对区块取hash就可以了。所以这个方法是符合前文说的三点要求的。


那么现在我们就总结一下区块链的工作流程(如下图所示)。1,首先两个人交易形成交易记录。2,网络上的任何一台电脑(节点)都可以将这个交易记录被收集到一个区块的数据结构中,并且寻找与之匹配的nonce值,以使整个区块的hash值由若干个0开头(挖矿)3,哪台电脑最先找到这个nonce,也就最先制造了这个区块,他就把这个区块广播到网络中交给所有其余节点投票。4,每个节点都会审核交易记录是否准确、nonce值是否有效等,如果一切没有问题,就投赞成票,如果多数节点都投赞成票共识就达成了。5,达成共识后,这个新区块被加到区块链中。6,交易完成。



需要提到的是,区块链是可能分叉的。不过最后只能以最长的分支为准。就算有攻击者成功地生成了一个假区块,大多数诚实的节点也会重新建立一个真实的区块链分支并且不断给它添砖加瓦,很快那个假区块分支就会被超越进而被抛弃。


如果一个攻击者想篡改某个区块,他就必然改动其后所有区块的hash值,这就导致后续所有区块的nonce无效,那么他就必须给后面所有的区块重新挖矿。当然,这是个不可能完成的任务。这就是区块链的安全机制。


为了奖励这些辛勤劳作寻找nonce,并维护区块链的节点,每形成一个有效的新区块,就会给成功找到nonce的用户发放一定量的比特币。这就是挖矿所得,而寻找nonce并获得奖励的工作,就被形象地称作挖矿。下图介绍了一些挖矿的基本事实。



隐忧:浪费与垄断
比特币问世以来,被证明确实通过区块链技术实现了分布式网络中的信息安全,可谓一个创举。不过它的设计中也存在不小的问题,主要就是浪费和垄断问题,而这两个问题都源于挖矿的奖励机制。



首先说浪费,为了获得挖矿利益,越来越多的计算能力被投入到挖矿中,而计算能力越大,工作量认证的难度也会相应提高,这种水涨船高式的恶性循环导致从2010年到2017年的短短7年间,挖矿难度提高了10000亿倍!高难度意味着高电费。每年有大量电能被用于比特币挖矿,但是激增的耗电量并没有增加比特币网络的安全性,因为这些能量都被用于寻找具有开头更多个0的hash值了。



随着计算难度的激增,个人电脑挖矿已经无利可图,挖矿业务已经被掌握在少数投入大量运算设备的资本家手中。据纽约时报报道,目前比特币网络中超过70%的计算能力掌握在4家中国挖矿公司手中。这种现象已经违背了比特币“分散化”的初衷,计算力的集中导致话语权的集中,也增加了少数人或组织操纵整个系统的风险。

区块链的其他应用
除了比特币之类的虚拟货币以外,区块链还有很多用途。普遍来讲,只要需要真实性认证的业务都可能用到区块链。例如“透明捐助系统”。通过区块链技术,可以使一个公益项目中的所有捐助项目都公开,每个人都能追踪自己捐献的钱去了哪里,防止了公益组织的不透明问题。类似的,在众筹、众售领域也可以有同样的应用。此外,某些中央银行也计划通过引进区块链技术降低自己的信息系统的维护成本。

当然,母星哥最感兴趣的还是在社会结构层面。众所周知,目前任何一个社会的运转都离不开一个中心的管理者(ZF)来作为信用和安全的担保,但是同时由于缺乏监督也出现了不少的弊端。那么区块链技术的出现有没有可能塑造一种没有权威的社会形态呢?每个人都是平等的,通过分布式网络维护各自的信用和交易。在没有高层管理者的情况下实现高效沟通,最终建成一个真正的自由人的联合?这一前景能否实现,请大家一起探讨。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    类似文章 更多
    喜欢该文的人也喜欢 更多