干货|破解区块链的密码——技术进化之路(分享实录)

文章来自:区块链 区HiBlock



在正式分享之前,我先说说我是怎么接触区块链的。我接触区块链是在2016年春天,一个很偶然的机会,当时以太坊在深圳搞了一个线下活动,我觉得很好奇,“区块链”到底是个什么东西呢需要了解一下,于是去参加了这次活动。自从那次会议以后,我树立了对区块链的基本认识,并经过不断的思考和实践有了一些新的看法。我希望今天的这个分享,能够帮助大家。


今年1月份区块链忽然间就火爆起来了,这种火爆跟很多因素有关。但是不可否认,很多言必称区块链的人并不是真正地理解区块链,包括现在很多很火的 区、所谓的专家教授等,很多所谓接触区块链的人时间都很短。



由于热度很高,每天我们都能听到各种各样的关于区块链的观点和声音,那要怎样形成真正的认识这些东西呢块链技术本身也在不断的发展中,本次分享基于我对区块链的研究和理解,从概念的角度给大家做一个简单的介绍。


1

基本认识:三句话理解区块链 不再被各种似是而非的文章所误导



现在出了很多关于区块链的书,还有百度百科、维基百科等,它们把区块链定义为一个公共的数据库,或者一个公共账本。我们知道区块链是一个数据存储系统,不可篡改;它是去中心化的;它是基于信任共识的……至于什么是公共账本么是公共数据库些概念并没有一个清楚的解释。


  • 首先它确实是一个数据存储系统,区块链本身就是一个存数据的地方;

  • 第二它本身是一个数据计算系统,不仅存储数据,还进行计算;

  • 第三它是分布式的,有很多节点组成。它跟企业中云计算分布式的区别是:区块链是基于一个互联 的分布式。


也就是说,区块链是在互联 分布式下的数据计算和存储系统。首先它是分布式的,其次它是数据计算系统,最后才是公共账本,也就是公共数据库。


这个概念是我提出的,具有独创性,但怎么去理解呢下图,其实这个过程没有多复杂。就是说有一个区块链 络,有客户端,你加入到这个 络中,你可能会同步这个区块数据,把数据从 络上下载下来,所以第一步就是下载。当然我讲的是挖矿节点的模式,如果是轻钱包其实可以不用下载。



在正常的存储中,第一步是搜索节点,第二步是同步账本数据,这个类似于迅雷下载,比如我有个种子,就能从 络上下载一个电影,这是大家都知道的最普遍的应用,种子技术。


搜索节点、同步账本数据到本地,这一步来看它就是一个公共账本,人人可以下载,每个人可以持有一块。我有了这个账本之后就结束了吗有。区块链更复杂更神秘的地方在挖矿。


为什么要挖矿行到第三步,我有一个数据,比如转账,那么,我要发起一个转账的请求,由 络上的节点进行计算,而之前提到区块链是一个互联 分布式系统,那么多节点,让谁来计算呢要选择一个节点,这个被选中的节点就叫“矿工”,被选中的矿工做计算的过程被称为“挖矿”,所以我们说的矿工、矿池其实是计算数据的。矿工要接收、计算数据,存入内存,并将数据打包成一个区块,打包完之后向其他节点广播,至此这个数据计算才算完成,其他节点验证后,就可以正式接收这个数据了。


区块链是一个匿名的互联 络,加入多少节点都是不受限制的,它是一个互联 的分布式,与企业中云计算下的分布式有本质区别。因此从本质上,区块链解决了互联 分布式计算的难题。



互联 上这么多节点,它们去负责计算,而在整个自组织的系统中,各节点彼此互不相识互不信任,充满了欺诈行为。这里就有了几个问题:


第一个问题:怎么鼓励大家贡献自己的计算资源,比如CPU、显卡、硬盘,参与到这个计算的过程中。就是说作为一个普通用户,我凭什么买机器去帮你做这个计算/p>


第二个问题:可信的问题,如何避免恶意的攻击、作弊、窃取身份、修改数字等/strong>这是最重要的。节点是匿名的,凭什么相信他前有一句经典的话:你都不知道对方是不是一条狗,你怎么会相信它的计算结果/p>


怎么来解决这些问题呢过挖矿。这是一个通俗的叫法。挖矿的过程是用一系列技术来完成的,包括:共识算法、加密技术、P2P技术、挖矿奖励、公共账本等。


很多人说你可以谈共识算法、可以谈加密算法、但是你不能谈挖矿,不能谈代币,不能谈token,我感觉这种说法很可笑,我认为谈区块链不谈挖矿,就等于是没有抓住本质的盲人摸象。


2

技术解析:古已有之的几个关键技术 创新只是在于组合


1、共识


 

共识是什么意思什么叫共识算法觉得这个共识算法的名字起得非常好,但是不太好理解。算法怎么能共识呢证明你算出来的数据是准确的、是可信的,我们大家才容易达成共识。它解决了一个拜占庭将军的问题,大家可以百度一下拜占庭将军问题,当然可能你查半天也没办法理解到底说的是什么,研究数学问题、和计算机算法的人对它可能会有更深刻的认识。


拜占庭问题到底是什么呢strong style=”max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;”>就是在一个分布的互不信任的 络上如何保持事务的一致性。相信如果你不是做IT的,也一样很难理解什么是保持事务的一致性,这里先假设你是程序员,可以理解。那么怎么保持一致性到前文提到的区块链 络,我们要保证事务的一致性或数据的一致性,就必须只能有一个节点来计算出的结果是最终有效的。


那到底选择谁来计算呢是选择矿工的过程。这个方法跟中心化服务器是不一样的,比如支付宝、电商 站,这些应用都是使用中心化服务器,有服务器在那里,上面部署了相应的程序,负责调度资源进行计算,不会出现多台计算器同时计算同一个数据的问题。但在互联 环境下,有很多个节点、很多台计算器,可能同时计算。所以我们要有一个算法或规则,在一段时间内,只能选择其中的一个有效计算节点。


还要防止这个算法或规则被人控制,计算节点的选择要高度随机,不可预测。假如我控制了这个规则,就可以作弊,选择我的节点来计算。


还要保证计算正常进行,多个节点同时运行,只有一个数据最有效。


通俗地来说,共识算法就是:在互联 上,我凭什么相信和接受你算出来的东西,共识算法就是为解决这个问题而存在的。


具体是怎么解决的呢strong style=”max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;”>常见的有几种算法:


POW 工作量证明


 

工作量证明的基本原理是:通过暴力计算的方式来求得一个计算难度极高的数学解,其目的是为了增加作弊的成本。就是说这个节点必须不停地计算,然后求得一个解,如果算对了,这个节点就是矿工,这个计算的过程很难,有一定的计算成本,保证矿工选择的高度随机性,如果过程很简单的话,就很容易作弊,也很容易被控制。在这个计算过程中,最终的结果可能只是做了很多无用功,浪费了大量的计算。


我们来看其代码实现,最终是要计算出小于这样的一个值。当然区块链有不同的计算方法,大概的意思都差不多,就是经过一系列复杂运算,计算得出一个比它给出的值还要小的结果,那你就是矿工。这个给出的值本来就很小,它前面有14个空格,你算出来的值要在前面14个空格,才是有效的。这个数是算哈希值,当时我算了一下,好像是几万亿分之一的概率。如果你想要挖矿的话就只能不停的算,一个节点做了大量计算,偶然像中彩票一样,被选为矿工,就可以去负责在全 做一个计算。将来谁的计算能力越高,被选中为矿工的几率就越大。


为什么说古已有之/strong>


声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月12日
下一篇 2018年2月12日

相关推荐