区块链100讲:从村里的帐原本看什么是区块链

image

好久之前就有个想法,把区块链的技术和概念整理成一个体系化的知识图谱,方便你们查阅和学习,大话已说出去好久,却一直没有践行(papa打脸!),天天的文章发布零散而缺少规律,相信大家看了也有点丈二和尚的感受。算法

那么从今天开始立下一个flag,天天(周一到周五)一篇文章,整合资料,介绍一个点,系列命名《区块链100讲》,今天先从什么是区块链开始吧~安全

本文摘自《白话区块链》,做者以一个通俗的例子介绍了什么是区块链,讲真,这是目前为止看到的最好理解的解释了。小编曾经用这个例子跟不少圈外人介绍过什么是区块链,灰常好用,看到你们崇拜的眼神内心美滋滋~!服务器

小哥哥小姐姐们能够学起来,展(撩)露(妹)才(撩)学(汉)的机会来了~!网络

固然不能忘记,感谢做者蒋勇老师,感谢机械工业出版社华章分社提供内容。分布式

1

从一本帐本提及

早些时候,农村通常都会有个帐房先生,村里人出个工或者买卖些种子肥料等,都会依靠这个帐房先生来记帐,大部分状况下其余人也没有查帐的习惯,那个帐本基本就是这个帐房先生保管着,到了年末,村长会根据帐本余额购置些琐碎物件给村里人发发,一直以来也都是相安无事,谁也没有怀疑帐本会有什么问题。帐房先生由于承担着替你们记帐的任务,所以不用出去干活出工,额外会有些补贴,仅此一点,倒也是让一些人羡慕不已。下图即是当时帐本的记帐权图示:学习

image

终于有一天,有我的无心中发现了帐房先生的那本帐。看了下帐面,发现数字不对,最关键的是支出、收入、余额竟然不能平衡。对不上,这可不行,当即报告给其余人,结果你们都不干了,这还得了。通过一番讨论,你们决定,轮流来记帐,这个月张三,下个月李四,你们轮着来,防止帐本被一我的拿在手里。因而,帐本的记帐权发生了以下图所示的变化:区块链

image

经过上图咱们能够看到,村里的帐本由你们轮流来保管记帐了,一切又相安无事了,直到某一天,李四想要挪用村里的公款,但是他又怕这个事情被后来记帐的人发现,怎么办呢?李四决定烧掉帐本的一部份内容,这样别人就查不出来了,回头只要告诉你们这是不当心碰到蜡烛,别人也没什么办法。加密

果真,出了这个事情之后,你们也迫不得已。但是紧接着,赵六也说不当心碰到蜡烛了;王五说不当心掉水里;张三说被狗啃了……终于你们决定坐下来从新讨论这个问题。通过一番争论,你们决定启用一种新的记帐方法:每一个人都拥有一本本身的帐本,任何一我的改动了帐本都必需要告知全部其余人,其余人会在本身的帐本上一样地记上一笔,若是有人发现新改动的帐目不对,能够拒绝接受,到了最后,以大多数人都一致的帐目表示为准。设计

果真,使用了这个办法后,很长一段时间内都没有发生过帐本问题,即使是有人真的不当心损坏了一部分帐本的内容,只要找到其余的人去从新复制一份来就好了。游戏

然而,这种作法仍是有问题,时间长了,有人就偷懒了,不肯意这么麻烦地记帐,就但愿别人记好帐后,本身拿过来核对一下,没问题就直接抄一遍。这下记帐记得最勤的人就有意见了。最终你们开会决定,天天早上掷骰子,根据点数决定谁来记当天的帐,其余人只要核对一下,没问题就复制过来。

咱们能够看到,在这个时候,帐本的记帐权变成了这样:

image

经过上图,咱们能够看到,经历了几回风雨以后,你们终于仍是决定共同来记帐,这样是比较安全的作法,也不怕帐本损坏丢失了。后来你们还决定,天天被掷到要记帐的人,能得到一些奖励,从当天的记帐总额中划出必定奖励的比例。

实际上,最后你们决定的作法,就是区块链中记帐方法的雏形了,接下来咱们就来了解一下区块链的技术理念。

2

区块链技术理念

区块链在本质上就是一种记帐方法,固然了,并非经过人来记帐的,而是经过一种软件,咱们暂且简称为区块链客户端。以上面的例子来讲,张3、李4、王5、赵六等人,就至关于一个个的区块链客户端软件,它们运行在不一样的设备上,彼此之间独立工做。一般咱们把运行中的客户端软件称为“节点”。这些节点运行后,彼此之间会认识一下。它们彼此之间是这样认识的:张三认识李四也认识王五,赵六联系到了张三,让张三把他认识的人的联系方式发给本身,这样赵六也认识了李四和王五,经过这样的方式,你们就造成了一张网,有什么事只要招呼一声,立马消息就会传遍整个网络节点。这种方式跟新闻转发差很少,不须要依靠某一我的,你们就能互通消息了,在区块链软件的结构中,这种互相通讯的功能称为“网络路由”。

在这个网络中,每一个节点都维护着本身的一个帐本,帐本中记录着网络中发生的一笔笔帐务。具体是什么样的帐务呢?这得看具体是什么样的功能网络。区块链技术属于一种技术方法,能够用来实现各类不一样的业务功能,小到如上例中的平常记帐,大到各类复杂的商业合约,等等,记录的数据也就不一样了。网络中的节点是独立记帐的,但是记帐的内容要保持彼此一致。所用的方法就是设定一个游戏规则,经过这个规则选出一个记帐的节点,就如上例中的掷骰子。在区块链系统中,这个所谓的“掷骰子”称为“共识算法”,就是一种你们都遵照的筛选方案,咱们能够先这么简单地理解。选出一个节点后,则一段时间内的帐务数据都以这个节点记录的为准,这个节点记录后会把数据广播出去,告诉其余的节点,其余节点只须要经过网络来接收新的数据,接收后各自根据本身现有的帐本验证一下能不能接得上,有没有不匹配和不规范的,若是都符合要求,就存储到本身的帐本中。

在有些系统中,会考虑到被骰子投中的节点的劳动付出,毕竟它要负责整理数据,验证数据,打包数据,还要再广而告之,这个活仍是挺辛苦的。因而会设计一种激励机制,负责打包数据的那个节点能够得到系统的奖励,这个奖励相似于论坛积分,站在软件技术的角度,就是一个数据。这个数据能够视为奖金,有时候你们会很积极地去争取那个奖金,因而就但愿骰子能投中本身,有些区块链系统在这个环节会设计出一种带有竞争的机制,让各个节点去抢,谁能抢到这个机会谁就能得到打包数据的权力而且同时得到这笔奖励,在这种状况下,咱们会形象地将这个竞争的过程称为“挖矿”。

那么,话又说回来了,咱们将一个个运行客户端称为节点,那到底怎么标记不一样的使用者呢?也是经过用户名注册吗?实则否则。在区块链系统中,这个地方的设计颇有意思,是经过一种密码算法来实现的,具体来讲是经过一种叫公开密钥算法的机制来实现的。咱们知道,对于一种密码算法来讲,不管算法过程是什么样的,都会有一个密钥。而公开密钥算法拥有一对(也就是两个)密钥,跟虎符同样,是彼此配合使用的,能够互相用来加解密。其中一个叫私钥,另一个叫公钥,公钥能够公开给别人,私钥要本身保管好。在区块链系统中,公钥就是用来用户身份识别的,通常不会直接使用公钥,由于不容易让人记住。公钥每每都比较长,实际处理的时候都会进行转换,好比取得公钥的最后20个字节或者通过一系列更复杂的转换,最后获得一个称为“地址”的转换结果,这个“地址”就能表明一个用户。

为何在区块链系统中要用这么一个奇怪的用户身份表示方法呢?彷佛看起来除了有些创意外,也没特别的用处。这里咱们就得再介绍下这个公开密钥算法的特别能力。以前提到说这种算法有两个密钥,那么这两个密钥是怎么配合工做的呢?咱们来简单说明一下:用公钥加密的数据必须用对应的私钥来解密,而用私钥加密(一般称为“签名”)的数据必须用对应的公钥来解密。这个特色但是能发挥很大用处的,就如上述的例子中,若是张三要发送给李四一张支票,那怎么传送呢?就这么发过去,会被那个记帐的人拿到,风险可就大了。因而张三想了一个办法,他在支票上用李四的公钥加了个密,而后再签上本身的名字(使用本身的私钥签名),这个时候其余人就算拿到支票也没用,由于只有李四才有本身的私钥,也只有李四才能解开这张支票来使用。这种功能设计在区块链系统中称为“脚本系统”。

如今咱们知道了,区块链的技术理念,其实就是你们共同来参与记帐,经过一种规则不断地选出帐务打包者,其余节点接收验证,而且每一个用户都有一对密钥表示本身,经过脚本系统的功能实如今公共网络中定向发送有价值的数据。

3

通常工做流程

经过上面的例子,相信读者朋友对区块链已经有了基本认识。区块链系统有不少种,第一个应用区块链技术的软件就是比特币,事实上区块链的概念就是比特币带出来的。到如今为止,已经出现了至关多的基于区块链技术的衍生系统,好比闪电网络、公证通、以太坊、超级帐本项目等。每一类系统都有本身的特色,例如汽车设计,有的设计成跑车,有的设计成运输车,有的设计成商务车,可是有一点,不管是什么类型的车,它的工做方式或者说工做流程都是相似的,在本质上它们都是同一类技术结构的产物。在这一小节,咱们从通常性的角度阐述一下区块链系统的工做流程,为了便于说明,咱们会选取一些场景例子。

咱们先来看一个转帐交易的流程。转帐交易本质上就是发送一笔数据,这个数据能够表示为资产,也能够表示为订单或者其余各类形式的数据,咱们看一下下面的图示。

image

从图中咱们能够看到,整个数据的发送过程其实仍是很简单的,数据发送出去后,会被打包进区块,而后广播出去给全部的节点确认,确认没有问题后就写入到各自的本地区块链帐本中,当网络中的大多数节点都确认写入后,这个转帐过程就算是完成了。有朋友可能会问,在这种分布式的网络中,怎么能知道是被大多数节点确认写入了呢?这里并无什么服务器登记呀?这个问题咱们先留着,在下面讲到区块链分类的时候会有详细的解释,你们能够先思考一下。

image

这个工做流程图是有表明性的,其余各类系统都是在这个基础上进行衍生和扩展。好比有些会增长身份认证功能,以确保只有符合身份验证的用户才能发送数据;有些则扩展交易数据的表达能力,不但能用来表示通常的交易转帐,还能表示更复杂的商业逻辑。各类应用不少,可是万变不离其宗。

实际上,说一千道一万,整个区块链网络,就是你们共同来维护一份公共帐本。注意了,这个公共帐本是一个逻辑上的概念,每一个节点各自都是独立维护本身帐本数据的,而所谓的公共帐本,是说各自的帐本要保持一致,保持一致的部分就是公共帐本,咱们看下图示:

如图所示,有些节点在广播新的数据,有些节点在接收数据,你们共同维护一个帐本,确保达成一致。区块链技术其实就是围绕如何保持数据的一致、如何让这个公共帐本的数据不被篡改来展开的。

本期就讲到这里,下期继续。什么是区块链,你明白了吗?找个身边的人演练一下吧~

本文内容节选自《白话区块链》一书的第1章《例说区块链》。

本书做者:蒋勇、文延、嘉文

感谢机械工业出版社华章分社的支持和分享。

如下是咱们的社区介绍,欢迎各类合做、交流、学习:)

image

相关文章
相关标签/搜索