我来解释一下为什么 eSpace 有这么多空块,交易还无法上链

简单概括

  1. 看到的空块是因为这些区块按协议设计只能打包 core space 的交易,不能打包 espace 的交易
  2. espace 的设计最大吞吐率是 core space 的 1/10,也就是大概 300 tps 普通转账交易
  3. 目前 espace 的吞吐率是 600 万 gas/s, 等效于 290 tps 的普通转账交易,处于满载的状态
  4. 如果交易不能上链,很可能是 gas price 不够。(但也可能是别的原因,毕竟 Conflux espace 上线主网以来,还没有这么高的 tps 过)

具体解释

为什么 espace 最大吞吐率只有 core space 的 1/10 ?

核心原因是,以太坊 EVM 的计费模型并不适应高性能公链,例如 Conflux。如果 30 tps 下每年产生 300 GB 数据,3000 tps 下每年可能产生 30 TB 数据,四年就是 120 TB 数据。这会使普通机器难以运行一个节点。

所以,为了避免账本空间爆炸,Conflux 引入了存储抵押机制,当往账本写数据时,需要付一些存储抵押。这些抵押会在数据被删除时退还。

存储抵押机制导致 Conflux 与 EVM 不兼容,导致生态发展困难。于是 Conflux 引入了 eSpace, 完全与 EVM 兼容。

完全兼容把存储空间的问题又带回来了,为此,Conflux 限制了 eSpace 的 tps 为 300 左右。

为什么共识协议只允许部分区块打包 eSpace 的交易?

既然 eSpace 只允许有 1/10 的吞吐率,就需要在共识层面进行一些限制。

Conflux 区块的 gas limit 是 3000 万,如果把每个区块 espace 交易限制到 300 万 gas,大量的合约创建交易就无法完成。现在,一个复杂合约的部署成本往往大几百万甚至上千万 gas.

所以,Conflux 的策略是,只有 1/5 的区块可以打包 eSpace 交易,每个区块的 espace gas 是 1500 万。

为什么只有 20 tps?

TPS 是一个智能合约生态还不发达的时期衡量区块链性能的指标,更合理的指标是 gas per second.

例如,EIP-1559 之后,以太坊的 gas 目标是 1500 万 gas 每个块,相当于 125 万 gas 每秒。Conflux espace 目前的实际负载大概是 600 万 gas 每秒,core space 是 6000 万 gas 每秒。

其他各种技术问题

Conflux eSpace 还没有经历过这么高的负载,所以这次真实的压测确实可能会出现一些问题,目前已知可能导致的问题有。

  1. 免费提供的 RPC 节点撑不住这么高 tps 的请求(云服务费很贵的),今天下午扩容了一些机器。
  2. 一些其他的周边 service 可能也会存在性能不足的问题,比如 scan 之类的。因为平时的负载不需要开太多机器。
  3. 交易池满了以后,如果 gas_price 不够高,系统会告诉你“交易池满了”,而不是 gas_price 不足。
  4. espace 交易池满了以后,core space 的服务也会受影响。这是一个已知 bug.
2 Likes