# Eth->Sol->Aptos **Published by:** [KC](https://paragraph.com/@kc-6/) **Published on:** 2022-08-08 **URL:** https://paragraph.com/@kc-6/eth-sol-aptos ## Content 本文旨在通过对比Ethereum、Solana和Aptos,了解公链在性能方面的现状。 Solana相对Ethereum改进了什么? 1、并行运算 以太坊虚拟机(EVM)是单线程的——EVM 只能利用一个 CPU 核心来按顺序处理交易。为了实现原生多线程,Solana必须放弃EVM的兼容性。Solana的智能合约可以利用Nvidia GPU的4096个核心来并行地运行计算。 2、减少冗余度:通过确定的领导节点轮换减少冗余度 去中心化需要冗余性。 在谷歌这样的中心化云服务中,计算只发生一次,因为用户相信谷歌是正确的。在区块链中,由于我们不能信任任何人,所有数据都需要由不同的节点进行计算和验证。 在比特币、以太坊和其他许多简单的 PoS 链中,共识的冗余度至少是O(n^2),与节点数量的平方成正比:每个区块都必须传输、检查和比较其他每个区块的工作。 对于 Solana,只有被指定的那个领导节点来生产下一个区块。在此基础上,区块分割成更小的数据包,这些数据包在节点之间广播,并将交易转发给预定的区块领导者。 3、更大的块,更短的出块时间 10MB,ETH是1MB;0.4 秒,ETH是12 秒。 带来的缺陷 当交易在逻辑上有顺序时,并行计算就会退化。 NFT mint 和 IEO 交易常常导致 Solana 网络中断。原因是:这些交易无法在 4096 个核心上同时进行。Minting NFTs 时,不知道哪些已经被 mint 了,这会导致重复和 BUG。所有在同一个 collection 的 mint 交易必须按顺序处理。一个直接含义就是,Solana 的 65,000 TPS 并不意味着用户可以在一秒钟内铸造 6 个 BAYC 集合:由于只依赖一个 GPU 核心,Solana 的按顺序处理能力可能更接近甚至低于以太坊,大约在 10 到 100 TPS 之间。 领导节点崩溃 当 Solana 接近崩溃时,负责当前的区块领导节点往往是第一个崩溃的。Solana 的低冗余设计严重依赖领导结点是否在线,其他节点都没有与当前领导节点相同的交易数据或网络角色。这意味着一旦领导节点离线,网络的其他部分需要做大量的应急工作:同意跳过一个区块,重新组织交易数据,并将丢失的交易数据转发给下一个领导节点 考虑以太坊网络,它没有领导节点,每个节点都有一份精确和重复的副本,这份副本中包含有将被放入一个区块(mempool)的交易数据。如果任何以太坊节点离线,所有其他节点手头仍有他们需要产生一个新区块的所有内容。这就是冗余的双刃剑:在理想的情况下,冗余导致了网络的缓慢;但在坏的情况下,它可以防止重大事故**。** 高昂的硬件成本 Solana节点的硬件成本高达4000美金,也因此阻碍普通用户在自己的机器上运行 Solana 节点。 Aptos相对Solana改进了什么? Aptos有 16 万的TPS,显然将自己定位为 Solana的竞争对手。 1、16 核服务器CPU 这是 Solana 的 4096 个 GPU 核心和以太坊的 1 个 CPU核心之间的一个中间地带。在处理高度可并行的任务时,Aptos 可能不如 Solana 快。Aptos 的每个CPU 核心都比 Solana 的 GPU 核心性能高得多,所以在 NFT mint 等逻辑上按顺序交易的情况下,Aptos 可能比 Solana 处理得更好。 2、冗余 相对于 Solana,Aptos 试图通过增加冗余使其网络更具弹性。Aptos 没有试图达到 Solana 的极端 O(log n) 次线性冗余度,而是设置为 O(n) 的冗余度。在每一轮共识中,Aptos 要求所有非领导者的节点同步额外的数据,以备当前领导者节点失败时其他节点需要接管。Aptos 也没有尝试对区块进行分割和验证,因为分割会在出错的情况产生额外的工作量。这么设计的结果是:当领导者节点确实失败时,Aptos 的应急处理并没有 Solana 那么混乱。 3、硬件 Aptos所有的测试都是在AWS EC2 实例上运行的,有 16 核的服务器级别CPU。Aptos还公开建议在谷歌云平台上运行他们的节点,而不是个人电脑。 Aptos 声称有 16 万的 TPS,但可能性能不如 Solana 好。16 万这个数字是在大约 100 个有权限的节点上进行的实验室测试的结果。在更复杂的实际生产环境中,如果节点更多,TPS 肯定会更低。Aptos 的内部测试也表明,随着网络扩展到更多节点,其性能将接近甚至低于 Solana目前的 65000 TPS。 写在最后 倾向于多线程而不是 EVM 的兼容性。明显更好的技术为什么不用? EVM/Solidity的dapp数量大,都去迎合?NO,相信程序员的学习能力,以及某些天才开发出好Dapp的吸引力。各种Rollup可能也是不是最好的选择。 公链需要根据使用场景进行优化。甚至AWS(亚马逊云服务)也为不同的使用场景提供了几十种数据库配置,因为没有一个万能的解决方案。区块链是数据库。 ## Publication Information - [KC](https://paragraph.com/@kc-6/): Publication homepage - [All Posts](https://paragraph.com/@kc-6/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@kc-6): Subscribe to updates