刘毅,RandomCapital合伙人,清华大学硕士,区块链和大数据技术专家;20年多种资本市场投资经验,比特币早期投资者。点击阅读《万字长文说透Polkadot架构》十三、Polkadot架构
接下来我们介绍Polkadot架构,这两张图片都来自于岳利鹏翻译的Polkadot白皮书中文版。先看右边的大图,Polkadot的基本网络结构是星型的,或者称为轮辐型。星型的中心是PolkadotRelay中继链,外围是众多的Parachain平行链。再看左侧的小图,Polkadot网络的参与者有四种角色:Validator验证人、Nominator提名人、Collator收集人或者核对人,Fisherman钓鱼人或者渔夫。DApp可以是部署在平行链上的智能合约,或者整个平行链就一个DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。这组验证人并不是来自平行链,而是来自中间链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot采用混合共识协议,出块协议的英文缩写是BABE,小孩子;敲定协议的缩写是GRANDPA,老爷爷。刚才讲混合共识,有同学可能会问:出块快、敲定慢,那等待敲定的区块会不会越来越多?不会的,GRANDPA每个轮次可以敲定多个区块,从而追上进度。所以小孩子是活泼好动、步履轻盈;老爷爷是大步流星、一言九鼎。一老一小相得益彰。除了平行链,还有两类外围区块链接入中继链。一类是转接桥,它把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。从中继链的角度看,转接桥是一条平行链。从以太坊或者比特币的角度看,转接桥是一条侧链。此外,为了让系统具有无限的可扩展性,还可以有二级中继链。不过二级中继目前还只是设想,没有具体的设计。我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是Polkadot基础通证DOT的持有者,他希望质押DOT获得收益。但是要么是因为DOT数量少,要么是缺少运行维护验证人节点的专业技能。因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的DOT通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。关于Polkadot的经济模型,是个很复杂很有趣的话题,我们就不多说了。刚刚介绍过分片架构的交易有效性问题,以及举报奖励的解决方案,所以渔夫的作用不难理解。他就是监控和举报非法交易,赚取奖金的角色。听起来挺简单,但是做起来极其复杂。可能有些同学想象中的举报是这样的:给web3基金会发邮件:我发现有人打包了非法交易,证据见附件,盼复。过些天web3基金会回信:您的举报已被证实,作恶者已伏法,奖金将发到你的地址,非常感谢您对我们工作的支持。但区块链上的举报完全不是这个样子。渔夫是个软件进程,它监控网络上的非法行为,一旦发现就会向区块链提交举报交易。举报交易也要经过共识过程,通过2/3以上验证人验证,打包进区块,惩罚和奖励也都是区块链交易。整个过程是自动地、去中心化地执行。这里就有很多复杂问题,例如如何对渔夫提供激励。渔夫就像警察,你可能会认为那很简单,抓住一个坏人就发一笔奖金。那么有一堆警察天天盯着网络,没人敢作恶,警察就一直拿不到奖金。警察有运营成本,要验证并存储大量的数据,没有收入就干不下去了。警察全改行了,坏人就会出现。那你可能会想,给警察发工资吧,底薪加提成。好,那我可以声明自己做警察,领一份底薪。但是我根本不验证和存储交易数据,成本就是0,底薪就是我的利润。等坏人出现的时候,我说抱歉哈,我没看到,或者说我硬盘恰好坏了,那么系统应该怎么惩罚我呢?还有就是不能随便举报,系统处理举报需要成本,随便举报就成了可以粉尘攻击的漏洞。另外能否对举报交易进行举报,应该怎么处理等等。所以在去中心化环境中,举报机制很复杂。Polkadot的渔夫工作机制,目前我还没看到具体的说明。在Polkadot网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,也就实现了分片的目标。因此我把Polkadot看成是分片扩容方案。可以跟Serenity初步比较一下。你会发现Polkadot比Serenity在技术上更复杂。Serenity的分片是同构,采用相同的共识协议,容量也整齐划一。就像是提供给DApp使用的标准集装箱,规格都一样,开发者选一个分片,把自己的DApp放进去就好了。Polkadot是web3骨干网,它不能也不应该要求平行链是整齐划一的。平行链可以自行决定使用什么共识协议、什么样的经济模型和治理模型,自己决定硬件和网络配置等等。简而言之平行链是自治的,Polkadot可以看成是平行链的联盟或者联邦。Polkadot中继链要支持异构的平行链接入,进而实现互联互通,复杂度超过Serenity的信标链。这一技术复杂度带来的好处是,平行链开发的灵活性,无需千链一面,可以根据具体的需求和约束,设计开发最优的平行链。十四、殊途同归——Cosmos
下面我们来介绍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具有即时最终性,以确保跨链的一致性。而且Cosmos可以支持多个Hub的互联。对于现存的公链,可以通过协议适配接入CosmosHub,Cosmos把协议适配网关称为PegZone锚定分区。最终形成的结构就是右下方图片展示的样子。我们从侧链出发推演Cosmos架构。但是回过头来看,Cosmos分区各自承担交易执行、数据存储,同时分区之间还能够互操作,也实现了分片的目标。因此我也把Cosmos看成是分片扩容方案。可能有人对会对这样分类不赞同。但是没有关系,Cosmos就是Cosmos,分类是为了更好地理解它。从不同角度理解和阐释,可以用不同的分类方法,没有绝对的对和错。CosmosHub以及其他用CosmosSDK开发的分区都采用Tentermint共识协议,出块和敲定过程是合一的,只要出块,就是得到了2/3以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。但是在网络发生分区的情况下,Tentermint共识有可能暂停出块。CosmosHub和分区都有各自的验证人组,不需要验证人动态随机分组。那么Cosmos如何保障跨链交易有效性呢?根据我的理解,Cosmos回避了这个问题。Hub并不能验证交易有效性,只能验证存在性。如果某个分区被恶意验证人控制,那么用户在这个分区上的资产是不安全的,可能被盗取。但是这不应该看做是Cosmos的漏洞,而是它的设计选择。Cosmos经常被拿来跟Polkadot比较,但其实Polkadot与Serenity在架构上更为相似。前几天橙皮书的文章做了三个村庄的比喻,非常贴切。但是从DApp开发的角度,尤其是今年和明年的重量级DApp开发,主要会从Polkadot和Cosmos二选一。从技术上说,Cosmos要比Polkadot或者Serenity简单得多。我这里说的简单并非贬义,在满足需求的前提下,技术方案应该是越简单越好。那么Cosmos用相对简单的方案也实现了分片扩容的目的,不是很好吗?确实很好,因此我也很看好Cosmos,它会非常适合某些类型的DApp。但是正如我们反复强调的,有所得,必有所失。Cosmos选择了简洁,但在安全性上有所牺牲。PoS区块链的安全等级是由总市值和质押比例决定。Polkadot上线之后,假设Dot总市值是10亿美元,其中一半质押在网络上,那么要对Polkadot主网进行双化攻击,理论上最少需要1.67亿美元,实际需要的会多得多。显然是一笔巨款,因此Polkadot网络非常安全,跨链交易有很高的安全保障。Cosmos主网上线之后,Atom通证也会很高的市值,但是网络质押的Atom,只保证CosmosHub的安全。分区和其他Hub会发行自己的通证来建立经济模型,获得安全保障。但是分区通常是特定的去中心化应用,其应用规模和市值达不到Cosmos/Polkadot这样的大平台的等级。因此可以预期,Cosmos分区的安全等级会低于CosmosHub。你在Cosmos上执行跨链交易。需要信任交易的发起分区,目标分区和Hub,如果跨链交易中间经过多个Hub,那么经过的每个Hub都要值得信任。一方面是需要信任的区块链变多了,而且其中有些链的安全等级可能不高。所以说Cosmos没有做到信任最小化。安全水平降低了,但是降低之后够不够用?也许够也许不够,还是因人而异、因应用而异。Cosmos当然了解自身的短板,据说会在未来版本为分区提供安全保障。但是实现难度会很大。要为分区提供安全保障,需要大量的验证人,只能修改共识协议,把出块和敲定分开,当然还要处理验证人随机动态分组、交易有效性等问题。这一番改动下来,Cosmos和Polkadot的复杂度也就差不多了。十五、对DApp的支持对比
那么Serenity、Polkadot和Cosmos哪个更适合做DApp开发呢?我们来比较一下。首先DApp开发方式,三个链都可以用智能合约。Polkadot和Cosmos带来了新的DApp开发方式,就是开发特定应用的区块链。Cosmos为应用链提供的工具是CosmosSDK,目前支持Go语言开发。Polkadot为应用链提供的工具是Substrate,目前支持Rust语言开发。Substrate是完整的应用链开发工具,具备完整的应用链框架,GavinWood演示了在一台全新的电脑上,15分钟发布出一条应用链。另外,Substrate所有模块都可以定制或者替换,功能强大而且非常灵活。相比较而言,CosmosSDK要单薄一些,它主要提供Tendermint共识引擎、IBC链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。关于性能,Serenity每个分片大约是100tps,仍然是优先处理gasprice高的交易。PolkadotHub应该能达到上千tps,平行链可以自己决定共识算法、硬件和网络,理论上说没有性能限制。CosmosHub和绝大多数分区都采用Tendermint,能够达到数千tps。关于互操作。Serenity跟以太坊1.0是一样的,智能合约可以相互调用。Polkadot平行链通过Relay与其他平行链互操作,通过Bridge与其他链互操作。Cosmos分区通过Hub可以互转通证,通过锚定分区与其他链互转通证。IBC消息也数据字段,就像电子邮件的附件,通过扩展数据字段,分区之间也可以传递通证以外的数据。接入方式Serenity跟以太坊1.0相同,开发者自行部署智能合约。PolkadotRelay接入要拍卖插槽,质押数量不菲的DOT。Cosmos与Polkadot类似,是质押Atom拍卖接入资格。然后是安全性,前面说过Serenity的分片就像是标准集装箱,DApp放进就行了,安全性由系统保障。与之相对的是Cosmos,应用链不论是否接入Hub,都是自己保障安全。Substrate开发的应用链是两个选项,要么接入Relay成为平行链,由Polkadot保障安全;要么独立运行,自己保障安全。最后是DApp升级,Serenity和以太坊1.0一样,不支持智能合约升级。可能很多人对此已经习惯了,但我认为不支持升级是很大的缺陷,而且可能带来严重的安全问题。首先是代码不可能没有bug。Solidity等智能合约开发语言对形式化验证并不友好,即便做形式化验证,达到100%的逻辑路径覆盖也不现实。其次DApp是互联网应用,互联网应用应该随需应变、迭代进化。有人会认为智能合约是约定,所以不能改。其实真实世界的合同,都有经双方同意可以取消或者修改的条款。想想两个公司签了合同,现在双方都同意修改合同,结果合同本身限制了不可更改,是多么荒谬的情形。更不要扯什么代码即法律,法律也不是一成不变,可以废止可以修订,代码反而不行,不是很奇怪吗?结果就是很荒谬,一方面DApp有强烈的升级需求;另一方面平台不支持升级。于是开发者自己想办法,用delegateCall等rudimentary的方法,别别扭扭地实现了可升级,还美其名曰可升级设计模式。有了这个办法,开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么代码即法律还有什么意义?用户怎么才能知道智能合约可升级还是不可升级,哪些逻辑会变哪些不会变?只能自己看代码。所以难怪以太坊只有这么少的用户。反正我自己不够格使用以太坊DApp。fomo3d的合约我研究过,就没看出来有随机数漏洞。Parity的多重签名钱包合约的一个小bug,锁住了上亿美元资金,坑了自己和好多人。如果要透彻研究代码才能信赖并使用DApp,那全世界的DApp目标用户,大概也就是数以千计吧。要开发能够跟中心化互联网应用竞争的DApp,可升级是必须的。而且必须是平台支持的规范的升级,不能DApp各显神通。类比Android平台,手机App就经常升级,但是用户必须知情并同意,新版本App增加了权限需求,要显示给用户。这些都是平台控制的,手机App只能遵循不能饶过。DApp的升级应该更加规范也更加严格,因为DApp管理的是加密资产,而且没有可信任的中心。Polkadot和Cosmos都允许应用链升级,Cosmos的分区是自己处理升级,Polkadot的平行链可以安全升级。Polkadot如何实现平行链安全升级,我还没搞明白。几周前Gavinwood中国行,讲了TrustWormhole可信虫洞,我也没太听懂。谁了解这部分内容希望能指点一下我。总而言之,在去中心化的区块链上,实现规范的安全的应用升级非常困难,但是没有别的选择,必须支持升级,而且是平台保障的规范的安全的升级。我认为在可升级性方面,只有Polkadot的方向选择是正确的。十六、网络拓扑比较
下面来谈谈,Serenity、Polkadot和Cosmos这三个区块链生态在充分发展之后,会形成什么样的网络拓扑。注意逻辑网络,不是物理网络。另外网络充分发展需要时间,这里讨论的是大概5年后的图景,有些内容是根据架构设计所做的推测。首先看左侧,Serenity网络像是一个仪仗队方阵。信标链是旗手或者领队,方队的每列是一个标准分片。每个分片都可以承载一些DApp。中间的图是Polkadot。Polkadot网络是一颗树,树根是中继链,可连接多个平行链。平行链可能是特别业务的应用链,也可以是支持智能合约的DApp平台。另外其他类型的区块链可通过桥接入中继。分析Polkadot架构可知,由于验证人数量等限制,单个中继能支持的平行链数量有限。大概是几十到一百这个量级,很难达到几百个。当然即便达到几百,也不能充分实现Web3愿景。所以Polkadot未来会支持中继级联。也就是一级中继接入根中继,二级中继接入一级中继,从而具有无限扩展能力。右侧图是Cosmos。Cosmos的多个Hub可以互联,每个Hub连接多个分区。还有锚定分区对接其他类型的区块链。Cosmos网络拓扑与Polkadot粗看上去很像,都是树形结构。但是Cosmos的Hub和Hub之间,没有谁向谁提供安全保障的问题,所以没有层级高低。如果把层级关系看作是连接的方向,那么Polkadot是有向无环图,Cosmos是则是无向无环图。其实Cosmos网络拓扑是可以成环的,应该是为了避免出现跨链消息路由选择问题,选择了无环的设计。相比较而言,我认为Serenity的增长方式和资源分配有点僵化。系统是自上而下式的增长,通过迭代支持更多的分片。DApp选择哪个分片上,面临一些不确定性。例如某个DApp非常成功,它需要的处理能力超出了单一分片的容量上限怎么办?目前看是没有办法。另外,DApp上线的时候你选择了一个相对空闲的分片。结果同一分片土壤出现特别受欢迎的DApp,那么你的用户就只能忍受高成本和拥堵。简单概括就是区块链计算资源做不到对DApp按需分配。Cosmos和Polkadot的增长是自下而上的,不断有新应用链加入,也会有应用链退出,资源分配也更加灵活。Cosmos跟另外两个平台的最大区别是不共享安全性,一定程度上牺牲了信任最小化,这个在前面已经讲过了。这么说Polkadot兼具了共享安全和自下而上式地有机增长,是不是就是最好的?Polkadot确实有这些优点,但是它也有自己的劣势。最大的问题我认为就是平行链的接入门槛会很高。按照目前公布的拍卖计划,到2020年底,只有24个接入插槽。你如果开发平行链,希望明年上线,就要跟全球众多团队竞争这24个名额。当然,未来edgeware等智能合约平台上线后,能够一定程度上降低DApp门槛。相比之下,在Serenity上部署DApp没有门槛。Cosmos也会好很多,因为CosmosHub可以支持更多插槽,另外生态系统中会有多个Hub,形成卖方市场竞争。从更大的图景上看,Serenity、Polkadot和Cosmos互联是可行的,也一定会发生。EOS等采用DPoS的区块链也都可以连接进来,再加上侧链等二层网络,异构区块链的互联网络将会形成。十七、辨析「跨链」
本次分享已经接近尾声了,我们才开始讨论跨链概念。原因是我认为「跨链」概念有歧义,容易产生误导。至少我自己被误导了很长时间。以前看关于Cosmos和Polkadot的材料,都是把它们当作跨链方案来介绍。我就想为什么要跨链?跨链能干什?虽然现在有几百上千公链,但是有几个有用的?比特币算一个,有人会加上以太坊/EOS,有人会加上ZCash/Monero,反正也就是三五条吧。就这么几条有用的链,有什么可跨的?感觉就是脱了裤子放屁——多此一举。所以以前我看到介绍Cosmos和Polkadot的文章,扫一眼标题就过去了,不点进去看。直到去年GavinWood在慕尼黑演示Substrate,我才弄明白Polkadot是分而治之的新一代公链架构,是DApp的新形式。从那以后,我才开始关注这个领域。Polkadot和Cosmos设想的区块链未来图景,不是onechainfitall一链打遍天下,也不是onechainrulethemall一链君临天下,而是由众多异构区块链互链形成的网络。互联就是区块链之间能够跨链交易,所以跨链是异构区块链互联网的基础能力。比特币、以太坊等公链加入到区块链互联网,是成果之一,而不是跨链的全部内涵。所以我的看法是,跨链概念没有错,但是如果理解成为跨而跨,就没有抓住重点。把异构区块链实现跨链交易定义为跨链。那么我们来说说什么不是跨链,或者说市面上有哪些所谓的跨链是在挂羊头卖狗肉。首先跨链必须是参与的两条或者多条区块链的状态发生了一致性的改变,都是写操作。如果一边是读,另一边是写,或者说是根据一个区块链的数据去修改另一个区块链的状态,这不叫跨链。当然从多个链读数据,更加不是跨链。还有一个要求,不但要实现跨链交易,而且跨链交易应该是去信任的。还是拿Cosmos通证跨链转帐举例,从A分区经过Hub转10个通证到B分区,你需要相信A分区、Hub和B分区三个区块链网络。这三个网络到底值不值信任呢?你需要自己判断,如果去中心化程度高,PoS质押通证的总价高,被攻击的难度大,就值得信任。有些所谓的跨链方案,Hub本身不是区块链,而是个网关,那么网关值得信任吗?答案是不知道,网关是单一实体运营的计算设备。信任网关的前提是信任运营实体。例如我们把钱存在工商银行,通过支付宝来花钱,也没什么不妥。阿里和工商银行都值得信任,所以他们运营的网关也值得信任。但是无论网关是否值得信任,都不属于我这里所谈的跨链。我们说的跨链,Hub要采用分布式账本技术,而且是去中心化的运营,从而实现信任最小化。以后再看到所谓的跨链项目,可以自行分辨,是不是支持异构区块链的去中心化跨链交易。如果不能支持,那么它所说跨链跟Cosmos和Polkadot不是同一类概念。十八、下一代DApp开发技术
我个人认为目前已经落地的DApp只有一个,就是比特币。比特币是去中心化的价值存储型货币,或者叫数字黄金。因为是价值存储型的,所以它对性能的要求很低。在未来几年,去中心化的支付结算型货币和交易所很有可能落地。支付结算型货币的币值,应该跟直接或者间接地跟购买力挂钩。那么现在usdt、tusd、摩根大通币,以及未来的facebook币、央行加密法币,都是中心化的。做不到去信任、无许可和抗审查。闪电网络和MakerDAO是重要的尝试,有可能带来突破。货币、借贷、资产发行、资产交易、保险、衍生品…我们离颠覆传统金融、改变世界也只隔着几个真正落地的DApp。随着区块链扩容,基础设施给力了,DApp就可能迎来真正的爆发。程序员要怎样才能成为DApp弄潮儿,我们梳理下一代DApp开发技术。注意DApp是互联网应用。互联网开发的后端、前端、移动端、浏览器、桌面端技术仍然有效,但不在讨论范围之内,我们只谈实现去中心化的技术。三个扩容思路,每个都有多种实现,我只列出代表性项目。代议制扩容的代表是EOS和波场。分层扩容分为状态通道和侧链两个分支,状态通道的方案有CelerNetwork、Counterfactual等,侧链有Loom、OmiseGo等。分片的三个典型方案,Serenity、Polkadot和Cosmos已经逐一介绍过了。这么看来,下一代DApp开发技术似乎有很多中。其实不是,DApp开发目前只有种,就是智能合约。智能合约有两个主流的方案,EVM和Wasm。我们列出的项目,基本都支持EVM,现在或者未来会支持Wasm。EVM的主力开发语言是Solidity,围绕Solidity已经形成生态,包括Truffle/Remix/OpenZepplin等工具、大量的技术资料、实例、社区讨论答疑等等,而且也有相当一批程序员会Solidity语言。所以掌握了Solidity,可以确保在大多数公链上开发DApp。目前唯一的例外是EOS,EOS不支持EVM,而是一步到位使用wasm。wasm会是未来智能合约开发的标准,可以支持用多种编程语言开发智能合约,包括java\\c++\\go\\rust等等。Cosmos和Polkadot提供了开发DApp的第二种方式,就是开发应用区块链。与智能合约相比,应用链的优势是具有极大的灵活性。开发者可以自行选择或者定制共识算法、治理模型、经济模型等等,并根据实际需求配置硬件和网络。但是另一方面,应用链开发、运营的成本会显著高于智能合约。例如要部署Cosmos的分区链,至少需要4台以上的主机,而且要质押相当数量的Atom通证,才能接入Hub。可以预计,达到一定规模的团队,才有足够的资源开发并运营Cosmos或者Polkadot的应用链。简单总结就是:下一代DApp有两类开发技术,轻量级的智能合约,和重量级的应用链。个人或者小型创业团队会主要使用智能合约。大型企业或者有充裕资源支持的创业项目,会使用应用链。还有一种合理的做法是,先用智能合约实现DApp,在获得验证和反馈之后,再开发功能更完善、使用体验更好的应用链。十九、开发者如何选择?
后端或者全栈工程师如何选择DApp开发技术呢?我认为未来的区块链世界会是异构区块链互联的网络,多个平台都有会各自的生存空间,不必轻言谁将取代谁。所以我的建议是:主要考虑当下的条件来选择技术路线,例如当前可用平台的能力,团队成员的技能等等。而不必过于纠结未来的不确定性。如果项目已经启动,那就沿既定路线继续走下去。如果还未开始,首先明确是开发公链DApp还是开发企业解决方案。如果是开发公链DApp,那么是否需要跟现存DApp互操作。如果是,那么应该选择在现存DApp相同的公链上开发。就是说你需要互操作的DApp在以太坊上,你就在以太坊上开发。在EOS上,你就在EOS上开发。有人可能会问,不是可以跨链吗?跨链是非常复杂的技术,而且肯定不是免费的。在满足需求的前提下,实现方案应该尽量简单。所以能避免跨链,当然应该避免。那如果不需要与现有的DApp互操作呢?这里隐含了一个问题是,你的DApp会不会跟未来的DApp互操作?或者别人的DApp会不会要跟你的DApp互操作。举个例子,你开发一个通证合约,作为公司业务积分系统。如果你们公司的积分使用范围很大,是不是可以在去中心化交易所进行交易,是不是可以作为资产抵押给贷款DApp?成功的DApp应该尽量融入价值互联网的大生态。所以DApp互操作不是一个选项,而是DApp的基本需求,只是不一定要跟现存的DApp互操作。下一个问题是:DApp是不是只需要管理加密通证?如果回答是肯定的,应该优先选择Cosmos,如果回答是否定的,则应该选择Substrate。为什么呢?我们前面讲过,Cosmos能够实现跨链通证转移,而Polkadot能实现任意形式的DApp互操作。有人可能会说,Polkadot多强大灵活啊。这个我同意,但是大家应该理解,世界是公平的,没有免费的午餐。强大灵活的代价就是复杂和高成本。Cosmos在架构上比Polkadot要简单很多。因此我可以有把握地推断,至少在前期Cosmos会比Polkadot更可靠,而且使用成本更低。所以如果Cosmos满足需求,就应该选它。如果业务需求超出了加密通证的范畴,可以选择Substrate。另外前面有个分支,就是开发企业区块链应用,或者说开发联盟链应该选什么?我认为也应该选择Substrate。为什么不选HyperlegderFabric或者以太坊呢?因为商业公司推动的技术平台,注定竞争不过主流的开放平台。至于说用以太坊开发联盟链,我认为灵活性不够。企业业务通常很复杂,对性能、可管理性等有很高的要求,而且常常需要快速迭代。Substrate是完整的区块链框架,高度模块化和可定制化。Rust语言侧重安全和性能,也非常适合开发关键业务系统。二十、Rust语言
做Polkadot/Substrate开发,绕不开的问题是Rust语言。在我二十多年的开发生涯中,遇到过极少数能快速掌握新语言的程序员。但是绝大多数程序员,包括我自己,掌握一门开发语言,熟悉标准库和开发框架,都需要很长时间。所以学习一门新语言,对我来说,是个艰难的决定。近些年涌现出了很多开发语言,其中Rust语言以学习曲线陡峭而著称。到底值不值得花大量的时间来学习掌握Rust语言呢?作为一名Rust语言的初学者,我谈谈自己的看法。首先是Rust语言很棒,但是尚未流行。这不是我个人的看法。2019年StackOverflow的调查显示,按流行程度排名,Rust只能排在第21名,左边这张图只显示了前16名,所以看不到Rust。另外Tiobe编程语言指数排名,Rust目前排在第34名。再看右边的图,在StackOverflow调查最受程序员喜爱的开发语言排行榜上,Rust高居第一。而且这是Rust第连续四年排名第一,考虑到Rust1.0版是2015才发布,可以说Rust正式面世以来,一直是最受程序员喜爱的语言。而且大家知道,一门编程语言,追求高性能,和让开发者轻松惬意,通常不可兼得。比如Java和Python程序员不需要考虑内存管理,当然降低了学习和开发的负担,但是系统就要处理垃圾回收,带来性能上问题。反之,c/c++需要程序员自己管理内存,性能可以达到最优,但是前提是要把程序写对,增大了开发的难度。但是Rust似乎鱼和熊掌兼得,即达到了跟c/c++相同等级的性能,还能受到程序员的喜爱。第二个看法是,Rust语言适合高级程序员开发平台型的项目。Rust语言非常重视性能和安全,它试图通过语言规范,或者说编译器,来引导程序员写出高效安全的代码。熟悉了Rust的用法,能自然而然地开发出高性能和高度可靠的系统,不妨称为Rust之道。Rust之道认为实现某个目的通常有一种最好的方式,Rust试图在语言级别引导或者强制你采用最好的方式。如果不按照Rust之道来编码,它就让你连编译都通不过。不像Javascript等语言,总是有很多种选择,可以按自己的习惯,怎么写都可以。当然代码质量可能良莠不齐,而且可维护性很差。学习并掌握Rust之道,需要理解一些重要的编程概念,比如对象的所有权等等。没有坚实的开发经验,很难掌握。这也就是大家认为Rust语言学习曲线陡峭的原因。如果不是开发对性能和安全要求很高的平台级项目,用Rust有点杀鸡用牛刀。因为项目在性能和安全上的收益,不一定能抵消采用新开发语言导致的成本。如果要开发平台级系统或者关键业务系统,Rust就值得考虑。另外学习Rust语言可以带动自己加深对内存、线程、异步、闭包、函数式等高级开发概念的理解,对开发能力的提升有莫大好处。所以简单总结一下,就是如果你有一定的开发经验,未来可能或者有志于开发平台型的系统,当然就包括区块链开发,那么Rust语言就值得你投入时间去学习掌握。
我用罗素的名言作为本次分享的结束语——须知参差多态,乃幸福本源。真正理解并欣赏Polkadot和Cosmos设计理念的人,都不会是最大化主义者,也不会认为Polkadot的目标是替代以太坊。至少以太坊基金会和Parity公司都不这么认为。Parity公司一直是以太坊生态的重要支柱之一,他们也在积极参与Serenity开发。前些时候,以太坊基金会向Parity公司支付了500万美元,即是对Parity多年支持以太坊的感谢,也是资助他们继续开发维护以太坊节点软件。我对比特神教已经见怪不怪了,至少我能理解他们为什么那么想那么说。但是现在以太坊生态里,也开始出现以太神教的趋向,就有点不可理喻。开放是以太坊愿景的基础,以太坊也带领我们看到了去中心化价值互联网的可能性。所以我认为支持以太坊,但是反对其他区块链,是一种自相矛盾。
前面也谈过,人们对去中心化应用的需求是多样化的。Serenity、Polkadot、Cosmos和EOS,还有其他DApp平台公链,都做了不一样的设计选择,或者说是不同的折中。因此他们会非常适用于某些需求,而不太适用于其他需求。互联互通是大势所趋,任何一个生态如果选择孤立发展,就会被区块链互联网产生巨大的网络效应所挤压,最终被淘汰。因此我们可以期待,区块链的未来会百花齐放,更加参差多态,希望区块链和去中心化应用成为人类的幸福之源。
出品|Odaily星球日报文|芦荟编辑|卢晓明近期Cosmos的主网上线,把POS挖矿带入了主流视野。将代币委托给节点商,从而获取稳定的通胀奖励,这一动作成为时下staking经济中的流行姿势.
3月30日,国家互联网信息办公室公开发布第一批197个区块链信息服务名称及备案编号,GoFun出行主体公司北京首汽智行科技有限公司推出了区块链联动平台.
作者|秦晓峰编辑|卢晓明出品|Odaily星球日报 一、整体概述 本周,德勤区块链项目的全球首席技术官AntonioSenatore透露,德勤将于年底在以太坊平台上推出一个非常大的项目.
3月30日,网信办的第一批境内区块链信息备案编号出炉。BATJ的区块链无疑吸引了最多的注意力,在百度、腾讯、京东等至少3个以上的备案平台中间,阿里的蚂蚁区块链显得形单影只.
通证通研究院×FENBUSHIDIGITAL联合出品文:宋双杰,CFA;孙含儒特别顾问:沈波;Rin;JX导读自2017年发布初版白皮书以来,EOS就受到广泛关注.
2019年第19周区块链二级市场报告2019年5月5日-2019年5月11日本期报告重点内容:大盘走势:放量上行站上新阶.