记者手记:
十天前,扎克伯格在美国国会举行听证会之后,随即发出一封公开信《致歉与反思》,然而我们不禁疑惑,致歉与反思的主体是谁?扎克伯格吗?Facebook吗?无疑。但其实它代表的是所有依赖用户信息,侵犯用户隐私,将用户信息创造的价值据为己有,为自己获取利益的商业模式。很不幸的是,互联网二十多年来的野蛮生长为这种模式提供了丰腴的土壤。这让很多区块链行业的信仰者非常兴奋,似乎它宣告了互联网生态下中心化模式的弊病。
我注意到,上海证券交易所前总工程师、ChinaLedger技术委员会主管白硕老师也非常关注这件事,在朋友圈分享了多篇相关文章。在这样一个背景下,我们约了专访,从Facebook事件聊起,深入探讨了区块链能为现有的商业模式带来哪些改进方案?比如隐私保护。以及区块链本身出现哪些明显问题?比如技术方面对于可运维性的考验,资本方面对于人性的考验。最后展望了区块链发展的美好前景,即构建数字货币经济体。
白硕老师作为区块链行业里的技术专家,提示奉行原教旨主义的区块链信仰者,应当解放思想,用“时间不可逆”来替代“不可篡改”的理解,用“集体见证”来替代“去中心化”的理解,用“可编程性”来替代“代码即法”的理解。具体该如何解放思想,更新认识呢?阅读本篇文章就够了。
Part 1
互联网之痛,区块链之幸
Facebook事件是历史矛盾的大规模共振
:我们先从最近的一个热点话题聊起,扎克伯格对Facebook数据泄漏道歉这个事情,您对此好像也非常关注,可以谈谈感受吗?
白硕:其实隐私保护也一直是中国的弱项,因为中国文化几千年都比较强调集体主义。对个人隐私的重视,是改革开放以后才提上日程,而这中间就经历了互联网大规模、低成本获取个人隐私数据,可以说互联网的发展伴随着对个人隐私的侵犯。那么我们从习以为常到发觉这是个问题,这个过程跟我们生活水平的提高,个人追求的多元化是同步的。当然虽然现在有这样的诉求了,或者说有这样朦胧的意识了,但以往并没有形成一个汇聚点。Facebook引爆了它,这是人们过去一个阶段不断积累的矛盾点汇聚在一起,形成的规模比较大的一次共振。这次爆发对于文明的进步来讲当然是好事。对于长久以来互联网公司,尤其是数据寡头以占有大规模的个人数据作为自己的业务模式,是一个重新洗牌的机会。
那么我也注意到境外有一种评论,认为Facebook这件事,反映的是互联网的pain,区块链的gain。用咱们的话还讲,这是互联网之痛区块链之幸。为什么呢?因为隐私问题本质上就是信任问题。对于不信任的人,我需要屏蔽一些信息,如果你要使用我的信息,就需要获得我的授权,而且你使用的过程还要留痕。
欧洲有一个法案叫做被遗忘权法案,这个法案使得像谷歌这样的企业在欧洲需要执行的隐私政策和欧洲以外的地区会不同。在法案覆盖的区域范围内,如果个人要求关于我的东西不能被检索,那谷歌就要保证一个字都不能出现。所以可能你查询这个人的相关信息,在欧洲查不到,但在北美或者中国查询同样的内容,就能查到,这就是被遗忘权的一种具体体现,虽然这只是很小的一步,但却体现了文明的进步。
:被遗忘权法案,它是运用传统的法律手段去保护隐私,那么在区块链领域,对隐私的保护经历了一个怎样的发展阶段?有什么手段呢?
白硕:首先要理清在区块链里,隐私保护和我们日常讲的公开透明不是一回事。区块链隐私保护经历了不同的发展阶段。
第一阶段,主要是比特币的时期,我们主要在讲公开透明、集体见证、集体背书。那么你总不能给一个自己都不知道是什么的东西背书,因而一定要可查可见。
第二阶段,针对隐私保护的诉求开始得到重视。大家不约而同的把目光对准了零知识证明机制、多方安全计算这样一些密码学的技术框架。Zcash2016年底上线了,它使用到的zk-SNARK技术就是针对特定的应用场景进行方案构造,最为常见的就是转账的场景。Vitalik Buterin 2017年在中国讲演的时候提到,以太坊未来拟采用的零知识证明比zk-SNARK效率要高很多,这就又前进了一大步。
我们过去有一个说法,隐私保护、去中心化、效率,是一个不可能三角,你总要牺牲一处,不能三个都实现。所以之前为实现隐私保护,会使得效率比较低。Zcash验证需要一分钟,对于交易,这个效率还是相当低的。当然在这个里面是可以选择是否采取隐私保护。
在这一发展阶段,密码学赋能区块链实现隐私保护的核心就在于,作为记账者,作为见证者,我可以在不查看具体内容的情况下,依靠数学上的可靠变换,确定交易双方的关系。打个简单的比方,1+1=2是一个恒等式,我之前的资产等于本次交易的支出加上本次交易后的余额。那如何在我看不见账户原有资产、看不见所花费的金额,也看不见余额的情况下,承认这笔交易的有效性,这就有点神奇了,但是我们密码学已经走到这一步,也就是说见证不必以看见账目为前提了,这就是实现个人隐私保护很粗浅的一步。
再往前发展,对于公司数据的隐私保护,也出现了各种各样的技术手段。比如说征信,不同机构之间要对自己的敏感数据进行非常有限的共享。再比如说背靠背求交集,两个公司在合作时,看不到彼此数据全集的情况下,不借助第三方求得数据交集,然后在交集上进行合作,这在技术上也是能够达到的。
最终会形成一个什么样的美好前景呢?我们看到现在一些数据寡头,不断的兼并小公司,其实人都不是重要的,数据才是。但是这种模式发展到最后就会形成垄断。比如说滴滴,它最核心的东西,其实是可以无人运维的,并不需要一个公司做匹配和结算。如果是这样,小公司就不用担心它的数据被大公司兼并了,小公司就有活路了,我们希望能够出现抗衡这些数据寡头的力量。
Part 2
真需求or伪需求
区块链是一项垃圾技术?
:区块链可以在一些方面带来解决方案,至少是带来解决的希望,但是在目前的区块链风口之上,也有一些应用是强搭区块链概念。您在朋友圈转发了一篇文章《区块链是一项垃圾技术》,并且表达了认同,您说“一些本不该寄希望于区块链但却被过分鼓吹说事。”那么哪些方面的应用毫无必要呢?
白硕:我们看到大家都不想落伍,不想掉队,不想错过风口。很多项目还没有领会区块链的精神实质,就急急忙忙的来搭班车。目前存在两种相反方向的错误。
一是中心化就能解决的信任问题强搭区块链。有的事情,中心化的方式就能做,所处场景的信任问题没那么突出,或者它已有外力能够维持信任,没有颠覆原有模式的必要,这种就无需区块链。
二是误以为只有去中心化的场景才需要区块链。在一些中心化生态里,虽然内部力量可以主导一切,但是它为了自证清白,也需要区块链技术。
在运用区块链技术解决实际问题时存在两个层面,一是数据组织的层面,二是共识机制的层面。在数据组织层面,一个个数据块通过链式勾连起来,之后就很难改动它了,因为每一个局部和整个的历史是融为一体的。在共识机制的层面,相对灵活一点。比如说拜占庭容错,也就是你这个体系里可能有坏人,或者由于一些不可抗力,使得系统的节点不一定全部准确。在共识机制层面,我们可以弱化,不一定用强拜占庭,但是在数据组织层面,我觉得不要去弱化。
总而言之,真需求和伪需求的区别不在于是不是一定要去中心化,而在于是不是一定要采用这样一种数据组织的结构,是不是需要一定程度的共识,如果这两个问题的答案都是肯定的,那就是一个合适的区块链应用。反之,如果你的应用场景与此不匹配,那这个区块链应用就是伪需求。
Part 3
去中心化不等于放弃运维
若代码出现bug,刹车的权利属于谁?
:这并非您第一次指出区块链可以不去中心化,但是业内也有很多不同的声音。Metaverse元界 CTO陈浩曾经在评论埃森哲的“可编辑的区块链”时,把其背后的逻辑同您的观点“去中心化不是区块链的本质特征”放在一起谈,他说这是“专门为特权机构提供的区块链”,是一种变相讨好的商业行为,而不是产品设计行为,是一种“巨头间的游戏”。您对此有什么解释吗?区块链的可运维性和中心化是一回事吗?
白硕:这其实是两个概念。首先,任何区块链都是需要运维的,无人运维只是运维的常态,当异常情况发生的时候,还是需要各种措施介入的。举个例子,2016年The DAO事件发生时,黑客不断的把账户里的份额转到子合约里,但是社区的人拿他没办法,很无助。就是因为合约停不下来,黑客的行为也阻止不了,数据也改不了。大家只能向上丢垃圾交易,像DNS攻击一样,用这种方式延缓黑客做坏事的进程。最后没有办法就只能分叉,这是他们解决问题的最后手段,但是导致的不仅仅是账本的分叉,还有社区的分裂。这说明什么?运维这件事,不只是在传统的中心化平台需要,去中心化的区块链平台同样需要。
:具体有哪些应对之策,可以用以增强区块链的可运维性?
白硕:首先,合约是可以有模板的,你可以在合约里约定好刹车,就是说整个区块链虽然停不下来,但至少一个或一组合约是可以停下来的,甚至是来自特别账户或者地址的交易行为拒绝执行。如果合约内部有相应的模板,就可以设置成这样的。
:刹车的权力属于谁?
白硕:这就是代码即法,项目公布的时候,在合约里就有这些措施,如果你不同意可以不进入,进入视为同意。到了危险的情况,也就有人拥有刹车的权利。
:但还是会有一个担心,刹车权本来是为了以此防备黑客这样的外来攻击,然而却有可能拥有这一权利的人,在利益驱动之下,滥用这一权利。毕竟哪里有权利,哪里就有腐败。
白硕:这本身也是一个技术问题。账户既可以是事先设定的,也可以是通过社区投票公投出来的。也就是说可以在另一个合约里进行公投,然后触发这个合约的应急措施。没有应急措施绝对是不可想象的,至于应急措施的权利从何而来,第一这是可以讨论的,第二技术上也有相应的措施。
刚刚说的是运维的方式之一,除了刹车之外,其实还有改错。传统的金融交易所里时有发生乌龙指,日本的交易所、美国的交易所、中国光大都出现过乌龙指,也就是我的输入不代表我的意愿,但这个交易已经生效了,在数字化的高速运转的机器里,它已经开始流动了。当然有的乌龙指是要认的,交易所有它自己的规则,你不能任性的取消,同时你的错误扰乱了市场,所以还要进行处罚,这是在传统的有监管的市场里。但是在区块链里,代码即法,如果你的输入是乌龙指,区块链本身的技术特性决定它无法更改,那么错误就会永远存在。
无法篡改本身是好事,说明它比较安全。但是错误造成的影响永远存在则未必需要。这里可以有一个反向的操作,也就是冲正。传统的金融机构也有冲正,一笔错误的交易原先是“+”,我们就给它“-”,可以有一个反向的操作。当然传统的金融机构,包括中介服务机构、银行、交易所都有权限去做这个事情,就是改数据。它的流程如何,应谁的要求,怎么改都有一定的说法。
区块链能不能做改错?能不能做冲正呢?其实可以。很多人会反驳说区块链的特性是不可篡改的,这不是自相矛盾了吗?这里又必须先给大家理清一个基础概念,区块链究竟是数据库,还是留痕、存证?
如果把它理解成数据库,肯定不对。但是说它是用来留痕的,那就意味着我既可以做这个操作,也可以做一个跟它相反的操作。但是相反的操作谁来启动,这是个问题。因为区块链比较盛行的理念:我的价值,我做主!只有我的私钥才能让价值转移成为可能,就算转错了,需要进行反向操作也需要对应的这个账户的私钥同意才行。可如果是黑客,就不往执行相反的方向,不就转不成了吗?说到这里又回到了原点,根本不是技术问题,就是一个观念问题。只要你能够认同这里的改错是法律必要的,在技术上就可以实现。
:但是区块链最典型的两个特征不就是“去中心化”和“不可篡改”吗?您似乎相继否定了。
白硕:这不是篡改,篡改是改变历史,也就是说改过之后,原有记录被彻底覆盖了,没有留痕。而我们之所以要强调区块链不是数据库,而是留痕存证,我不是要抹去它的痕迹,而是要留下两个痕迹,一个是犯错误的痕迹,一个是改错的痕迹。如果这两个都留下来了,而且都不可篡改,还是一样能发挥它的作用。只不过改错的主体不一定是犯错的主体,如果它故意犯错,而改错又是必须的,那我们必须有一种救济的方案。在技术上,我们是有办法的,但大家是不是要采用这个办法?我觉得应该解放思想,不能太原教旨主义了。
:所以您不太认同“可编辑的区块链”这个方式进行改正和运维?
白硕:对,因为它相当于真的篡改了,不留痕。
:那么R3联盟的“Corda”呢?
白硕:Corda有两个东西非常好,第一个是合约,既有代码,又有人类可读的法律文本,它的意思跟代码是一样的,做为一个不可分割的附件,而且签名。如果出现问题,可以要求它以法律文本为准。为什么是这样呢?因为“代码即法”这个事情存在一个问题,就是人写的程序是存在bug的,怎么判断它是不是bug呢?要去跟我们当初思考的逻辑进行比对的,如果说打哪指哪,我怎么编程就怎么执行,那就没有bug可言了。
:这就有点类似于我们经济系统里市场的手失灵的时候,需要政府的手进行干预。在区块链里是代码出错的时候,需要传统的法律文本来进行校对。
白硕:对,这么理解就对了。Corda第二个做得好的叫公证人。就是说一笔转账的单子是否生效,需要通过一个公证人仲裁的环节,等于它又多了一次改错的机会。
Part 4
重新定义区块链本质特点
时间不可逆+集体见证=价值的可信转移
:您一直在表达一个观点,就是我们要解放思想,不能够太坚持原教旨主义。如果说我们过去认为区块链最本质的特点是“不可篡改、去中心化、代码即法”的话,那么在您看来,当我们解放思想后再来看,区块链最本质的特点应当是什么?
白硕:首先从数据组织结构来讲,区块链的本质特点是时间不可逆,当然这并不是绝对的,如果你有充分的算力也是可逆的,只是相对没那么容易而已。其次从共识机制来讲,区块链是一种集体见证的机制,也就是默认容错的,只不过是严格的拜占庭容错,还是物理容错是根据场景选择的。同时具备这两个特点就是区块链了。最后我要说的区块链的本质特点是可编程性。这个特性很有趣,在比特币那个阶段,它的应用很窄,价值要么是我控制,要么是你控制,只有在我转账给你的那一刻,价值变动了一下,这只是对传统货币的简单模仿,没有充分发挥出数字货币的奇妙之处。而当智能合约出现之后,当我把钱打给智能合约时,这个钱既不是我控制,也不是你控制,而是由我们共同认可的一段代码来控制。我有一个比喻,就是“让价值飞一会儿”。
:在跟着您解放思想之后,对于区块链本质特点的理解,有了这样一个转变。用“时间不可逆”来替代“不可篡改”,用“集体见证”来替代“去中心化”,用“可编程性”来替代“代码即法”。
白硕:对,而且当时间不可逆加上集体见证时,会出现一个很神奇的事情,就是价值的可信转移。价值的转移和信息的转移有一个很大的不同,在于价值是守恒的,信息是不守恒的,也就是一笔钱不能花两次,而信息则是可以无限复制的。
Part 5
当跨链遇上运维
分叉是最糟糕的解决办法
白硕:说到价值的可信转移,一条链上的价值转移,比特币时期就实现了,但是在多条区块链之间实现价值转移,到目前为止,仍在处于尝试阶段。也就是跨链,仍然是有待成熟和完善的一项技术。
:跨链的难点在哪儿?
白硕:这个问题要从两个个层面来理解。不同的链之间怎么达成协议?有两种思路。第一个是协议层,设定一致性的协议。比方说十个链之间相互连接,我不能用90个协议吧,这样就搞死了。那么设定一种协议,大家都按照这种协议去适配。第二个是有一个公链作为中介,大家跨链时都通过它实现价值转换。前者是转接协议,各个链之间是平等的。后者则是通过一个中介的链来实现跨链。我个人比较认同转接协议。但是还是要说各个链的先天条件是不一样的。所以在它的先天条件下实现转接协议的难度也是不一样的。比特币如果和其他链实现转接协议就非常麻烦,以太坊就容易得多了。
:跨链似乎还会造成一个问题,就是资产转移的同时,负债也随之转移了,就像是欧盟各个成员国之间的债务危机一样,具有联动效应。这是否也是实现跨链的难点呢?
白硕:这就又要从两个方面来理解了。第一个是价值转移需要跨链,它就像是跨机构的清算结算,这是一回事。第二个是应用跨链,价值不跨链。比如以太坊上的智能合约越多负担越重,那么可以把虚拟机的负担减轻,也就是虚拟机跨链,但价值不跨链。
:总结您刚刚的表述,跨链的难点,第一个是怎么跨,采用转接协议还是引入中介?第二是跨什么,价值跨链还是应用跨链?除此之外,还有什么主要难点吗?
白硕:那就必须要说当跨链遇上可运维性的问题。如果只是链内部的事故,它的影响局限在一条链里,但是如果跨链实现了,这个事故就会传递到其他链上,甚至引起互联互通的链之间的连锁反应。不仅如此,你针对这一事故的解决方式也会传递,比如说你才用分叉的方式来应对,那么随着你的分叉,相关的链可能也会随之分叉,如果分叉之后的链再通过跨链的机制互联互通的话,这会把分叉的复杂性呈指数型的放大,非常麻烦。
:分叉是运维手段里最糟糕的一种处理方式吗?
白硕:没错。所以我非常不认同一种观点,认为只要分叉,就不需要运维了,这是不对的。
:那么在跨链的情景下,有哪些处理手段是优于分叉的?
白硕:我觉得这是这样的。第一个是和不跨链的运维手段可以类比的,就是你的合约要能够刹车和改错。第二个是在应急场景下,你要把跨链停下来,关闭你跟其他链的联系。这样的话就不让你的错误传导到别的链上,等你处理干净了再跨链。
:是不是类似于传统金融里资产冻结一样?
白硕:没错。
Part 6
人性是经不起考验的
如何保证交易所和项目方不会监守自盗?
:可以看到传统金融机构的一些风控、运维手段,区块链是可以适当借鉴的。您曾经是上交所的总工程师,那么对比上交所和近年来如雨后春笋般拔地而起的虚拟货币交易所,您有什么看法?
白硕:虚拟货币交易所系统的安全性,运维能力和应急能力,各个方面都应该向传统交易所学习。现在太随意了,甚至说出事之后对外的话术,某种意义上有点像游戏网站出了事之后的应对方式一样,但是正经的金融机构可不是这样的。你看日本交易所出了事情,技术主管出来要向公众谢罪。传统交易所出现事故对责任人的处罚是很严厉的,扣奖金、警告处分、降职处分都有。一定是在这种压力之下才能逼出来高质量的运营。
另一方面,传统交易所在监管之下是不敢做假交易的。但是我们看虚拟货币的交易所,虽然我们无法证实,但确实有这样的传闻。如果这个传闻是真的,我非常担心。如果采用去中心化的交易所,也许在链上的交易是可以被见证的,这个问题就会消除掉。
:这里似乎有一个矛盾点,中心化交易所存在作弊的可能性,但是出事之后可以进行追责,去中心化交易所更加公开透明,但会弱化担责的主体。
白硕:对,是这样的。一方面,去中心化交易所现在面临的最主要难点还是效率问题,能否达到中心化交易所的效率。另一方面,去中心化交易所可能真的是无人运维,出了事情也不知道找谁。那么写这样一个合约就得更加慎重,需要把方方面面都考虑到,那么你的合约模板就要有专人运维,这个人可能就要负责,所以也不是说绝对找不到担责的人。
:在您看来,去中心化交易所相较于中心化交易所,是一种进步吗?
白硕:中心化交易所可用性比较强,但是它带来的问题也很大,无论是黑客攻击,还是交易所做假账。去中心化交易所要解决效率问题,实现大规模的定价,目前还比较难,要观察一段时间。但中心化交易所的弊端已经非常明显了,必须向传统金融交易所学习。
虚拟货币交易是具备监管条件的。一是交易的数据公开透明。二是项目团队的信息及时更新。因为区块链项目的特殊性在于先拿钱后干活,所以团队是非常重要的,如果当初做承诺的团队成员发生了巨大变化,一定要第一时间掌握相关情况。
:谈到“先拿钱,后干活”这个特性,让我想起朱啸虎的观点,他说千万不要考验人性,考验人性的模式从来就没有成功过。
白硕:你承诺的东西最好变成代码。
:所以Vitalik Buterin今年提出了DAICO替代ICO
白硕:这和我的理念是非常吻合的,当然在中国ICO是全面禁止的,但从世界范围内看这个问题,确实不要去考验人性。所以需要用一种不受他控制的方式,去约束他的承诺。DAICO就是说一个项目的开发有几个阶段,相应的会有一个时间节点,那么程序会把你的承诺变成约束,使得资金的使用、币的变现在相应阶段被锁死。
:这样的硬约束会不会面临一个问题,就是计划赶不上变化,项目方非常需要钱的时候也提取不出来。
白硕:确实有,那当然就考验这个程序怎么写了,你的承诺是有弹性的,又是可编程的,可编程的弹性才是最高境界。
Part 7
构建数字经济体
自我长大的区块链刚上幼儿园
:我们刚刚从技术的角度,资本的角度去谈了区块链,最后回归到宏观的视角。如果以人的一生来比拟和衡量区块链的话,在你看来,现在区块链生长到几岁了?
白硕:幼儿园水平。它有很多东西都还没定型。账本、合约,共识的基本结构都还没有定型。
:之前也有很多人把区块链的发展进程,和当初互联网的历史进程放在一起去比较,前不久您也出席的一个峰会上,主持人问某场圆桌讨论的嘉宾:“现在区块链相当于当年互联网发展的那一年?”得到的答案非常雷同,都认为是92、93年泡沫破裂前。您觉得拿区块链和互联网去对比合适吗?
白硕:我想提供一个新的角度,这个对比可以拉得更远。由于交通工具的出现和改进,从物理的角度拉近了距离。然后通信技术,从信息传输的角度拉近了距离。继而互联网技术,从信息处理的角度拉近了距离,也就是说信息不仅能传输,而且还能处理了。还有人工智能,实际上是从认知的角度拉近了距离。而区块链,是从价值的角度,信任的角度拉近了距离。从商业的演变来看,交通工具使得坐商发展到行商,互联网使得行商演变成网商,人工智能从网商到知商,区块链则是从知商到信商。
:目前业界有两种普遍观点,一种认为区块链是互联网技术的又一次补丁和延伸,另一种认为区块链技术是另起炉灶,您比较同意哪种?
白硕:区块链虽然是架构在互联网上的,但肯定不是简单延伸,因为互联网使得信息的传递趋近于零,区块链使得价值的传输趋近于零,当趋近于零时就发生了坍缩,也就发生了质变。它并非时在你的结构中去替换一些零件,而是重新搭建了另一个结构,然后这个结构自成体系,自我长大,具有一定的自洽性。
所以我们叫数字经济体,就是它里面既产生价值,又产生应用。然后价值和应用进行内部的自我循环,外边的价值已经跟它没关系了。我希望不仅民间能玩,政府也能玩,也就是法定货币也能进入数字经济体,法币也能编程,法币也能通过智能合约进行价值转移。关键不在于它是民间的还是政府的,而在于它是不是数字的,是不是可编程的。
:这个说法还蛮大胆的,我第一次听到。
白硕:只不过法币进入到了数字经济体,我们下意识会比较谨慎,因为打通以后的风险会带来很多复杂性,评估起来比较困难。所以我也非常理解,我们的银行一开始先不做可编程的那种,当然会损失很大的一个卖点。可以让其他小国家先尝试,我们这么大一个经济体,一旦出现不可逆风险,谁也吃不了兜着走。所以我们先推出来,但把可编程封住,观察一段时间,我个人理解也可以再打开。