漫画:什么是区块链?

两年前,小灰以前写过一期关于区块链的漫画,可能很多新来的小伙伴还没有看过。最近趁着区块链重新成为热门话题,小灰把这篇漫画稍作修改,再次推送给大家。



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



什么是区块链?


区块链,英文 Blockchain,本质上是一种去中心化的分布式数据库。任何人只要架设自己的服务器,接入区块链网络,都可以成为这个庞大网络的一个节点。


640?wx_fmt=jpeg



区块链既然本质是数据库,里面究竟存储了什么东西呢?让我们来了解一下区块链的基本单元:区块(Block)



640?wx_fmt=png



一个区块分为两大部分:


1.区块头 

区块头里面存储着区块的头信息,包含上一个区块的哈希值(PreHash),本区块体的哈希值(Hash),以及时间戳(TimeStamp)等等。


2.区块体

区块体存储着这个区块的详细数据(Data),这个数据包含若干行记录,可以是交易信息,也可以是其他某种信息。



刚才提及的哈希值又是什么意思呢?


想必大家都听说过MD5,MD5就是典型的哈希算法,可以把一串任意长度的明文转化成一串固定长度(128bit)的字符串,这个字符串就是哈希值。


而在我们的区块链中,采用的是一种更为复杂的哈希算法,叫做SHA256。最新的数据信息(比如交易记录)经过一系列复杂的计算,最终会通过这个哈希算法转化成了长度为256bit的哈希值字符串,也就是区块头当中的Hash,格式如下:


a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0


区块与Hash是一一对应的,Hash可以当做是区块的唯一标识。


不同的区块之间是如何进行关联的呢?依靠Hash和PreHash来关联。每一个区块的PreHash和前一个区块的Hash值是相等的。



640?wx_fmt=png



640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



什么是挖矿?


640?wx_fmt=jpeg



640?wx_fmt=jpeg



为什么要计算区块的哈希值呢?


既然区块链是一个链状结构,就必然存在链条的头节点(第一个区块)和尾节点(最后一个区块)。一旦有人计算出区块链最新数据信息的哈希值,相当于对最新的交易记录进行打包,新的区块会被创建出来,衔接在区块链的末尾。


新区块头的Hash就是刚刚计算出的哈希值,PreHash等于上一个区块的Hash。区块体的Data存储的是打包前的交易记录,这部分数据信息已经变得不可修改。


640?wx_fmt=png



这个计算Hash值,创建新区块的过程就叫做挖矿


用于进行海量计算的服务器,叫做矿机


操作计算的工作人员,叫做矿工



640?wx_fmt=jpeg



640?wx_fmt=jpeg



计算哈希值究竟难在哪里?咱们来做一个最粗浅的解释,哈希值计算的公式如下:


Hash = SHA-256(最后一个区块的Hash + 新区块基本信息 + 交易记录信息 + 随机数)


其中,交易记录信息也是一串哈希值,它的计算涉及到一个数据结构 Merkle Tree。有兴趣的小伙伴可以查阅相关资料,我们暂时不做展开介绍。


这里关键的计算难点在于随机数的生成。猥琐的区块链发明者为了增大Hash的计算难度,要求Hash结果的前72bit必须都是0,这个几率实在是太小太小。


由于(最后一个区块的Hash + 新区块基本信息 + 交易记录信息)是固定的,所以能否获得符合要求的Hash,完全取决于随机数的值。挖矿者必须经过海量计算,反复生成随机数进行“撞大运”一般的尝试,才有可能得到正确的Hash,从而挖矿成功。


同时,区块头内还包含着一个动态的难度系数,当全世界的硬件计算能力越来越快的时候,区块链的难度系数也会水涨船高,使得全网平均每10分钟才能产生出一个新区块。


小伙伴们明白挖矿有多么难了吧?需要补充的是,不同的区块链应用在细节上是不同的,这里所描述的挖矿规则是以比特币为例。



区块链的应用


640?wx_fmt=jpeg



640?wx_fmt=jpeg



640?wx_fmt=jpeg



比特币(BitCoin)的概念最初由中本聪于2008年提出,而后根据这一思路设计发布了开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。


什么是P2P网络呢?


传统的货币都是由中央银行统一发行,所有的个人储蓄也是由银行统一管理,这是典型的中心化系统。




640?wx_fmt=png




而比特币则是部署在一个全世界众多对等节点组成的去中心化网络之上。每一个节点都有资格对这种数字货币进行记录和发行。




640?wx_fmt=png



至于比特币底层的数据存储,正是基于了区块链技术。比特币的每一笔交易,都对应了区块体数据中的一行,简单的示意如下:



640?wx_fmt=png


交易记录的每一行都包含时间戳、交易明细、数字签名。


表格中只是为了方便理解。实际存储的交易明细是匿名的,只会记录支付方和收款方的钱包地址


至于数字签名呢,可以理解为每一条单笔交易的防伪标识,由非对称加密算法所生成。



接下来说一说比特币矿工的奖励:


640?wx_fmt=jpeg



比特币协议规定,挖到新区块的矿工将获得奖励,从2008年起是50个比特币,然后每4年减半,目前2018年是12.5个比特币。流通中新增的比特币都是这样诞生的,也难怪大家对挖掘比特币的工作如此趋之若鹜!



区块链的优势和劣势



640?wx_fmt=jpeg



区块链的优势:


1.去中心化


区块链不依赖于某个中心节点,整个系统的数据由全网所有对等节点共同维护,都可以进行数据的存储和检验。这样一来,除非攻击者黑掉全网半数以上的节点,否则整个系统是不会遭到破坏的。


2.信息不可篡改


区块内的数据是无法被篡改的。一旦数据遭到篡改哪怕一丁点,整个区块对应的哈希值就会随之改变,不再是一个有效的哈希值,后面链接的区块也会随之断裂。




区块链的劣势:


1.过度消耗能源


想要生成一个新的区块,必须要大量服务器资源进行大量无谓的尝试性计算,严重耗费电能。



2.信息的网络延迟


以比特币为例,任何一笔交易数据都需要同步到其他所有节点,同步过程中难免会受到网络传输延迟的影响,带来较长的耗时。




640?wx_fmt=jpeg



几点补充:


1.本漫画部分内容参考了阮一峰的博文《区块链入门教程》,感谢这位大神的科普。


2.由于篇幅有限,关于Merkle Tree 和 非对称加密 的知识暂时没有展开细讲,有兴趣的小伙伴们可以查阅资料进行更深一步的学习。



—————END—————



640?wx_fmt=jpeg
扫码或长按关注
回复「 加群 」进入技术群聊






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php外卖系统源码单店,网上订餐系统 v3.1 单店版

系统以简单实用为主,系统的每一个功能都是实用的,像以很多网站为了好看把页面填的满满的,用户进来不知从何处操作起,我们的系统,一切了为了用户,为了网站经营者。我们所做的不仅仅是一个店铺展示系统&#…

python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!

菜鸟进阶高手,需要内外的修炼,外练招式,内修心法。招式有很多比如基本的函数,类,文件,模块,到并发,数据库的使用,再到一些框架的使用无论是爬虫的西瓜皮框架,…

web容器(02):tomcat配置监控

1、tomcat的目录结构 tomcat一般给Java应用的&#xff0c;apache一般给php应用的 bin文件夹(启动文件)&#xff1a; 配置监听之类的内容是在catalina.sh中加 conf文件夹(配置文件)&#xff1a; 2、server.xml配置文件说明 <Server port"8005" shutdown"SHUTD…

一般一个前端项目完成需要多久_制作分销小程序最快要多久

小猪V5分销小程序小编了解到&#xff0c;微商城及微分销搭建成为当下热门话题&#xff0c;下面从多个方面来谈谈快速制作电商小程序最快要多久。微信为小程序开放了超过60多个入口&#xff0c;比如有微信群聊入口、微信聊天主界面下拉、App分享信息卡片、发现栏小程序主入口、发…

那些有趣的电子漫画合集

素材来源&#xff1a;芯片之家同事调电路连续通宵两个晚上&#xff0c;结果。。。坐着我的芯片靠椅&#xff0c;剪个帅帅的光头。更多电子漫画合集&#xff1a;转自&#xff1a;长按识别图中二维码关注—————END—————扫码或长按关注回复「加群」进入技术群聊

vim nerdtree 标签_7款vim插件

作者&#xff1a;QvQ链接&#xff1a;https://zhuanlan.zhihu.com/p/145793963来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09…

单片机怎么学?

—————END—————扫码或长按关注回复「 加群 」进入技术群聊

tableau linux无网络安装_四十二、Linux网络管理,软件安装,进程管理总结

「Author&#xff1a; Runsen」1、⽹络管理1.1 网络状态查看在Linux中经常使用ifconfig&#xff0c;route和netstat查看网络状态&#xff0c;它们就是. net-tools工具&#xff0c;下面我来使用下。我就说下ifconfig和route在我们的linux中有很多网卡接口&#xff0c;比如eth0第…

C语言,环形队列

什么是环形队列&#xff1f;环形缓冲区是一个非常典型的数据结构&#xff0c;这种数据结构符合生产者&#xff0c;消费者模型&#xff0c;可以理解它是一个水坑&#xff0c;生产者不断的往里面灌水&#xff0c;消费者就不断的从里面取出水。那就可能会有人问&#xff0c;既然需…

音频几个重要的参数

音频的采样率是什么&#xff1f;如果把音频当成一条曲线&#xff0c;那么采样率就是一秒钟从这个曲线里面提取样本的次数。8,000 Hz - 电话所用采样率, 对于人的说话已经足够11,025 Hz - AM调幅广播所用采样率22,050 Hz和24,000 Hz - FM调频广播所用采样率32,000 Hz - miniDV 数…

ps绿化工具_绿化消防车价位

绿化消防车价位绿化消防车价位 4吨东风消防洒水车&#xff0c;又称为多功能消防车&#xff0c;它是在东风原装二类底盘基础上加消防泵、消防炮、洒水炮及洒水车的前冲后洒、侧喷及水罐体组成&#xff0c;既能参加救火灭火功能&#xff0c;水炮的有效射程≥45米&#xff0c;每秒…

今天星期六

突然之间就到周六了&#xff0c;我记得上周的时候&#xff0c;我一个朋友说&#xff0c;这周我们要开个课程&#xff0c;课程的名字就叫做&#xff0c;「如何让你拥有快乐的今天」&#xff0c;然而&#xff0c;上周已经过去&#xff0c;嗖的一声&#xff0c;已经到了这周了&…

C语言验证大小端的几个方法

大小端的问题在很多面试笔试中都会遇到&#xff0c;最直接的考察是&#xff0c;笔试的时候&#xff0c;让你写一个代码&#xff0c;如何确定当前系统是大端还是小端的。什么是大端和小端呢&#xff1f;大端&#xff1a; 高位字节排放在内存的低地址端&#xff0c;低位字节排放在…

Windows系统带你一步一步无脑使用babel

不废话直接写看步骤&#xff1a; 1、在F盘新建一个文件夹叫babel 2、npm init 初始化项目 3、全局安装npm install babel babel-cli -g 4、项目安装npm install babel-cli --save-dev 项目目录里会多一个node_modules包 5、新建一个es6.js文件 随便写一段es6 6、输入指令babel …

python sklearn 归一化_数据分析|Python特征工程(5)

OX00 引言数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。特征做不好&#xff0c;调参调到老。重视调参&#x…

盘点多款国产Linux桌面操作系统

编辑&#xff1a;strongerHuang微信公众号&#xff1a;strongerHuang素材来源&#xff1a;百度百科、网络国产操作系统多为以Linux 为基础二次开发的操作系统。2014年4月8日起&#xff0c;美国微软公司停止了对Windows XP SP3操作系统提供服务支持&#xff0c;这引起了社会和广…

kafka rabbitmq优劣对比_Kafka、RabbitMQ、RocketMQ等消息中间件的对比

原文链接&#xff1a;Kafka、RabbitMQ、RocketMQ等消息中间件的对比消息中间件现在有不少&#xff0c;网上很多文章都对其做过对比&#xff0c;在这我对其做进一步总结与整理。RocketMQ淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件&#xff0c;使用Mysql作为消息存…

你应该知道这些有意思的代码

Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛&#xff0c;参赛者需要用三条推这么长的代码来生成一张图片。具体地说&#xff0c;参赛者需要用 C 语言编写 RD 、 GR 、 BL 三个函数&#xff0c;每个函数都不能超过 140 个字符。每个函…

python 对xlsx文件数根据日期进行统计分析_Python处理Excel的常用操作(一)

最近一直忙着学习和写开题报告&#xff0c;都没有时间更文了&#xff0c;今天偷偷来休闲一下。很多人一开始学习python&#xff0c;就是看到了很多关于python能够快速处理和解决表格的广告&#xff0c;于是便有了今天的分享。我主要利用pandas库来做一些简单且常规的操作。1、创…

(四)Asp.net web api中的坑-【api的返回值】

void无返回值IHttpActionResultHttpResponseMessage自定义类型我这里并不想赘述这些返回类型&#xff0c; 可以参考博文http://blog.csdn.net/leonken88/article/details/53063693 和大神的http://www.cnblogs.com/landeanfen/p/5501487.html 我要说我遇到的坑是&#xff0c; p…