区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

用户投稿 86 0

让小白也能轻松看懂“区块链”的基础知识

其实关于“区块链”的基础知识普及,网上已经有了各种版本不同的解读,或许有人认为“区块链”距离最终用户比较遥远,但看看你身边的人,应该已经有人开始与“区块链”及相关技术发生了关联。就在不久之前,笔者所在的一些并不非常关心科技行业的朋友群组中,也开始对“区块链”加以讨论,而讨论的重点并非在概念与技术,更多在投机与赚钱上。从言语中笔者发现,他们虽然在讨论“区块链”,但是却对相关知识知之甚少。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

“矿机”

所以,笔者坚持的认为写出一篇简单易懂的文章来讲述“区块链”的基本知识这是非常有必要的。至少可以为那些虽然不懂“区块链”,但却急于利用其投机赚钱的普通用户做一个基础的概念教育,让他们在对“区块链技术”有个基本的认识之后,再去决定自己是否真的要一头扎进各种“数字货币”的领域之中。也可以让他们意识到,“数字货币”只是区块链技术的一个应用场景而已。不过,由于给笔者的时间有限,所以本篇文章中笔者只能先给大家讲述一些皮毛。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

啥是“区块链”我不懂,我就知道它能赚钱

这句小标题是笔者的一个朋友亲口说出来的。相信有更多人都和笔者的这位朋友一样,虽然不明白“区块链”是什么,但就知道通过这项技术衍生出来“数字货币”(如比特币等)可以用来赚钱。

这确实是一个实实在在的问题,其实不光是这名朋友,甚至连笔者,也不敢说自己真的明白“区块链”究竟是什么,但仍然可以在这里写这篇文章。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

比特币

“区块链”究竟是什么? 百度百科上是这样定义的:狭义来讲 ,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲 ,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

是不是听起来很繁琐?别急,让笔者为你做一个简单的解读。大家都玩过网游,也知道网络游戏中有虚拟的货币与虚拟的物品,笔者曾是一名资深的《魔兽世界》玩家,所以,这里就用《魔兽世界》里面的一些规则来打个比方。

假设在部落建立之初,萨尔(兽人首领兼大酋长)、凯恩·血蹄(牛头人首领)、沃金(暗矛部族首领)、希尔瓦娜斯·风行者(女妖之王)以及洛瑟玛·塞隆(奎尔萨拉斯的摄政王)五大首领之间都只是“表面队友”。然而既然组成了部落,就难免需要进行贸易往来,于是,萨尔想出了一套交易系统。首先,每个种族的领袖分别准备一个账本。有一天,萨尔给与了凯恩·血蹄1000个金币,这时,他就要向所有人大吼一声——萨尔给了凯恩·血蹄1000个金币,并让其他人在账本上都记录上“萨尔给了凯恩·血蹄1000个金币”。同时,凯恩·血蹄也要大喊“凯恩·血蹄收到了萨尔给的1000个金币”这样就完成了一次交易。随后,在发生同样的情况,比如,凯恩·血蹄将这1000个金币里的500个金币给了沃金,它也可以同样大喊道“凯恩·血蹄从萨尔给出的1000个金币里,拿出500个金币给了沃金。”沃金在收到钱的同时也要大声喊道,“沃金收到了萨尔给凯恩·血蹄1000个金币中的500个金币。”同样,除了参与交易的两个人,其他人同时在账本上记录下这句话。如此下来,就形成了一个透明、且可以相互监督的交易体系。并且,从交易流程我们可以发现,凯恩·血蹄与沃金交易时喊出并被记录下的话明显比之前萨尔与凯恩血蹄交易时喊出的话要更为复杂了,但它却包含了之前一次交易的信息,如此下去,一方面可以将交易持续进行下去,另一方面也将此前的交易信息永久保存。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

《魔兽世界》萨尔

这就是一个最基本、最简单的区块链模式,区块链的本质就是一个分布式的公共账本,就像上述故事里每一个种族的首领拥有的账本一样,任何人都有权对这个公共账本进行核查,但并不存在一个单一的用户可以对账本进行控制。这一模式可以通过参与者共同的更新,持续发展并永久保留下最原始的数据。

区块链模式的基本特征:去中心化

上面,我们简单的描述了区块链模式,下面,我们再来说说区块链的基本特征。理论上,区块链具有去中心化、开放性、自治性、信息不可篡改以及匿名性,而这些特性中最基本的一个特性就是去中心化,这也是区块链具有颠覆性的主要特征之一。

什么是中心化?依旧以《魔兽世界》为例,中心化就是《魔兽世界》里大部分玩家的交易方式中,最保险的方式就是通过交易行进行。这里的交易行作为一个第三方中心拥有权威性和公信力,所有玩家通过交易行进行交易都不必担心物品或金币被人骗走的风险。然而这样也存在一定的弊端,就是即使你不喜欢交易行,也必须通过其进行交易,一旦交易行数据发生错误时,你也将面临财物的损失。

再举一个现实的例子,假设你在淘宝购买手机,虽然表面上看起来你是在跟手机卖家进行交易,但你的货款首先要支付到支付宝当中。随后,卖家看到你的货款到达支付宝手中,便会给你发货,等你收到手机后,点击确认收货,支付宝便会把货款打给卖家。如此完成交易的过程,就是一个中心化的交易模式,这个中心就是支付宝,它起到了监督与核查的作用。

什么是去中心化? 当然,《魔兽世界》里除了交易行外,还有玩家与玩家的面对面交易。这样高效且直接的交易方式也就是去中心化的交易模式。依然回到现实当中,你仍然通过网络购买手机,去中心化后,支付宝便不再参与到你们的交易过程中,你只需和卖家交换钱和手机,随后双方都声称完成了该笔交易,那该笔交易便完成了。该过程中的好处主要在于交易效率更高、更便利,而且无须担心买卖双方除交易信息外的个人信息泄漏。

但是,去中心化以后,便有两个基本的问题暴露出来——“两军问题”和“拜占庭将军问题”。其中“两军问题”主要反映出在一个不可靠的通信链路上试图通过通信以达成一致是存在缺陷和困难的;“拜占庭将军问题”则反映了在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。这两个问题都是去中心化后,信息所面临的可信度与准确性问题。

两军问题 , 假设萨尔与凯恩·血蹄各自带领200名部落勇士,分别在东西两个山头上驻扎,试图进攻处在两个山头间峡谷里驻扎的300人联盟军队。显而易见,由于人数上的差距,如果萨尔与凯恩·血蹄的部队无法同时发起进攻,这场战斗很难获胜。于是,萨尔派出传令兵给凯恩·血蹄,发布“上午9点准时进攻”的消息。而为了确保传令兵成功通过联盟阵地并准确无误的将消息传递给了凯恩·血蹄,所以凯恩·血蹄方面在收到命令后需要派出另一名传令兵告知萨尔“我已经收到你关于9点准时进攻的信息。”同理,萨尔方面还要继续派传令兵传递回执“我已经收到关于你收到我命令你9点准时进攻信息的信息。”如此循环下去,就没完没了了。

拜占庭将军问题 ,相比两军问题,拜占庭将军问题也同样棘手。拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

如何解决以上两个问题呢?熟知技术的人都知道“两军问题”是一个无解的问题,相比之下,“拜占庭将军问题”更加容易通过算法来解决,而“两军问题”只能尽可能的通过系统规则的制定、算法加密等技术来尽可能避免。“区块链技术”的诞生,便是用于更好的解决去中心化系统中存在的问题的方法。它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实。

仍然以我们之前讲述的部落首领的交易模式为例,当一个去中心化的交易系统建立起来后,之所以系统内,无需任何的第三方中心进行担保,主要是因为所有的交易都会被记录在每一个用户都可以核查的分布式公共账本之上。假设,其中一个用户试图耍赖,比如之前我们讲到凯恩·血蹄公布说给了沃金500金币,而沃金此时大喊“我没有拿凯恩·血蹄500金币”时,其他人都会站出来说,“不对,我们之前记录着沃金收到了凯恩·血蹄给出的500金币”。如此,便一定程度上解决了排除第三方中心担保后交易者之间的信任问题。

这时,你是否发现一个问题。在这个去中心化的系统模型内,并不局限于金币,任何物品都可以用来交易,只要系统内所有人都承认并记录就好了。比如,萨尔喊道,“我制造了100个Q币”。这时,萨尔本人甚至都不需要知道什么是Q币,只要系统内的所有人都听到并且在自己的账本上记录“萨尔拥有100个Q币”,于是,萨尔就真的有了100个Q币。此后,萨尔便可以喊话“我给了某人10个Q币”,只要系统内拥有账本的其他人听到这句话,并承认了这一信息,那么此次交易便完成了,即使《魔兽世界》里根本没有Q币,但这并不重要。

看到这里,你是不是比较自然的联想起众多“区块链”体系下的“数字货币”,比如比特币、玩客币等等。当然,上面用魔兽世界为例讲述的只是一个最为简单的模式,“数字货币”的系统规则、算法以及加密手段都要复杂的多,本篇文章只是向大家简单普及这个基本的模式。

现在,你是否对于“区块链”有了一个简单的基础认识呢?如果你并不玩魔兽世界,你也可以试着把文中的故事带入到任何一款类似的游戏或者团体当中,这样,便可从最基本的层面了解“区块链”以及“区块链技术”的一些基本常识。随后,如果有机会,笔者还会继续为大家普及其他的知识,比如“比特币”是什么、“挖矿”又是怎么回事等等。

区块链入门教程,这一篇就足够了

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。

下面,老男孩老师就来为大家总结一下。如有错误和不准确的地方,欢迎大家指出。

区块链的本质

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

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。

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

区块链的最大特点

分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性特点。

区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。

正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。

但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。

区块

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

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

每个区块包含两个部分。

1 :区块头(Head):记录当前区块的特征值

2 :区块体(Body):实际数据

区块头包含了当前区块的多项特征值。

1:生成时间

2:实际数据(即区块体)的哈希

3:上一个区块的哈希

4:.......

这里,你需要理解什么叫哈希(hash),这是理解区块链必需的。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。

举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a604c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)

因此,这里有2个重要的推论:

1 :每个区块的哈希都是不一样的,可以通过哈希标识区块。

2 :如果区块的内容变了,它的哈希一定会改变。

Hash的不可修改性

区块与哈希是一一对应的,每个区块的哈希都是针对"区块头"(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。

Hash = SHA256( 区块头 )

上面就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定,

前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。

这一点对区块链有重大意义。如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,哈希的计算很耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

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

采矿

由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。

所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。

这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。

这个过程就叫做采矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。

难度系数

读到这里,你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个哈希吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?

原来不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。

原来,区块头包含一个难度系数(difficulty),这个值决定了计算哈希的难度。举例来说,第100000个区块的难度系数是 14484.16236122。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

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

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

哈希的有效性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。

前面说过,当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做 Nonce。

Nonce 是一个随机值,矿工的作用其实就是猜出 Nonce 的值,使得区块头的哈希可以小于目标值,从而能够写入区块链。Nonce 是非常难猜的,目前只能通过穷举法一个个试错。根据协议,Nonce 是一个32位的二进制值,即最大可以到21.47亿。第 100000 个区块的 Nonce 值是274148111,可以理解成,矿工从0开始,一直计算了 2.74 亿次,才得到了一个有效的 Nonce 值,使得算出的哈希能够满足条件。

运气好的话,也许一会就找到了 Nonce。运气不好的话,可能算完了21.47亿次,都没有发现 Nonce,即当前区块体不可能算出满足条件的哈希。这时,协议允许矿工改变区块体,开始新的计算。

难度系数的动态调节

正如上一节所说,采矿具有随机性,没法保证正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此接下来的难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此接下来的难度系数就要调低10%。

难度系数越调越高(目标值越来越小),导致了采矿越来越难。

区块链的分叉

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

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

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

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

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

总结

区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年,没有出现大的问题。这证明它是可行的。

但是,为了保证数据的可靠性,区块链也有自己的代价。一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。

因此,区块链的适用场景,其实非常有限。

1 :不存在所有成员都信任的管理当局

2 :写入的数据不要求实时使用

3 :挖矿的收益能够弥补本身的成本

如果无法满足上述的条件,那么传统的数据库是更好的解决方案。

区块链技术基础 让小白也能轻松看懂“区块链”的基础知识

目前,区块链最大的应用场景(可能也是唯一的应用场景),就是以比特币为代表的加密货币。

相关问答

区块链新手入门基础知识?

回答如下:1.什么是区块链?区块链是一种去中心化的、公开的、不可篡改的账本技术,通过将交易记录按照一定规则进行打包,并形成一个区块,再将多个区块按照时...

部署区块链基础设施需要考虑什么?

技术选型:选择合适的区块链平台或框架,比如以太坊、超级账本等,并考虑是否需要自行搭建区块链平台或使用云服务...部署区块链基础设施需要考虑以下几个方面:...

学习前端开发,大数据,区块链,分别要掌握哪些基础语言?

前端开发要掌握哪些基础语言:通常前端开发在基础阶段掌握html+css+js;框架语言阶段掌握vue+react+小程序;后端掌握nodejs+mongdb+云开发;UI框架阶段熟悉常见...

区块链入门书籍《区块链真面目》怎么样?

对不起,请原谅!”区块链”这个词,我刚听说不久,不要说对它的解释和评价了。没有充分的认识,知听说是一种特殊的新型的高级的算法模式。我想如果是作为一...

区块链工程专业学什么?什么是区块链工程申请方

[回答]每当高考结束,特别是各省份的高考分数公布之后,很多高考学生在专业选择上存在很多疑惑,志愿填报想要选择区块链工程专业的很多同学都想了解金区块链...

马化腾知乎提问基础科学突破,为何1400条回答中没有区块链技术?你怎么看?

区块链并不能算基础科学了。就连计算机专业本身,至今也没有定论到底算不算一门科学,今天仍然有很多高校不愿意把计算机专业称为science,更别提在计算机专业范...

)。A合同必须书面协议组成,不可以口头协议B区块链技术...

B区块链技术或一般的分布式账本技术,是比特币等加密货币的基础技术C区块链是分布式账本的一种D在区块链中如果一个块被修改,网络上的每个人都会知道修改后的块...

当今世界最流行的区块链、大数据、人工智能、AR、VR或互联网带来的各种趋势的入门读物有哪些?

想要了解区块链建议读以下几本书:《区块链:从数字货币到信用社会》《区块链:定义未来金融与经济新格局》《比特币:一个虚幻而真实的金融世界》《区块链技术...

名字叫做火牛视频这款软件以区块链为基础以每天用...

怎么被骗的?金额多大?从办理的成功案例来看:无论平台是否关闭,人员是否跑路,公司是否注销,都可以追回的。想要追回的话,可以将手上所有的证据材料...

数字货币是什么?你是怎么理解的?-幸福里问答

数字货币最近终于千呼百唤出来开始试点啦。10月12日18时起,已经有深圳市5万名中签的“幸运儿”可以应用数字货币进行非常嗨的买买买啦!这些数字货币...

抱歉,评论功能暂时关闭!