区块链入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未

来。

可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有

解释。

下面,我就来尝试,写一篇最好懂的区块链教程 。毕竟它也不是很难的东西,核

心概念非常简单,几句话就能说清楚。我希望读完本文,你不仅可以理解区块

链,还会明白什么是挖矿、为什么挖矿越来越难等问题。

需要说明的是,我并非这方面的专家。虽然很早就关注,但是仔细地了解区块

链,还是从今年初开始。文中的错误和不准确的地方,欢迎大家指正。

一、区块链的本质

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

首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块

链,也可以从里面读取,所以它是数据库。

其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世

界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向

任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。

二、区块链的最大特点

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

点。

区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链

没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止

出现居于中心地位的管理当局。

正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了

管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。

但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的

呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。

三、区块

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

是创建一个区块。

每个区块包含两个部分。

区块头(Head):记录当前区块的元信息

区块体(Body):实际数据

区块头包含了当前区块的多项元信息。

生成时间

实际数据(即区块体)的 Hash

上一个区块的 Hash

...

这里,你需要理解什么叫 Hash,这是理解区块链必需的。

所谓 Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链

的 Hash 长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个

256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不

同的。

举例来说,字符串123的 Hash 是

a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进

制就是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.16236122。

区块链协议规定,使用一个常量除以难度系数,可以得到目标值(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. 不存在所有成员都信任的管理当局

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。 可是,简单易懂的入门文章却很少...
    欲速_则不达阅读 176评论 0 1
  • 区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。 可是,简单易懂的入门文章却很少...
    伯纳乌的追风少年阅读 350评论 0 1
  • 一首诗(二十四) 爱,或来或去,或去或来 恰又此刻此地逗留 爱,或停或走,或走或停 恰又某年某月静候 爱,或苦或甜...
    碎尘啊阅读 100评论 0 0
  • 星期六的早晨,我们一家四口来到了雨后的动物园,晴朗的天空,也许是因为立秋的缘故,空气中少了夏日的燥热,多了...
    禾禾治愈系阅读 627评论 2 2
  • 昨天在网上看了一个赵丽颖去年拍的电影《女汉子真爱公式》,影片故事情节紧凑,人物性格鲜明,语言风趣幽默,让人印象深刻...
    安之腾阅读 2,875评论 7 11