锐评:泡沫中的token和被冷落的联盟链
本文转载于零识区块链
原文链接:https://mp.weixin.qq.com/s/sBsK2q6RvjUCSZW7_gNvBg
作者简介: 王玮 北京志顶科技创始人 “中关村20周年突出贡献奖”获得者
在金融IT领域从业近20年,主持过世界上最大的基于开放平台和分布式技术的银行账务系统的设计与开发。目前从事区块链技术在金融等领域应用的研究、开发和推广工作。同时还是中国人民大学信息学院工程硕士企业导师、华夏基石e洞察管理杂志专栏作家。
正文如下:
区块链的最佳应用方式就是发行通证并且保障其正确地流转,与经济活动的对接应该由通证的使用和流转来完成。
前言
再过十几个小时,就是中本聪“发币”九周年:九年前的这一天,比特币的创世区块被挖出,伴随着"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks",开启了密码学货币与价值网络的全新时代。
九年后的今天,区块链领域仍然处于行业应用相对沉寂,token发行如火如荼的“冰火两重天”状况之下,“区块链应用向何处去”的问题,一定会在2018年成为整个领域关注的焦点。笔者在文中总结了自己长期以来在区块链应用的合理模式方面的思考与结论,并给出相关建议,希望为区块链技术发挥其应有的作用做出一些贡献。
文章的重点是两个话题:区块链应用的反模式以及联盟链的发展方向,这两个问题看似没有绝对必然的联系,但却在现实中如影随形,两者一起探讨,会得出更有价值的结论。
一、区块链应用的反模式
在一次区块链应用的研讨会上,笔者做了《超级POS机:通证经济时代的杀手级应用》的分享,其中明确提出了当前对区块链模式的最主要误用:把区块链当做一个“去中心化数据库”,用来像传统数据库一样记录业务流程及状态,并希望通过运用共识机制,优化某些具备多方参与特性的处理流程。
笔者为此举网上的一篇文章作为例子:《一文看懂基于区块链技术的国际贸易跨境支付模式》,https://www.toutiao.com/i6498123578993541645,并指出其中描述的方案是对区块链系统的“经典误用”。其实,这篇文章的绝大部分内容都是非常好的,包括问题的分析、系统的价值以及总体结构,唯一的问题就在于“区块链账本”在方案中的使用方式。
这篇文章详细描述了区块链账本中记录的内容以及与业务流程的关系,可以说达到了系统详细设计的层次,具有很强的可操作性。正因为如此,也就充分暴露出区块链误用的关键细节——文章在系统价值以及共识环节的描述中,有这样两段话:
1. “在基于区块链技术的跨境支付,通过区块链技术将所有参与支付结算的节点,包括进口商和出口商等各类机构连接起来,共同维护支付交易信息,共同参与一致性校验。在进口商在通过区块链支付之后,如果未能收到真实有效的出口商发货信息,那么在一致性校验环节,进口商将否认该笔支付信息,出口商将无法收到该笔汇款。因此,通过区块链支付,所有交易相关方共同维护交易记录,共同参与验证交易信息,大大降低国际贸易中的支付风险。”
2. “甲公司、乙公司、C银行、E银行、做市商等各个相关角色根据收到的客户信息、订单信息、汇率信息、发货信息等进行数据的真实性、一致性校验。如果全部通过校验,则该笔跨境电商交易中的相关各方达成共识,该笔交易确认。”
从这两段话中我们就能看出来,这个系统一定没有真正投入运行,或者其运行逻辑包括根本性的错误:
首先,从信息来源的角度看:“客户信息、订单信息、汇率信息、发货信息”这些数据,区块链节点怎么校验其“真实性”呢?如果这些数据来源在链内,那么信息是不存在“真实性”概念的,只需要通过区块链的共识算法确认其有效性就可以,显然这不是作者的意思。如果数据来自链外,那么就是每个节点都根据链外信息(客户是不是有效、货是不是真的收到了、汇率正确不正确)来判定数据的真实性。这样一来,每个节点在区块链中的角色其实是“预言机”(Oracle),只是根据预言机的数据做出判断而已,根本没有共识算法发挥作用的地方。
其次,从共识机制的流程看:进口商没收到发货信息,可以否决共识;所有人都判断一致才能达成共识。这是个什么共识算法呢,PBFT?那不是说好了大于(n-1)/3节点就能共识吗?POW、POS,哪个也没说必须全体一致啊,怎么还出来一票否决了呢?
笔者必须遗憾地指出,这篇文章的作者完全没有理解区块链的共识机制的概念,而是用现实世界中的“基于事实的判断”来替代。不幸的是,我所看到的大量联盟链的应用所描述的共识机制及其价值的论述,都是这样的概念,并重点强调这是共识机制为系统带来的优势,甚至很多领域的公有链在ICO白皮书上也是这种逻辑,实在谬以千里。
问题出在哪里呢?笔者希望阐述的观点是:从区块链系统的设计理念、数据结构和算法体系来看,没有任何证据表明用它作为数据库来记录业务流程数据的合理性。如果将区块链技术应用于业务流程数据的记录,很显然记录的正确性受到业务流程的决定。然而,业务流程的每一个环节,必然都有一个角色是其执行者,也就是流程数据记录的发起者,他才能决定这个流程数据的记录内容,其他节点有什么资格和依据去参与一个所谓的“共识”,来证明这个环节的执行者所记录数据的真实性和正确性呢?实际上,在业务流程中,其他的角色是通过规定好的业务流程规则以及对应的事实,来判断自己的环节是否可以执行,根本没有兴趣也不可能跟别的环节的执行者达成什么共识,这才是业务流程模式的本质。上述文章中的两段话,反应的就是这样一种逻辑,与区块链的共识机制毫无关系。
用一句通俗的话说:“区块链是让互相不认识的人协同记账的一种技术”,这些人相互之间并没有除区块链之外的其他联系,甚至都不知道任何其他角色的存在,他们只根据收到的数据和预先确定好的算法来达成共识,并且记录下来。因此,业务流程记录模式与共识机制的逻辑是毫无关系甚至是完全对立的。有太多的人把这一概念曲解为“让互相不信任的人协同记账”,然而,不认识自然不信任,不信任未必不认识,两者之间的差异就是他们在一件事中的相互关系与角色——是相互无关还是基于流程的协作,这是实质性的区别,建议读者在这个问题上进一步自行深入思考。
客观说,区块链的误用并不仅限于联盟链,如笔者前面所述,很多公有链ICO项目的白皮书中也随处可见这种误用。但不可否认的是,联盟链是这种误用的重灾区,从一个明显的特征就可以看出来:目前联盟链的最主流产品——HyperLedger上,没有原生代币,这可以说是判断区块链是否误用的一个非常有效的标准,为了说明这一点,就要简单提一下通证的概念。
二、“通证”
“通证”就是token,以前大家都翻译/叫成“代币”。通证这个翻译最早是CSDN副总裁孟岩提出来的,并且还和世纪互联董事长元道先生做了几篇对话进行阐述,读者可以自行查阅。
笔者在中关村区块链联盟的第二次研讨会上提出了通证的一个定义:流通的凭证。这个定义其实跟“通证派”其他成员的定义并不完全一致,足见这一概念之新,恐怕还要很长时间才能在业内达成“共识”。
笔者的这个定义是从经济学角度给出的,相信“流通的凭证”这个概念是最贴合目前token的经济学含义的,也完全覆盖“代币”这一概念。这个角度对通证定义是至关重要的:众所周知,区块链是一个“价值网络”,其上流转的是价值单位而非普通信息,因此“流通的凭证”这一概念精确刻画了区块链上的价值载体及其运作形态,是区块链在经济学角度的意义所在。
基于这些概念,结合上一节所指出的区块链应用反模式,笔者要明确地给出自己的观点:区块链最有价值的应用形态就是“发币”——发行通证并保证其正确地流转——就像大部分人已经发现且有所“诟病”的一样:区块链就是做这个事情的最佳技术,并且这也是区块链应该做的最佳事情。
关于这一点的详细论述,笔者还会有单独的文章,大家也可以参考前面提到的孟岩的几篇对话和文章,基本表达了类似含义。本文的讨论到此为止,下面用一个具体例子来说明通证模式的区块链应用的特点。
三、基于“通证”的国际贸易跨境支付模式
笔者曾经举过一个银行承兑汇票的例子,用来说明通证应用模型强于区块链数据库的模型,在本文中,就用上述国际贸易跨境支付场景这个现成的案例来做描述。
基于通证的模型实现跨国转账应用实在太简单、太清晰了,以至于没必要用业务流程来描述,简单地说就是一句话:用“币”来转账,而不是用链去记账:
1. 付款方银行发行一种“结算通证”(代币),用1:1的方式代表本国货币
2. 企业用本国法币购买/兑换这种结算通证,并在贸易流程的合适时间通过区块链网络交易将该通证支付给合作方(支付流程结束)
3. 合作方可以在收到通证后的任何时间到接受该结算通证的本国银行兑换成本币(涉及外汇兑换)
4. 合作方银行与付款方银行可以通过通证进行再次的外汇兑换,具体路径既可以是传统国际汇款,也可以在一个有双方法币计价的结算通证的区块链体系上进行轧差,总之,这都是二次结算的具体实现方式而已。
简单地说,通证模式的应用,就是保持原有国际贸易流程全都不变,只把以前通过法币支付、外汇兑换结算这样的流程,变成用区块链上的“通证”支付和结算。整个流程的各个参与方,根据自己的需要,与交易对手进行通证与法币的兑换、通证与通证的兑换,或者通证的轧差(也就是钱包/账户的余额增减),实现最终的结算。也就是说,只要一个银行发行这种通证,其他银行可以接受,整个流程就能正常运转,这样就要求相关的银行、企业组成一个接受和使用这种结算通证的联盟,这不正是“联盟链”所遵循的模型吗?所以,只要在联盟链上发行结算通证,相关贸易方与银行加入这个联盟链,基于区块链的国际贸易支付结算就可以实现。
说到这里,插句“题外话”:了解国际间清算结算的读者应该知道,本文提出的这个所谓“结算通证”,其实就具备货币属性——要么是各国能够接受的法定数字货币,要么成为一种国际间可流转的、基于区块链实现的“银行承兑汇票”。因此,结算通证仍然会有计价单位的问题,如果他国能接受人民币为单位计价的结算通证,本质上就是人民币国际化的一种形式——太阳下没有新鲜事,你懂的。
言归正传,有了上面这个方案,我们反过来看《一文看懂基于区块链技术的国际贸易跨境支付模式》文章中所提出的采用区块链的三大优势,其中的二、三两项——提高跨境支付效率、节省银行业务资源,同样是可以实现的:一方面通过区块链上通证(代币)的准实时转移完成结算,效率远比SWIFT等中介高,减少大量对账工作;另一方面,每一笔“钱”都在所有者钱包/账户之间转移,无需在大量中介处开设头寸账户,节约资金成本。至于第一项,“降低跨境支付风险”的作用,在原文中是基于对区块链作用的错误理解而想象出来的,基于区块链的所谓分布式账本并不能实现这一目标,仍然是靠其他流程来保证的。相反,基于通证的模式,倒是可以有助于解决支付风险问题的,由于涉及的方案选择较多,也不是本文的重点,未来有机会再详细论述,读者有兴趣可以自行验证。
总体来说,基于通证的方案主要优势在于完全不用改造现有系统的总体架构和业务流程,只需要对接通证发放、接收、流转的接口,对接到区块链系统上,由区块链负责通证在多方之间的转移即可,方案的价值不言自明。
四、联盟链的意义
从上面描述的通证方案可以看出,区块链底层网络技术的似乎选择对业务流程没有什么影响,只要一个支持通证(原生代币)的区块链网络——哪怕是比特币、以太币、莱特币——都是可以实现这个功能的。当然,由于这个结算通证需要跟发行国的法币有1:1的关系,也就是必须独立发行一种专门用于国际贸易结算的通证,不可能使用已有系统的数字加密货币。不过即使如此,用以太坊上的ERC20 token发行这种结算通证应该也是足够的了。
事实上,虽然从功能上来说公有链也能完成方案的目标,但现实中这一方案只可能使用某种联盟链来实现,原因是这个系统必须被采用他的国家/银行联盟完全控制:
1. 算力控制
这个系统上流通的是有国家/银行信用背书的结算单位,本质上就是钱,因此如果需要防止篡改、双花,算力必须控制在管理者/信用背书者手中。如果采用公有链,一旦被算力攻击,支付结果被更改,就等同于资金被盗,整个系统就失去意义。因此,联盟链所采用的算力/验证节点准入的方式,是这个系统运行的必要条件。
另一方面,我建议应该放松SPV节点的进入控制,这样可以使通证流转范围更广阔,本质上也就是加入这个结算体系的成员更多,是有利于结算体系的发展的。这一思路也是通证模型与区块链模型最大的差异——如果把区块链做为账本,那么账本是没必要给无关的人看的,所以会倾向于SPV节点也只有联盟成员才能加入。
2. 隐私保护
与算力共生的是隐私问题,作为国际支付结算的网络,如果像公有链一样每一笔账都能被任何人查阅的话,即使不知道地址对应的真实银行、企业,从流转速度和总量这些派生数据上也能获知大量信息。更何况凡是这个网络的合法用户,都可以看到很多与他无关的数据,这也是不合理的。
在这方面,联盟链也做了有益的探索,实现了交易只对参与者可见等能力。然而,在本文提出的通证模型中,交易可见性会存在一定问题,因为通证的流转是一个有向无环图(DAG)结构,可以实现完全的追溯。因此,笔者考虑“多合约+合约可见性”的方式,让参与某个合约的交易方才能看到合约信息,在通证的传播性、节点灵活性与隐私保护之间取得平衡。当然,这种设计与具体业务流程有一定关系,不再展开讨论。
简单地说,联盟链与公有链一样,应该通过发行通证来支撑应用,否则大概率会陷入误用的陷阱。至于是否需要类似以太坊ERC20这样通过智能合约来派生代币的能力,则可以根据业务领域来决定。笔者的意见是最好也有,这样可以让联盟链上的应用如虎添翼,就像ERC20成就了ICO一样。在节点机制上,也应该博采众家之长:全节点保持高可靠、性限制准入,SPV节点放宽准入甚至“准公有链”模式,能使联盟链的价值得以更大地提升。
结论
本文的内容大致总结成为两句话:
1. 直接使用区块链作为数据库,来记录业务流程数据,是典型的反模式,我们应该放弃这方面的努力,回归到通证应用的方向上——“退”一步,海阔天空
2. 在联盟链上使用“通证”模型,将极大发挥联盟链的优势,在区块链应用领域起到应有的作用
此外,笔者希望指出:采用通证的方式实际上比直接使用区块链技术的方式具有更大的经济、社会和政治意义。举例而言:通过这样的模式实现国际贸易支付结算,一个国家可以推行其货币单位在全球贸易结算活动中被接受的范围,以中国为例,“一带一路”经济带上的商品和服务进出口贸易如果能够采用这种方式,实际上就间接实现了人民币的国际化,其成本要比传统方式低得多。
相信在可以预见的将来,通证模式一定会被更多人所认知和接受,让区块链技术发挥其应有的作用。
想了解更多区块链技术内容,敬请关注我们的区块链大本营公众号