区块链技术特点详解 附思维导图

最近大家可能关注最多的就是区块链技术及比特币如何赚钱的话题,为了帮助广大小白同学能够更通俗的理解区块链技术特点,特地写了这篇文章并附上区块链技术详解思维导图,如果还有不明白的可以加链书区块网小编客服微信号469649885(备:区块链)互动交流!

区块链技术特点详解

写在前面

以前大家做交易是靠信誉、靠百年老店、银行等国家机构担保等,但区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式。区块链最核心的革命特性是改变千百年来落后的信用机制。

区块链技术基本概念

区块链技术的概念是目前大家最为关注的话题之一,区块链的本质是一个分布式的公共账本,任何人都可对这个账本进行核查,但不存在单一的用户可以对它控制。在区块链系统中的参与者共同维持账本的更新:它只能按照严格的规则和共识进行修改。目前,这项技术已经逐步运用在各个领域。

区块链技术基本概念

那么到底什么是区块链技术?为了便于大家理解这个问题,我们举个栗子来阐述一下:

例老张借了老李 2000块钱,这个时候,老张在人群中大喊“我是老张,我借给了老李 2000块钱!”,老李也在人群中大喊“我是老李,老张借给了我2000块!”此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“老张借给了老李2000块钱”。这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如老李突然又改口说“我不欠老张钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了老张2000块钱!”)。

      这是一个去中心化的系统,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。

所以,目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算作广义的区块链。而当在具体产品中谈到区块链的时候,可以指类似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算作狭义的区块链。广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的使用等4个方面,其他的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操作等。本文的区块链,指的是广义的区块链。

区块链技术的最大特点

区块链技术的最大特点

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

      没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢,这就是区块链奇妙的地方。

区块链架构设计图

从区块链架构设计上来说,区块链可以简单的分为三个层次

○ 协议层

○ 扩展层

○ 应用层

协议层又可以分为

○ 存储层

○ 网络层

  它们相互独立但又不可分割。

如图:

区块链架构设计图

协议层

所谓的协议层,就是指代最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅提供Api供调用。

通常官方会提供简单的客户端(通称为钱包),这个客户端钱包功能也很简单,只能建立地址、验证签名、转账支付、查看余额等。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点奖励规则,至于你要交易什么,想干什么,它一概不过问,也过问不了。

● 协议层主要包括

   ○ 网络编程

   ○ 分布式算法

   ○ 加密签名

   ○ 数据存储技术等4个方面。

目前,困扰业界的一个重大问题是:

加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,需要全方位的突破。

分布式算法、加密签名等都要在实现点对点网络的过程中加以使用,所以自然是网络层的事情,也是编码的重点和难点,《Nodejs开发加密货币》全书分享的基本上就是这部分的内容。当然,也有把点对点网络的实现单独分开的,把节点查找、数据传输和验证等逻辑独立出来,而把共识算法、加密签名、数据存储等操作放在一起组成核心层。无论怎么组合,这两个部分都是最核心、最底层的部分,都是协议层的内容。

扩展层

这个层面类似于电脑的驱动程序,是为了让区块链产品更加实用。

● 扩展层目前分两类:

   ○ 各类交易市场,是法币兑换加密货币的重要渠道,实现简单,来钱快,成本低,但风险也大。

   ○ 针对某个方向的扩展实现,特别值得一提的就是大家听得最多的“智能合约”的概念,这是典型的扩展        层面的应用开发。

所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行,比如自动转移证券、自动付款等,目前还没有比较成型的产品,但不可否认,这将是区块链技术重要的发展方向。

区块链基础技术架构

扩展层使用的技术就没有什么限制了,可以包括很多,上面提到的分布式存储、机器学习、VR、物联网、大数据等等,都可以使用。编程语言的选择上,可以更加自由,因为可以与协议层完全分离,编程语言也可以与协议层使用的开发语言不相同。在开发上,除了在交易时与协议层进行交互之外,其他时候尽量不要与协议层的开发混在一起。这个层面与应用层更加接近,也可以理解为B/S架构的产品中的服务端(Server)。这样不仅在架构设计上更加科学,让区块链数据更小,网络更独立,同时也可以保证扩展层开发不受约束。

从这个层面来看,区块链可以架构开发任何类型的产品,不仅仅是用在金融行业。在未来,随着底层协议的更加完善,任何需要第三方支付的产品都可以方便的使用区块链技术;任何需要确权、征信和追溯的信息,都可以借助区块链来实现。链书区块网认为目标应该很快就能实现。

应用层

 这个层面类似于电脑中的各种软件程序,是普通人可以真正直接使用的产品,也可以理解为B/S架构的产品中的浏览器端(Browser)。这个层面的应用,目前几乎是空白。市场亟待出现这样的应用,引爆市场,形成真正的扩张之势,让区块链技术快速走进寻常百姓,服务于大众。大家使用的各类轻钱包(客户端),应该算作应用层最简单、最典型的应用。很快。

几款常用的编程语言产品

● C/C++

这两个语言是无法逾越的,任何开发遇到瓶颈,基本上都会找到它们,自然应该排在第一位要介绍的。同时,区块链技术的鼻祖,比特币(协议层)就是用C++语言开发的,而且目前为止,没有比比特币更加成功的区块链产品。所以,无论你使用什么语言开发,在正式进入这个行业的过程中,都应该先研究研究比特币。比特币官方客户端钱包用的Qt,第三方钱包有Python语言开发的,特别是第三方整理的开发库(Api包)很多是Nodejs设计的。比特币的架构,与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(PoW:Proof of work),还有一些特殊的挖矿的过程。其他竞争币都是直接来自比特币的分支,所以编程语言相同,具体的技术选型和技术实现上可能有所改进,比如:莱特币,使用了其他的加密算法。

○ 官方网站:https://bitcoin.org/

○ 源码库:https://github.com/bitcoin

● Nodejs/Javascript

Nodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。

《Nodejs开发加密货币》这本书完整分享了它的源码,从区块链基础概念到代码实现,从基本原理到开发设计思路,都做了比较详细的探索,目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少,这算作一本。

○ 官方网站:http://ebookchain.org/

○ 源码库:https://github.com/Ebookcoin

●  Python

如果是Python语言爱好者,我建议研究研究以太坊(Ethereum)的Python实现。尽管因为The Dao事件闹得沸沸扬扬,但从技术实现的角度来说,仍然值得参考学习。以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其定制了一种编程语言Solidity。

几款常用的编程语言产品

以太坊的核心是以太坊虚拟机(EVM),允许用户按照自己的意愿创建操作。以太坊给出了Go、Java、Python等多语言的实现。其中以python为基础的实现主要包括三个部分:Pyethapp是客户端部分;pyethereum是核心库,实现了区块链、以太坊模拟机和挖矿等功能;pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。另外,go-ethereum是go语言的完整实现;Ethereum(J) 是纯Java实现,它作为可以嵌入任何Java/Scala项目的库提供。客户端方面,还有Rust、Ruby、Javascript等语言的实现。

○ 官方网站:https://ethereum.org/

○ 源码库:https://github.com/ethereum/pyethapp

●  Go

在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。

其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用Go和JavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。

○ 官方网站:https://www.hyperledger.org/

○ 源码库:https://github.com/hyperledger

其他编程语言:

比如:C#等,也有具体实例,这里就不再列举。总之,针对不同的编程语言,在具体的编码或架构设计上可能有所差别,甚至很大,但是协议层所使用的技术并没有太大的变化。其中,网络编程是重点和难点,多数没有现成的框架可用,都是使用编程语言自身提供的库来设计开发,所以比较底层,非常考验开发者的编码功底。

区块链技术答疑

问题:还是感觉太抽象,至今都还不能具象化的理解这个区块链,也没找到具象化的解释。

正如区块链技术这个名词一样,它是被创造出来的,并没有以往的概念可以映射到上面,所以容易费解。

我们不谈这个概念,我们只需要想想我们的互联网还需要什么。正如比特币白皮书提到的,一个点对点的现金系统,他使用的前提要求是很低的,不需要注册,不需要手机号,一个点对点的网络,只要你用设备接入,那么你就可以使用。区块链这个概念也一样,目的是构建一个点对点的生态,解构权力带来的不对称。

它本身只是一个共享的总账本,不同于网络中多节点自己记账,再对账,这就瓦解了中心权力。

问题:区块链技术在互联网身份认证方面如何应用?

首先什么是身份?身份不单单是一个ID号,一个密码,而是一个使用者所有的操作记录集,这个记录集的代号才是身份。正如账户丢失,然后申诉一样,申诉的内容才是真正定位到你这个人。

区块链也一样,它需要一样ID,同样它也需要自动验证你历史记录的合法性。目前互联网的身份认证是依赖公安系统的,最简单的方案就是把公安系统中的身份系统映射到区块链中。另外一个方案也是用户自定义记录集,根据交易历史核对身份。当然再更远的未来,结合人工智能,区块链可能有更好的表现。

问题:实时交割数据如果放到联盟链中,联盟链的数据是否要最终同步到公有链?按分享所说,联盟链的数据对公有链来说是不可信任的,联盟链和公有链中数据是什么关系?

我认为不可能所有机构都愿意把资产放到公有链上的,一定会出现并存的现象。理想的情况当然完全使用公有链搭建去中心化应用。

区块链技术答疑

联盟链和公有链直接的数据是单纯的引用关系,我认为开放的关键数据集,如用户身份应该沉淀到公有链,让用户自己管理,而机构比较私有的关键数据,应该使用访问权限将它与公有链隔离,所以联盟链的数据和公有链的数据我认为是互补的。也就是说,联盟链的数据是否要同步到公有链,这个要是视机构本身的需求而定。另外,公有链的外部数据引用,我们称之为data-feed,这个东西就要把人的因素引入了,比方说法务,律师,政府机构等等,作为一个仲裁者帮助引用数据,好坏可以让市场评价信用,正如对一个机构评级一样,如果这样就很透明开放了。

问题:有一些很有趣的实体项目比如智能门锁,无人租车,这些都是线下项目,怎么做到互联互通呢?

首先区块链的项目都是跨平台的,也就是说嵌入式设备可以依托区块链的低信用成本的优势,自动记账,可以是联盟链的,也可以是直接基于某个公有链的DAPP,这些账本是共享的,这些数据在发生引用关系的时候,可以进入公有链通道,打通两者关系。

其次,任何具体的区块链项目,都是需要依托一个公有链进行的,正如现在很多落地项目都是基于“三巨头”,然而其实目前并没有一个让大家都特别满意的标准,让大家都服,所以我我们还要拭目以待。

问题:区块链发展的各个阶段可能对传统金融行业尤其是银行业的影响吗?

对银行业的影响,我认为现阶段影响不大,尤其是国内。这个要视区块链发展的程度而定。我所了解的,央行已经开始着手自己的数字货币了,这对银行来说,顶多就是再来一次IT架构升级的事儿而已,可以帮助银行业降低IT成本,也可以方便加强监管。但如果在更远的未来,银行可能不会特别封闭,变成一些区块链的代理节点,也会被所有人所监督,而不是几个特殊机构。

问题:如果公有链能够记录所有历史,有没有技术能破坏或封禁,有没有生命终结的那天?

有一点技术风险,通用量子计算商用的时候,目前的加密技术很多都失效了,基于密码学的区块链受影响最大(当然现在的中心化架构也会受到影响)。这取决于理论研究的成果,如果出现了新的密码学理论可以抵抗量子计算就没问题。如果从P2P网络的角度,是没有任何机构或个人能封禁的,只要有两个节点还能做交易也能记账,这个区块链就是alive的。

区块链技术本身

从经济学的角度,区块链的生死也不主要在于加密技术是否被攻破,而主要在于链上聚集了多少财富和利益,链上的数据有多少价值,如果没有价值了,链自然就死了,反之如果被攻破了,不过是分叉、或者等待新的加密算法出来之后进行数据迁移,这一点跟中心化数据库恢复备份没有什么太大区别。

区块链技术小结

● 基础知识

区块链是新技术,与之相关的是其背后大量的新概念、新理论。这些知识,虽然不直接体现在编码里,但却是理解区块链,掌握区块链技术的基本知识。所以,理当成为区块链技术不可或缺的一部分。这部分从基本概念入手,到工作原理的描述,就能够把区块链基础知识全部覆盖。

区块链技术导图一

● 区块链技术实现

区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理应当是我们知识库的核心。

正如大家看到的,任何一款区块链产品,协议层必须包括:

○ 点对点网络

○ 加密签名

○ 数据存储

○ 分布式算法等4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。所以,把这部分独立出来,也是合情合理。

区块链技术实现

在扩展层的部分,区块链技术可以对接各种应用,比如:

○ 金融

○ 物联网

○ 网络安全

○ 版权保护

○ 电子商务等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,这里所罗列或涉及到的技术,理应归为技术实现的一个重要部分。

● 开发环境

区块链是多项技术的组合,有其自身的复杂性,个别应用对开发环境依赖较大,开发工具与环境搭建,是让开发者快速上手的重要内容。

● 项目实践

据说,短短数年,全球区块链产品已经有几千个,其中不乏创新应用。有些优秀的开源产品和项目实践,是最好的学习研究资料。

● 开发文档

这个自然不用说了,每一种产品也都会有自己的开发文档。另一个,就是有心的开发者整理汇总的一些资源,可以帮助我们节省很多查询的时间。

做这个知识体系的过程中,主要思考的是,读者循着这些标签去查阅文章,能否快速掌握区块链技术,并最终上手开发实现一个区块链产品。

另外,也刻意规避了与具体编程语言,以及特定领域相关的词汇,唯一可以区分的就是这些节点之下对应的文章标签。

区块链技术思维导图

所以,这些分类就显得非常中性。也考虑过使用比特币、竞争币、智能合约、数字资产、智能资产等具体领域的实现作为分类方法。这里,也希望能有更多的人能够一起交流区块链技术共同提高!微信号:469649885(备:区块链

区块链技术思维导图一

区块链技术思维导图二

玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。