# Eth->Sol->Aptos

By [KC](https://paragraph.com/@kc-6) · 2022-08-08

---

> 本文旨在通过对比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(亚马逊云服务）也为不同的使用场景提供了几十种数据库配置，因为没有一个万能的解决方案。区块链是数据库。

---

*Originally published on [KC](https://paragraph.com/@kc-6/eth-sol-aptos)*
