万字说透跨链:DApp 赋能、信任来源、治理机制与现实挑战
作者介绍:
刘毅,清华大学硕士,Random Capital合伙人,区块链和大数据技术专家。20年多种资本市场投资经验,比特币早期投资者。如果你有任何问题,欢迎使用邮件与他联系:[email protected]
ps:首先恭喜刘毅老师获得 NPC 内容共建者奖品——由 NPC 成员 Ryan 提供的秘猿科技吉祥物钢铁猿猴一只,猿猴共送出3只,目前已经有两篇文章入选,只剩一只!想获取猿猴请看文末信息。
序
跨链是目前行业内最热的话题之一,也是被误读最多的话题(没有之一)。有人认为跨链早就实现了,每个交易所都跨了几十上百条链。有人说交易所是中心化的,让BTC/ETH/LTC/...无需信任地交易才是跨链。又有人说不对,那是跨链原子交换或者去中心化交易所,是老概念了,Polkadot/Cosmos远不止于此。另外也有人认为,侧链和主链的资产可以双向锚定,所以也是跨链...
虽然每个人心中都有一个哈姆雷特,可以并行不悖。但行业对重要概念缺乏清晰共识,只会带来混乱和浑水摸鱼(各种我们也是跨链...)。Polkadot/Cosmos的出发点不是连接现有的公链,而首先在于支持开发者快速低成本地开发出新区块链。新区块链可以是应用平台(支持智能合约),但更多的新区块链会是去中心化应用,例如以独立区块链形式存在的去中心化预测市场、TCR、稳定币、借贷市场、交易所等等,我们不妨称之为应用链。Polkadot/Cosmos不但为开发应用链提供工具(Substrate/Cosmos SDK),而且为应用链之间实现可信互操作提供基础设施(Polkadot Relay/Cosmos Hub)。由此可见,Polkadot/Cosmos的跨链,核心在于DApp的新形态——应用链,以及应用链之间的可信互操作。
那么跨链有什么意义?首先是与世界计算机(平台公链)相比,应用链的共识参与范围大幅缩小,性能和成本问题随之迎刃而解。Substrate/Cosmos SDK开发的应用链可以很容易地达到1000tps以上的处理能力,而且成本很低,能够满足大多数DApp的需求。另一个变化是DApp治理,治理不像性能问题那样显而易见,但却是制DApp发展一大瓶颈。用激进的方式表述本文主题就是:智能合约混淆了去中心化和可验证两个不同的概念,误导了开发者,令DApp在长达4年的时间里几乎在原地打转。Polkadot/Cosmos(尤其是Polkadot)赋予了DApp链上治理能力。通过解除性能和治理两大发展瓶颈,跨链技术有望释放DApp创新潜力,引发去中心化应用的第三次浪潮。
第一部分:Web3 与 Polkadot 是什么
为了理解本文的主题,需要了解Web3和DApp的概念。上图左侧这位帅哥是Gavin Wood博士,前以太坊的CTO、EVM和Solidity语言的创造着,也是Parity公司、Web3基金会和Polkadot项目的创始人。在Web3基金会和Polkadot等项目文档中,对Web3愿景的文字表述不太一致。但是都包含两层意思。第一层:Web3是无服务器的、去中心化的互联网。Serverless无服务器也是去中心化的意思,因为在web3憧憬的网络计算架构里,参与者或者说节点是平等的,没有服务器和客户端的区别,所有节点都或多或少参与网络共识的形成和记录。去中心化的互联网有什么用呢?就是Web3的第二层含义:每个人都能掌握自己的身份、资产和数据。掌握自己的身份,意味着不需要其他人或者组织赋予身份,其他人或者组织也无法冒用、剥夺或者冻结身份。掌握自己的资产,意味着不会被剥夺资产,可以自由处置资产。掌握自己的数据,意味着每个人可以按自身的意愿生成、保存、隐匿、销毁个人数据,未经他的允许,任何人任何组织都不能使用其个人数据。在数字时代,掌握了自己身份、资产和数据的人,也就掌握了自己的命运。Web3愿景并非Web3基金会或者Polkadot项目所独有。很多区块链项目,包括比特币、以太坊,都有类似的愿景。名称五花八门,包括开放网络,下一代互联网等等。
为实现Web3愿景,世界需要去中心化的互联网应用,即DApp。从使用者的角度,去中心化可以简单理解成,不能被个别或者少数参与者所控制,因此值得信任的应用属性。具体地说,去中心化对使用者意味着有三个重要属性:trust minimal、permissioness和censorship resistant,也就是信任最小化、无许可和抗审查,三个属性跟web3愿景一脉相承。通过众多的去中心化应用,互联网用户可以控制自己的数字身份、资产和数据,从而实现Web3愿景。区块链是实现DApp的主流技术手段,或者说区块链是DApp的基础设施。本文所说的区块链,如果加不特殊说明,都是指公链。另外本文围绕实现Web3愿景讨论,区块链的其他用途(如企业级应用)不在讨论范围之内。
以太坊/EOS/波场三大智能合约公链上已经有上万个DApp。但是除了少数昙花一现的菠菜游戏和资金盘以外,用户极少、而且活跃度很低。甚至已经有人在质疑:去中心化应用是不是个伪概念?我认为出问题的不是去中心化应用,而是智能合约平台。可以说在智能合约平台上开发去中心化应用已经走入了死胡同。原因有两个,第一个是性能和交易执行成本限制。性能低和交易执行成本高是一个硬币的两面。例如以太坊全网只有15tps的处理能力,为保证公平同时抵抗女巫攻击,只能是交易费用竞价。用户体验到的就是DApp很慢,而且一用都要花钱。整个行业对公链性能的关注由来已久,也很多团队正在探索通过代议制、分层和分片三种思路进行扩容。拙作《万字长文说透Polkadot架构》整理了扩容的技术路线、遇到的问题和解决方案,以及主要的项目实现,并把Polkadot/Cosmos归入分片扩容。简而言之就是,跨链技术通过分而治之的方式,在保持互操作性的同时,实现了扩容。本文仍将简述这部分内容,已经阅读过《说透》一文的读者可以跳过随后的三个小节。
但是性能/成本并不是智能合约对DApp的唯一限制。EOS通过代议制的方式,已经能够达到数千tps的处理能力,比以太坊1.0的性能提升了两个数量级,而且交易执行成本由开发者负担,让DApp摘掉了又慢又贵的帽子。但是EOS主网上线一年了,也在公链治理等领域做了大量有益的探索,但是并没有引发应用层的创新。这不禁让人怀疑,到以太坊2.0全面落地的时候(大概还需要1-2年时间),DApp的春天是否就真能到来?经过很长时间的反复思考,我认为除了性能/成本约束以外,DApp还面临智能合约平台第二个重要局限:去中心化治理缺位,而且为了保护合约的可验证性,阻碍了去中心化治理的实现。而跨链技术(尤其是Polkadot)在实现扩容的同时,为实现有效的去中心化治理提供了技术基础和模版范例。通过解除性能和治理两大发展瓶颈,跨链技术有望释放DApp创新潜力,引发去中心化应用的第三次浪潮。
Polkadot是Gavin Wood和Web3基金会提出的Web3技术方案。这两张图片都来自于岳利鹏翻译的Polkadot白皮书中文版。先看右边的大图,Polkadot的基本网络结构是星型的,或者称为轮辐型。星型的中心是PolkadotRelay中继链,外围是众多的Parachain平行链。再看左侧的小图,Polkadot网络的参与者有四种角色:Validator验证人、Nominator提名人、Collator收集人或者核对人,Fisherman钓鱼人或者渔夫。DApp可以是部署在平行链上的智能合约,或者整个平行链就是一个DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。这组验证人并不是来自平行链,而是来自中继链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot采用出块过程和敲定过程分开的混合共识协议
除了平行链,还有转接桥把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是Polkadot基础通证DOT的持有者,他希望质押DOT获得收益。但是要么是因为DOT数量少,要么是缺少运行维护验证人节点的专业技能。因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的DOT通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。渔夫的是监控和举报非法交易,赚取奖金的角色。在Polkadot网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,实现与分片扩容非常类似的目标。
第二部分:Cosmos 是什么
说完Polkadot,再介绍Cosmos。在图的左上方,A和B是两条链互为侧链。也就是说,A链包含B链的SPV轻客户端,从而A链能验证B链的交易。反过来B链也包含A链的SPV轻客户端,从而B链能验证A链的交易。互为侧链的结果是,发行在A链和B链上的通证可以互转。如果从两条链扩展到多条链,A和B变成A/B/C/D/E/F,一种外推的想法是仍然沿用两两互为侧链的做法,就形成了左下方的结构。但是这样做会到来很多问题,每条链都要内置其他所有链的轻客户端,同步其他所有链的区块头,这当然是很大的负担。而且每增加一条链,都需要在其他所有链上做修改。随着区块链数量的增加,复杂度以n*(n-1)/2指数型增长,这显然是不可行的。
解决的办法就是改成上图右上方显示的结构,中间放一个Hub,Hub本是也是区块链,它跟其他所有链都互为侧链。就是说,每条链上的通证都可以转到Hub上,然后通过Hub转到其他链上,网络互联的复杂度跟区块链数量是线性关系。这就是Cosmos选择的架构,在Cosmos的定义里,接入Hub的链称为Zone分区。分区要接入Hub需要两个条件,第一是符合Cosmos标准协议,即IBC链间通信协议。第二是要求Zone具有即时最终性(最好采用Tendermint共识),以确保跨链的一致性。而且Cosmos可以支持多个Hub的互联。对于现存的公链,可以通过协议适配接入Cosmos Hub,Cosmos把协议适配网关称为Peg Zone锚定分区。最终形成的结构就是右下方图片展示Cosmos架构。
Cosmos Hub以及其他用Cosmos SDK开发的分区都采用Tentermint共识协议,出块和敲定过程是合一的,只要出块,就是得到了2/3以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。但是在网络发生分区或者验证人大面积停机等情况下,Tentermint共识有可能暂停出块。
我们把Serenity也就是以太坊2.0、Polkadot和Cosmos放在一起比较一下。三者都是未来几年重要的DApp平台。首先DApp开发方式,三个链都支持智能合约。Serenity还是智能合约平台,而Polkadot/Cosmos网络中会有支持智能合约的平行链和分区链。除此之外,Polkadot和Cosmos带来了全新的DApp开发方式,就是开发特定应用的区块链。Cosmos为应用链提供的工具是Cosmos SDK,目前支持Go语言开发。Polkadot为应用链提供的工具是Substrate,目前支持Rust语言开发。Substrate是完整的应用链开发工具,具备完整的应用链框架,Gavin Wood演示了在全新的电脑上,15分钟用Substrate发布出一条应用链。另外,Substrate所有模块都可以定制或者替换,功能强大而且非常灵活。相比较而言,Cosmos SDK要单薄一些,它主要提供Tendermint共识引擎、IBC链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。
关于性能,Serenity每个分片大约是100tps,仍然是优先处理gas price高的交易。Polkadot Hub应该能达到上千tps,平行链可以自己决定共识算法、硬件和网络,没有严格的性能上限。Cosmos Hub和分区都采用Tendermint,能够达到上千tps。
关于互操作。Serenity跟以太坊1.0是一样的,智能合约可以相互调用。Polkadot平行链通过Relay与其他平行链互操作,通过Bridge与其他链互操作。Cosmos分区通过Hub可以互转通证,通过锚定分区与其他链互转通证。IBC消息也有data字段,就像电子邮件的附件,通过扩展数据字段,分区链之间可以传递任意数据。
接入方式Serenity跟以太坊1.0相同,开发者自行部署智能合约。Polkadot Relay接入要拍卖插槽,质押数量不菲的DOT。Cosmos与Polkadot 类似,是质押Atom拍卖接入资格。
然后是安全性,Serenity的分片就像是标准集装箱,DApp放进就行了,安全性由系统保障。与之相对的是Cosmos,应用链不论是否接入Hub,都是自己保障安全。Substrate开发的应用链是两个选项,要么接入Relay成为平行链,由Polkadot保障安全;要么独立运行,自己保障安全。
最后是DApp升级,它跟后面要重点讲的去中心化治理密切相关。在这里我们简单地概括为Serenity不支持DApp升级、Polkadot支持DApp的安全升级。Cosmos的分区链是可升级的,但是Cosmos SDK并没有内置对升级的支持,需要DApp开发者自行实现升级。
Polkadot/Cosmos最大的创新在于提供了新的DApp开发方式,也就是为开发应用型区块链提供了支持。应用链可以通过跨链协议互操作,而且每条应用链都可以独享1000tps以上的处理能力,DApp的性能瓶颈被解除了。下面重点讲述Polkadot/Cosmos如何解决去中心化治理问题。在此之前,首先要解释去中心化治理的作用,为什么去中心化治理是除性能之外的DApp创新的另一大瓶颈。
第三部分:智能合约的信任来源是什么?
2013年初,我第一次接触BTC的时候,比特币圈子最流行的爆款游戏是中本聪骰子,当时BTC网络一半以上交易量都发生这款菠菜游戏上。中本聪骰子玩法非常简单,无需注册,也不需要安装客户端。Satoshidice.com网站公布多个投注地址,对应不同赔率。只要转入比特币,就可以参与游戏。如果庄家输了,奖金会转回玩家的发送地址。如果玩家输了,也会有很少一点btc发回来,相当于告知结果。中本聪骰子的真正创新在于:玩家不必担心庄家作弊,或者说赌局能够自证公平。证明的方法见上图,简单说就是,服务端预先生成随机数,并公布随机数的哈希值。每轮赌局服务端用随机数决定输赢,公布赌局结果之后,也公布随机数。玩家可以验证随机数和哈希值的对应关系,从而确认随机数是预先生成的。中本聪骰子的创始人是Eric Voorhees,他也是后来的著名加密货币兑换服务shapeshift的创始人和CEO。当时Eric匿名运营中本聪骰子网站,其实即便实名,他当时也算不上知名人物。因此骰子的玩家不是因为相信运营者才相信应用,而是因为可以自行验证公平性才信任应用。币链圈有句名言——Don’t trust, Verify! 即:不要信任,去验证!强调的就是可验证。张首晟先生提出的In math we trust,也有异曲同工之妙。可验证应用采用密码学技术,创造出可证明的公平(Provable Fairness),也可以说是创造出了信任(Truest),所以也有人说区块链是生产信任的机器。
以太坊开创的区块链智能合约是开发可验证应用的技术。智能合约内部状态都是公开可见的,平台不支持隐匿数据,我称之为状态可验证。另外智能合约应该公开代码。代码公开不仅是开源,而是由平台保障合约源代码和执行代码对应。使用者可以查看合约代码,从而验证开发者所声称的处理逻辑与实际实现一致,即处理逻辑可验证。而且智能合约不能调用随机数、当前系统时间,也不能直接访问链下数据,从而确保执行的确定性(Determinism)。由此可见,智能合约是开发可验证应用的通用性技术。而中本聪骰子的子孙后代们也在三大智能合约平台大放异彩。
为了保护处理逻辑可验证,平台通常不允许智能合约进行升级,原因在于开发者单方面修改智能合约会破坏可验证的公平性。但不可升级给应用开发造成了巨大的困难。应用程序几乎不可能保证没有缺陷。智能合约运行在公链平台上,任何人都可以无需许可地匿名访问。再加上智能合约常常用于处理加密资产交易,任何微小的缺陷都会被黑客利用。TheDAO、Parity多重签名钱包、美链1CO等智能合约,都因为微小的程序缺陷,导致了巨大的经济损失。另一方面,互联网应用和移动应用常常快速迭代,不断适应用户需求、增强功能、改进体验。如果区块链应用只能“以不变应万变”,要在竞争中胜出难于登天。
为了突破智能合约不可升级的限制。开发者用delegateCall等方法,绕过平台,实现了智能合约可升级设计模式,如上图所示。可升级智能合约通常由三个部分:代理合约、状态合约和处理逻辑合约。状态合约存储所有需要持久化的数据。代理合约负责将外部服务请求转发给处理逻辑合约。代理合约保存了处理逻辑合约的地址指针。通过部署新版本的处理逻辑合约,修改代理合约的地址指针,就能够实现处理逻辑升级。
可升级设计模式使得智能合约具有了可升级性,代价是破坏了智能合约的处理逻辑可验证。开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么用户是否仍然可以信任智能合约呢?答案是需要个案分析。在协议可变的前提下,是否可信取决于协议的控制者是否可信。例如Paxo/GUSD等合规稳定币,我们知道Paxo/GUSD的运营实体是受纽约金融局监管的合规企业,其稳定币的法币储备有定期的正规审计。虽然这些稳定币的运营商可以随时升级(修改)智能合约,但是用户并不会因此而产生疑虑。但是大家应该注意,合规稳定币的信任并不是区块链制造的,而是把链外的信任延伸到了链上。例如eher公司通过区块链发行USDT,只是利用区块链技术的可及性和快捷清算能力。USDT的信用不是区块链制造的,而是由 Tether 公司提供的。
另外一种情况是,掌握智能合约升级权利的不是个人或者企业,而且去中心化匿名组织(DAO),例如MakerDAO、Aragon等。他们通过去中心化的治理流程(通常也用智能合约实现),由利益相关人通过投票决定协议规则的修改。在这种情况下,智能合约的可信性取决于DAO的可信性。稍后我们会继续延伸这个话题。
总结一下本小节的内容。智能合约是开发可验证应用的技术,状态可验证 处理逻辑可验证创造出可证明的公平性,智能合约菠菜的流行大抵源于此。可验证和可升级是一对矛盾。可升级智能合约破坏了可验证性,其信用之源是合约的运营主体。
第四部分:比特币的信任来源
我们再来看比特币的信任来源。2013年三月的比特币价格暴涨,普遍认为与塞浦路斯银行危机有关。上图左侧摘录了当时主要的财经媒体的新闻标题。塞浦路斯跟冰岛、爱尔兰一样,是新兴的离岸金融中心,靠低税率和监管宽松,吸引了大量资金流入。塞浦路斯700亿欧元的银行存款,有300亿来自俄罗斯。希腊债务危机让塞浦路斯的银行损失惨重,银行资不抵债,面临破产。最终的解决方案是储户买单,10万欧元以上的账户几乎血本无归。塞浦路斯银行危机第一次明确地提醒人们:存在银行里的钱,哪怕是存在欧洲发达国家的银行里,也可以一夕归零。于此同时,比特币作为一种非主权的,不依赖金融中介的价值存储手段,进入了人们的视野。从此之后,每当某国家出现货币危机,包括阿根廷、印度、委内瑞拉、南非、土耳其、伊朗,在当地都出现了比特币交易量大幅上升的情况。这一系列事实证明,比特币是超主权价值存储货币已经被认可。即便在通货膨胀并不严重的地区,也有越来越多的人使用比特币保存个人财富。价值存储对人们的生存繁衍至关重要,比特币凭什么担负如此重托呢?
我们把比特币产生信任的方式跟以太坊智能合约进行比较,可以发现比特币的可信既不是源于代码可验证,也不是因为比特币核心开发者具备信用。包括我在内的比特币绝大部分用户都没有看过比特币节点的代码,也并不关注代码,而且比特币协议是可以修改的(分叉)。对于由谁决定比特币协议的升级,中本聪的初始的设想是算力投票。理由在于算力是不可伪造的,而且矿工是比特币的主要的利益相关群体。但是很有可能,中本聪没有预见到专用ASIC矿机出现,将个人电脑完全挤出了挖矿竞争,并形成了几大矿池垄断算力的现状。比特币的利益相关群体主要有四个:矿工、开发者、用户和企业(交易所、钱包厂商、区块链浏览器、社区、媒体等)。他们有一致的利益,也有相互冲突的利益。例如几乎全部参与者都受益于比特币长期价格上涨。但是用户希望交易费越低越好,而矿工希望交易费越高越好。由于利益冲突,各方对比特币协议演进会出现不同的意见,而且四方都有影响协议研究的能力和途径。基于比特币分叉博弈的历史,目前普遍认为对协议演进影响里最大的是比特币核心(开发者),而不是矿工。那么我们是否是因为信任比特币核心才信赖比特币呢?
最近有矿圈的大佬声称,比特币核心早晚会取消比特币2100万的发行上限。作为把btc用于长期价值存储的用户之一,我是否应该担心呢?说实话我并不担心,并不是因为大佬的逻辑有问题(我甚至没花时间研究他的逻辑),也不是因为我信任比特币核心。我甚至不知道现在的比特币核心由几个人组成,他们都是谁。但是从第一次购买btc到现在6年多的时间,我知道有大量跟我利益诉求一致的比特币用户。我们都把BTC当作自己可以完全掌握的资产(还记得Web3愿景吗?),是最可靠的价值存储。假设比特币核心处于某种原因要牺牲比特币的稀缺性,那必然要通过硬分叉来实施。我只需要保留有稀缺性保证的BTC,卖出没有稀缺性保证的分叉币(也许叫Bitcoin Uncapped?)就行了。也就是用我的币做了支持谁不支持谁的投票。我相信比特币社区会有千千万万人(不是也无需是全体)会跟我做相同的选择。而且也一定会有开发者维护稀缺比特币的代码(组成新的核心?)。一番折腾下来,除了原来的比特币核心被边缘化以外,我看不出还会有其他可能的结果。
所以我对比特币的信赖源于影响比特币协议演进的力量是多方的,而且由于区块链可以分叉,不同利益诉求的群体可以分道扬镳,然后由广大的比特币用户来选择支持/不支持/同时支持哪个分叉。所以比特币的信任来源是广泛参与的治理和可分叉性,与智能合约非常不同,这就是本文所说的去中心化治理。
第四部分:深入探讨去中心化治理问题
总结上一小节的结论:除了可证明的公平性,区块链应用创造信任的源泉是去中心化治理。而且只有通过去中心化治理产生信任的应用,才是真正的去中心化应用。这一小节我们介绍去中心化治理的一般过程和发展现状。
以比特币为例,治理的基础是广泛参与的讨论,在bitcointalk、reddit的网络社区、大大小小的会议、众多的媒体上发表看法、讨论甚至争论问题。研究者会针对某个特定专题,例如隐私、性能或者更一般化的签名方案、P2P通信协议等,进行研究,并发表研究成果。对比特币协议的改进建议以BIP(Bitcoin Improvement Proposal比特币改进提案)的形式呈现。重要的BIP会引发比特币社区的关注,并引发更为广泛的讨论。开发者(不一定是Core,也不一定是提案发起人)可以实现某个BIP。目前比特币没有正式的对开发者进行资助的流程。Dash/Monero等加密货币社区,有标准的流程来决定是否以及如何对开发者提供资金支持。在协议改进实现之后,就来到去中心化治理最关键的步骤:由谁以及如何决定BIP部署上线,成为比特币协议的一部分。
比特币的治理在这一关键环节非常含混不清,大致可以描述为核心开发者根据已经达成的广泛社区共识来决定是否上线BIP。什么才是广泛的共识?是否已经达成了广泛共识?没有明确的标准,这在持续近三年之久的大区块vs.隔离见证的争议中表现得尤其明显。以太坊的治理过程与比特币非常类似,可能唯一重要的区别在于V神在以太坊社区的巨大影响力,使得V神支持的协议改进更容易达成共识。由于这一类的治理过程的最终结果是实施协议分叉,不妨称之为分叉治理。分叉治理虽然实现了治理去中心化的目标,但是具有明显的缺陷。最大的问题是治理过程含混不清,因此效率很低、难于改进而且很容易陷入争议。例如以太坊围绕ProgPoW的冗长肥皂剧就是混乱无序治理的必然结果,没有清晰的治理过程,类似的肥皂剧就会反复上演。
针对分叉治理的缺陷,Decred首创了链上治理。也就是Decred通证的持有人通过链上交易对提案进行投票表决,表决通过的提案才能部署上线。EOS和Tezos也对链上治理做了大量有益的探索。上图右侧对去中心化治理的现状划分的象限。比特币和以太坊采用分叉治理方式。EOS和Tezos区块链采用链上治理。但是就我所知,EOS和Tezos并没有为平台上运行的智能合约提供治理支持,因此还是没有解决DApp治理的问题。Decred很可能是目前唯一的具备完整链上治理的去中心化应用。但是Decred的治理也有明显缺陷。首先Decred是PoS PoW混合共识,通证持有者和PoW矿工都是网络的利益相关人,但是PoW矿工不能直接参与链上治理,他们的利益诉求被忽略了。另外Decred的提案是持币者直接投票,相当于是每个决策都是全民公决,这样做效率很低,而且最明显的问题是实际投票率很低。虽然有些提案有百分之几十的通证参与投票,但是看按持币地址的参与率,就低到可怜了。这两个问题在一些纯PoS链得到了很好的解决。PoS的治理基础就是Staking,Staking代表了长期的利益绑定,治理的目的是为了让加密协议不断进步,最大化长期利益,因此参与Staking的持币者参与治理非常恰当。另外就是新一批的PoS都实现了某种代理机制,DPoS/BPoS/NPoS,相当于实现了代议制。日常的治理可以由当选的验证人来进行,他们相当于是议会。验证人通常跟加密网络有巨大的共同利益,他们有动力为治理投入资源。另外重大的表决,尤其是验证人和委托人利益有冲突的提案,仍然可以也应该交由持币者公决。
第五部分:Polkadot 的治理机制
Polkadot的治理是前所未有的全过程链上治理,基于最前沿的区块链技术实现。被表决的提案不仅仅是对协议修改的描述,而且可以是新协议本身,即被编译称wasm blob的可执行程序。链上投票通过后,新版程序通过区块链分发给验证人节点,并且自动启用。升级过程中不会出现分叉。基于令人叹为观止的技术,Polkadot在链上治理方面可以说是一骑绝尘,正在进行大量的创新和探索。
Polkadot治理仍然处在快速进化之中。几天前(5月24日)Polkadot刚刚宣布PolkaDAO上线,PolkaDAO把对提案进行资助的决策流程搬到了链上(目前是以太坊,未来应该会迁入Polkadot)。我认为在主网上线之前,乃至于主网上线后的相当一段时期内,进化不会减速。因为Polkadot的优势并不在于它已经找到了行之有效的治理方式,而在于它建立起了可以支持快速进化的过程和技术。根据我的观察,在主网上线前和上线后的一段时期内,开发者仍然拥有Polkadot的控制权。他们会充分利用这一权利,将Polkadot快速推进到自洽状态,然后退居幕后,把治理权交给社区。这也是Block.One对EOS所做的。Polkadot多出了两年行业发展经验(后发优势),而且开发了更好的链上治理技术。有理由相信Polkadot的开发者能做得更好。所以现在讨论Polkadot的治理,不必对细节太过关注,因为都可能会变掉。需要关注的是:完全可编程的链上治理大概会是什么样子,能做到哪些?而且Polkadot治理代码是开源项目的一部分,DApp开发者可以把Polkadot治理当作模版范例,定制开发符合自身项目情况和需求的治理过程。
Polkadot这个词在不同的语境下有不同的含义(范围),有时候我们用它来代表W3F发起的整个Web3生态,有时候代表Polkadot项目(包含Substrate),有时候特指Polkadot Relay这条特定的区块链。本小节所说的Polkadot治理,是Polkadot Relay区块链的治理,再具体的说是Polkadot Relay的PoC-3阶段实现的链上治理。
整个治理过程围绕提案和投票展开。提案可以由普通的持币者提出,也可以由理事会提出。理事会是持币者选出的,持币者可以给任意多的理事候选人投票。每个选举周期的冠军进入理事会,替换任职时间最长的理事,亚军票数保留,其他候选人选票清零。每个理事都有对理事会提案的否决权,但是不能连续使用。理事会通过提案进入全民公决,而且只有得到多数反对才会被否决。普通持币者的提案进入队列,等待其他持币者的支持。每隔一段时间,支持数最高的提案进入全民公决。但是普通持币者的提案要获得多数支持才能通过。在全面公决投票中,持币者可以选择锁仓系数,范围从1-6,所投出的票数是持有的DOT数量*锁仓系数。如果投票结果跟投票者的选择一致(通过/否决),那么投票者的DOT将被锁定,锁定时间=常数 * 锁仓系数。如果投票结果跟投票者的选择相反,则无需锁仓。这样的计票方式,有助于让(未来的而不是过去的)长期持币者获得更大权重。
第六部分:去中心化应用的未来之路
前面讲述的全部内容可以归纳为去中心化应用的三次浪潮。第一次是比特币引发的去中心化电子现金(加密货币)的创新浪潮,围绕“更好的加密货币”主题展开,方向主要有三个:隐私、治理和支付。这三个方向也都针对比特币的“不足”。Zcash/Monero/Dash等力图巩固加密货币的可互换性和私密性;Decred/Dash等探索了混合共识和更规范更有效的治理;Litecoin/XRP/BCH致力于成为更好的支付/转账加密货币。大家知道在2012-2015年,开发DApp的主要方式是fork比特币的代码,做定制修改,然后运行独立的区块链。再到后来直接fork比特币区块链,借力比特币的网络效应。这一轮创新是开天辟地试的,它开启了去中心化应用的大门,使每个人都可以自行认领数字身份(私钥/地址),而无需被授予。并实现了最普遍使用的资产——货币的去中心化。但是除了最大化主义者或者对现代金融一无所知的人,恐怕没有人会认为仅靠去中心化货币就能支撑起web3理想的大厦。但是由于当时开发去中心化应用的技术单一,都源自比特币。而比特币的架构设计扩展性不足,使得开发非货币类应用难度很大。而且当时也没有跨链技术,DApp是彼此独立的区块链,之间不能互操作,无法形成DApp生态。这一轮创新浪潮给只是行业留下了几个各具特色、但独立运行的加密货币。
在比特币区块链上实现其他资产的发行和交易是可行的(例如ColorCoin/MasterCoin等早期尝试),但严重受制于比特币区块链的限制。V神正是由此出发,提出并领导实现了以太坊。以太坊是开放的创新平台,它引入了图灵完备的虚拟机EVM,推出了Solidity等智能合约开发语言,并且支持智能合约相互调用(互操作),极大地降低了区块链应用开发的门槛,引发了第二轮创新浪潮。但是如前所述,由于以太坊基础设施的限制,导致应用性能差、成本高,用户体验很差。而且智能合约实质上是可验证应用开发技术,并没有为DApp所必须的去中心化治理提供支持,甚至为了保护可验证性限制了应用的升级,给DApp演进造成了很大困难。由于这些限制,虽然以太坊主网上线已经4年多了,全世界也有几十万智能合约开发者。但是以太坊上没有一个真正落地(百万级活跃用户)的去中心化应用。当然第二次创新浪潮不是毫无收获,期间产生了大量的可验证应用,包括可以验证的资产发行和转移、可验证的菠菜等等。另外有成百上千个DApp在智能合约平台进行了尝试,开发出了MVP。在性能、治理等瓶颈解除之后,这些项目团队有最好的机会开发出真正落地的DApp。
Polkadot/Cosmos等跨链技术是对以太坊等智能合约平台的换代。他们继承了以太坊图灵完备、规范应用程序开发和互操作支持等优点,又解除了去中心化应用的性能和治理两大瓶颈,将引发DApp创新的第三次浪潮。我们前面重点介绍了Polkadot的治理。那么用Cosmos SDK开发的应用链,也可以实现类似Cosmos Hub和Tezos的链上治理。关于跨链技术的局限是什么,我还不敢说现在已经看到了,但是有一些疑惑要交给时间去验证。在第三次创新浪潮中,我们有理由期待出现大量的DApp创新,能够包括去中心化匿名组织DAO、去中心化交易所DEX,以及众多Defi去中心化应用。最优秀的一批DApp很可能获得成百上千万的用户,跟对中心化互联网服务竞争而不落下风,将互联网向实现Web3愿景推进一大步。
第七部分:Polkadot 的现实问题
谈过DApp创新的远大前景,再来说说现实的困难。首先是Polkadot/Cosmos跨链技术落地尚须时日。Polkadot目前的进展是PoC4已经稳定运行了近两个月。但是PoC4并不包含跨链协议。跨链协议ICMP将包含在PoC5里面。目前Polkadot主网上线目标时间点是今年年底。但这在一切顺利的情况下的预期。开发过复杂软件项目的同学都知道,一切顺利通常只存在于幻想之中。虽然Polkadot开发团队的能力有目共睹,但是如果Polkadot如期上线,我还是会比较意外。Cosmos虽然主网已经上线,但是IBC跨链协议还未实现,也是预计在今年年底实现。考虑到Cosmos的各种跳票已是家常便饭,如果年底Cosmos Hub就开始接受分区链接入,对我来说是也个很大的惊喜。但是希望大家理解,DApp不一定要依赖跨链。应用链形态的DApp可以自己构成业务闭环,并且提供跟中心化互联网应用类似的用户体验。因此我呼吁区块链行业的创业者,不要再等待观望,或者在智能合约平台上继续撞南墙。从现在开始认真考虑、积极准备采用应用链实现DApp创新。等到跨链技术落地,再接入到Polkadot/Cosmos,融入DApp生态圈。
第二个现实障碍是应用链的开发者奇缺。由于Substrate和Cosmos SDK都是不久之前出现的新技术,而且Substrate开发使用比较小众的Rust语言,因此国内具有实践经验的应用链技术团队极少。目前用Substrate开发过产品的国内团队,就我所知只有ChainX一家。而且应用链开发还面临一个很大的难题,就是Substrate和Cosmos SDK应该选择哪一个?两个开发工具的开发语言不同,都有比较高的学习成本,而且未来对应的是两个不同的 DApp生态。一旦选定之后再更换,会造成资源投入和项目进度的重大损失。我比较过两个开发工具,Substrate比Cosmos SDK功能更完整更强大。所以最佳方案是Substrate能兼容Cosmos,也就是用Substrate可以开发Cosmos分区链,形成统一的独立于Polkadot的Substrate开发工具生态。Substrate是开源软件,采用模块化的设计,把Tendermint/IBC封装成可以被Substrate使用的协议组件,在技术上肯定是可行的。我和几个做开发的朋友正在研究这个问题,也欢迎对此感兴趣的同学加入进来。Substrate是应用链开发的首选工具。为了在国内开发者中推广Substrate,一块链习社区打造了全球首个Substrate线上开发课。主讲是Bryan陈锡亮老师,Bryan是Centrality资深架构师、Polkadot社区大使、Substrate和Polkadot代码贡献者。Gavin Wood给课程写的推荐语是:Bryan是Substrate的杰出贡献者。我推荐中国区块链开发者参与他的课程,学习使用Substrate开发区块链项目。首期课程6月2号开课,学费1299元。所有按时完成作业的同学将获得一半学费返还。课程评价前3名的同学学费全额返还,还有额外奖励。课程是不盈利的,这个不多说了,懂的人自然明白。我会义务担任首期课程的助教,期待跟大家一起学习。
还有就是DApp的治理还没有最佳实践。前面也介绍了Decred等治理实践以及遇到的问题。很有可能五年以后,DApp创业者能够找到很多成功的范例和失败的教训可资借鉴。但是现在,一切才刚刚开始。只有几条基本的原则是清楚的,首先就是DApp要长期成功,需要设计出长期激励相容的机制。使开发者(项目方)、验证人、服务提供商、用户和投资者的长期利益一致,并且能够约束各方追求自身短期利益、牺牲整体长期利益的行为。
开发者应该钻研技术和商业、建立并维系社区,从长期币价上涨和技术服务收入获利。对于验证人,他首先应该选择真正具备交易成本优势的DApp,因为验证人是最长期的投资者,他不但要付出资金,还有付出很高的人工成本去参与DApp治理。因此陷入庞氏骗局或者资金盘,是专业的验证人首先要避免的。决定参与DApp经济体之后,验证人应该积极参与治理,避免共谋,从长期币价上涨和领权收益获利。加密货币的投资者,这里指长期价值投资者,不包括短期投机者、量化或者趋势投资者,应该深入研究DApp的基本面,将通证委托给有治理能力的验证人,并持续保持关注,通过长期币价上涨和Saking获利。另外,DApp协议的服务提供商和用户非常有可能作为投资者甚至验证人参与到DApp去中心化治理之中。
完