首页技术文章正文

区块链是什么?如何理解区块链?

更新时间:2021年03月18日 08时58分10秒 来源:黑马程序员

区块链概念介绍

什么是区块链?目前没有看到很好的定义和介绍,网上要么是讲一些区块链意义的空泛文章,比如“区块链技术颠覆谁谁谁”、又或“互联网已颠覆世界,区块链要颠覆互联网等等”,要么就是通篇介绍比特币,矿工,挖矿等。那么区块链到底是个什么东西?它跟比特币又有什么关系呢?

其实区块链本质上是一个去中心化的分布式账本数据库。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次交易有效确认的信息。而比特币就是基于区块链技术的一个应用。

想要快速了解区块链,要从以下几个方面着手:


中心化与去中心化

区块链本质上是一个去中心化的分布式账本数据库,什么叫去中心化的分布式数据库?

先看一个中心化与分布式案例,搞IT编程的都知道,目前版本控制软件最流行的一个是svn,一个是git那它俩有什么区别呢,如下图:

区块链01


svn是一个集中式的服务器,代码的版本变更信息都存储在svn server服务端,每个客户端磁盘里只有众多版本中的其中一个版本,假如服务端坏掉了,那我们就丢失了版本变更记录。

而git不一样,它是没有中心服务器的,每个人机器上都是一个完整的库,里面就有各个版本的变更信息,我们开发完代码以后先commit到本地仓库,在push推送到远程服务器,假如远端服务器坏掉了,只需要把本地仓库重新push一次即可,版本变更记录还在。

区块链也是这样,没有中心,分布在全球各地、能够协同运转的数据库存储系统,任何有能力架设服务器的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点。一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。


区块内部结构

数据区块里都有什么?由哪些数据组成的呢?

区块作为区块链的基本结构单元,由包含元数据的区块头和包含交易数据的区块主体构成。 区块头包含三组元数据:

1、用于连接前面的区块、索引自父区块哈希值的数据。
2、挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳。
3、能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。

区块链02


大概每隔10分钟,就会有一个新的页(区块),所有的参与者都可以在这页(区块)上记账,谁先最快记完账,就可以把这个页(区块)添加到账本(主链)里,并得到一笔奖励(比如比特币,这就是所谓的挖矿)。而其他没完成的参与者手里的页(区块)就会作废,只能继续等待另一个区块产生,然后重新开始记账。挖出每个区块中也包含了前一个区块的ID(识别码),这使得每个区块都能找到其前一个节点,这样一直倒推就形成了一条完整的交易链条。从诞生之初到运行至今,全网随之形成了一条唯一的主区块链。如下所示

区块链03


区块数据安全性

区块链既然这么备受关注,那它的数据一定是非常安全的,那么它是如何利用密码学保证区块里数据不会被篡改?这里用到密码学里两个东西:哈希算法和非对称加密。

哈希算法有两大特点:不可逆和无冲突。 所谓不可逆,就是当你知道x的hash值,无法求出x; 所谓无冲突,就是当你知道x,无法求出一个y, 使x与y的hash值相同。而且只要x稍微有一丁点变化,计算出的hash值与x的hash值完全不一样。

常见的加密算法有两种:对称加密和非对称加密。

对称加密:该算法在加密和解密时使用的是同一个秘钥,常见算法有DES、AES等。特点:加密解密简单,速度快,一般用在数据量大又不太注重安全的场景。

非对称加密:非对称加密需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。非对称加密除了用户信息加密之外,还有一个作用就是,身份验证。过程如下,消息发送者先对消息做哈希运算,接着用私钥加密处理。最后再把原消息和加密后的消息及公钥发送出去,消息接受者先对消息做哈希运算,然后用公钥解密消息得到哈希值,如果两个哈希值相同就代表消息没有被篡改过。常见算法有RSA、DSA等。特点:加密解密速度慢,但是安全性较高,非对称加密最经典的应用就是数字签名。

上面的内容属于密码学基础知识,接下来我们就看下在区块链里的应用:

第一个创世区块被创建以后,里面有什么无所谓。 从第二个区块开始,区块头包含前一个区块的哈希值,及这段时间内全网索引交易记录(10分钟左右),且每笔交易都有签名,可以保证没有被篡改过,区块一旦被挖出,区块里的数据就不会在改变。否则区块的哈希值就会改变,而如果哈希值改变,整个区块链条就不再完整。


分布式环境下区块如何增长

区块数据是不断增加的,怎么保证新增的数据被其他节点认可?区块链的逻辑很简单,就是比谁更快。谁先计算出并添加到张波就给谁一定的奖励。那如果有人做假账,搞故意破坏怎么办,我们来看一下区块链如何解决作弊行为:

1、交易数据验证:上面介绍了非加密算法,交易信息都是使用非对称加密算法在节点之间传输,可以保证数据不会被篡改。
2、区块验证:区块是前后相连的,修改之前区块之后哈希值变化无法再连到主链上,如果伪造最后一个,后面所有区块都要伪造,工作量太大。
3、分布式存储:任何一个节点都拥有全部交易数据,假如有人修改了某页数据,必须得到51%以上节点的认可。
4、链有效性:如果有两个节点同时计算出,这时候区块主链会分叉,但是区块链规定,谁先挖出6个区块,就以谁为准,其他分叉作废。比如下图,下面的分叉先计算出来6个区块则以下面分叉为主。

区块链04


总结

区块链是一种特殊的分布式数据库,任何服务器都可以成为区块链中的一个节点,且节点之间是平等的,无中心化,区块链中的数据是经过加密存储,已经存储的数据无法修改,可以保证数据的准确性。

区块链优缺点:

优点:
1、去中心化,不需要第三方权威机构。
2、数据不可篡改,数据一旦存入区块,将永久存储,数据具有极高的稳定性和可靠性。(此特点也是缺点,数据不可撤销。)
3、自制性,算法公开透明,人为干预不起作用。
4、开放性,数据完全开放,任何节点都可以查询区块链内所有数据。(此特点也算缺点,可以查询某个账户所有交易数据。)
5、匿名性,交易时无需公开身份让对方相信自己。(此特点也算缺点,由于无需公开身份交易,又无需担心交易过程,受到不少不法分子的喜爱。)

缺点:
1、效率低,每次数据添加到数据库至少十分钟,第一次使用要下载历史所有交易数据。
2、延迟性,由于交易数据需要被其他节点认可,记账周期长,交易不及时。

根据以上特点,区块链应用场景并不是很多:

1、对信息安全要求高但是对速度要求不高的金融、保险、信用体系领域。
2、电子货币行业,比如比特币、火牛币等,这些币种央行并不承认,无法兑换人民币,投资有风险,购入需谨慎。


猜你喜欢

什么是XML?怎样使用XML解析树状结构数据?

BUG是什么意思?只有“漏洞”这一个意思吗?

如何理解MyBatis中SQL的动态和静态?

MyBatis中动态SQL中的主要元素有哪些?

黑马程序员Java高级软件工程师培训课程

分享到:
在线咨询 我要报名
和我们在线交谈!