学海无涯,回头是岸

区块链到底是做什么的?

22 12月
作者:Ayan|分类:区块链

对于区块链从业者来说,最近一个多月的经历堪比过山车。许多币圈大佬们前脚刚感叹“幸福来得太突然”,还未换好正规军马甲响应国家号召,后脚就被“剿匪”,整个剧本颇有魔幻主义色彩。

对于我个人来说,除了工作变得需要经常跑动之外,只有一个小变化:原来面对亲戚朋友的灵魂拷问“你最近在做什么”的时候,一直不太好意思说自己是搞区块链的,否则大概率会被认为是传销骗子,现在倒是可以理直气壮介绍了。

不过随之而来的,在和政府企业交流的过程中,出现了一个新的灵魂拷问

“区块链到底能解决什么?”

v2-864ff6192a3f6f545aa235259aa7878b_hd.jpg

说起来自认是“区块链从业者”,但其实这个看似简单的问题困扰了我很久。

在回答这个问题之前,我们先做一点准备工作。

我并不打算介绍区块链的定义,什么“地球村记账”的白话例子也不打算举。坦白地说,目前没有任何一个关于区块链的官方定义,即便是在工信部2016年《区块链发展白皮书》里面也只将区块链定义为:一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。你看,这种定义说了跟没说一样,而且还容易被很多人误解成为区块链是已有成熟技术的大杂烩。

目前一个公认的说法是,区块链最伟大的应用之一(也可能是最成功的应用没有之一)是比特币。好嘛,比特币的定义倒是在中本聪的白皮书里面写得明明白白,就是“一个不依靠信任的电子交易系统”(A system for electronic transactions without relying on trust)。那除了数字货币之外,我们还能用区块链做什么呢?联盟链是不是伪命题?无币区块链又是不是伪命题?

1.jpg

肯定有人会问:你连“是什么”都回答不了,怎么回答“能干什么”?

这个问题其实是有解的。

虽然给不了具体定义,但从技术角度来看,区块链仍然属于典型的分布式系统(distributed system),于是上面这个问题可以转化为

”区块链和传统的分布式系统有什么区别?”

一旦搞清楚这个问题,我们也就自然能够搞清楚区块链能干什么了。

相同点:数据共享

在分布式系统的经典教材Distributed Computing:Principles, Algorithms, and Systems里面有写到,分布式系统一个非常重要的作用就是资源共享(Resources sharing)。当然广义上的资源包括了计算、存储资源和数据等等,我们不考虑未来区块链是否能演变成计算资源共享的技术(毕竟现阶段以太网也只是高度冗余的图灵完备计算机),但数据共享这一点确实是区块链和传统分布式系统的相同之处。

进一步地,区块链甚至做到了极致:所有节点都共享全量数据。某些定义里面提到的“分布式账本”,其实就是指的这个意思。需要指出,还有些说法谈到区块链实现了“数据共享”和“价值传递”,后者其实本质上也是在互信场景下的某种特殊数据共享,作为比特币每个节点所共享的数据单位,每个区块实际上就可以看做是转账记录的集合(加上一些附加信息)。当然如何保证在不可信场景下的数据共享,这就是区块链的不同之处了,后面会提到。

如果仅仅是为了数据共享,尤其是单个业务主体内部的数据共享,大可不必采用区块链,传统分布式架构的实现有更好的性能更低的开销,至于数据安全问题,也可以用一些灾备技术去解决。曾经有某国企部门领导问我,把自己部门的业务数据全部用区块链存储,能不能变得更快或者更省钱,我这种老实人只能回答:都不能。

v2-f7563060bb6462c5a3e8a76631be96f9_hd.jpg

好吧,那到底有什么不一样呢?

不同点1:多方维护

首先,传统数据库仍然存在一个管理员的概念,无论是分布式架构还是集中式架构。而区块链中对数据的操作则不由单一主体控制,理论上来说区块链就是一个任何节点都能写入的数据库(这里我们先忽略联盟链中的CA等元素),至于写入能否成功当然也受共识机制的影响(不管能不能成功,至少它有写入的权限了)。

从每个节点的写入操作来看,不同于传统数据库具有增加、删除、更改和查找四个操作,区块链放弃了“删改”,仅保留了“增查”两个操作(实际上删和改是通过增来实现的),这样的好处是除了查找之外的所有操作都能留下记录,并且通过哈希函数保证了所有历史数据严格按照时间顺序记录(多节点数据写入的时序由共识机制保证),这就是我们经常提到的可溯源特性。

说到共识,由于多方写入操作的存在,整个系统的共识机制也变得更为复杂。同时多个节点操作变得更加难以控制,类似于Raft(Paxos)这样的经典共识机制并不能满足拜占庭容错(Byzantine-Fault Tolerant )。一些区块链(主要是联盟链)受到传统共识机制的启发,采用了基于领袖的策略(Leader-based):先选出一个领袖,再由领袖来提出区块,剩下的人达成一致,这类算法以PBFT为代表;而比特币的做法则另辟蹊径:干脆不要领袖,所有人都能出块,也别指望马上就能达成一致,最后最长的那个链就算是大家达成一致的结果。实际上这种机制是放弃了强一致性,仅仅保证最终一致性(听起来好像很弱的样子,但可怕的是这个系统已经运行了十一年还没出过什么大问题)。共识就不展开讲了,这里只是想强调由于多方维护的原因,区块链共识机制也和传统分布式系统有了一些区别。

简单地总结一下,多方维护的意思是,区块链中所有的参与方(或者叫节点,注意这里我们还将节点和参与方等价)都能查找和写入数据,并且写入操作只能以增加新记录的方式进行,这样的特性传统分布式系统并不能完全满足(或者需要一些改动)。如果存在这么一个分布式系统,每个节点都可以执行写入查询操作,并且所有的历史数据都会记录下来(可以不采用区块+链的形式),那么它是不是就等同于区块链了?

我的回答是:从技术上来看可能是,而从应用上来看,也可能不是。这就延申到第二个不同之处了。

不同点2:多智能体系统

之前同事问了我一个角度刁钻的问题:假设区块链系统中有五个节点,“一个人一口气租了五台服务器当做节点”和"五个人各自用自己的服务器当节点"有什么不同?

我当时想了想,只能回答:如果单从技术层来看并没有太大不同(没错,我当时的回答又憨憨了)。

后来和另一个搞博弈论的同事聊这件事,他提到一个概念启发了我:Multi-Agent Systems(中文通常翻译成多智能体系统),我仔细研究了一下,发现关于MAS的定义比区块链还要抽象:“由在一个环境中交互的多个智能体组成的计算系统”。但是看了下具体的MAS例子后,意识到多智能体系统(MAS)其实也是一种分布式系统,很多MAS在底层就是一个P2P网络,比如传感器网络或者车联网,但Multi-Agent System和传统的Multi-Node System最大的不同就是这个Agent(或者叫智能体),后者是指具有自治性、社会性、反应性和预动性的基本特性的实体(人或者机器等),换句话说每个智能体都能管理自身的行为并做到自主的合作或者竞争。

好了,这里我们再总结一下,对于“一个人同时管理所有服务器”这种情况,我们可以说这些服务器组成了一个分布式系统,但所有服务器实际上都只属于一个智能体,因此不能算作是多智能体系统。而一个理想的区块链网络,则应该是一个多智能体系统。

简单地说,多智能体系统存在合作或者竞争,那么怎么样让区块链网络中的所有智能体进行合作或者竞争呢?

答案很简单:激励(Incentives)

说到激励,我们很容易想到比特币中的挖矿,所有人参与到记账的过程中,竞争获取出块奖励(同时也共同维护了系统的安全和稳定性),类似地还有PoS机制下的质押金没收惩罚机制(slashing),这些都是激励机制。

 

那联盟链或者无币区块链呢?

这个问题通常有两类观点:搞公链的同学通常对联盟链嗤之以鼻,“联盟链没有原生激励,DAO(去中心化自治组织)才是协作模式的未来”。而做联盟链的朋友则会说“完全的去中心化不存在,玩token的都是割韭菜” (听起来还有点押韵是怎么回事)。

到底谁正确呢?我也不知道 。

但是我认为,至少联盟链不是一个伪命题。

博弈论里面还有一个概念叫做“激励相容”(Incentive compatibility),用简单地话来说就是:没有人可以通过损害集体利益去实现自己利益的最大化。如果我们(设计者)设计了一种机制,能够让参与者理性实现个体利益最大化的策略,与机制设计者所期望的策略一致,从而使参与者自愿按照机制设计者所期望的策略采取行动,那么这种机制就具有“激励相容”的特性。

由于我们前面谈到区块链能够提供多方参与共建的可能,在这个基础上,如果我们能设计一个业务场景,让所有参与者为了整个集体的利益奋斗,而不是让一部分人受益、损害另一部分人的利益。或者说不损害任何利益相关方的利益,至少让一方受益(帕累托最优),那么它看起来就应该是一个可行的区块链应用,不管是基于联盟链还是公链。

我们再举个例子。

每个商品从原材料采购,到制成中间及最终产品,最后由销售网络把产品送到消费者手中,都经历了供应商、制造商、分销商、零售商、直到最终用户。在这个供应链中,竞争力较强、规模较大的核心企业因其强势地位,往往在交货、价格、账期等贸易条件方面对上下游配套企业要求苛刻,从而给这些企业造成了巨大的压力。而上下游配套企业恰恰大多是中小企业,难以从银行融资,结果最后造成资金链十分紧张,整个供应链出现失衡。

如果这个时候,我们设计了一个区块链平台,可以让银行、核心企业、上下游配套企业一起参与进来维护,这个平台就只做一件事,让所有参与方上传自己的物流、交易、资金流和随之产生的其他信息,并且保证数据的真实性(或者说就算不能保证真实性也能提供一套溯源机制出了事儿能找到最终的人来背锅),那么这个平台能带来什么好处呢?

对于上下游的小企业来说,哪怕只是螺丝钉生产商,他们也可以拿着可追溯的订单和交易记录去找银行申请贷款或者融资:你看,我们做的东西确实是卖给500强大佬的,还不给我们打钱。

对银行等金融机构来说,他们也能更好地找到稳定优质的客户,减少坏账率,提升投资收益。

对于核心企业而言,看似没有任何额外收益(目前至少已经是帕累托最优),但由于整个上下游生态带来经济效益和社会效益的提升,也将会受益。

你看,就算这个平台没有什么XX币给你挖,功能也非常简单,但大家都乐于参与其中,并且互相合作。

上面讲的这套玩意儿,叫做供应链金融,也是目前联盟链的典型应用场景之一。不过实际应用中,基于区块链的供应链金融还有许多问题尚待解决,比如隐私保护问题、链上-链下数据协同的问题,这些是后话在此就不表了。

该不该谈信任?

很多人谈到区块链,会说区块链是解决了信任问题,就连《经济学人》都说区块链是“信任的机器”,为什么我这里通篇都没有谈到信任呢?

我个人是不建议把信任和区块链完全挂钩的。

首先,解决信任并不是区块链的终极目的。真正让多方愿意参与到区块链网络的原因是激励相容,每个智能体都能追求利益最大化,如果这个环境需要高度的信任,而恰巧区块链减少了构造一个可信环境的开销,那么可以认为这也是一个参与的动机,但不能说区块链只解决了信任问题。如果你跟政府企业去鼓吹区块链解决信任问题,人家反手一句“我为什么不用xx查?”或者“我自己就是国企哪来的信任问题?”就很可能把你给问懵逼。这个问题背后的逻辑是:任何构建信任的方式是需要开销的,而现在我们多了一项减少这种开销从而获取更大利益的选择,所以你来还是不来?

拿上面供应链金融的例子来说,看起来区块链在当中确实让核心企业的信任向下传递,但真正让大家愿意搭建一个供应链金融平台的原因是,每个集体都能从中获益,比如融资更方便快捷或者投资收益更高。

再者,区块链其实并不能完全解决信任问题,因为很多情况下链上数据的源头并不能保证可信。比特币之所以做到了“可信”,是因为比特币这个系统所承载的所有信息都是来自于这个平台本身:2100w个BTC一开始就是硬编码在创世块内的,之后所有的交易可信是源自于这个创世区块从而我们不得不选择相信,如果有人改变了这个创世区块等同于创造了一条新的链,一切从零开始。而当我们把区块链拓展到其他领域的时候,区块链所承载的数据更多的是来自于真实世界,即便我们拥有不会作恶的机器去专门负责搬运真实世界的信息到区块链上(还真有这么个东西,叫做预言机),我们也没法保证这个数据到底是不是正确的。评论里也有同学提到,区块链仅仅解决了信息流转的正确性而不能保证信息本身的正确性。来自于真实世界信息的正确性仍然依赖于真实世界本身去证伪,所以区块链即便带来所谓的革命也不可能取代一些中心化的权威机构(比如政府)。

还是拿上面那个供应链金融的例子来说,你说区块链能不能解决这当中信息的正确性问题,其实是不能的,比如每份纸质订单合同在数字化上链过程中可能被修改。区块链本身甚至也不能惩罚作弊的个人或者集体(如果我们不在上面发币的话),这也依赖于法律和权威机构,但这并不意味着参与方就没动机去共同建设这个平台,因为建设平台这个决策本身,和所有参与者利益最大化的目标,是一致的。

总结

说了这么多,好像把区块链的作用越说越弱,相比于无脑鼓吹区块链,我认为主动去戳破这个泡沫反而更有利于其健康发展,我们只有明白区块链能干什么不能干什么,才能更好地利用区块链。

更何况目前区块链不能解决的问题并不意味着永远不能解决,在链上-链下数据协同方面,我们可以用电子合同替代传统的纸质合同,让数字化的信息一开始就产生于区块链之上;还有很多研究是在尝试结合物联网和数字身份技术,去实现真实信息上链而尽可能不依赖于第三方机构背书。

回过头来看开头那个灵魂拷问,即便无法给出一个区块链的完整定义,但我们起码知道了区块链和传统技术的异同之处,也顺带搞清楚了区块链能做什么不能做什么。

至于区块链究竟应该“去中心化”还是“多中心化”,还是留给未来去回答吧。

 

编辑于 2019-12-22


浏览98 评论0
返回
目录
返回
首页
大家还记得谭浩强老师么 从零搞懂区块链:Hash函数概述

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。