正文
2017年科技圈最大的热点,除了目前炒的正火的人工智能外,就属区块链技术了。我们来看一下微信指数:
截止到2018年2月5号关于区块链的微信热度已经远远超过了人工智能的热度了。
区块链话题的引爆和近期发生的两大事件不无关系:一是比特币在2017年12月份冲击2万美元,全球比特币交易再次掀起炒作浪潮;二是徐小平在某公司的内部讲话的泄露引起了社区的骚动。
但是,2017年9月4日下午3点,中国人民银行领衔网信办、工信部、工商总局、银监会、证监会和保监会等七部委发布《关于防范代币发行融资风险的公告》,宣布ICO在国内被禁止。
虽然ICO在国内被禁止,但是区块链这一项技术目前在全球各国都受到重视。而且中国政府已经将区块链技术列入"十三五"规划。截止到2017年底,已经有大量基于区块链技术的创业公司涌现。并且行业巨头们也投入了很大的精力来研究区块链技术,比如Linux基金会于2015年发起的超级账本(hyperledger)项目已经有近80家企业加入,其中不乏IBM,intel等大企业。
当然,耕植于公众号,朋友圈的人生导师们、技术布道者也不会放过这个热门话题,各种味道的关于区块链的文章涌现,其中有部分高质量的文章,但是不乏有一些对区块链的理解一知半解或者理解有误的文章把你带到坑里。所以,我们本着技术人的心态,尽量给你还原一个真实的区块链。
首先声明一下:我们心中没有币。
区块链的认知误区
鉴于很多人对区块链的认知上有很大的误区,那么我们就先从区块链的认知误区开始吧。
这是最直接的认知偏见了,也情有可原,因为大家最初了解到区块链这个概念也是从比特币过来的。区块链不是比特币,比特币是基于区块链技术的一种数字现金应用(虚拟货币)。区块链技术是⽐特币的底层技术,在早期并没有太多人注意到比特币的底层技术,但是当比特币在没有任何中⼼化机构运营和管理的情况下能稳定地运行多年让大家感到非常震撼,所以很多⼈注意到该底层技术也许可以应用到其他地方,于是把比特币技术抽象出来,称之为区块链技术或者分布式账本技术。
这种理解是不够全面的,区块链不是一个数据库,虽然你可以用它来存储一些数据,但单从存储角度来看,它存储的效率并不高,而且也不建议大家把大量的原始数据放在区块链上,区块链要解决的核心问题是多方互信的问题,而不是存储。所以大家基于区块链去做一些事情的时候一定要特别注意这点。
颠覆这个词,在信息技术大爆炸的时代我们已经听到过太多次了,很显然,这种认知太偏激了(有点像宗教狂热者说的话),很多事实告诉我们xxx颠覆yyy的事情大部分都不是真的。区块链技术不是彻底的技术创新,它是基于现有的技术(比如:加密技术,P2P技术,分布式存储)通过技术组合的方式实现的一种综合的技术方案,虽然解决了多方互信的问题,但并不意味着对现有的商业模式会有彻底的颠覆。
说的直白一点,就是很多人认为搞区块链是不是就是去挖矿?俗称的挖矿有对应的一个专业词汇叫"工作量证明"(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元人民币,然后你把这些信息记录在一个本子上,月底的时候通过查看这个本子,你就可以知道你这个月花掉了多少钱,挣了多少钱。这个本子就是账本。区块链就是这样一个分布式账本。
区块链包括最基本几个概念:共识机制、密码算法、网络路由、脚本系统、区块链账本。下面我们简单介绍下这几个概念。
共识机制是一个规则,每个节点按照这个规则去确认(公布)数据,共识机制通过筛选来决定打包者,我们常看到的挖矿就是一种共识机制。
密码算法保证了区块链的链接,可以保证数据的完整性,同时也用来创造账户地址,签名交易事务等。
网络路由完成节点发现和数据的同步。
脚本系统是一组程序规则,在比特币系统中,进行比特币的发送和接收,但是在区块链中,可以通过编程手段记录各种数据实现各种业务。
那么作为一种分布式账本,区块链有什么特别的优势呢?
还是拿上面的例子讲,自己做的纸质账本是很容易丢失的,比如可能被你家的猫撕掉了,或者掉马桶了,或者被烧掉了,所以为了避免这些生活中的异常,你可能会找更可靠的第三方来保存你的账本,这样账本丢失的可能性就更低了,比如请银行给你做账,请支付宝给你做账,第三方做账在一定程度上保证了做账的可靠性。但是这种情况只是让你的账本丢失的可能性降低了,并没有从根本上解决账本丢失的问题,虽然银行和支付宝可能看不上你的这点小钱不会删除你的账本信息,但是不保证黑客进入银行或者支付宝的系统恶意删除你的账本。而在区块链里,你的账本信息保存在区块链的所有节点上,任何节点出问题导致数据丢失,都不影响你的账本的完整性,你可以从其他节点将你的账本同步过来。
还是拿上面的例子讲,自己做的纸质账本是很容易被别人篡改的,比如你老婆不想让你知道她在双十一败了多少家,修改你的账本;银行和支付宝可能被黑客入侵并修改你的账本信息。而区块链以密码学为基础,设计了一套完善的防篡改机制,账目一旦写入就不可修改,就算一个节点被篡改了,其他节点不认可这个修改,这个修改最终无法进入区块链系统,这样就在机制上保证了账本的安全性。
还是拿我们生活中熟悉的事情举例,我们平时和其他人发生交易一般都会借助第三方机构完成的,比如:我要转账给你,我们通过银行做中间人;你卖房给我,通过房产交易中心进行交易;拍卖会走第三方拍卖平台方式进行。但是通过第三方机构有还是存在交易的局限性:
-
第三方机构往往具有独立性,若制度不完善,很难保证交易的公平公正;
-
第三方机构往往需要大量的费用来维护机构的正常运行。而且在某些场景中很难找到一个所有市场参与方共同认可的信任中心来作交易担保的,这让交易变得困难。区块链以对等的方式把交易双方连接起来,通过共识机制来保证交易的公平公正,让交易更快成本更低(没有中间商挣差价)。