精华内容
参与话题
问答
  • 最全的区块链技术分析和总结(附知识图谱)

    万次阅读 多人点赞 2018-07-27 06:14:03
    区块链是加密货币背后的技术,与基础语言或平台等差别较大,它本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链技术实现。 无论你擅长什么编程语言,都能够参考这种设计去...

    区块链是与当下与VR虚拟现实等比肩的热门技术之一。区块链是加密货币背后的技术,与基础语言或平台等差别较大,它本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现

    无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。文末,推荐了一些精选内容,供大家阅读。

    区块链是什么

    区块链来自于比特币等加密货币的实现,目前这项技术已经逐步运用在各个领域。我们可以使用谷歌地球的例子做类比:ajax不是新技术,但组合后成就了产品谷歌地球。区块链与加密解密技术、P2P网络等组合在一起,诞生了比特币。

    技术人员,特别是Web开发工程师,学习了解ajax技术最早是被谷歌地球酷炫的效果所吸引。而现在,历史再一次重演,很多人被比特币的疯狂发展所吸引,进而开始研究其背后的技术——区块链。

    区块链作为比特币背后的技术,无需中心服务器,可实现各类存储数据公开、透明、可追溯。原本是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透明、无法篡改、方便追溯的特点。实际上,这种特性也直接体现了整个比特币的特点,因此使用区块链来概括加密货币背后的技术实现是非常直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。与加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化,更适合作为一门技术去研究。

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

    区块链架构

    从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。如图: 
    这里写图片描述

    协议层

    指代最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅提供Api供调用。通常官方会提供简单的客户端(通称为钱包),这个客户端钱包功能也很简单,只能建立地址、验证签名、转账支付、查看余额等。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点奖励规则,至于你要交易什么,想干什么,它一概不过问,也过问不了。典型的例子,自然是比特币,还有各种二代币,比如莱特币等,本书介绍的亿书币也是。这个层次,是现阶段开发者聚集的地方,这说明加密货币仍在起步当中。

    协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等4个方面,其中网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用(可以看加密解密文章,不建议自由发挥,没有过多的编码逻辑),数据库技术也主要在使用层面,只有点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。因此,Nodejs开发区块链应用,逐渐变得更加流行,Go语言也在逐渐兴起。

    上面的架构设计图里,我把这个层面进一步分成了存储层和网络层。数据存储可以相对独立,选择自由度大一些,可以单独来讨论。选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的I/O性能,网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如,比特币选择的是谷歌的LevelDB,据说这个数据库读写性能很好,但是很多功能需要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,需要全方位的突破。

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

    扩展层

    这个层面类似于电脑的驱动程序,是为了让区块链产品更加实用。目前有两类,一是各类交易市场,是法币兑换加密货币的重要渠道,实现简单,来钱快,成本低,但风险也大。二是针对某个方向的扩展实现,特别值得一提的就是大家听得最多的“智能合约”的概念,这是典型的扩展层面的应用开发。所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行,比如自动转移证券、自动付款等,目前还没有比较成型的产品,但不可否认,这将是区块链技术重要的发展方向。

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

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

    应用层

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

    限于当前区块链技术的发展,比如亿书只能从协议层出发,把目标指向应用层,同时为第三方开发者提供扩展层的强大支持。这样做既可以避免贪多,又可以避免无法落地,是真正理性的开发路线。因为纯粹的开发协议层或扩展层,无法真正理解和验证应用层,会脱离实际,让第三方开发者很难使用。如果仅仅考虑应用层,市面上又找不到真正牢固、易用的协议层或扩展层的产品。

    编程实现

    很多小伙伴,习惯结合自己的技术背景,来理解上面的架构设计。这里,结合具体的编程语言,简单介绍几款产品,仅供参考。

    (1)C/C++

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

    (2)Nodejs/Javascript

    Nodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的express开发框架,基于http协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。 
    《Nodejs开发加密货币》这本书完整分享了它的源码,从区块链基础概念到代码实现,从基本原理到开发设计思路,都做了比较详细的探索,目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少,这算作一本。

    官方网站:http://ebookchain.org 
    源码库:https://github.com/Ebookcoin 
    Node.js知识库:http://lib.csdn.net/base/nodejs

    (3)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 
    Python知识库:http://lib.csdn.net/base/python

    (4)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 
    Go知识库: http://lib.csdn.net/base/go

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

    区块链知识图谱

    区块链

    我把与区块链相关的知识内容分为以下几个方面:

    (1)基础知识

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

    (2)技术实现

    区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理当是我们知识库的核心。正如大家看到的,任何一款区块链产品,协议层必须包括点对点网络、加密签名、数据存储、分布式算法等4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。所以,把这部分独立出来,也是合情合理。

    在扩展层的部分,区块链技术可以对接各种应用,比如:金融、物联网、网络安全、版权保护、电子商务等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,这里所罗列或涉及到的技术,理应归为技术实现的一个重要部分。

    (4)开发环境

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

    (5)项目实践

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

    (6)开发文档

    有心的开发者整理汇总的一些资源,可以帮助我们节省很多查询的时间。

    以上,我们把区块链技术基础架构描述了一下,需要再次强调的是,这仅仅是一种实现方式,绝非所有的区块链产品都是如此,我们也期待更多创新出现。

    编者说

    编程实现罗列了几种编程语言与其实现的典型产品,因为协议层技术较为底层,并没有太多现成的框架需要介绍或讨论。这些产品都是开源产品,大家可以结合自己的技术背景,进一步查看对应的产品源码,很快就能了解其中的奥妙。

    我在考虑这个知识体系的过程中,考虑过使用比特币、竞争币、智能合约、数字资产、智能资产等具体领域的实现作为分类方法,但又怕限制了思维。随着区块链的发展,这个图谱将不停的修改下去。

    在这里,呼吁一下,希望读到这篇文章的小伙伴提供您的宝贵意见,让我们把这个关于区块链的知识分类图谱做得更加科学合理,使用更加方便。

    作者简介:朱志文,亿书创始人,CSDN区块链知识库特邀编辑。中国区块链俱乐部主创者和发起人,比特币的忠实粉丝,区块链技术的布道者,代表作《Nodejs开发加密货币》。个人博客:http://blog.csdn.net/imfly

    展开全文
  • 区块链-技术简介

    万次阅读 2018-03-30 17:08:08
    区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式...

    1、什么是区块链?

    区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。简单来讲, 在区块链系统中, 每过一段时间, 各参与主体产生的交易数据会被打包成一个数据区块, 数据区块按照时间顺序依次排列, 形成数据区块的链条,各参与主体拥有同样的数据链条, 且无法单方面篡改,任何信息的修改只有经过约定比例的主体同意方可进行,并且只能添加新的信息,无法删除或修改旧的信息,从而实现多主体间的信息共享和一致决策, 确保各主体身份和主体间交易信息的不可篡改、 公开透明。

    区块链发展到今天,已经涌现出许多形形色色的区块链项目, 这里梳理了这些区块链项目在技术上的共性: 区块、 账户、 智能合约、 共识, 这 4 个主要部分构成了目前的区块链系统的通用模型 。

    • 通过链式结构记录状态的变更历史,每一次变更的状态“快照”都以“区块” 的形式记录;

    • 通过非对称密钥对表示参与者身份,以某种形式的状态数据库记录当前的信息, 这部分被称为“账户” ;(注: 以太坊、 Fabric 是账户模型, 而比特币是 UTXO 模型)

    • 通过链上编码定义参与者之间的承诺,这部分被称为“智能合约” ;

    • 通过某种算法在多节点之间达成状态一致, 这个过程被称为“共识” 。

    2、区块链有哪些特点?

    从技术构成的角度来观察区块链有助于我们揭开它的神秘面纱, 实事求是地分析区块链, 并揭示它的本质特点,理解其价值发挥的内在逻辑。 如前所述, 区块链并不是一个全新的技术, 而是结合了多种现有技术进行的组合式创新,是一种新形式的分布式加密存储系统。

    区块链本质上是一种健壮和安全的分布式状态机,典型的技术构成包括共识算法、 P2P通讯、密码学、 数据库技术和虚拟机。这也构成了区块链必不可少的 5 项核心能力:

    • 存储数据:源自数据库技术和硬件存储计算能力的发展,随着时间的累积,区块链的大小也在持续上升,成熟的硬件存储计算能力, 使得多主体间同时大量存储相同数据成为可能;

    • 共有数据:源自共识算法,参与区块链的各个主体通过约定的决策机制自动达成共识, 共享同一份可信的数据账本;

    • 分布式:源自 P2P 通讯技术,实现各主体间点对点的信息传输;

    • 防篡改与保护隐私:源自密码学运用, 通过公钥私钥、 哈希算法等密码学工具,确保各主体身份和共有信息的安全;

    • 数字化合约:源自虚拟机技术,将生成的跨主体的数字化智能合约写入区块链系统,通过预设的触发条件, 驱动数字合约的执行。

    3、区块链适合解决哪些问题?

    通过对比分析、 研究国内外各领域的典型应用案例及相关参考文献,获得了一些有助于在业务中推广及应用区块链的经验, 并推荐具有以下特点的应用场景或问题,应该积极考虑尝试区块链技术:

    • 业务开展需要进行跨主体协作

    当需要为开展跨主体的业务建设 IT 系统时, 传统的解决方案通常是两种思路。要么建立和运营一个中心化的系统来处理各个参与方的业务需求,业务数据由中心化的组织维护;要么采用 SOA 架构, 由各个参与方发布服务接口,并相互调用,数据仍然维护在各个参与方。如果采用中心化的方案,若是业务的参与方之间是相对独立平等的,要开发建设一个中心化系统是很困难的, 包括协调、 立项、 成本分摊等问题。 如果采用 SOA 的方案, 则技术实践上比较复杂, 技术方案缺少通用性, 难以支持复杂的业务。 此外,从数据的角度来看,无论是中心化的方案还是 SOA, 都难以实现数据防篡改。

    在业务参与方之间相对独立平等的跨主体业务协作的场景下, 利用区块链的共有数据、防篡改、 分布式和数字化合约的特点, 能够把一些以往需要在业务层面协调解决的问题, 放到技术层面来解决, 使得问题的解决过程更高效、灵活以及更具客观性。

    • 业务开展需要参与方之间建立低成本信任

    大多数业务开展都需要建立一定的信任基础,尤其是跨主体的场景下。 对信任建立困难、信任维护成本高的应用场景, 区块链可以提供非常有效帮助。

    我们从三个方面来考察区块链如何建立低成本信任:

    1、数据可信

    传统的解决方案中,数据通常是以中心化的方式存储,本应共有的业务数据却被强势的参与方持有。 这种模式下,数据的可信度是由数据持有者的商业/社会信用来保证的, 只能建立主观的可信,对于一些重要的领域, 仍需要付出额外的成本来规避数据被恶意篡改的风险。

    区块链的解决方案是结合了密码学哈希和数字签名,以区块链条的形式将数据的变更历史按时间先后链在一起, 并通过共识协议使得参与的各方都共同拥有这些数据。

    由于多方分别持有相同的数据副本, 并且数据被签名确认, 并记录数据的“指纹”(哈希值), 以密码技术保证了数据无法被篡改, 数据因此变得可信。

    区块链使数据持有变得去中心化,以技术手段实现数据客观“可信”。

    2、合约履行

    通常的合约(或者契约、 协定、合同) 的履行从根本上是由法律来保障的。合约被自觉履行一般都是因为有利益、 道德或法律后果, 受许多主观因素影响。 商业活动中为了防止违约、或对违约进行追索, 需要付出高昂的成本(担保、保险、律师费、漫长司法程序等等)。

    区块链智能合约的本质是一套数字化形式的契约,由计算机确保严格执行。执行方式上, 通常的合约是事后以人的主观意愿来执行;而智能合约是在触发条件被满足后,由计算机程序来保证合约及时地执行,具有客观性。

    我们把资产数字化到区块链或与区块链锚定, 采用智能合约来描述对资产关系的承诺,同时智能合约的执行过程和结果被区块链严格记录,这样便可以降低履约成本和确保高效履约。

    区块链智能合约带来的是“契约” 的一种新的更精确的表示形式, 以及一种更客观、 更严格的执行方式。由于契约是我们社会活动的基础,因此这种变化将会带来更广泛的社会影响。

    3、历史可证明

    区块链固化了交易历史,并提供对交易历史的追溯查询,保证交易的不可篡改和不可抵赖。

    如果某个事件发生时,这个事件连同时间戳一起被记录到区块链中,将来就可以通过区块链证明这件事确实在这个时间发生过。因此区块链为参与交易的各方保留了可信的历史记录。

    • 业务过程存在长交易、 长周期链条

    业务在多主体间流转时, 难以确定间接主体的真实性和有效性,同时由于多主体间的业务隔离, 难以延伸出多级业务。区块链从技术上保证整个长交易、 长周期链条的各参与主体身份真实,数据可信, 实现信用的多级传递, 促进业务链条扁平化,提升业务效率。

    比特币作为区块链技术的一种典型应用, 在交易市场上市值已达千亿美元,这样的一个高市值系统却是以开源的方式在公共网络上运行了多年, 表现出了良好的安全性和健壮性。比特币系统的表现揭示了一个重要事实——以客观区块链技术为手段可以直接建立信任, 而不需中介背书。

    如果我们把区块链技术推广运用到更广泛的产业、金融、 公共服务等场景, 将使社会的生产分工方式产生巨大变化,这些变化包括:

    • 商业交易过程更容易达成信任, 从而降低风险, 使交易更具确定性;
    • 商业交易中间环节被缩减, 多方交易可直接达成;
    • 传统中介的中心化的服务模式将发生巨变。

    这种影响目前已经逐渐显现, 随着区块链的逐渐成熟和应用的不断丰富,这种影响力将会像蝴蝶效应一般逐步放大和深入到整个社会, 推动去中心化或多中心化主体间的高效协同和共识决策。 人类因掌握“工具” 而发展文明,我们相信区块链是一种新的“工具” ,最终将促进人类社会的进步发展。

    4、区块链发展面临的挑战

    目前人们已经广泛认识到区块链巨大的应用价值,但是区块链的技术发展却还没有到达成熟阶段, 尤其在企业级应用方面, 区块链的交易并发能力、 数据存储能力、通用性、 功能完备性、 易用性都还存在明显不足。

    • 交易并发能力

    目前开源的区块链系统的高并发交易能力普遍不高, 其中,共识算法是制约性能的重要方面。在区块链中使用的典型共识算法主要有: PoW、 PoS、 DPoS、 PBFT 等。

    制约性能的另一个重要因素是账本结构。 目前典型的区块链账本设计为区块的单链结构, 意味着从全局来看所有的交易都只能顺序地被处理。 由于交易处理缺少并行度,因而难以获得接近于传统中心化系统的性能表现。

    企业场景下的交易并发量通常要求在每秒处理数百至数千笔以上的交易, 远高于目前包括公有链、联盟链在内的典型区块链的表现,而且还要求区块链的性能表现可以随着业务规模的增长而动态伸缩。 因此, 现实和目标之间存在数量级的差别, 需要持续优化和提升区块链系统高并发交易性能。

    • 数据存储能力

    在数据存储能力方面,由于区块链的数据只有追加而没有移除,数据只增不减, 随着时间推移, 区块链系统对数据存储大小的需要也只能持续地增大,在处理企业数据时这一趋势增长更甚。

    不同于公链数字货币的主要内容是“账户余额” , 企业场景下的数据包含结构化和非结构化数据,数据量十分庞大。以电商供应链为例, 主要电商入口的每日数据记录条数通常都在千万级以上, 如再沿着供应链条进一步展开时,每延伸一级数据量都会进一步放大。

    目前典型的区块链系统在实现对账本数据的存储时,典型的实现方式是基于文件系统或者简单的 KV 数据库存储, 没有采用分布式存储的设计,因而数据存储能力与实际需要之间也存在较大的差距, 需要探索更为有效的大数据存储方式。

    • 通用性

    区块链需要适应多样化的业务需求,满足跨企业的业务链条上的数据共享,这意味着区块链对数据的记录方式要有足够的通用和标准,才能表示各种结构化和非结构化的信息,并能够满足随着业务范围拓展所需的跨链要求。

    目前市面上的区块链系统大多采用特定的共识算法、 加密算法、 账户模型、 账本模型、存储类型,缺少可插拔能力, 无法适应不同场景要求。

    • 功能完备性

    纵观现有区块链平台, 模型抽象单一, 难以适应业务系统快速开发的要求。 另外, 缺少对企业应用中常见的一些功能的支持,例如用户认证、 多级授权等。 再者,涉及到企业业务协作时, 跨企业的事件通知机制显得尤为重要,但少有区块链平台支持。

    • 易用性

    区块链是由多种技术构成的,导致学习成本高、 实施难度大、 人才稀缺。如何让用户快速理解区块链,低成本学习区块链,并将区块链技术快速应用到自身的业务中去,目前来看有很大的挑战。区块链技术需要降低学习和使用门槛,支持快速实施部署,提供贴近业务的接口,推广使用。

    从比特币的提出到今天为止, 人们尝试了非常多样化的应用场景。 最初是币(coin) 的应用,各种数字货币的出现和热炒引起了广泛关注和讨论。人们发现,作为比特币底层技术的区块链可以用来解决现有业务的一些痛点, 创新业务模式, 于是金融和产业领域开始形成一些组织联盟, 如 R3、 Hyperledger 等。 技术圈也逐渐将更多的关注从“币” 转到了区块链的企业级应用。

    人们在许多领域进行了广泛的尝试, 例如供应链管理, 互联网金融,证券和银行业务,贸易融资,保险,医疗健康, 资产管理, 数字版权保护,公益慈善,政府公共服务, 监管合规性与审计,游戏,公益等等。 但是,目前已经成功落地的区块链应用比较少,无论是技术还是业务都还处在摸索阶段。

    业界的积极实践进一步巩固和加深了人们对区块链潜在价值的认识,但却鲜有成功的落地案例,大多数停留在理念或 POC 阶段, 这种状况的形成受许多因素影响:

    1、不适用的、不可持续的场景

    有不少案例是为了区块链而区块链, 而不是从解决业务痛点出发,导致案例缺少有效价值,例如对一些不需要公开的信息进行存证。 或者没有结合区块链的特点来设计业务创新,仍然以传统的思路来设计业务模式,例如仍然用中心化影响力来把业务简单地搬到链上,不能高效地拓展业务边界。

    2、错误的实施方法

    没有充分认识区块链的技术特点, 无法设计出合理的技术方案。比较典型的例子如把区块链简单地当做数据库,把原来中心化系统数据直接搬到区块链上。

    3、技术不成熟

    没有充分认识区块链技术目前的成熟度现状,过于乐观地选择技术方案。目前区块链在性能、扩展性、易用性、功能完备性、运维成本等许多方面都还有待完善, 更合理的应用方式应该是以应用层业务系统为主,区块链底层完善优化为辅, 开展区块链技术应用。

    4、人才稀缺

    区块链是个多学科综合技术解决方案,包括分布式、存储、密码学、网络通讯、芯片技术、经济学、法律等,技术专业能力要求高,技术学习、 人才培养、 实践经验积累周期长。

    目前影响区块链应用落地的因素有很多, 以上仅简单列举几点,以此说明区块链的发展仍然任重道远。

    展开全文
  • 区块链技术通俗讲解

    千人学习 2019-12-01 12:21:04
    区块链之所以新,是因为对这些老技术的完美融合,如何形成闭环才是真正的区块链技术。本课程着眼于以上区块链关键技术的融合, 讲清区块链的本质,特别是基本的数据结构和系统设计内容。
  • 区块链最基本的技术原理

    万次阅读 多人点赞 2017-12-19 15:37:44
    我知道很多搞技术的朋友都觉得区块链技术可能不是很难,但实际落地却不多,而且有些人说区块链概念太热了,实际上我觉得是因为他们还没有真正理解区块链的商业价值,只有真正明白区块链的基本技术,才有可能理解...

    今天我还是给大家讲一下区块链的基本原理。我知道很多搞技术的朋友都觉得区块链技术可能不是很难,但实际落地却不多,而且有些人说区块链概念太热了,实际上我觉得是因为他们还没有真正理解区块链的商业价值,只有真正明白区块链的基本技术,才有可能理解区块链的颠覆意义。

    多账本记一样的账

    大家看,这张图上有6个帐本,张三有30元,李四有50元,每一个帐本的帐都是一模一样的,这就是区块链的第一个概念:多个帐本记着同一个帐,而且每个帐本都是一样,可以相互校验。

    hash值的计算,校验数据的一致性

    哈希就是把一个字符串,映射成一个相对固定长度的摘要值 64位16进制。

    比如,hash( 张三给李四100元钱):b2f1dbcea1110674575d43b3f2c4d469b2e45764e9e93b084e9c6517eb6ba41a

    比如,hash( 张三给李四101元钱):9a31b1169e79ab8339573cf310d56bed646e755f585a9e91c7760c87b3e45dd0

    我们可以把区块链比喻成打牌,比如张三、李四、王五、赵六他们四个人在打牌。第0局每个人都发放100元,第0局,高度0区块他们的校验码hash值是hash0。第1局,高度1区块就是张三输给李四30元,大家可以看到张三的余额是100减30等于70,李四100加30等于130,所有这些交易及余额的变动就形成了hash1。

    第2局,高度2交易就是李四输给赵六30元,王五输给赵六20元,然后他们的余额也分别变动为100、80、150,他们的hash值就是hash2。同样到第3局,张三输给李四70元,这是一笔交易,他们的余额也变成0、150,这些交易和余额的变动就是hash3。

    前面这张表只有一个节点,现在我们可以看有两个节点的图:节点A和节点B。节点A的高度是小写的hash0,和节点B的hash0是一致的,节点A的hash1和节点B的hash1也是一致的。依此类推,两个hash2一致,两个hash3也一致,那么说明这两个节点的所有的交易和余额的数据都是一致的。如果有十个节点,那这十个节点也都是一致的。

    我们可以用一个time33来解释一下hash值是怎么计算的。计算123 的hash值的话,初始的hash值是0,那么第一个“1”的hash值就是33×0+1等于1,“12”的hash值就是1×33+2等于35,“123”的hash值就是35×33+3等于1158,所以在不同的节点,如果都是“123”这个字符串的话,算出来的hash值就都是1158,同样的数据他们的hash值就是一致的。

    张三给李四100元有一个hash值,张三给李四101元则是完全不同的hash值,所以两段数据中只要有微小的差别,他们的hash值就是完全不一致的,hash值可以校验两段数据是否一致。

    区块链的原理

    这里有高度0、高度1和高度2三个高度的区块。第一个高度0,它的交易数据和余额数据是小写的hash0,先生成一个大写的HASH0。大写的HASH0到高度1里面和小写的hash1的数据串联以后,再形成一个大写的HASH1,那么大写的HASH1则包含了高度1里面的交易数据以及前面所有区块数据的哈希值。

    第二个高度的区块又包含了大写的HASH1和小写的hash2的hash值,就形成了一个大写的HASH2,那么如果十个节点的服务器的HASH2都一致的话,这就说明他们的数据都是一样的。

    私钥签名,公钥验证

    私钥是什么呢?私钥其实就是一个随机数或一个坐标。比如2的6次方有64个数字,你若选其中的37作为你的坐标。如果把它想象成一块地的话,你把你的金子藏在37号地,要挖多少块地才能找到金子呢?如果我们的区块链比特币它私钥的数字是2的256次方,相当于宇宙的原子数,你随机找一个坐标把金子放上去,其他人几乎是不可能找到得。

    在这里私钥经过椭圆曲线加密和两次hash后,会生成公钥地址,就是区块链上记录你钱或资产的帐户。我们也可以把私钥比喻成信箱的钥匙或密码,张三给李四转帐30元就用张三的私钥进行签名。大家可以看到,你改这个签名的字符串或者是改收款人或金额都是没有办法做到的,因为这个签名必须是用张三的私钥签名,才能被记账节点验证通过。

    然后张三会把他对交易的签名发送给记帐节点去验证。如果十台服务器有七台验证通过以后,这个转帐就会成功,张三的余额就少了30,余额变为70,李四的余额就会增加30,变成130。

    持有比特币最多的地址上有18.9万个比特币,相当于15多亿的人民币。那在公网上有这么多黑客攻击都没有破解他的私钥去把这个地址上的币给盗走,所以我们看出来比特币的安全性还是经受了实践的考验的。

    梅克尔树的校验作用

    大家可以看一下这一个区块里面有四笔交易,两两hash以后,再两两hash就变成了根hash值。

    大家看这个图,把前面的TX0,TX1,TX2交易全部隐藏,只剩下TX3。这里我们把TX3的hash值加上TX2的hash值可以形成hash23,然后hash01+hash23可以算出根hash值,这说明我只要知道我自己的数据,我也能算出这个数据是不是有被篡改,有没有在这个区块里面。

    我用一个加法来代替hash来看交易是否在这个区块里面。5+6等于11,11+12等于23,23+25等于48,35+48等于83,那么我只要绿色的和红色的这些数据我就可以证明我的交易是否在83这个头hash下面,就可以证明我没有被篡改,存在这个区块链中。

    这个图就是私链或者联盟链的一些节点。尤其是联盟链,四个节点中只要有三个正常运行就能够维持,七个节点有五个能正常运行就能继续做区块链共识。

    我们给海平线“海票惠”部署的节点都是放在海航云内网里面,但是用户只要获取部分数据,就可以通过merkle树来验证数据是否被篡改,并且可以把部分需要分享的数据拿出来给第三方,去证明这些数据是谁和谁签的合同,然后这个数据有时间锉,这也是没有办法篡改的。然后我们会把私链跟hash值写到比特币上,这样就更加没有办法篡改了。

    或者我们把各个私链的头hash值串起来搞一条联盟链,将他们的头hash全部放在一条链上,这样也是一个很方便的方法。既能保护每一条私链的隐私,又能够保证他们的数据无法被篡改。

    智能合约的运行过程

    这是一个智能合约,就是一方面把股权或票据放到交易所,另一方面把数字货币也放到交易所。如果两个条件都能够匹配,那么就是一手交钱一手交货,自动执行。

    这是海票惠的票据撮合平台。首先第一步,融资方和贷款方都会在平台上注册,那么都会开一个银行托管帐户,有票的一方把票据在区块链上平台上挂出,购票的一方就把钱存入银行的托管帐户。

    比如一家企业把一张一百万的商业承兑汇票挂在区块链平台上,然后另外一家保理公司存入98万元的钱,他会收到98万元的代币,卖家设定一定利率挂牌卖出。买家用代币可以买区块链上的票据,撮合成交以后,相当于订立了合同,这买家的钱就从买家的帐户转到卖家的帐户中冻结起来,然后卖家会在ECDS把票转给买家,买家看ECDS 确认票收到以后就会让银行放款,买家就能收到钱。

    融资方录入票据

    融资方录入票据

    这个是票据登陆,录入,如果能够和央行ECDS直联,只要输入编号就可以把票据的信息写到区块链上。

    融资方获得数字票据

    融资方获得数字票据

    票据录入以后,就可以挂牌,以一定的利率挂牌。

    融资方筛选票据

    投资方筛选票据

    其他公司或保理公司觉得利率不错,又有资金,那么就可以在区块链上摘牌,这样就形成了一个合同关系,然后就开始交割。

    投资方等待票据回款

    投资方等待票据回款

    投资方查询操作记录

    投资方查询操作记录

    入金

    入金


    录入票据

    录入票据

    挂牌转让

    挂牌转让


    摘牌投资

    摘牌投资

    大家可以看前面几张图,入金、票据登记、挂牌、摘牌都写在区块链上,都是不可篡改的。

    为什么那么多核心企业都非常急切的要做票据服务平台呢?关键就是那些与核心企业关联的中小企业都有强烈的融资需求。供应链金融数据写在区块链上不可篡改,就会形成非常宝贵的信用资料,方便融资,也方便企业提高自己的信用,对于信用差的企业,他们就会被淘汰。

    明白了原理是第一步,后面要理解为什么区块链对整个经济和社会的颠覆意义是深远的,这个可能不是一两句话能够说明白的。在三年前我已经完全认识到区块链的技术就和互联网技术一样,能够有巨大的经济价值、社会价值,我们就义无反顾的投入到区块链的研发当中去,所以目前在这个行业内也能够保持一定的领先地位。




    引用:复杂美CEO吴思进的演讲(原标题:【钛坦白】33复杂美CEO吴思进:追本溯源,带你读懂区块链最基本的技术原理)



    展开全文
  • 区块链以及区块链技术入门详解

    万次阅读 多人点赞 2018-01-30 15:35:09
    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点...

    转载自:http://blog.csdn.net/u012562943/article/details/60779241

    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。

    1. 技术人员看待区块链的正确姿势

    区块链虽然是一个新兴的概念,但它依赖的技术一点也不新,如非对称加密技术、P2P网络协议等。好比乐高积木,积木块是有限的,但是不同组合却能产生非常有意思的事物。

    我接触过一些工程师,初次接触区块链时,不约而同的表达了:都是成熟的技术,不就是分布式存储嘛。站在工程师的角度,第一反应将这种新概念映射到自己的知识框架中,是非常自然的。但是细究之下发现,这种片面的理解可能将对区块链的理解带入一个误区,那就是作为一个技术人员,忽略了区块链的经济学特性——一个权力分散且完全自治的系统。

    区块链本质上是一个基于P2P的价值传输协议,我们不能只看到了P2P,而看不到价值传输。同样的,也不能只看到了价值传输,而看不到区块链的底层技术。

    可以这么说,区块链更像是一门交叉学科,结合了P2P网络技术、非对称加密技术、宏观经济学、经济学博弈等等知识,构建的一个新领域——针对价值互联网的探索。

    那 什么是价值互联网 ?价值互联网可以是当下如日中天的电子商务所衍生的支付业务。但,真的只是支付领域吗?很显然这是不够的,一级资本市场,实体资产确权与转移,证券登记交割、征信与反欺诈。我们再仔细想想,我们的各大电商平台的专业差评师,恶意刷单还少吗?

    如今的金融领域,除了支付比较便利之外,在其他绝大部分的业务中,我们就像是被套着锁链走路一样,我们反复确认,反复审核,反复监督,我们反复构建一个又一个的大大小小的高可用集群,保证线上服务的可靠性与连续性,我们雇佣一个又一个的安全工程师,交付一个又一个的渗透测试项目。为什么?因为作弊的成本太低了,低到只要改数据库的一行记录就可以提取上百万的资金。

    强大的互联网给了我们成本几乎为零的高速信息传输通道,却没有一个成本低廉可靠的高速价值传输通道,那么这也就是区块链即将带来的。

    区块链是一个公共的分布式总账,下面从技术角度简单介绍一下:

    想象有一个100台的分布式数据库集群,现在的情况是这100个节点实际上的拥有者是一个机构,并且所有节点处在该机构的内网当中,所以这个机构想让这100个数据库节点干嘛就干嘛,换句话说这100个节点之间是处于一个可信任的环境,并且受控于一个实体,这个实体具有绝对仲裁分配权。

    另外的情况是这样的,想象这100个节点分别归不同的人所有,且每个人的节点数据都是一样的,即完全冗余,并且所有的节点是处在广域网当中,换句话说就是这100个节点之间是不信任的,且不存在一个实体,它拥有绝对仲裁权。

    现在考虑第二种情况,采用什么样的算法(共识模型)能够提供一个可信任的环境,使:

    • 每个节点交换数据过程不被篡改;交换历史记录不可被篡改;

    • 每个节点的数据会同步到最新数据,且承认经过共识的最新数据;

    • 基于少数服从多数的原则,整体节点维护的数据本身客观反映了交换历史。

    区块链本质上就是要解决以上第二种情况的一种技术方案,更确切的说应该叫分布式的冗余的链式总帐本方案。有关区块链的一些要素,在我以往的文章里有总结过一些:

    • 包含一个分布式数据库

    • 分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本

    • 区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体

    • 区块链只对添加有效,对其他操作无效

    • 基于非对称加密的公私钥验证

    • 记账节点要求拜占庭将军问题可解/避免

    • 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。

    • 共识过程能够解决double-spending问题

    所以作为一个技术人员,不应当只看到了区块链所依赖的技术,更应该关注区块链以外的点和面,综合来看,区块链将会有趣得多。

    2. 区块链的一般性架构介绍

    有关区块链本身的发展史,网络上资料比较多,本文不再赘述。

    而有关区块链技术的介绍,在各个区块链平台的社区是有详细资料的,但是针对这些资料的总结,以及抽象出一共通概念的介绍,还是凤毛麟角,本文尝试总结一下。

    在介绍之前,我想稍微介绍一下公有链,联盟链的概念,这些概念是以太坊创始人Vitalik提出的,我在这些概念的基础上做了一些研究。

    其实区分公有链、联盟链很简单,只要看这个区块链的访问权限就可以了,如果访问该区块链需要获得链上节点的许可,那么这是一个联盟链,否则是公有链。

    根据名称,我们也可以”望文生义“,公有表示一个完全开放的网络,联盟表示一个半开放的网络,成员之间是共享的,非成员身份是没有自由访问权限的,所以我们也称联盟链为许可链。

    下面我们来看几个比较主流的区块链平台(公有链,皆开源):

    • 比特币 Bitcoin

    • 以太坊 Ethereum/经典以太坊 Ethereum Classic

    • 比特股 Bitshares

    我一般戏称为”三巨头“,从生态上来看,比特币是最为成熟稳定的,以太坊更像是一个冲在前面的勇士,比特股相比前两位生态要小很多,但是从创新的角度,也不亚于前两位。

    其他的很多项目,是从这三个区块链上衍生出来的,所以以这三个为基础,基本上可以吃透区块链了。

    不得不提的还有Linux基金会项目——HyperLedger项目(主打联盟链,开源),也是旨在打造一个通用的区块链技术,不过我认为目前尚在开发迭代当中,还没有具体的应用案例,按下不讲。

    另外还有一些银行寡头间的联盟链项目——R3 CEV项目(联盟链,闭源),以及中国的R3项目——ChinaLedger(联盟链,闭源),当然这些不是开源的,我无法获得有用的资料进行分析,所以就不展开了。

    从技术上来看,针对不同的业务场景,对区块链有不同需求,比如实时结算业务,要求区块链提供秒级的交割,相对应的就是出块速度的要求,而出块速度过快往往会导致区块链分叉(fork),形成孤儿链,孤儿链是无效的,那么交易也就作废了,影响了区块链的最终一致性。

    如果频繁产生分叉造成相当比例的用户交易失效,那么可以认为系统是不可靠的。

    如果我们将这种实时性要求比较高的业务安插到联盟链中,就可以控制风险,通过调整共识算法,利用快速一致共识模型(Consensus Model)来避免上述问题,虽然不如公有链那么健壮,但对某些特殊场景足够了。

    所以架构层面,对公有链和联盟链的技术也要差异化对待。

    不过客户端整体的设计还是有一些通用的概念的,如下图:

    一个区块链至少分为三层,最底层是一些通用的基础模块,比如基础加密算法,网络通讯库,流处理,线程封装,消息封装与解码,系统时间等;

    中间一层是区块链的核心模块,一般包含了区块链的主要逻辑,如P2P网络协议,共识模块,交易处理模块,交易池模块,简单合约或者智能合约模块,嵌入式数据库处理模块,钱包模块等等;

    最上面一层,往往都是基于Json Standard RPC的交互模块,基于Json-RPC,我们还可以做出更好的UI界面,也可以是一个web-service。

    如果区块链 支持智能合约,可能还要分更多的层,比如增加BaaS层,区块链上的智能合约提供自治的服务,比如下面这张以太坊的架构图(来自Google,仅作参考):

    这种分层更加关注的是区块链本身的分层,即业务上的视角,而不完全是技术的。

    我们再转向比特币的设计:

    比特币几个模块之间的耦合度其实比较高,而且有不少历史包袱,比特币的发明者——中本聪在开发比特币的时候,使用VC++开发,而VC++的标准库中的sstream流处理性能非常感人,不得不放弃,自行实现了了基于vector 的流处理容器。而随着c++11的推出以及标准库的更新迭代,性能不可同日而语。

    从整张图我们可以看出,比特币的模块比较少,也比较简单。chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密还有存储相关的,mem-pool是未确认的交易池。得益于比特币核心开发者的不朽贡献,相比中本聪时代的比特币代码,现在的比特币代码质量已经相当不错了。

    以上无论哪种设计,一般都要从P2P网络协议作为切入,作为一个P2P钱包,既要提供Service也要提供Client,作为Service依赖P2P网络协议,作为Client依赖Json-RPC。

    需要指出的是,目前”三巨头”所使用的账户模型是不同的(所谓账户模型是指账户记账方法),比特币使用UXTO模型,以太坊和比特股使用账户余额模型。

    UXTO模型(Unspent Transaction Outputs (UTXOs) ):此模型表达了一种转移的概念,即任何产生的新币,在以后的生命周期中,只有转移,没有消亡,转移实质上是由加密算法的签名与验证控制的:

    账户余额模型:账户余额模型摒弃了这种强验证的账户模型,即账户余额回归到数字加减,这样做提升了交易的效率。

    3. 共识算法与分布式

    终于来到重点了,本文每节其实都可以展开成为独立的文章,内容所限,简单讲。

    所谓区块链共识过程,在上文有所提及,是指如何将全网交易数据客观记录并且不可篡改的过程。目前"三巨头"分别使用不同的共识算法(Consensus Algorithm), 比特币使用工作量证明PoW(Proof of Work),以太坊即将转换为权益证明PoS(Proof of Stake),比特股使用授权权益证明DPoS(Delegated Proof of Stake)。

    以上这些算法我称之为“经济学”的算法,所谓经济学的算法,是指让作弊成本可计算,且让作弊成本往往远大于作弊带来的收益,即作弊无利可图,通过这种思想构造一个用于节点之间博弈的算法,并使之趋向一个稳定的平衡。

    相对应的我们还有计算机领域的分布式一致性算法,例如Paxos、Raft,我也称之为传统分布式一致性算法。

    他们之间的最大区别是:系统在拜占庭将军(Byzantine Generals Problem)情景下的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。然而无论是Paxos还是Raft算法,理论上都可能会进入无法表决通过的死循环(尽管这个概率其实是非常非常低的),但是他们都是满足safety的,只是放松了liveness的要求, PBFT也是这样。

    下面是一些传统分布式一致性算法和区块链共识过程的异同点。先来看相同点:

    • Append only

    • 强调序列化

    • 少数服从多数原则

    • 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志

    这是不同点:

    • 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题;

    • 传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。

    考虑上面的不同点,结合公有链和联盟链的特征,我们有:

    • 联盟链:半封闭生态的价值网络,存在对等的不信任节点,如某某协会成员之间。

    • 公有链:开放生态的价值网络,这层主要是为行业链和私有链提供全球交易网络。

    由于联盟行业链其半封闭半开放特性,使用Delegated Proof of XXX 是可行的,可以考虑以传统一致性算法作为基础加入拜占庭容错/安全防护机制进行改进也是可以的。

    而针对公有链,PoW/Pos/DPos等“经济学”的算法可能是最优算法。

    技术上,以上不同的共识算法,我们很多新开发区块链都相应的支持一个特性:共识模块可插拔,以应对不同场景下的要求。

    下图是一张未来区块链生态示意图:

    公有链提供可信可靠的价值传输网络,上面可以继续组建去中心化应用(DAPP)或者部署联盟链,甚至传统数据库都行,在上层搭建C端应用。

    4. 数字资产与价值流通网络

    这里有张未来区块链发展的示意图:

    ref: Metaverse元界白皮书-CN(概要)

    “三巨头”中,比特币在“数字货币”处,比特股在“去中心化交易所”附近,以太坊在“去中心化组织”处。而实际上,区块链和现实的接触点,还在图示位置。

    所以区块链仍是一个正在成长的事物,结合图5,我们希望构建一个基础设施完善的价值传输网络,上层应用丰富的区块链生态,仍然需要付出巨大的努力。

    下一步目标,是将资产数字化(类比资产证券化),例如我们可以将珍稀物品(艺术品/古董)数字化、知识产权数字化、票据基金等收益权数字化,将极大的提升市场运作效率,配备智能合约,甚至人工智能,可编程社会不再是梦想。

    精彩问答

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

    正如区块链这个名词一样,它是被创造出来的,并没有以往的概念可以映射到上面,所以容易费解。我们不谈这个概念,我们只需要想想我们的互联网还需要什么。正如比特币白皮书提到的,一个点对点的现金系统,他使用的前提要求是很低的,不需要注册,不需要手机号,一个点对点的网络,只要你用设备接入,那么你就可以使用。区块链这个概念也一样,目的是构建一个点对点的生态,解构权力带来的不对称。它本身只是一个共享的总账本,不同于网络中多节点自己记账,再对账,这就瓦解了中心权力。

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

    这个问题很好。我目前所做的区块链项目是涵盖了这个概念的,也就是你所说的互联网身份认证。我们认为它是使区块链接入现实业务的必要一环。

    在我们的设想中,首先什么是身份?身份不单单是一个ID号,一个密码,而是一个使用者所有的操作记录集,这个记录集的代号才是身份。正如账户丢失,然后申诉一样,申诉的内容才是真正定位到你这个人。区块链也一样,它需要一样ID,同样它也需要自动验证你历史记录的合法性。目前互联网的身份认证是依赖公安系统的,最简单的方案就是把公安系统中的身份系统映射到区块链中。另外一个方案也是用户自定义记录集,根据交易历史核对身份。当然再更远的未来,结合人工智能,区块链可能有更好的表现。

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

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

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

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

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

    问题:多谢分享,能谈谈最后一张图中区块链发展的各个阶段可能对传统金融行业尤其是银行业的影响吗

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

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

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

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

    展开全文
  • 几张图看懂区块链技术到底是什么?

    千次阅读 多人点赞 2018-10-11 11:30:32
      “区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人谈一谈区块链技术就out了,BAT以及各大银行还有什么金融机构都在开始自己的区块链研究工作,就连IBM最近也成立了自己的区块链研究实验室,但其实...
  • 区块链学习——区块链技术

    万次阅读 多人点赞 2018-04-19 09:36:35
    摘要我在区块链学习的上一篇博文,链接:区块链学习——区块链技术理念与工作流程中,简单介绍了区块链的技术理念以及工作流程,本文我将继续介绍区块链技术栈。我们知道,区块链本身只是一个数据的记录格式,就像们...
  • 作为一名计算机技术宅和迅雷下载重度用户,从当年迅雷刚推出的时候就开始用它,那种眼看着一部几个GB大小的电影在瞬间就下完的感觉特别爽,可以说迅雷是唯一一个陪伴了我十几年到现...
  • 区块链技术基础

    万次阅读 2019-06-14 21:20:07
    区块链可以理解为是基于区块链技术形成的公共数据库。而区块链技术是比特币的底层技术,包含现代密码学、分布式一致性协议、点对点网络通信等技术,这些技术通过一定的规则协议,最终形成区块链技术......
  • 区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链技术实现。 无论你擅长什么编程语言,都能够...
  • 区块链技术个人笔记

    千次阅读 2020-08-30 21:35:07
    可以把区块链想象成比特币网络的数据库 • 这个数据库以文件形式存放在互联网的各个比特币节点上,每个节点都有一份完整的备份。 • 这个数据库记录着自比特币诞生以来的所有比特币转账交易。 • 这个数据库是一块一...
  • 区块链技术综述

    万次阅读 2017-10-31 22:32:38
    一篇区块链的综述文章,将区块链的基本概念讲述清楚。
  • 区块链技术

    千次阅读 2017-12-19 18:51:56
    区块链是数据库的一种,它拥有大量的记录,并将这些记录全部放在区块内,每个区块通过使用加密签名,链接到下一个区块。人们可以想使用账本那样使用区块链,也可以共享,也可以被拥有适当权限的人查阅。通俗的说,...
  • 区块链技术方案研究与分析

    万次阅读 2019-05-11 16:24:06
    区块链最初是由一位化名中本聪的人为比特币(一种数字货币)而设计出的一种特殊的数据库技术。 从数据的角度来看,区块链是一种把区块以链的方式组合在一起的数据结构,它能够使参与者对全网交易记录的事件顺序和...
  • 首先研究了区块链技术和应 用发展的演进路径,提出了区块链的发展生态结构,盘点了7类典型参与 者:开源社区、产业联盟、骨干企业、初创公司、投资机构、金融机构和 监管机构的区块链实践进程。梳理了英国、美国、...
  • 近两年来,联合国、国际货币基金组织和多个发达国家政府先后发布了有关区块链的系列报告,探索区块链技术及其应用。在国内,金融企业、互联网企业、IT企业和制造企业积极投入区块链技术研发和应用推广,发展势头迅猛...
  • 为推动上海区块链技术与应用的发展,在上海市科学技术委员会、上海市经济和信息化委员会的指导下,上海科学院、上海计算机软件技术开发中心、上海区块链技术协会等企事业单位,调研分析了全球区块链最新动态、上海...
  • 区块链技术原理

    万次阅读 多人点赞 2016-07-17 17:48:15
     “区块链技术最初是由一位化名中本聪的人为比特币(一种数字货币)而设计出的一种特殊的数据库技术,它基于密码学中的椭圆曲线数字签名算法(ECDSA)来实现去中心化的P2P系统设计。但区块链的作用不仅仅局限在...
  • 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。...本次分享一下聊聊区块链技术,以及目前区块链技术架构,并且介绍一下价值互联网。由于区块链是一个新兴的技术概念,本文所有的观点仅代表个人观点,
  • 区块链技术在金融行业的应用

    万次阅读 2018-03-29 18:19:33
    作为比特币背后的分布式账本技术——区块链,它的热潮似乎已经无可阻挡。...区块链技术在金融领域的应用主要有以下方面:1、数字货币比特币是目前区块链技术最广泛、最成功的运用,在比特币基础上,又衍...
  • 区块链技术应用简述

    万次阅读 2018-06-27 09:50:07
    1大纲 区块链技术被认为是继蒸汽机、电力、信息、互联网科技之后第五个最有潜力引发颠覆性革命的核心技术。 文章简述围绕以下模块展开:1. 区块链的理解。2. 区块链的应用。3. 智能合约衍生的理解。4. 智能...
  • 基于区块链技术的数据管理系统

    千次阅读 2018-11-28 19:11:39
    一、 背景 随着社会和经济的发展,网络给大家的生活带来了巨大的改变,而人们也越来越依赖数据存管、网络交易等基于网络的各种服务。与此同时,网络的发展也给许多不法分子带来了可乘之机,数据篡改和盗取、网络...
  • 区块链学习——区块链技术理念与工作流程

    千次阅读 多人点赞 2018-04-17 15:04:11
    在上篇关于区块链的文章中,我已经为大家简单地介绍了区块链的相关概念与简介,博客链接—区块链的相关概念与简介,本篇我将对区块链技术中的技术理念与技术栈做一个简单的介绍。区块链的技术理念通过区块链的概念...
  • 如何使用区块链技术进行项目开发

    千次阅读 2018-04-29 13:30:21
    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点...
  • 区块链技术的本质是分布式数据库

    千次阅读 2017-06-27 09:39:48
    本文转自微信号EAWorld。... ...3、区块链与微服务是天生的一对区块链技术是基于比特币应用提出的一个概念,他是一个融合了多种技术的一个集成式创新。目前区块链的应用早已不仅仅局限在比特币上。...
  • 区块链技术是什么鬼

    千次阅读 2016-11-25 14:06:59
    最近区块链比较火,区块链是什么鬼,怎么以前没听过,不过说个东西你一定听过-比特币,以前区块链用在比特币上,一直到最近半年,区块链已经渐渐开始有了一些其他应用,特别是在金融领域。那么什么是区块链呢?他和...
  • 关于区块链技术的应用,@英唐众创做以下分享:区块链使用去中心化的数据安全技术,可提升数据安全性、降低数据维护成本、推动组织智能化发展,未来有望在银行、审计、物联网 、医疗、公证、版权管理等领域广泛应用,...
  • 区块链技术的技术原理与应用展望      区块链技术是一种去中心化,去信任的分布式数据库技术方案。该数据库由参与系统的所有节点集体维护,具有去中心化,不可篡改,透明,安全等特性。随着比特币数字加密货币...
  • 区块链技术在银行业的应用

    万次阅读 2018-03-15 20:27:14
    近在互联网金融领域,区块链技术是今年最前沿最热门的课题。一种说法是,十年后互联网金融将会消失,融入万物互联。且不说这是否危言耸听,在比特币备受争议的今天,其核心的数据区块链(BlockChain)技术正在萌芽,...
  • 区块链技术的应用与发展

    千次阅读 2018-06-16 08:28:08
    区块链的概念区块链技术起源于2008年由化名“中本聪”的学者在密码学邮件组发表的奠基性论文《比特币:一种点对点电子现金系统》,目前尚没有行业内公认的区块链定义。狭义来讲,区块链是一种按照时间顺序将数据区块...

空空如也

1 2 3 4 5 ... 20
收藏数 142,252
精华内容 56,900
关键字:

区块链技术