什么是区块链?区块链详解
区块链简介
什么是区块链?目前没有看到很好的定义和介绍,网上要么是讲一些区块链意义的空泛文章,比如“区块链技术颠覆谁谁谁”,又或“互联网已颠覆世界,区块链要颠覆互联网等等”,要么就是通篇介绍比特币,矿工,挖矿等。那么区块链到底是个什么东西?它跟比特币又有什么关系呢?
其实区块链本质上是一个去中心化的分布式账本数据库。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次交易有效确认的信息。而比特币就是基于区块链技术的一个应用。
这里先抛出几个问题:
1,什么叫去中心化的分布式数据库?
2,数据区块里都有什么?
3,如何利用密码学保证区块里数据不会被篡改?
4,数据是不断增加的,怎么保证新增的数据被其他节点认可?
中心化与去中心化
先看一个中心化与分布式案例,搞IT编程的都知道,目前版本控制软件最流行的一个是SVN,一个是git的那它俩有什么区别呢,如下图:
svn是一个集中式的服务器,代码版本变更信息都存储在svn server服务端,每个客户端磁盘里只有众多版本中的其中一个版本,假如服务端坏掉了,那我们就丢失了版本变更记录。
而GIT中不一样,它是没有中心服务器的,每个人机器上都是一个完整的库,里面就有各个版本的变更信息,我们开发完代码以后先提交到本地仓库,在推推送到远程服务器,假如远端服务器坏掉了,只需要把本地仓库重新推一次即可,版本变更记录还在。
区块链也是这样,没有中心,分布在全球各地,能够协同运转的数据库存储系统,任何有能力架设服务器的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点。一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化,分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。
区块内部有什么
。区块作为区块链的基本结构单元,所有游戏由数据元型态区的块头所有游戏状语从句:交易数据的区块主体构成区块头所有游戏三组元型态数据:
用于连接前面的区块,索引自父区块哈希值的数据;
挖矿难度,杜撰(随机数,用于工作量证明算法的计数器),时间戳;
能够总结并快速归纳校验区块中所有交易数据的梅克尔(默克尔)树根数据。
大概每隔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,电子货币行业,比如比特币,火牛币等,这些币种央行并不承认,无法兑换人民币,投资有风险,购入需谨慎。
什么是区块链?区块链详解相关推荐
- python区块链开发_Fabric区块链Python开发详解
Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...
- JavaScript重难点解析4(作用域与作用域链、闭包详解)
JavaScript重难点解析4(作用域与作用域链.闭包详解) 作用域与作用域链 作用域 作用域与执行上下文 作用域链 闭包 闭包理解 将函数作为另一个函数的返回值 将函数作为实参传递给另一个函数调用 ...
- 我的世界服务器区块修复,MC新人解决区块错误问题教程详解
MC新人解决区块错误问题教程详解.那Mcedit区块有时候会有一些错误,那下面小编就教新人怎么解决区块错误的问题方法吧!希望对各位新手有所帮助. 很多时候一个存档玩久了,就会出现区块错误的情况 通常发 ...
- 我的世界java版区块显示_我的世界手游区块显示指令分享:区块玩法操作详解[多图]...
我的世界手游区块是一个独特的机制,很多玩家对于区块是什么不太了解,区块显示指令以及区块的产生不是很熟悉,为了帮助到大家,今天小编就为大家带来我的世界手游区块显示指令分享:区块玩法操作详解的内容,希望大 ...
- 责任链模式(职责链模式)详解——小马同学@Tian
责任链模式(职责链模式)详解 在现实生活中,一个事件需要经过多个对象处理是很常见的场景.例如,采购审批流程.请假流程等.公司员工请假,可批假的领导有部门负责人.副总经理.总经理等,但每个领导能批准的天 ...
- 区块链学习名词详解-Part1
名词详解-Part1 区块链中的账本 不同的区块链系统拥有的账本数量也不同,但大部分都只有一个唯一账本. 账本的发展过程大致可分为三个阶段: 1)单式记账:账本由一个人或组织负责,具有高度的中心化: ...
- css规则中区块block,CSS 定位详解
CSS 有两个最重要的基本属性,前端开发必须掌握:display 和 position position 属性的作用 position属性用来指定一个元素在网页上的位置,一共有5种定位方式,即posi ...
- dancing links x(舞蹈链算法)详解
dancing links x 详解 大佬万仓一黍的blog 夜深人静写算法(九)- Dancing Links X(跳舞链) 精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合, ...
- 区块链开发指南_区块链软件开发详解
开发业务层区块链应用 Hyperledger fabric目前支持java,nodejs,go和python语言的sdk,供用户选择用不同的语言开发上层应用,使用相应的sdk调用部署在区块链上的链码. ...
- 区块链以及区块链技术入门详解
转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...
最新文章
- Java集合:HashMap线程不安全?有哪些表现?
- Visual Studio中的Build和Rebuild区别
- 基本概念—监督与非监督
- 使用存储过程的优点.
- (第2篇)一篇文章教你轻松安装hadoop
- 【java】深入了解JAVA可变长度的参数
- 16.Java中的String详解
- jQuery Mobile中按钮button的data-*选项
- sql update date类型_数据工厂可视化操作与SQL查询——1.基础篇
- excel模板 基金账本_专项基金拨款记录EXCEL图表
- 四阶龙格库塔法的基本思想_四阶龙格库塔实验报告
- web文件上传思路(一句话muma)
- 罗尔定理、拉格朗日中值定理和柯西中值定理和用他们证明不等式、
- ElasticSearch wildcard查询(英文检索)
- 使用DoraCloud在Proxmox虚拟化平台搭建桌面云
- 人工智能“六步走”学习路线
- Genymotion ova官方下载地址
- uniapp无网络提示
- 电脑蓝屏了怎么办修复,电脑蓝屏解决修复方法
- 《炒股的智慧》文摘1