MeerContract之为什么跨链

MeerContract之为什么跨链

熟悉Qitmeer的朋友都知道,Qitmeer的智能合约的亮点是支持跨链。社区很多朋友从字面上理解误以为Qitmeer不支持智能合约,认为跨链就是多搭一条以太坊的私有链专门用于执行智能合约,然后qitmeer主链通过跨链协议和合约链。智能合约一直是社区最关注的话题之一,那我们就一起走近Qitmeer智能合约。

首先要回答的是为什么要用跨链的智能合约的解决方案。要回答这个问题,我们首先得问现在的智能合约存在哪些问题。在我看来,最大的两个问题是智能合约的标准并未统一以及智能合约的性能。

先谈谈标准的问题。也许目前的区块链生态确实存在以太这样具有统治地位的智能合约解决方案,但是仍然有许多有竞争力的公链有不同的智能合约标准,比如EOS, Solana等。区块链的基础设施还存在许多问题,比如手续费高昂,交易吞吐量低,监管政策不明朗等核心问题还待解决,以太本身也在不断完善中,很难说以太会一直长期保持统治地位。所以Qitmeer团队在是否采取新兴公链深度集成以太智能合约系统的这种解决方案是非常谨慎的,如果未来出现比以太优秀得多的智能合约系统,那就存在是否需要升级的两难问题。

完全重新设计一套智能合约需要很高的成本,就目前来看以以太为代表的智能合约方案已经非常丰富了,与其重复发明轮子,不如积极地拥抱整个生态。事实上,许多新兴的智能合约系统,也并非像以太那样针对智能合约的特点重新设计了虚拟机和脚本系统,而是采取风险更小的集成高级语言编译器的方案。比如C++开发的EoS,就集成了可以解析C++代码的WebAssembly 虚拟机,而rust语言开发的Solana,其智能合约就可以直接解析rust代码,NervOS的Capsule框架支持rust语言开发也类似 。直接集成高级语言的虚拟机除了可以利用现有的开源编译器资源从而快速实现智能合约系统,高级语言的强大表达能力也更有利于开发者高效实现智能合约,但是高级语言过于自由的表达能力也对开发出稳定的智能合约提出了挑战。

Qitmeer提出的跨链智能合约则一种非常灵活的解决方案,让Qitmeer充分拥抱整个区块链生态。无论智能合约如何发展,最终哪个项目成为最终的标准,对于Qitmeer来说只需要实现一套跨链协议,则可以迁移过去。除了灵活之外,开发效率也是非常重要的考虑。Qitmeer可以把精力更多地用于打磨跨链协议而非重复发明一套智能合约系统,让主流的智能合约设计能更好地服务于Qitmeer生态。

再谈谈智能合约的性能问题。相信很多朋友对于许多明星项目的ICO以及加密猫造成以太坊的拥堵仍记忆犹新,公链的去中心化会导致每笔交易都要全网的节点进行验证,所以单个爆款的DApp完全可能造成整个公链的拥堵。提高公链本身的扩容能力肯定是一个思路,但是这里存在着扩容能力和去中心化之间的矛盾,所以如果像Qitmeer这样坚持以不牺牲安全性和去中心化的经典区块链价值观的前提下进行扩容肯定会受到网络带宽或者节点计算能力等物理极限的约束,而网络的智能合约应用却是无限的。所以从长远看,网络即使扩容了也无法承载智能合约应用,更不用说未来智能合约的复杂程度以及数量会远超现在,所以更合理的是采用链下解决方案。如果把与主链跨链交互的链看作主链的侧链,则跨链也可以认为是一种链下扩容方案。合约可以在交互链上执行,故而并不会影响主链的性能。

跨链的智能合约解决方案,可以让Qitmeer拥抱整个区块链生态,也解决了智能合约拖垮公链的隐患。但是跨链的智能合约有多种解决方案,如最开始提到的搭一条私有链的方式。下一期我们继续探讨这种方案存在的问题,Qitmeer的跨链智能合约的是如何解决这些问题的。