admin 管理员组

文章数量: 887031


2024年1月10日发(作者:iview实例教程)

什么是区块链技术,区块链技术是什么意思

本文详细的介绍,让大家了解什么是区块链.

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

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

下面,我就来尝试,写一篇最好懂的区块链教程。毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚。我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿、为什么挖矿越来越难等问题。

需要说明的是,我并非这方面的专家。虽然很早就关注,但是仔细地了解区块链,还是从今年初开始。文中的错误和不准确的地方,欢迎大家指正。

一、区块链的本质

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

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

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

二、区块链的最大特点

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

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

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

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

三、区块

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

每个区块包含两个部分。

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

区块体(Body):实际数据

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

生成时间

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

上一个区块的哈希

...

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

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

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

因此,就有两个重要的推论。

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

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

四、 Hash 的不可修改性

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

Hash = SHA256( 区块头 )

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

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

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

全网51%以上的计算能力。

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

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

五、采矿

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

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

网才能生成一个新区块,一小时也就六个。

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

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

技术1:区块+链

关于如何建立一个严谨数据库的问题,区块链的办法是:将数据库的结构进行创新,把数据分成不同的区块,每个区块通过特定的信息链接到上一区块的后面,前后顺连来呈现一套完整的数据,这也是“区块链”这三个字的来源。

区块(block):在区块链技术中,数据以电子记录的形式被永久储存下来,存放这些电子记录的文件我们就称之为“区块(block)”。区块是按时间顺序一个一个先后生成的,每一个区块记录下它在被创建期间发生的所有价值交换活动,所有区块汇总起来形成一个记录合集。

区块结构(BlockStructure):区块中会记录下区块生成时间段内的交易数据,区块主体实际上就是交易信息的合集。每一种区块链的结构设计可能不完全相同,但大结构上分为块头(header)和块身(body)两部分。块头用于链接到前面的块并且为区块链数据库提供完整性的保证,块身则包含了经过验证的、块创建过程中发生的价值交换的所有记录。

区块结构有两个非常重要的特点:第一,每一个区块上记录的交易是上一个区块形成之后、该区块被创建前发生的所有价值交换活动,这个特点保证了数据库的完整性。第二,在绝大多数情况下,一旦新区块完成后被加入到区块链的最后,则此区块的数据记录就再也不能改变或删除。这个特点保证了数据库的严谨性,即无法被篡改。

顾名思义,区块链就是区块以链的方式组合在一起,以这种方式形成的数据库我们称之为区块链数据库。区块链是系统内所有节点共享的交易数据库,这些节点基于价值交换协议参与到区块链的网络中来。

区块链是如何做到的呢?由于每一个区块的块头都包含了前一个区块的交易信息压缩值,这就使得从创世块(第一个区块)到当前区块连接在一起形成了一条长链。由于如果不知道前

一区块的“交易缩影”值,就没有办法生成当前区块,因此每个区块必定按时间顺序跟随在前一个区块之后。这种所有区块包含前一个区块引用的结构让现存的区块集合形成了一条数据长链。

总结区块链的基本结构:“人们把一段时间内生成的信息(包括数据或代码)打包成一个区块,盖上时间 戳,与上一个区块衔接在一起,每下一个区块的页首都包含了上一个区块的索引数据,然后再在本页中写入新的信息,从而形成新的区块,首尾相连,最终形成了区块链。”这个结构的神奇之处:区块(完整历史)+ 链(完全验证)= 时间戳

“区块+链”的结构为我们提供了一个数据库的完整历史。从第一个区块开始,到最新产生的区块为止,区块链上存储了系统全部的历史数据。

区块链为我们提供了数据库内每一笔数据的查找功能。区块链上的每一条交易数据,都可以通过“区块链”的结构追本溯源,一笔一笔进行验证。

区块+链=时间戳,这是区块链数据库的最大创新点。区块链数据库让全网的记录者在每一个区块中都盖上一个时间戳来记账,表示这个信息是这个时间写入的,形成了一个不可篡改、不可伪造的数据库。我们认为,时间戳是区块链中一项伟大的技术创新,它可以证明什么呢?

技术2:分布式结构——开源的、去中心化的协议

我们有了区块+链的数据之后,接下来就要考虑记录和存储的问题了。我们应该让谁来参与数据的记录,又应该把这些盖了时间戳的数据存储在哪里呢?在现如今中心化的体系中,数据都是集中记录并存储于中央电脑上。但是区块链结构设计精妙的地方就在这里,它并不赞同把数据记录并存储在中心化的一台或几台电脑上,而是让每一个参与数据交易的节点都记录并存储下所有的数据。

1.关于如何让所有节点都能参与记录的问题,区块链的办法是:构建一整套协议机制,让全网每一个节点在参与记录的同时也来验证其他节点记录结果的正确性。只有当全网大部分节点(或甚至所有节点)都同时认为这个记录正确时,或者所有参与记录的节点都比对结果一致通过后,记录的真实性才能得到全网认可,记录数据才允许被写入区块中。

2.关于如何存储下“区块链”这套严谨数据库的问题,区块链的办法是:构建一个分布式结构的网络系统,让数据库中的所有数据都实时更新并存放于所有参与记录的网络节点中。这样即使部分节点损坏或被黑客攻击,也不会影响整个数据库的数据记录与信息更新。

区块链根据系统确定的开源的、去中心化的协议,构建了一个分布式的结构体系,让价值交换的信息通过分布式传播发送给全网,通过分布式记账确定信息数据内容,盖上时间戳后生成区块数据,再通过分布式传播发送给各个节点,实现分布式存储。

分布式记账——会计责任的分散化(Distributedaccountability)

从硬件的角度讲,区块链的背后是大量的信息记录储存器(如电脑等)组成的网络,这一网

络如何记录发生在网络中的所有价值交换活动呢?区块链设计者没有为专业的会计记录者预留一个特定的位置,而是希望通过自愿原则来建立一套人人都可以参与记录信息的分布式记账体系,从而将会计责任分散化,由整个网络的所有参与者来共同记录。

区块链中每一笔新交易的传播都采用分布式的结构,根据P2P网络层协议,消息由单个节点被直接发送给全网其他所有的节点。

区块链技术让数据库中的所有数据均存储于系统所有的电脑节点中,并实时更新。完全去中心化的结构设置使数据能实时记录,并在每一个参与数据存储的网络节点中更新,这就极大的提高了数据库的安全性。

通过分布式记账、分布式传播、分布式存储这三大“分布”我们可以发现,没有人、没有组织、甚至没有哪个国家能够控制这个系统,系统内的数据存储、交易验证、信息传输过程全部都是去中心化的。在没有中心的情况下,大规模的参与者达成共识,共同构建了区块链数据库。可以说,这是人类历史上第一次构建了一个真正意义上的去中心化体系。甚至可以说,区块链技术构建了一套永生不灭的系统——只要不是网络中的所有参与节点在同一时间集体崩溃,数据库系统就可以一直运转下去。

我们现在已经有了一套严谨的数据库,也有了记录并存储这套数据库的可用协议,那么当我们将这套数据库运用于实际社会时,我们要解决最核心的一个问题(问题三)是:如何使这个严谨且完整存储下来的数据库变得可信赖,使得我们可以在互联网无实名背景下成功防止诈骗?

技术3:非对称加密算法

什么是非对称加密?简单来说,它让我们在“加密”和“解密”的过程中分别使用两个密码,两个密码具有非对称的特点:(1)加密时的密码(在区块链中被称为“公钥”)是公开全网可见的,所有人都可以用自己的公钥来加密一段信息(信息的真实性);(2)解密时的密码(在区块链中被称为“私钥”)是只有信息拥有者才知道的,被加密过的信息只有拥有相应私钥的人才能够解密(信息的安全性)。

简单的总结:区块链系统内,所有权验证机制的基础是非对称加密算法。常见的非对称加密算法包括RSA、Elgamal、D-H、ECC(椭圆曲线加密算法)等。在非对称加密算法中,如果一个“密钥对”中的两个密钥满足以下两个条件:1、对信息用其中一个密钥加密后,只有用另一个密钥才能解开;2、其中一个密钥公开后,根据公开的密钥别人也无法算出另一个,那么我们就称这个密钥对为非对称密钥对,公开的密钥称为公钥,不公开的密钥称为私钥。在区块链系统的交易中,非对称密钥的基本使用场景有两种:1、公钥对交易信息加密,私钥对交易信息解密。私钥持有人解密后,可以使用收到的价值。2、私钥对信息签名,公钥验证签名。通过公钥签名验证的信息确认为私钥持有人发出。

我们可以看出,从信任的角度来看,区块链实际上是数学方法解决信任问题的产物。过去,人们解决信任问题可能依靠熟人社会的“老乡”,政党社会的“同志”,传统互联网中的交易平台“支付宝”。而区块链技术中,所有的规则事先都以算法程序的形式表述出来,人们完全不需要知道交易的对手方是“君子”还是“小人”,更不需要求助中心化的第三方机构来

进行交易背书,而只需要信任数学算法就可以建立互信。区块链技术的背后,实质上是算法在为人们创造信用,达成共识背书。

技术4:脚本

脚本可以理解为一种可编程的智能合约。如果区块链技术只是为了适应某种特定的交易,那脚本的嵌入就没有必要了,系统可以直接定义完成价值交换活动需要满足的条件。然而,在一个去中心化的环境下,所有的协议都需要提前取得共识,那脚本的引入就显得不可或缺了。有了脚本之后,区块链技术就会使系统有机会去处理一些无法预见到的交易模式,保证了这一技术在未来的应用中不会过时,增加了技术的实用性。

一个脚本本质上是众多指令的列表,这些指令记录在每一次的价值交换活动中,价值交换活动的接收者(价值的持有人)如何获得这些价值,以及花费掉自己曾收到的留存价值需要满足哪些附加条件。通常,发送价值到目标地址的脚本,要求价值的持有人提供以下两个条件,才能使用自己之前收到的价值:一个公钥,以及一个签名(证明价值的持有者拥有与上述公钥相对应的私钥)。脚本的神奇之处在于,它具有可编程性:(1)它可以灵活改变花费掉留存价值的条件,例如脚本系统可能会同时要求两个私钥、或几个私钥、或无需任何私钥等;(2)它可以灵活的在发送价值时附加一些价值再转移的条件,例如脚本系统可以约定这一笔发送出去的价 值以后只能用于支付中信证券的手续费。

布比区块链,利用密码学可证明的算法构建多中心网络信任,公开、透明、不可篡改、不可撤销;多方参与信息透明共享,建立真品溯源的全程链式路径,直达消费者!


本文标签: 区块 记录 数据 信息 数据库