- 基于智能合约的Dapp
- 二层网络解决方案
- fork以太坊
但是这三个方案在开发运维成本、性能和灵活度方面有或多或少的缺点。智能合约的开发运维成本比较低是一个最大的优势。但是受限于底层公链平台,实际能够实现的逻辑有限。比如在以太坊上目前就很难检验基于ed25519的签名。同时,项目需要与各种潜在的同平台其他应用竞争资源。比如当ERC20的Tether转账比较频繁,或者某个菠菜项目很火的时候,用户需要为智能合约的每笔交易花费更多的转账费用,而交易的确认反而会更慢。
二层网络和fork以太坊主要是开发运维成本比较高。对于二层网络,需要为每个主流的智能合约平台都适配一套系统(比如为以太坊、EOS、本体等),开发在很大程度上是重复劳动。而每套系统的运维也需要投入精力。我们这里还不考虑二层网络会在一定程度上受限于底层公链。而fork以太坊,除非是一些山寨项目改几个名字,否则但凡要做一个正经项目就需要对某一个或多个模块做出性能上的优化或定制,就需要一定数量的优秀开发。而项目方还需要投入一定的资源做应用逻辑开发。总之,这两个方案比起智能合约,需要多得多的开发资源。
还有一点,这三者在治理升级机制方面都不太成熟。首先这三者的治理一般都是线下治理,在公平公正公开等方面有着众所周知的缺陷。其次,智能合约天生就没有对升级进行支持,很多以太坊多签钱包就深受其害。而二层网络或fork以太坊链则需要社区统一在线下升级节点,稍有疏忽就会产生分叉(比如近期以太坊Ropsten测试网的Istanbul升级由于大部分算力没有升级节点软件,实际上已经发生了分叉)
二、应用链开发框架的好处
三、Substrate 框架的优势
- 抽象度高,更通用,开发工作量小。实际上借助于框架提供的模版,开发者只需要注重自己应用所需要用到的存储、函数逻辑和事件(event)的编写,类似于加密猫这样的应用做成应用链一共也就小几百行代码。同时使用官方提供的前端,无需额外编程就直接可以和链进行交互。能够做到这一点和Parity积累了多个区块链客户端的开发经验密不可分。
- 周边工具的生态比较完善。比如说基于官方提供的前端库,很容易就可以开发出应用链的前端交互页面。而基于官方和第三方的rpc客户端库,很容易编写定制的rpc客户端。
- 由于所有的Runtime(应用逻辑)都写在了Wasm中,基于Substrate的应用链可以支持在线升级。也就是说当链上治理通过了某个升级决议之后,全节点即使不手动升级软件也会运行最新版本的逻辑。这一特性使得链上治理和升级变得无缝,体验上和传统软件开发中的升级比较接近,基本解决了上述三个方案的治理升级问题。
- 目前官方已经给出了WASM和EVM的模块,如果想要想要开发一条支持智能合约的链会非常非常迅速。
其中1和2两点使得基于Substrate的应用链开发对小型团队非常友好。在比较熟悉Rust的情况下,可以说开发一个Substrate应用链的工作量和开发一个以太坊Dapp的工作量基本相当。这也是我们近期的所有黑客马拉松的作品都能够在短时间内开发完成的原因。