AI笔试面试题库-什么是区块链?

为方便大家及时查看和学习AI相关课程的笔试和面试题目,小七会在公众号上陆续发布七月在线官网的题库试题带解析,欢迎大家及时沟通学习,有纰漏的地方也请大家及时指正,我们会逐渐完善题库信息,给大家提供更多更好的试题资源


官网链接:

https://www.julyedu.com/question/big/kp_id/29


解析:

本题解析来源:
@阮一峰,链接:http://www.ruanyifeng.
com/blog/2017/12/blockchain-tutorial.
htm

一、区块链的本质

区块链是什么?一句话,它是一种特殊的分布式数
据库。


首先,区块链的主要作用是储存信息。任何需要保
存的信息,都可以写入区块链,也可以从里面读取
,所以它是数据库。 其次,任何人都可以架设服务器,加入区块链网络,
成为一个节点。区块链的世界里面,没有中心节点,
每个节点都是平等的,都保存着整个数据库。你可
以向任何一个节点,写入/读取数据,因为所有节点
最后都会同步,保证区块链一致。

二、区块链的最大特点

分布式数据库并非新发明,市场上早有此类产品。
但是,区块链有一个革命性特点。 区块链没有管理员,它是彻底无中心的。其他的数
据库都有管理员,但是区块链没有。如果有人想对
区块链添加审核,也实现不了,因为它的设计目标
就是防止出现居于中心地位的管理当局。 正是因为无法管理,区块链才能做到无法被控制。
否则一旦大公司大集团控制了管理权,他们就会
控制整个平台,其他使用者就都必须听命于他们
了。 但是,没有了管理员,人人都可以往里面写入数据,
怎么才能保证数据是可信的呢?被坏人改了怎么办?
请接着往下读,这就是区块链奇妙的地方。

三、区块

区块链由一个个区块(block)组成。区块很像数
据库的记录,每次写入数据,就是创建一个区块。


每个区块包含两个部分。 区块头(Head):记录当前区块的元信息 区块体(Body):实际数据 区块头包含了当前区块的多项元信息。 生成时间 实际数据(即区块体)的 Hash 上一个区块的 Hash ... 这里,你需要理解什么叫 Hash,这是理解区块链
必需的。


所谓 Hash 就是计算机可以对任意内容,计算出
一个长度相同的特征值。区块链的 Hash 长度是
256位,这就是说,不管原始内容是什么,最后都
会计算出一个256位的二进制数字。而且可以保证,
只要原始内容不同,对应的 Hash 一定是不同的。 举例来说,字符串123的 Hash 是a8fdc205a9
f19cc1c7507a60c4f01b13d11d7fd0(十六进
制),转成二进制就是256位,而且只有123
能得到这个 Hash。 因此,就有两个重要的推论。 推论1:每个区块的 Hash 都是不一样的,可以
通过 Hash 标识区块。 推论2:如果区块的内容变了,它的 Hash 一定
会改变。

四、 Hash 的不可修改性

区块与 Hash 是一一对应的,每个区块的 Hash
都是针对"区块头"(Head)计算的。 Hash = SHA256(区块头) 上面就是区块 Hash 的计算公式,Hash 由区块
头唯一决定,SHA256是区块链的 Hash 算法。 前面说过,区块头包含很多内容,其中有当前区
块体的 Hash(注意是"区块体"的 Hash,而不是
整个区块),还有上一个区块的 Hash。这意味着,
如果当前区块的内容变了,或者上一个区块的
Hash变了,一定会引起当前区块的 Hash 改变。 这一点对区块链有重大意义。如果有人修改了一个
区块,该区块的 Hash 就变了。为了让后面的区
块还能连到它,该人必须同时修改后面所有的区
块,否则被改掉的区块就脱离区块链了。由于后
面要提到的原因,Hash 的计算很耗时,同时修
改多个区块几乎不可能发生,除非有人掌握了全
网51%以上的计算能力。 正是通过这种联动机制,区块链保证了自身的可
靠性,数据一旦写入,就无法被篡改。这就像历
史一样,发生了就是发生了,从此再无法改变。


每个区块都连着上一个区块,这也是"区块链"这个
名字的由来。

五、采矿

由于必须保证节点之间的同步,所以新区块的
添加速度不能太快。试想一下,你刚刚同步了
一个区块,准备基于它生成下一个区块,但这
时别的节点又有新区块生成,你不得不放弃做
了一半的计算,再次去同步。因为每个区块的
后面,只能跟着一个区块,你永远只能在最新
区块的后面,生成下一个区块。所以,你别无
选择,一听到信号,就必须立刻同步。 所以,区块链的发明者中本聪(这是假名,真
实身份至今未知)故意让添加新区块,变得很
困难。他的设计是,平均每10分钟,全网才能
生成一个新区块,一小时也就六个。 这种产出速度不是通过命令达成的,而是故意
设置了海量的计算。也就是说,只有通过极其
大量的计算,才能得到当前区块的有效 Hash,
从而把新区块添加到区块链。由于计算量太大,
所以快不起来。 这个过程就叫做采矿(mining),因为计算有
效 Hash 的难度,好比在全世界的沙子里面,
找到一粒符合条件的沙子。计算 Hash 的机器
就叫做矿机,操作矿机的人就叫做矿工。


六、难度系数

读到这里,你可能会有一个疑问,人们都说采矿
很难,可是采矿不就是用计算机算出一个 Hash
吗,这正是计算机的强项啊,怎么会变得很难,
迟迟算不出来呢? 原来不是任意一个 Hash 都可以,只有满足条件
的 Hash 才会被区块链接受。这个条件特别苛
刻,使得绝大部分 Hash 都不满足要求,必须
重算。 原来,区块头包含一个难度系数(difficulty),
这个值决定了计算 Hash 的难度。举例来说,
第100000个区块的难度系数是 14484.162361
22。



区块链协议规定,使用一个常量除以难度系数,
可以得到目标值(target)。显然,难度系数越
大,目标值就越小。



Hash 的有效性跟目标值密切相关,只有小于目标
值的 Hash 才是有效的,否则 Hash 无效,必
须重算。由于目标值非常小,Hash 小于该值的
机会极其渺茫,可能计算10亿次,才算中一次。
这就是采矿如此之慢的根本原因。 区块头里面还有一个 Nonce 值,记录了 Hash
重算的次数。第 100000 个区块的 Nonce 值是
274148111,即计算了 2.74 亿次,才得到了一
个有效的 Hash,该区块才能加入区块链。

七、难度系数的动态调节

就算采矿很难,但也没法保证,正好十分钟产出
一个区块,有时一分钟就算出来了,有时几个小
时可能也没结果。总体来看,随着硬件设备的提
升,以及矿机的数量增长,计算速度一定会越来
越快。 为了将产出速率恒定在十分钟,中本聪还设计了
难度系数的动态调节机制。他规定,难度系数每
两周(2016个区块)调整一次。如果这两周里面,
区块的平均生成速度是9分钟,就意味着比法定速
度快了10%,因此难度系数就要调高10%;如果平
均生成速度是11分钟,就意味着比法定速度慢了
10%,因此难度系数就要调低10%。 难度系数越调越高(目标值越来越小),导致了
采矿越来越难。

八、区块链的分叉

即使区块链是可靠的,现在还有一个问题没有
解决:如果两个人同时向区块链写入数据,也
就是说,同时有两个区块加入,因为它们都连
着前一个区块,就形成了分叉。这时应该采纳
哪一个区块呢?

现在的规则是,新节点总是采用最长的那条区块
链。如果区块链有分叉,将看哪个分支在分叉点
后面,先达到6个新区块(称为"六次确认")。
按照10分钟一个区块计算,一小时就可以确认。

由于新区块的生成速度由计算能力决定,所以这
条规则就是说,拥有大多数计算能力的那条分支,
就是正宗的比特链。

九、总结

区块链作为无人管理的分布式数据库,从2009年
开始已经运行了8年,没有出现大的问题。这证
明它是可行的。 但是,为了保证数据的可靠性,区块链也有自己
的代价。一是效率,数据写入区块链,最少要等
待十分钟,所有节点都同步数据,则需要更多的
时间;二是能耗,区块的生成需要矿工进行无数
无意义的计算,这是非常耗费能源的。 因此,区块链的适用场景,其实非常有限。 不存在所有成员都信任的管理当局 写入的数据不要求实时使用 挖矿的收益能够弥补本身的成本 如果无法满足上述的条件,那么传统的数据库
是更好的解决方案。


目前,区块链最大的应用场景(可能也是唯一
的应用场景),就是以比特币为代表的加密货
币。下一篇文章,我将会介绍比特币的入门知
识。

十、参考链接
1.How does blockchain really work?
 by Sean Han 2.Bitcoin mining the hard way: the
 algorithms, protocols, and bytes,
 by  Ken Shirriff

640?wx_fmt=gif

为了让大家顺利转行AI相关岗位,七月在线特意推出机器学习集训营课程,迄今为止,「机器学习集训营」已经举办了四期,每一期都涌现出了不少优秀offer,特别是上一期很多同学从Java、Android、iOS等传统IT行业成功转岗AI拿到年薪三四十万,部分甚至超过四十万拿到五十万。


本第五期,在第四期的基础上,除了继续维持“入学测评、直播答疑、布置作业、阶段考试、毕业考核、一对一批改、线上线下结合、CPU&GPU双云平台、面试辅导、就业推荐”十位一体的教学模式,本期特地推出机器学习工程师的联合认证。且线下在北京、上海、深圳、广州、杭州、沈阳、济南、郑州、成都的基础上,新增武汉、西安两个线下点,十一城同步开营。


现推出特惠价格,2人及2人以上组团报名,可各减500元想组团者请加微信客服:julyedukefu_02。课程详情可点击 阅读原文。

扫码加客服微信

640?wx_fmt=jpeg

640?wx_fmt=gif

640?wx_fmt=jpeg

猜你喜欢

转载自blog.csdn.net/t7sfokzord1jaymsfk4/article/details/80906152