了解Algorand、以太坊和波卡在共识机制、智能合约、开发体验以及应用生态等方面的差异。
撰文:真好吃
同为公链,这三个项目都是做什么的?想要解决什么问题?
三个项目都是想要实现一个去中心化的无许可公链平台,承载去中心化的应用。即便如此,他们的愿景以及实现愿景的方法却有着本质区别。
以太坊作为公链老大哥,初衷是想做一个世界计算机。以太坊是第一个提出了将一个更图灵完备的虚拟机整合进区块链系统的公链。EVM负责管理协议层的状态储存空间,并且在链上完成计算工作。后面随着时间的推移,越来越多的人认识到区块链更多的应用空间是在金融领域,于是以太坊的定位也演变成了一个底层金融平台。以太坊目前饱受链上处理能力的困扰,正在着力发展ETH2.0的相关技术,包括Layer2,分片以及零知识证明等等。
波卡是与Cosmos同期诞生的项目,两个项目的关键词都是跨链。波卡希望应用开发者们都可以使用Substrate框架为自己的应用开发出一条仅有单一应用的平行链,即ParaChain,并且将这所有的平行链通过一条主链相互连接起来,即RelayChain,从而实现链操作间的互操作性。
Algorand的愿景是做一个金融平台,用来承载各种金融资产和金融产品。这与以太坊在现阶段的定位相似,然而不同的是Algorand从一开始就已经坚定了这一方向,使得Algorand的整个底层协议和产品线都对于这一应用方向做出了优化。Algorand不仅有着足以满足金融交易速度需求的性能,同时还在协议层提供了各种针对实现金融产品所需要的特性,比如原子交易和ASA等等。
那么,他们的共识协议都是什么?
以太坊使用了与比特币类似的基于工作量证明的共识算法。与比特币的中本聪共识相比,以太坊使用了不同的哈希算法,防止使用ASIC进行挖矿;同时也使用了基于GHOST协议的最长链选择算法,允许叔块的存在。这些优化使得以太坊相对于比特币有着性能上的提升,但依然无法满足金融产品的需求。
波卡的协议层分为了两层:上层为由多条平行链构成;下层是中继链。上层的平行链会由下层的中继链提供安全性保障,每一条平行链需要获得中继链上的插槽,从而获得来自中继链的安全保障和实现两者之间的跨链服务。中继链使用的共识算法包含了两个组件:GRANDPA和BABE,分别用于产生区块和对区块产生共识。同时,中继链使用权益证明协议作为节点准入机制,其中包含了四个节点角色,用来维护和监督节点委员会的产生和行为。
Algorand使用了基于可验证随机数的共识算法。Algorand共识算法通过所有节点在本地运行一个类似于抽彩票的VRF算法,来决定是否能够参与到每一轮的共识当中。被选中的节点将能够提出区块,并和其余节点一起验证该区块,并针对其达成共识。Algorand是用了纯粹的权益证明机制作为节点准入机制,即每个节点参与到共识中的概率与其所拥有的权益呈正相关。Algorand共识算法是第一个使用密码学工具实现性能提升的共识算法,简单而优雅,后续包括Difinity在内的许多知名公链都是用了VRF这一工具来实现共识算法。
他们使用的开发语言都是什么?智能合约有什么特性?
以太坊的EVM拥有一套包含142条指令的指令集。基于该指令集,以太坊使用Solidity语言的EVM编译器来进行智能合约的开发。EVM是第一个接近于图灵完备的链上虚拟机,这让通过EVM实现的智能合约拥有较高的灵活性。目前EVM也支持了类似Python的语言,即Vyper,在以太坊上进行开发。
波卡没有智能合约这个概念,它的应用开发是基于Substrate框架的,即每一个应用都是一条链。开发者在开发时需要对Substrate链的协议层进行配置,并且添加需要的存储空间和业务功能模块,最后自行运行自己定制好的Substrate节点软件。Substrate开发使用了Rust语言,同时还有基于WASM的虚拟机环境。
Algorand的开发包括两部分:使用Algorand的原生特性和开发Algorand智能合约。Algorand提供的两大原生特性是原子交易和Algorand标准资产。这两个功能是金融产品中最常用的两个功能:标准资产用于发行代币,用于替代金融资产;原子交易用于在没有中间人的情况下实现代币的交换。Algorand智能合约分为无状态合约和有状态智能合约。两者区别在于使用需要使用链上的状态存储空间,:如果仅仅需要简单的逻辑判断功能,那么无状态合约的能够快速低成本的完成这一过程;而如果需要在链上存储一些数据,那么就需要使用有状态智能合约来实现。
所以他们的编程模型是和开发体验是怎样的?
以太坊的智能合约开发类似于普通的软件应用开发,开发者可以较为自然的存储数据和进行逻辑判断。这给了以太坊开发者们较高的灵活性,可以实现非常复杂的应用,但随之而来的问题就是安全性。直到今天,以太坊应用出现漏洞并被黑客利用的情况依然时有发生。
波卡的开发体验比较独特,由于是使用Rust针对于链进行开发,在底层实现各种应用逻辑。开发者通过开发应用的功能模块,并将其与协议的共识,网络和存储模块组合起来,变成一条新的链,从而实现应用。这要求开发者对于Rust语言和区块链底层架构都有着较深的理解。
Algorand的开发是由俭入奢的,如果应用只是需要发行和交易一个代币,那么Algorand原生自带的ASA和原子交易功能就已经能够满足用户的需求;如果应用想要更进一步,希望能够实现一些自动化的托管和服务,那么无状态智能合约就可以满足要求;如果想要实现更复杂的逻辑,比如投票和资产抵押等等,则可以使用有状态智能合约实现。越是简单的应用就越可以用简单的逻辑去实现,这不仅让应用更容易开发,同时也更保证了应用的安全性。Algorand使用了一个指令集,即TEAL-TransactionExecutionApprovalLanguage,来完成智能合约中的逻辑和状态操作,同时提供了一个基于Python的实现PyTeal让开发者可以使用Python来进行应用开发。同时Algorand还提供了Java,Javascript,Python和Go四种语言的SDK供开发者使用,帮助开发者更加轻松的完成他们的应用开发。
最后他们的应用生态如何?
以太坊目前拥有着最大的应用生态,不仅各种中心化应用会选择以太坊作为代币发行的首选底层平台,各种去中心化应用也会首先选择以太坊来构建其智能合约。
波卡生态目前也在逐渐发展中,主网上线后也有着许多团队使用Substrate来开发他们的项目主网,并期待在未来接入波卡的中继链主链实现各个项目之间的跨链。
Algorand的生态目前主要由各类资产构成,不仅包括USDT和USDC在内的稳定币资产,还有包括Props和Republic在内的证券代币和功能性代币。除此以外,Algorand也在积极的构建金融应用生态,与各种知名组织达成合作,为他们提供去中心化的解决方案。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。