从以太坊到solana,再到Aptos浅析

本篇内容由UST DAO社区创作与长期更新维护,收藏订阅不迷路,也欢迎大家加入我们社区探讨财富密码。链接:

https://linktr.ee/ust_dao

本文是在阅读一些关于solana以及aptos资料,特别是文章【翻译 以太坊->solana->Aptos:高性能区块链竞争开始了】后,发表一些自己的看法。

这篇文章在目前已经找到资料中算是比较全面而且较有技术性的描述了solana优势及问题和aptos诞生。但是我还是有些东西要补充在这里,仅代表我此时的在学习过程中的观点

高性能三角

首先对作者这里提出的另类高性能三角持不同意见。作为曾经就职于知名养老院性能优化方向ppt爱好者,对于软件工程的方法学还是有些研究的,性能本来就是一个tradeoff问题 既是跟成本的tradeoff, 也是时间跟空间的tradeoff。

另外在分布式存储领域已经有了CAP,BASE,ACID以及区块链中不可能三角(可扩展性,去中性化,安全性)基本把这个领域难点概括出来了。比如CAP理论单纯从软件设计角度说明软件系统的三个属性不可能同时满足,不可能三角也是从软件属性角度出发。而作者文中性能,可靠性这两个属性软件属性,efficiency属于项目或者工程属性。当然也不是说两个软件属性就不能跟其他东西去组概念,但我们可以再仔细分析下。

前面说了性能跟成本本来就是需要去tradeoff的,其实可靠性跟成本也是需要tradeoff。在分布式系统中为了提高可靠性,一般我们都是需要做relipa(副本),而副本存储就需要成本,多一个副本就多一份存储成本,但是多一个副本增加一份可靠性。所以说可靠性跟成本也是对立的,那么在这个三角中三组(performance跟reliability,performance跟efficiency,efficiency跟reliability)其中的两组都是对立的,那不就剩一对了吗?组不成啥不肯能三角了啊。

当然了这段可能纯属我有点较真,认为作者提出这个东西有点生硬,是想把后面的内容需要往里面套。但对大部分读者来说这也无妨,反正能获取到一些信息即可。

solana开发背景

了解solana当时开发背景有助于我们更加深入理解solana在架构设计上的意图.

以太坊的低吞吐量是有目共睹的,每秒才能处理十多笔事务(可以单纯理解为一次转账:发送—>接收完整过程)。这样的tps相比可伸缩性良好的中心化应用 一个节点每秒就可以轻松处理几百tps,更不用说系统在水平扩展后,整体系统处理能力了,是当前以太坊处理能力的成千上百倍。 我看很多文章会把区块链tps跟visa tps 来对比,只能说相对合理,因为区块链最初的应用场景就是支付,但毕竟现在早已经不只有转账等支付数据上链,还有很多其他数据 都在链上。

而且目前区块链应用场景尚在开发尝试中,用户群体规模有限,但想让整个区块链继续发展,从web2领域中承接用户到web3,这点处理能力显然是远远不够的。

所以各种区块链高性能方案应运而生。主要分为两类: 1)layer2方案。我们熟悉的arbitrum以及op就是这种 也就是在layer1基础上在套一层。同时把多笔计算捆绑在一起挪到layer2,但数据继续存回layer1. 这样做的好处就是数据一致性能够得到完整保证,但天花板也很明显,存储仍然受限于layer1的性能

2)侧链。也就是常说的公链l1 说它是侧链是相对以太坊来说,因为都是需要通过桥跟以太坊连接

公链里有代表性的方案 1.sharding

2.solana方案

3.其他

不管是sharding 机制 还是 solana poh的leader 机制 都是借鉴了 web2 传统分布式存储系统设计经验。至于什么是sharding,后期再专门出这块内容

solana 性能为什么高

1.并行化计算

相比evm单线程机制,这确实是一个性能改进点。只不过solana既然能利用GPU多核心进行并行计算也能跟aptos一样使用cpu并行计算。这是文中没有提及到的

2.设计了leader机制(POH)

文中后面说的几点其实都可以归纳为solana标志性的poh机制,poh机制需要有poh generator,于是就有了leader机制。

关于poh机制理解,大家可以看Solana官方在youtube动画视频能比较概括的了解。

poh机制是solana针对pow机制中出块慢进行的针对性优化,就是我不去全部都校验一遍在出块,我先排序打时间戳出块然后再去校验。而进行排序就需要同步操作了,也就是顺序进行,所以就有leader之说,统一由一个节点对用户请求事务进行全局排序。

不少有点计算机知识的人都对solana这个有leader机制的公链有误解,认为有leader就不算完全去中心化了。其实不然,有没有leader跟是否去中心化关系不大,大家也可以看看以太坊官网关于去中心化要点的说明。

当然我也可以从另外一个角度反驳。在分布式存储设计领域里很多系统都存在leader的设计,有leader很对时候也会简化一些东西,当然也有没有leader的,比如cassandra;难道你要说Cassandra是去中心化系统吗?肯定不是,它没法解决拜占庭容错问题。

没有leader的分布式系统不一定是去中心化,而有leader的系统也不一定就不是去中心化,我认为关键还是在于是否解决拜占庭容错问题,也就是是否是一个可开放的网络,是否能够在有欺诈节点的情况下仍能达成共识。

如何看待solana 目前存在的问题

1.mint顺序 问题

能并行的地方当然是并行好。有同步互斥的地方就需要设计好了,solana的问题看上去是多线程同步互斥锁的问题,可能太重导致多线程上下文切换严重,导致比单线程还要慢。这算是设计问题,但我觉得应该是可以通过一定程度重构解决的,并非死穴。

2.leader挂了会产生连锁反应

这个问题没怎么看懂。我理解solana不是分片,应该也存储所有数据,所以leader能正常切换为什么还需要很多数据同步 ?

另外leader failover 机制也不难啊,不应该没设计,可能还是一个bug。

总的来说,solana目前存在的问题,我认为是可以解决和再次避免的。从最近一次5月份宕机到现在也有快三个月了,solana nft市场也在这段时间达到顶峰,但整条链没有再down掉过,可见团队最有可能是解决了而不是那种暂时性修复。

而且大家都是开源项目,到最后好的东西都会相互借鉴(大家都抄的差不多:smile:)。

aptos开发背景

大家都知道是从facebook diem团队出来搞的。而diem项目我记得是很早之前就开始了,应该不比solana晚。所以它也不是专门为解决solana问题不足而设计,也还是针对以太坊老问题解决作为目标,不过有比较鲜明的一点是它有独立的编程语言move

aptos架构

尽然没在官网找到架构方面的说明文档,目前知道也是跟solana一样单分片方案。而且从上面那个文章看莫不是也有leader这样的设计?

谷歌了一圈aptos文章很多,纯技术类解析的暂时还没发现。所以观点评价不多。

主要想说的是重新搞一个编程语言的生态都做得很难。这也就是为什么会有move语言开发多少k一天的传闻,不管真假,到处传这种显然第一步还是要造势拉开人。距离生态丰满还有一段距离。

另外软件行业标榜高性能语言的,move也不是第一个。他们最后都没有被大规模使用,主要原因在于从整体系统架构层面看性能优化,语言方面的优化总是有限的,大多数还是在架构设计,机制创新方面的优化要划算的多。

但不管咋样,aptos后面还会继续了解下去,毕竟团队还是很不错的,一般来说互联网团队出来比纯研究型lab出来的在实战方面更有经验。另外公链或者说任何一个互联网产品最后是否成功都不仅仅是由技术因素决定的。

作者twitter

https://twitter.com/iyonger78