博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是区块链
阅读量:6137 次
发布时间:2019-06-21

本文共 2739 字,大约阅读时间需要 9 分钟。

区块链简介

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

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

这里先抛出几个问题:

1、什么叫去中心化的分布式数据库?

2、数据区块里都有什么?

3、如何利用密码学保证区块里数据不会被篡改?

4、数据是不断增加的,怎么保证新增的数据被其他节点认可?

中心化与去中心化

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

什么是区块链

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

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

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

区块内部有什么

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

区块头包含三组元数据:

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

什么是区块链

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

什么是区块链

密码学如何保证以前数据不会被篡改

这里用到密码学里两个东西:哈希算法和非对称加密。

哈希算法有两大特点:不可逆和无冲突。

所谓不可逆,就是当你知道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个区块,就以谁为准,其他分叉作废。

区块链的优缺点及发展前景

区块链优缺点:

优点:

1、去中心化,不需要第三方权威机构。

2、数据不可篡改,数据一旦存入区块,将永久存储,数据具有极高的稳定性和可靠性。(此特点也是缺点,数据不可撤销。)

3、自制性,算法公开透明,人为干预不起作用。

4、开放性,数据完全开放,任何节点都可以查询区块链内所有数据。(此特点也算缺点,可以查询某个账户所有交易数据。)

5、匿名性,交易时无需公开身份让对方相信自己。(此特点也算缺点,由于无需公开身份交易,又无需担心交易过程,受到不少不法分子的喜爱。)

缺点:

1、效率低,每次数据添加到数据库至少十分钟,第一次使用要下载历史所有交易数据。

2、延迟性,由于交易数据需要被其他节点认可,记账周期长,交易不及时。

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

1、对信息安全要求高但是对速度要求不高的金融,保险领域。

2、电子货币行业,比如比特币、火牛币等,这些币种央行并不承认,无法兑换人民币,投资有风险,购入需谨慎。

转载于:https://blog.51cto.com/13587708/2125953

你可能感兴趣的文章
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>