摘要:区块链是一种新型去中心化协议,能安全地存储比特币交易或其它数据,信息不可伪造和篡改,可以自动执行智能合约,无需任何中心化机构的审核。交易既可以是比特币这样的数字货币,也可以是债权、股权、版权等数字资产,区块链技术解决了拜占庭将军问题,大大降低了现实经济的信任成本与会计成本,重新定义了互联网时代的产权制度。

区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看区块链是什么,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。

(1)区块链的本质

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

(2)区块链的最大特点

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

没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢,这就是区块链奇妙的地方。

(3)区块

       区块链由一个个相连的区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两个部分:区块头(Head):记录当前区块的元信息区块体(Body):实际数据
   区块头包含了当前区块的多项元信息生成时间实际数据(即区块体)的 Hash上一个区块的 Hash......      Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 Hash 长度是256位,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

(4)Hash 的不可修改性

区块与 Hash 是一一对应的,每个区块的 Hash 都是针对”区块头”(Head)计算的。

Hash = SHA256(区块头)

区块头包含很多内容(包括上一个区块的Hash、当前区块体的Hash等,见上图)。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。

如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

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

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

(5)挖矿

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

所以,区块链的发明者故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。

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

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


(6)难度系数

你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个 Hash 吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?(比特币挖矿机,就是用于赚取比特币的电脑,一般有专业的挖矿芯片,多采用烧显卡的方式工作)

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

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

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

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

(7)难度系数的动态调节

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

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

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


(8)区块链的分叉

即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认。现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认。

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

四个技术层面

1、数据结构

  区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。区块被从后向前有序地链接在这个链条,每个区块都指向前一个区块。其实它就是链表(文档)。就像是一份PDF电子文档,其每一页都有「页码编号」,以保持字句及章节的有序性。只是区块链中的“页码”比较特殊,当前页的页码是上一页「内容的指纹」,因此修改任何一页的内容,都会导致后一页的页码不能与之对应。因此链式结构的有序数据集具备了一定的「自校验功能」,或者一定程度上的「防篡改功能(tamper-proof)」,但链式结构并不能防止最新的若干个区块被删除。

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

  区块链的设计中还引入了树状结构(比如Merkle Tree)与图状结构(DAG),其本质都是让数据自身含有严谨的结构,可以被工具软件识别处理。这一点很像我们听到一段声音,我们能分辨出是音乐,或是噪音,我们近距离观察一个物体,我们能分辨出是人造物,或者是自然物。

2、数据备份

  区块链是由连接其中的所有电脑共同维护的,对于已经产生的区块,所有连接进来的电脑都有一份完整的区块链备份记录。仅仅让账本数据自身具备特殊的结构,做的还不够。若将同一份账本数据复制给跨越地域及文化界线的多个人存储起来,并且这些人之间不需要预先建立任何信任关系,则在最大程度上保障了账本数据的安全,也就是所谓的「去中心化存储」

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

  账本数据分布的越广泛,备份节点越多,则越安全,反之则容易被摧毁。除了账本数据之外,人们还在积极探索通用数据的去中心化存储及访问取回,IPFS就是一个示范项目。

3、POW(工作量证明

  工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中的,对于验证方则是易于验证的。它与验证码不同,验证码的设计出发点是易于被人类解决而不易被计算机解决。

POW (工作证明) 简单理解就是一份证明,用来确认你做过一定量的工作。

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

  对于 pow(工作量证明)这个词汇,人们比较熟悉了,而从自然语言的使用角度来看,对于特别熟悉的词汇,人们往往不会做深入的思考。人们看到、听到、说到 pow 这个词时,可能会立即想到“挖矿”、“算力”、“耗电”、“共识”等诸多概念,但也许很难想到,pow铸造出的账本,其实表达了一段难以磨灭的工作历史。pow 就像一个带有喷漆功能的车轮,被其碾压过的路面,必将留下车辙印记。账本中的每一个区块都需要付出制造代价,这些代价见证了真实的历史痕迹,若想伪造出另一份有竞争力的不同账本,就得付出同量级的制造代价。理解了这一点,就不难明白BCH-ABC、BCH-SV、BTC三套账本之间的本质区别:铸造难度相差悬殊,所以BTC仍然是BTC。耗费巨量算力创造的历史最难被伪造或篡改,这是PoW和PoC(Capacity,存储容量证明)、PoS、DPoS等共识算法的本质区别。

4、时间戳(timestamp)

  时间戳(timestamp),百度百科这样解释:一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。使用数字签名技术产生的数据, 签名的对象包括了原始文件信息、 签名参数、 签名时间等信息。广泛的运用在知识产权保护、 合同签字、 金融帐务、 电子报价投标、 股票交易等方面。

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

  区块链在P2P网络上通过节点间的共识算法实现了一个分布式的时间戳服务。

  区块链是在时间上有序的、由记录块(区块)组成的一根链条。一个区块包含两个部分:区块头(Block Header)和记录部分;区块中的所有记录通过默克尔树(Merkle Tree)组织起来,默克尔树根(Root)的哈希值做为本区块里所有记录的数字指纹被放入区块头。

  时间戳的设计,使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改。这是因为,如果改动某个区块里的一条记录,意味着该区块原来的默克尔树根失效了,需要改动区块头,该区块的数字指纹随之失效。又由于下一个区块的区块头包含这个哈希指针,这就意味着下一个区块也需要改动。如此直到最新的那个区块。

从技术角度简单解析什么是区块链-「链体科技」-链体讯区块链网

  每条数据都带有一个真实可信的时间戳(这条数据产生的真实时间点),这样造假行为就比较难奏效,因为假数据的时间戳一般都是最近的 。

  基于以上四点,我们可以思考思考人类文明发展演化的过程中,有哪些是富含结构的、冗余备份的、难以被篡改的?语言、神话、诗歌、族谱...,和区块链账本有很多类似的地方,区块链内含的世界时钟系统(时间戳),协调着大量的人工智能系统,会构筑出怎么的未来呢?