纠正你对区块链的认知偏见

561 阅读18分钟
原文链接: mp.weixin.qq.com

2017年科技圈最大的热点,除了目前炒的正火的人工智能外,就属区块链技术了。我们来看一下微信指数:

截止到2018年2月5号关于区块链的微信热度已经远远超过了人工智能的热度了。

区块链话题的引爆和近期发生的两大事件不无关系:一是比特币在2017年12月份冲击2万美元,全球比特币交易再次掀起炒作浪潮;二是徐小平在某公司的内部讲话的泄露引起了社区的骚动。

但是,2017年9月4日下午3点,中国人民银行领衔网信办、工信部、工商总局、银监会、证监会和保监会等七部委发布《关于防范代币发行融资风险的公告》,宣布ICO在国内被禁止。

虽然ICO在国内被禁止,但是区块链这一项技术目前在全球各国都受到重视。而且中国政府已经将区块链技术列入"十三五"规划。截止到2017年底,已经有大量基于区块链技术的创业公司涌现。并且行业巨头们也投入了很大的精力来研究区块链技术,比如Linux基金会于2015年发起的超级账本(hyperledger)项目已经有近80家企业加入,其中不乏IBM,intel等大企业。

当然,耕植于公众号,朋友圈的人生导师们、技术布道者也不会放过这个热门话题,各种味道的关于区块链的文章涌现,其中有部分高质量的文章,但是不乏有一些对区块链的理解一知半解或者理解有误的文章把你带到坑里。所以,我们本着技术人的心态,尽量给你还原一个真实的区块链。

首先声明一下:我们心中没有币。

区块链的认知误区

鉴于很多人对区块链的认知上有很大的误区,那么我们就先从区块链的认知误区开始吧。

  • 区块链就是比特币

这是最直接的认知偏见了,也情有可原,因为大家最初了解到区块链这个概念也是从比特币过来的。区块链不是比特币,比特币是基于区块链技术的一种数字现金应用(虚拟货币)。区块链技术是⽐特币的底层技术,在早期并没有太多人注意到比特币的底层技术,但是当比特币在没有任何中⼼化机构运营和管理的情况下能稳定地运行多年让大家感到非常震撼,所以很多⼈注意到该底层技术也许可以应用到其他地方,于是把比特币技术抽象出来,称之为区块链技术或者分布式账本技术。

  • 区块链就是一个分布式数据库

这种理解是不够全面的,区块链不是一个数据库,虽然你可以用它来存储一些数据,但单从存储角度来看,它存储的效率并不高,而且也不建议大家把大量的原始数据放在区块链上,区块链要解决的核心问题是多方互信的问题,而不是存储。所以大家基于区块链去做一些事情的时候一定要特别注意这点。

  • 区块链要颠覆现有技术

颠覆这个词,在信息技术大爆炸的时代我们已经听到过太多次了,很显然,这种认知太偏激了(有点像宗教狂热者说的话),很多事实告诉我们xxx颠覆yyy的事情大部分都不是真的。区块链技术不是彻底的技术创新,它是基于现有的技术(比如:加密技术,P2P技术,分布式存储)通过技术组合的方式实现的一种综合的技术方案,虽然解决了多方互信的问题,但并不意味着对现有的商业模式会有彻底的颠覆。

  • 区块链都是基于工作量证明(PoW)

说的直白一点,就是很多人认为搞区块链是不是就是去挖矿?俗称的挖矿有对应的一个专业词汇叫"工作量证明"(PoW: Proof of Work),关于这个概念下文会讲到。PoW是目前来看最公平的公链解决方案,但是区块链还存在着私有链,联盟链的存在,可以使用更加节能环保更加高效的共识算法,比如PoS(Proof of Stake, 权益证明)、DPoS(Delegate Proof of Stake, 委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法),总之,各种共识机制有自身的优点,但也存在计算能力浪费,权益向顶层集中,作恶成本低下和对去中心化造成威胁等各种问题,所以需要根据区块链应用的场景选择更合适的共识算法。

  • 区块链部署一定要每个参与者都部署节点

区块链基础是点对点通信网络,通信的单元是节点。所以,在区块链部署的时候,用户容易将区块链系统运维和区块链系统使用两者混合在一起。

区块链运作的基础是节点的运维,系统的参与者是系统的构建者。对于传统公链的模式,任何一个人都可以参与系统的构建,即系统参与者可以运行一个节点,当然也可以不运行节点。对于在商业环境中使用的区块链系统,区块链节点的准入机制是受限的,并不是所有用户都需要参与到节点构建中,部分重要用户可能参与到节点构建,大部分的用户是直接使用区块链服务的。即区块链系统里面用户分为区块链系统构建者和区块链系统使用者,而且两者不冲突。

  • 区块链共识一定要每个用户都参与共识

区块链共识机制是区块链形成的基础,通过共识机制构建出一个链式形式的数据结构。

正是由于共识机制的重要,所以在很多场景,用户总是迫切的想参与到系统共识中,希望在系统共识中发挥作用,但是又总是觉得格格不入。这里容易混淆的是区块链系统的共识和业务用户的共识。区块链有其本身的共识机制,包括POW、POS、PBFT等,这些共识机制是与业务行为无关的。同时用户在使用区块链的时候,也有其自己的业务用户共识机制,包括比如某个人运动卡路里消耗最多可以获得某个奖励,某人好人好事做的最多可以获得某个奖励,某人阅读量最多可以获得某个奖励等等,这些机制是业务里面的用户行为激励机制,业务的共识是可以建立在区块链共识之上的。如果将业务的共识机制作为区块链的共识机制,那这个区块链即是一个专用区块链,在其上的其他需求都需要重新构建一个新的区块链,这个成本就很高。

所以,在区块链里面并不是所有用户都需要参与到共识里面,共识是节点参与者行为,普通用户只是使用区块链系统。

区块链的基本概念

上面我们讲了区块链的认知误区,但是对于很多从未接触过区块链的人来说还是不知道区块链是什么东西,现在给大家讲一下区块链的基本概念。

区块链是一种分布式账本技术。请注意这句话,注意概念的边界,分布式账本技术有很多种,区块链是只是其中一种分布式账本技术。那么什么叫账本呢?举个通俗点的例子:比如你今天早上10:00在超市花掉100元人民币买了一袋米,下午卖二手手机给xxx挣了500元人民币,然后你把这些信息记录在一个本子上,月底的时候通过查看这个本子,你就可以知道你这个月花掉了多少钱,挣了多少钱。这个本子就是账本。区块链就是这样一个分布式账本。

区块链包括最基本几个概念:共识机制、密码算法、网络路由、脚本系统、区块链账本。下面我们简单介绍下这几个概念。

  • 共识机制

共识机制是一个规则,每个节点按照这个规则去确认(公布)数据,共识机制通过筛选来决定打包者,我们常看到的挖矿就是一种共识机制。

  • 密码算法

密码算法保证了区块链的链接,可以保证数据的完整性,同时也用来创造账户地址,签名交易事务等。

  • 网络路由

网络路由完成节点发现和数据的同步。

  • 脚本系统

脚本系统是一组程序规则,在比特币系统中,进行比特币的发送和接收,但是在区块链中,可以通过编程手段记录各种数据实现各种业务。

那么作为一种分布式账本,区块链有什么特别的优势呢?

  • 防丢失

还是拿上面的例子讲,自己做的纸质账本是很容易丢失的,比如可能被你家的猫撕掉了,或者掉马桶了,或者被烧掉了,所以为了避免这些生活中的异常,你可能会找更可靠的第三方来保存你的账本,这样账本丢失的可能性就更低了,比如请银行给你做账,请支付宝给你做账,第三方做账在一定程度上保证了做账的可靠性。但是这种情况只是让你的账本丢失的可能性降低了,并没有从根本上解决账本丢失的问题,虽然银行和支付宝可能看不上你的这点小钱不会删除你的账本信息,但是不保证黑客进入银行或者支付宝的系统恶意删除你的账本。而在区块链里,你的账本信息保存在区块链的所有节点上,任何节点出问题导致数据丢失,都不影响你的账本的完整性,你可以从其他节点将你的账本同步过来。

  • 防篡改

还是拿上面的例子讲,自己做的纸质账本是很容易被别人篡改的,比如你老婆不想让你知道她在双十一败了多少家,修改你的账本;银行和支付宝可能被黑客入侵并修改你的账本信息。而区块链以密码学为基础,设计了一套完善的防篡改机制,账目一旦写入就不可修改,就算一个节点被篡改了,其他节点不认可这个修改,这个修改最终无法进入区块链系统,这样就在机制上保证了账本的安全性。

  • 交易更高效

还是拿我们生活中熟悉的事情举例,我们平时和其他人发生交易一般都会借助第三方机构完成的,比如:我要转账给你,我们通过银行做中间人;你卖房给我,通过房产交易中心进行交易;拍卖会走第三方拍卖平台方式进行。但是通过第三方机构有还是存在交易的局限性:

  1. 第三方机构往往具有独立性,若制度不完善,很难保证交易的公平公正;

  2. 第三方机构往往需要大量的费用来维护机构的正常运行。而且在某些场景中很难找到一个所有市场参与方共同认可的信任中心来作交易担保的,这让交易变得困难。区块链以对等的方式把交易双方连接起来,通过共识机制来保证交易的公平公正,让交易更快成本更低(没有中间商挣差价)。

  • 匿名性

匿名性保证了隐私安全,区块链通过公私钥完成用户身份的判定,不需要用户提供额外的信息。

  • 价值传递

这是区块链最核心的部分,因为区块链能够保证信任,而信任就可以创造具有价值的东西,无论是账本,合同,版权还是显著如比特币,都是区块链能够带来的。

区块链的原理

了解了区块链的各种好处外,我们再来看区块链的基本原理,区块链的基本原理很简单,会有下面三个简单的概念:

  • 交易

所谓交易就是一次操作,就是往你的账本里添加一条交易记录,这个动作叫做"交易"。

  • 区块

记录交易的内容及状态结果,是对当前账本状态的一次共识,举个通俗的例子,"我早上10:00花100块在某某超市买了一袋米"这个账大家是认可的,觉得没问题,然后我就把它记录在区块上,大家认可这个区块。

区块之间是是有关联的,他们按照发生的时间顺序串在一起,这就叫链。链一旦形成是没法破坏的,任何尝试破坏链的动作都会不会被系统接受。

区块链的发展

1.0

一般我们把基于比特币的区块链技术叫做区块链1.0,区块链的核心是共识机制的建立,比特币为了有效建立共识,提出了工作量证明的算法,即PoW(proof of work),通俗讲就是你得证明你钱包里多出的1万块是合法的1万块,就要找出你为这1万块做了相应工作的证明,否则我就说你这1万块是偷来的,不合法的。

  • 优点

  1. 工作量证明算法对于比特币来说是一个非常有效的建立共识的算法,它保证了你的账本不会被篡改。如果有人要篡改,那么你需要超过整个系统51%的算力来证明你的工作量的合法性,这在现有的技术条件下基本上是不可能实现的。

  • 缺点

  1. PoW有个很致命的问题就是海量的工作量证明需要大量的算力,大量的算力需要大量的电力来提供能源,这对整个社会的能源影响非常大。

  2. 比特币为了减少交叉碰撞的产生,把交易确认(计算一个新块)的时间设定为10分钟,6次确认的话需要一个小时,所有节点都同步数据,则需要更多的时间。因此比特币的交易数据延时比较厉害。

2.0

区块链1.0以比特币为代表,这个时期的区块链主要是用来转换虚拟电子货币。区块链2.0则把这种去中心账本的能力抽象的更彻底,提出了更宏观的对整个市场的去中心的想法,区块链2.0可以把去中心化账本的能力应用在注册、确认、转移各种不同类型的资产及合约,包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域,区块链2.0最大的特点是引入了"智能合约"的概念,以太坊(Ethereum)就是这个时期的典型代表。我以以太坊为代表分析一下区块链2.0的一些优点,缺点。

  • 优点

  1. 共识建立的效率更高。以太坊虽然也是以工作量证明的方式(挖矿)来建立共识,但它引入了幽灵协议来提高挖矿的效率,未来也将引入新的共识算法(PoS);

  2. uncle块激励机制的引入减少区块间隔时间为15秒,提升交易效率;

  3. 开发了较多基于密码学的隐私保护方案来保证数据隐私安全问题,比如环签名混币方案;

  4. 为执行智能合约而设计的简化的虚拟机EVM,让基于区块链应用的开发成本更低,更方便。

  • 缺点

  1. 伸缩性(Scalability):全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?简单来说就是还是很耗资源,交易效率还是不够高;

  2. 隔离性(Isolatability):多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?

  3. 安全性问题:指令集应该约束不可预控的合约行为,降低系统性风险,从而让Parity钱包漏洞这样的问题从根源被杜绝;

  4. 规模问题:与其他用于处理特定任务的区块链网络相比,以太坊协议被开发为作为分散应用程序的框架和基础设施,用以太坊解决潜在的缩放问题要困难得多,也要复杂的多,以太坊一直在研究更多的解决方案,以有效地扩展网络,解决大多数规模问题。

3.0

其实没有一个区块链3.0的说法,因为准确来说目前区块链2.0的技术的发展及应用都还不完善,还有很多问题有待解决。我们暂且把区块链未来的发展叫区块链3.0。

鉴于区块链目前的一些问题及未来发展的想象,很多人对区块链未来提出了很多假设。

  • 更广阔的应用

未来区块链的应用将更为广阔,主要体现为行业应用,体现为政府、健康、科学、工业、文化和艺术领域,智能化物联网的应用等。

  • 有向无环图组织模型(DAG)

DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构,有人提出DAG,将无区块(Blockless)的概念引入到区块链里面以提升交易效率。

  • 异构的多链架构

现有的区块链架构都存在诸多问题,不仅仅是从实用性角度所说的扩展性(extensibilty)和伸缩性(scalability)的问题。我们认为,问题源于把共识架构中两个很重要的部分:一致性(canonicality)和有效性(validity)绑定得太紧密了,为了解决这些问题,以太坊黄皮书作者Gavin Wood博士提出了Polkadot的概念。Polkadot其实就是一种跨链技术,有了跨链技术就可以实现不同区块链之间的交易。

区块链的应用

虽然我们讲到了区块链3.0,并且讲到了区块链美好的应用前景(包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域),但是区块链的发展和应用还处于早期,还有很多技术问题(包括分叉的问题,隐私安全问题,共识机制的问题,网络和数据容量问题等)亟待解决。虽然我们讲到智能合约的美好应用前景,但是基于智能合约的应用还没有大规模的出现,智能合约的应用还有待挖掘和发展。关于区块链技术的应用场景这边就不多介绍了,网络及公众号里面有大量这样的介绍文章供大家了解,这里推荐大家阅读 《高盛区块链79页报告:从理论到实践》。未来我们还将和大家一起探讨区块链应用的各种可能和各种坑,尽请期待吧。

相关下载:

  • 高盛区块链79页报告:从理论到实践:http://www.techug.com/post/gaosheng_blockchain_report.html

推荐阅读

沪江全链路跟踪系统设计与实践

走进Node.js之多进程模型

手把手教你开发一个 Webpack Loader

Android.Arch.Paging: 分页加载的新选项

React Native 网络层分析