以一个小白程序员的视角来讲讲什么是区块链

Part 0 绪论

        今天我要介绍的主题是区块链,分为如下三部分进行:

        首先介绍一些区块链的基础知识,接着以区块链的重要应用比特币为载体,详细讲解区块链中应用的各种技术;最后简单介绍一下区块链的现状与发展。

 

Part 1 区块链基础知识

        区块链是个什么东西呢?在2016年发布的区块链白皮书中给出了如下的定义:它是一种分布式存储技术、点对点传输、共识机制、加密算法等计算机技术的新兴应用模式。从定义可以看出,区块链是一种综合了多种技术的应用,很难单独的说它是某一种技术;并且区块链进入人们的视野是源于比特币,因而接下来的讲解中,我会模糊对区块链和比特币之间的界定,因为它本身就是一种比较广义的概念。

        正式开始前,我还想说说我对它的理解:因为区块链主要的应用场景是数字货币,我把它看做是一种分布式的账本。它要完成的事情就是以一种去中心化的方式,实现对交易信息的记录、存储与维护。

                                                                       图 1 

1.1 区块

        区块链把交易信息封装在名为区块的数据结构中,区块包含的内容如下所示,我们可以看到它包含了魔法数、区块大小、区块头、交易数量和交易列表几部分。

    

                                                                图 2

2.2 区块头

       在区块中最重要的是区块头,它包含了版本号、前一个区块的哈希值、时间戳、当前区块的哈希值、和随机数。区块链通过在后一个区块的区块头中,记录前一个区块的哈希值的方式,使一个个孤立的区块成链。

 

                                                                        图 3     

                    (图2、图3 均引自:https://blog.csdn.net/misshqzzz/article/details/77695579)

                                                                        图 4

Part 2  重要应用——比特币

       我在一开始就介绍过,区块链也好,比特币也罢,它们本质上要做的都是一个分布式的账本。建立一个账本要做到的两件事,一个是如何记账,另一个是如何管理和维护账目。

 

2.1  记录交易信息

       我们现在有如下两条交易信息:小明转给小红10BTC,小明转给小兰20BTC。计算机中存储这两条记录时,需要把他们转化成一串二进制数,并且为了保证这条记录的合法性,后面要附带一条数字签名。数字签名,需要满足如下两个要求:一个是交易记录与数字签名之间的对应性。一条交易记录对应一个数字签名,而非一个用户对应一个数字签名。这大大提高了签名的可信度。第二个要求是满足可鉴别性。就是说要可以验证这条数字签名,是来付款人的数字签名。在比特币系统里,通过哈希算法,来满足对应性,通过非对称加密算法,满足可鉴别性。       

                                                                          图 5        

 

      简单介绍一下哈希算法,把一条信息输入到哈希算法,可以输出一串唯一的、对应的二进制数。在比特币网络中采用的SHA-256算法,全称是“Secure Hash Algorithm”,安全哈希算法;256指的是它的输出值是一串256位的二进制数。把刚才的两条交易信息输入到SHA-256算法,得到这两串数。这里是以64位16进制数的形式来显示的。SHA-256算法有着近乎完美的对应性,一条信息哪怕是多了一个空格,输出完全不同且无规律可言。这保证了一个数字签名与一条交易记录的对应性。

 

                                                                       图 6

      非对称加密算法,持有者使用自己的私钥将明文加密成密文,在持有者公布了自己的公钥的前提下,任何人都可以使用他的公钥对密文进行解密,获得明文。由私钥可以推出公钥,但由公钥不能反推私钥。比特币网络中,以发送者的地址作为公钥。

      

     

                                                                      图 7

      接下来我将说明,非对称加密算法是如何使数字签名达到可鉴别的。我们将把原始记录“小明转给小红10BTC”输入到SHA-256函数后,输出的结果记作哈希值1,小明可以使用他的私钥对哈希值1进行加密,生成小明对这条记录的数字签名。比特币网络中的任何一个人都可以使用小明发布的公钥进行解密,获得哈希值2,把哈希值2带入SHA-256的反函数,获得该交易记录信息。如果哈希值1等于哈希值2,那么可以说明如下三点:第一,这个签名是针对这条记录的,源于SHA-256函数的对应性;第二,这个签名是小明的,因为只有小明持有自己的私钥;第三,接收到的记录与原始记录相同,未被篡改。

     

                                                                 图 8                            

    

2.2  记录的存储与维护

       刚才我们说完了交易信息是如何被记录的,接下来说说这些记录是如何被存储和维护的。说道存储,我认为应该分为两个部分来谈。一方面是这些记录的数据结构,他们是被封装在一个个区块里,添加到区块链中的;另一方面则是物理上,这些区块链被存储在所有安装了区块链客户端的计算机中,是一种平等的点对点分布。

       选择分布式存储来存放区块链数据会产生三个一致性问题,它们分别是消息同步、防止消息篡改和双花问题,而区块链这样一种数据组织方式,恰好可以解决这三个个一致性问题。

                                                                    图 9

       我先来解释一下这三个一致性问题:

        1. 信息同步:比特币网络是由一个个平等的节点组成的,每个节点都有发布信息的权利。当一个节点发布了信息时,到达不同节点的时间不同,此外并不是所有节点都是在线的,不在线的节点不能即时接收到信息,导致各个节点间信息的不一致。

        2. 消息被篡改:如果有黑客篡改了部分节点的数据,也会造成节点间数据的不一致。

        3. 双花问题:这个问题就是字面意思,双花,一笔钱被花两次。如果某个节点同时发送两条转账信息,而他现有的比特币不足以完成支付。由于各个节点接收到这两条转账信息的先后次序不同,对合法信息的认定产生分歧,也会造成节点间的不一致。如果是像银行一样的有中心的系统,则可以由中心节点进行认证,但在分布式系统中,不存在这样一个中心节点。

             

        接下来说一下区块链的解决策略,它的解决策略还是源于自身生长的规则。新的区块是由比特币网络中一些称作是矿工的节点,将一段时间内的交易记录封装在一个区块结构内,将它发布并得到认证后,添加到区块链上的。为了控制新区块生成的速度,矿工需要完成一个额外的工作。

        

                                                                   图 10

 

        这个额外的工作分为两步:第一步,将新制作的区块所包含的内容,也就是前一个区块的SHA-256函数值,这个新区块的基本信息和这个新区块所包含的所有交易,将它们组合成一个字符串。第二步,找到一个随机数,在这个字符串的末尾加上这个随机数,组合成一个新的字符串。把新字符串输入到SHA-256函数中,得到一个256位随机数。如果这个256位随机数的前72位全是0,那么这个额外的工作就完成了,否则继续寻找,知道找到为止。这个额外的工作使得整个比特币网络中,每十分钟只有一个新区块能够被添加到区块链中。这样一来,有了一段较长的时间来判别新发布的交易信息的合法性。

       

                                                                            图 11        

 

        此外,区块链还有一个“最长链原则”,整个系统只维护最长的那条链,较短的支链会被删除。它是为了应对一种极端的情况:如果恰好有两个矿工同一时刻发布了新区块,当然他们的区块的内容会有所不同,到底把哪个块加入到链中呢?区块链会先暂时保留着两个区块,但并不对其进行认证,直到下一个十分钟里,再有一个新区快被添加以后,可以找出最长链为止,舍弃较短的支链,认证长链上的区块。只有被认证的区块内存储的交易才是合法的。

        

                                                                        图 12        

 

        下面我同一回答一下如何解决这三个一致性问题:

        1.如何同步:区块链只维护主链,保证了唯一的合法数据。离线节点上线后会向周围节点发出请求,获取数据,检查无误后同步数据。

        2.如何防止被篡改:任何改变都会改变该区块的SHA-256函数值,使他与后面区块记录的“前一个区块的SHA-256”函数值不同,导致区块链断裂。区块链仅维护最长的主链,断裂后的短链会被删除。黑客只有拥有了超过整个网络中其他节点之和的计算能力,才能在修改一个区块的数据后,马上在后面添加新的区块,使他的篡改不被删除。

        3.双花问题:新区块被添加的时候会检查他的交易记录,多笔带有“双花”问题的交易中,只有合法的那部分能够通过检查。

 

2.3   区块链的层级结构

       跳出具体的技术细节,我们站在一个更高的角度来看区块链的层级结构。它可以细分为5层,其中前三层是必要的。合约层和应用层则是根据应用场景的不同进行选择,数字货币选应用层,智能合约选合约层。

        数据层:包含区块数据、链式结构。其中,时间戳是在每次发布一个交易信息和添加一个新区快的时候,都要把当前的时间封装进去。

        网络层:主要是P2P网络。

        共识层:包含共识算法和共识机制。

        激励层:为了网络的茁壮生长,采取的一些策略,如比特币网络中矿工挖矿会获得奖励。

        合约层:一些合约。

        应用层:区块链的具体应用。

      

                                                                  图 13

                                     (此部分参考了文章:http://www.sohu.com/a/225732336_115060)

2.4  区块链的特点与优势

       区块链最主要的特点就是Peer to Peer。这种去中心化的存储和管理模式,可以有效的解决对“中心节点的信任缺失”问题,省去了运营、维护一个有权威的第三方管理机构的成本,简化了交易流程;同时它的数据一经加入到区块链中,便不可被篡改,且这种链式结构可以追中交易的走向,从某种程度上将是很安全的。正因为如此,为了提高效率、节约成本,全世界都在投入力量去研发区块链的相关应用。

        

 

Part 3 区块链的现状与发展

 

2.1  区块链的发展历程

       之前我介绍的以比特币为代表的区块链产品被归纳为区块链1.0时代,它们的典型特征是:一,以区块为单位的链状数据块结构,二,全网共享账本,网络每个节点都存储账本,三,应用了非对称加密技术的账户体系,四,源代码开源。

       从2014年开始,业界认识到了区块链的价值,将其应用于数字货币之外的领域,如如分布式身份认证、分布式域名系统、分布式自治组 织等。这些应用称为分布式应用,DAPP。 

        

                                                                           图 14                            

 

2.2  区块链的生态结构

        随着区块链技术的演进,越来越多的机构开始重视并参与到区块链技术的探索中来。从最初的比特币、以太坊等公有链项目的开源社区,到各种类型的区块链创业公司、风险投资基金、金融机构、IT企业及监管机构,区块链的发展生态也在逐渐得到发展与丰富。

        

                                                                         图  15

 

2.3  区块链的应用场景

       区块链的应用场景非常丰富,除了金融服务外,还涉及医疗、版权保护、教育、社会公益等多种场景。它们所解决的行业痛点,也大多都是基于“信任缺失”和“降低管理成本”。

        

                                                                            图  16

 

2.4 区块链与新一代信息技术

       从国内外发展趋势和区块链技术发展演进路径来看,区块链技术和应用的发展需要云计算、大数据、物联网等新一代信息技术作为基础设施支撑,同时区块链技术和应用发展对推动新一代信息技术产业发展具有重要的促进作用。

        

                                                                         图  17

                

                            (图 15、16、17 取自: 由工业和信息化部信息化和软件服务业司指导,

                                中国区块链技术发展论坛编写的 《中国区块链技术应用和发展白皮书》)

2.5 区块链产业的管理

        区块链产业的管理,一方面是产业自身内部形成了多个联盟,来制定相关标准;政府方面也积极参与到区块链的管理工作,制定相关政策。

 

                    (文章是由我的大作业演讲略微修改后呈现的,图片也是ppt中所用,如有不合理的地方,还请多包涵)

                    (文章的举例部分参考了网络中非常好的区块链入门视频:  比特币的原理)

 

 

发布了27 篇原创文章 · 获赞 7 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览