最新消息:

区块链是什么?任何小白都能看懂的通俗解释!

科普 admin 347浏览 1评论

(第二段才是重点,想快速理解区块链请直接阅读第二段。)

区块链技术是当前互联网行业最热门的话题之一,目前种种迹象似乎都预示着:区块链将成为未来互联网基础设施之一,就像宽带、4G网络一样基础一样重要,甚至可能带来一场伟大的社会变革。对于这样一个巨大的风口,很多同学都迫切地想了解它,但其实要说明区块链是什么并不容易,因为涉及太多的技术知识了。但是没关系,今天我就试图用一种通俗易懂、浅显直白的语言,为大家解释什么是区块链。这里讲的主要是公链,并主要以比特币为例,所以有时并没有区分“区块链”与“比特币区块链”,我觉得从比特币这个特例入手,有利于大家更好地了解区块链。

区块链可理解为一个数字货币(例如比特币)的交易账本,我们现实世界中的账本是一页一页的,但区块链账本是一块一块的,您可以把“一块”理解为“一页”。现实账本一页中可以记录十几条交易记录,而一个区块中可以记录两三千条交易记录。那么,什么是“链”呢?链,可以理解为现实账本中的“页码”,第一页第二页第三页第四页,不可以颠倒,当然我们现实世界中的账本可以人为地涂改页码,但是区块链的“页码”是受加密技术保护的,无法篡改。不仅区块间存在“链”的关系,区块中的交易记录也存在“链”的关系,用来追溯上一笔交易,交易记录之间的关系,也受加密技术保护,无法篡改。

那么区块链这样一个电子账本是保存在什么地方的呢?答:它是分布式存储的。意思就是将它复制很多份副本,存储在很多不同的电脑上,每个电脑都存储一份,全世界存储了数以万计的副本。这里要注意的是:分布式并不是指把区块链分割成许多份,存储在不同的电脑上,而是所有的电脑都存储相同的区块链。这样做的好处是,就算其中一些副本被篡改,它跟其它大多数副本不一致,那么这种篡改是不会被承认的,或者就算有一些副本丢失了,我们也仍然能从别的节点(电脑)上拿到副本。用“副本”这个词其实是不准确的,因为并不存在一个“正本”,全世界的节点都是平等的,不存在谁正谁副。

那么这时候同学们肯定又有疑问了:这些副本是如何复制到全世界不同的电脑上呢?以比特币为例,我们玩比特币的时候,要先到比特币官网下载一个钱包软件,也叫客户端,客户端第一次启动后,就会通过网络把别的电脑上的区块链下载下来,这个过程可能很漫长,因为现在比特币区块链已经变得很大,有一两百G那么大。这么大的容量可能会使一些同学产生质疑:一个钱包这么大,那这玩意还有实用性吗?其实普通用户可以使用另一种非完全节点的钱包,比完整的钱包小1000倍,另一方面,除了比特币之外还有很多种不同类型的区块链,他们有的会设计一些方案去解决这个问题,他们的钱包不一定像比特币这样臃肿。

区块链节点(电脑)与节点之间是如何通讯的呢?比如说,如何去别人的电脑上下载区块链,我怎么知道别人的电脑在哪里,他怎么会同意给我下载呢?答案是:使用的是P2P技术。这里的P2P,不是指网贷,而是点对点通讯技术,其实P2P这个词,出现得比网贷早得多,大家其实也一直在用,只是可能不知道它就是P2P技术而已。比如BT种子,没错,就是下载小电影那种BT种子,就是经典的P2P应用。其实那些小电影,并没有放在一个中心服务器上,如果放在一个中心服务器上,警察叔叔或者电信一封,那就没了,很脆弱,还捉人!那些小电影,其实是放在每个用户的电脑里,用户和用户之间,通过下载工具(比如迅雷)里的P2P功能共享资源,所以我们可以看到,我们用BT下载的时候,迅雷需要去寻找资源,如果资源太少下载速度就会比较慢。在这里,区块链和小电影是相似的,比特币钱包和迅雷也是相似的。我们把用来传送比特币数据的P2P网络称为“比特币网络”。

这时可能有同学会问,既然所有节点都是平等的,那么区块链现在这么大的数据,是谁加进去的呢?是不是任何人都可以添加?不是的,如果所有用户都能随意添加数据,那区块链还有什么安全性可言呢?其实,任何人都能随意接入比特币区块链网络,成为其中一个节点,就像任何人都能通过BT种子和迅雷下载小电影一样,但并不是任何人都能修改区块链,区块的增加,是要遵循一点的规则的,还需要被全网大部分节点认可。

那么如何才能“被全网大部分节点认可”?这里还得回过来说一下钱包,比特币的钱包软件,其实没有规定必须是官网发布的,也没有说哪家公司开发的钱包才是正版的,任何公司或者个人都可以开发比特币钱包,但是他们都必须遵循同样的协议——比特币协议。这份协议规定了钱包应该如何验证数据,什么数据是有效的,钱包可以向比特币网络发送什么数据,数据格式是什么样的,等等等。至于钱包是用什么计算机语言开发的,哪个公司开发,比特币协议不管你。由于绝大部分节点都遵循协议,你如果向比特币网络发送一个不符合协议的数据,别的节点根据协议验证不通过,就直接把你发过来的玩意扔掉,不理你的。那么,是不是我们向比特币网络发送一个符合比特币协议的区块,就可以增加区块链的长度呢?是的,没错!但前提是“符合比特币协议”,目前要构建一个符合比特币协议的区块,绝不是一件容易的事情,你如果构建出一个,你就能小发一笔,赚个几十万元,这就是挖矿

矿工节点也可以通过P2P技术接入区块链网络,他们的工作是寻找符合区块链协议的新区块。首先还得说一下“交易”,比特币用户将一笔比特币支付到另一个钱包地址的时候,这一条交易信息就被钱包发送到比特币网络传播,矿工会收集这些交易信息,一般会收集两三千条,将它们打包在一起,这就是区块,然后呢,要像寄快递一样,写个单子贴在包裹上面。这个单子就是“区块头”,但是这个单子要怎么写,就是一件麻烦事了,因为比特币协议里面规定,矿工必须先做出一道难题,才能知道单子怎么写。这道难题大概是这样的:请问!数字157812953是由哪两个数字相乘得到的?1除外!对,没错,分解因子,小学生都会,但您可以尝试手动做一下,我保证你一小时内做不出来。这种问题为什么难呢?因为需要用数字一个个去试,没有快速算出答案的方法。小学生之所以会做,是因为他们拿到的数字很小,给他个数字35,小学生都能立马知道 35 = 5 * 7 ,这是因为他背过乘法口诀。但是对于大数字,这个问题就变得很难,上面问题的答案是 157812953 = 11351 * 13903 , 后两个是素数,无法再分解,所以没有其它答案。

实际上,比特币协议给矿工出的题目,比这个还要困难非常多,而且难度是会逐渐增加的,发展到目前,如果不使用超级计算机或者计算机集群,是几乎不可能解决那种难题的,而且庞大的计算机集群会消耗非常多的电能,这就是为什么我们经常会听说挖矿很耗电的原因。当矿工找到答案,解决了问题的时候,就会把答案写在单子上(区块头),然后把这个包裹(新区块)发送到区块链网络上。网络上其它节点(包括钱包和矿工)收到这个区块后,就去验证区块头是否正确。如何验证?首先是因为所有节点都遵守区块链协议,所以大家都知道协议要求该新区块解决157812953的分解因子问题,而答案已经写在区块头上了,大家只需做一下乘法11351 * 13903就能知道答案是否正确,分解因子很难,但做乘法却可以很快。除了验证难题的答案之外,各个节点还要验证别的信息,尤其是区块链里所包含的两三千条交易信息,如果交易信息是虚假的,那么这个区块也是无效的,这时候那个挖出该区块的矿工就白忙了。如果该区块所有的信息都是正确的,那么各个节点就会将它作为新区块增加到区块链末尾。

那么这里有个问题是,为什么要让矿工做难题?这不是浪费资源么?我们在上面可以看到,如果矿工所发送的新区块里所包含的交易信息是虚假的,那么他将会白忙,不仅浪费了时间,也浪费了电费。但是如果他不用做难题,那么他的时间和电力成本就非常低,他就可以任意提交一些虚假或者未经检验的交易信息到区块链网络,如果很多人这么做,那么就会导致区块链网络混乱和低效。为了防止白忙,矿工在收集交易信息构造新区块的时候,就要验证每一笔交易都是有效的。如何验证?使用了“链”的关系以及一些密码学技巧。

上文提到,矿工要解决的难题,其难度是会逐渐增加的,为什么呢?既然区块链网络是一个去中心化分布式的网络,那么是谁在控制着难题的难度呢?答案是:区块链协议。因为所有节点都遵循同样的协议,所有节点都在程序上执行同样的难度算法,没错,难度是计算出来的,是根据之前2016个区块的平均挖掘时间计算出来的,如果平均时间低于10分钟,就增加难度,如果多于10分钟,就降低难度。难度如何调整?以上面分解因子的题目为例,如果前2016个区块的平均挖掘时间是10分钟,就让矿工分解157812953,如果少于10分钟,就分解274086301,多了1亿,如果多于10分钟,就分解47989217,少了1亿。通过调整数字的大小来调整难度,以确保每个区块的平均产出时间是10分钟左右,而数字大小的调整,是可以通过简单的算法实现的。那么算法是如何知道时间的呢?其实每个区块头里面都含有区块产出时的“时间戳”,所以所有节点都能计算前2016个节点的平均产出时间。2016个区块刚好2个星期。

可能又有的同学会问:矿工自己不增加难度,仍然做简单的题目,不可以吗?不可以!因为其它节点都遵循协议增加了难度,你不增加难度,你所解决的难题是不符合要求的,别人连你做的题目都不会承认,你把答案解出来有什么用?“我们大家都按协议规定在做高难度的题,你做的这个是什么鬼?还要我承认你?”没人会理你,大家不承认你解决了难题,你所挖出来的新区块就是没用的,你如果不想白忙,就老老实实跟别人一样增加难度。当然,只要挖矿软件是事先依照协议编写的,那么它就会自动调整难度,不需要矿工手动调整。随着挖矿的节点越来越多,算力越来越强,近几年来比特币区块的挖掘难度呈指数级增长,已经不是一般散户玩得起的了。

至此,我相信您已经知道区块链大概是怎么一回事了。其实区块链涉及的知识非常多,再给我三倍的篇幅也是写不完的,后面我会在本站陆续发表相关文章,敬请继续留意。如果您对上文中还有不明白的地方,可以在下面留言,我会一一解答。

如果这篇文章解答了您心中的疑问,请分享给您的小伙伴们吧,让我们一同进步,为祖国的区块链事业奉献一份微薄的力量!

作者:不是企鹅

本文由 不是企鹅 授权 本站(区块链是什么) 发表,并经本站编辑。转载此文请于文首标明作者姓名,保持文章完整性,并请附上出处及本页链接。未按照规范转载者,本站保留追究相应责任的权利。

转载请注明:区块链是什么 » 区块链是什么?任何小白都能看懂的通俗解释!

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)