区块链简介

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

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

这里先抛出几个问题:

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

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

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

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

中心化与去中心化

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

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

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

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

区块内部有什么

。区块作为区块链的基本结构单元,所有游戏由数据元型态区的块头所有游戏状语从句:交易数据的区块主体构成区块头所有游戏三组元型态数据:

  1. 用于连接前面的区块,索引自父区块哈希值的数据;

  2. 挖矿难度,杜撰(随机数,用于工作量证明算法的计数器),时间戳;

  3. 能够总结并快速归纳校验区块中所有交易数据的梅克尔(默克尔)树根数据。

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

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

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

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

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

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

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

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

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

新增数据如何在分布式环境下共识

区块链的逻辑很简单,就是比谁更快。谁先计算出并添加到张波就给谁一定的奖励。那如果有人做假账,搞故意破坏怎么办,我们来看一下区块链如何解决作弊行为:

1,交易数据验证:上面介绍了非加密算法,交易信息都是使用非对称加密算法在节点之间传输,可以保证数据不会被篡改。

2,区块验证:区块是前后相连的,修改之前区块之后哈希值变化无法再连到主链上,如果伪造最后一个,后面所有区块都要伪造,工作量太大。

3,分布式存储:任何一个节点都拥有全部交易数据,假如有人修改了某页数据,必须得到51%以上节点的认可。

4,链有效性:如果有两个节点同时计算出,这时候区块主链会分叉,但是区块链规定,谁先挖出6个区块,就以谁为准,其他分叉作废。

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

区块链优缺点:

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

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

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

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

什么是区块链?区块链详解相关推荐

  1. python区块链开发_Fabric区块链Python开发详解

    Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...

  2. JavaScript重难点解析4(作用域与作用域链、闭包详解)

    JavaScript重难点解析4(作用域与作用域链.闭包详解) 作用域与作用域链 作用域 作用域与执行上下文 作用域链 闭包 闭包理解 将函数作为另一个函数的返回值 将函数作为实参传递给另一个函数调用 ...

  3. 我的世界服务器区块修复,MC新人解决区块错误问题教程详解

    MC新人解决区块错误问题教程详解.那Mcedit区块有时候会有一些错误,那下面小编就教新人怎么解决区块错误的问题方法吧!希望对各位新手有所帮助. 很多时候一个存档玩久了,就会出现区块错误的情况 通常发 ...

  4. 我的世界java版区块显示_我的世界手游区块显示指令分享:区块玩法操作详解[多图]...

    我的世界手游区块是一个独特的机制,很多玩家对于区块是什么不太了解,区块显示指令以及区块的产生不是很熟悉,为了帮助到大家,今天小编就为大家带来我的世界手游区块显示指令分享:区块玩法操作详解的内容,希望大 ...

  5. 责任链模式(职责链模式)详解——小马同学@Tian

    责任链模式(职责链模式)详解 在现实生活中,一个事件需要经过多个对象处理是很常见的场景.例如,采购审批流程.请假流程等.公司员工请假,可批假的领导有部门负责人.副总经理.总经理等,但每个领导能批准的天 ...

  6. 区块链学习名词详解-Part1

    名词详解-Part1 区块链中的账本 不同的区块链系统拥有的账本数量也不同,但大部分都只有一个唯一账本. 账本的发展过程大致可分为三个阶段: 1)单式记账:账本由一个人或组织负责,具有高度的中心化: ...

  7. css规则中区块block,CSS 定位详解

    CSS 有两个最重要的基本属性,前端开发必须掌握:display 和 position position 属性的作用 position属性用来指定一个元素在网页上的位置,一共有5种定位方式,即posi ...

  8. dancing links x(舞蹈链算法)详解

    dancing links x 详解 大佬万仓一黍的blog 夜深人静写算法(九)- Dancing Links X(跳舞链) 精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合, ...

  9. 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java,nodejs,go和python语言的sdk,供用户选择用不同的语言开发上层应用,使用相应的sdk调用部署在区块链上的链码. ...

  10. 区块链以及区块链技术入门详解

    转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...

最新文章

  1. Java集合:HashMap线程不安全?有哪些表现?
  2. Visual Studio中的Build和Rebuild区别
  3. 基本概念—监督与非监督
  4. 使用存储过程的优点.
  5. (第2篇)一篇文章教你轻松安装hadoop
  6. 【java】深入了解JAVA可变长度的参数
  7. 16.Java中的String详解
  8. jQuery Mobile中按钮button的data-*选项
  9. sql update date类型_数据工厂可视化操作与SQL查询——1.基础篇
  10. excel模板 基金账本_专项基金拨款记录EXCEL图表
  11. 四阶龙格库塔法的基本思想_四阶龙格库塔实验报告
  12. web文件上传思路(一句话muma)
  13. 罗尔定理、拉格朗日中值定理和柯西中值定理和用他们证明不等式、
  14. ElasticSearch wildcard查询(英文检索)
  15. 使用DoraCloud在Proxmox虚拟化平台搭建桌面云
  16. 人工智能“六步走”学习路线
  17. Genymotion ova官方下载地址
  18. uniapp无网络提示
  19. 电脑蓝屏了怎么办修复,电脑蓝屏解决修复方法
  20. 《炒股的智慧》文摘1

热门文章

  1. IDEA eval reset
  2. cookie模拟登陆爬取药智网中药材数据库数据
  3. 什么是Unicode
  4. 分享88个NET源码,总有一款适合您
  5. sql月度分组_SQL语句按年 月 日 季度分组
  6. 使用python matplotlib实现动图绘制
  7. 决定固定资产折旧是当月开始折旧还是下月开始折旧的配置
  8. xcode写在_迷失在Xcode领域
  9. 孙正义万字访谈:未来30年一切将被重新定义
  10. java异步回调讲解