Sonic区块链技术调研

 

Sonic 是由 Fantom 团队孵化和主导开发的新一代高性能 Layer1 区块链,是对 Fantom Opera 网络的继承与重构。

Sonic区块链(原Fantom Opera升级版)通过多项核心技术革新实现了“最快EVM兼容链”的目标,其高性能源于以下四层架构的创新设计:

一、共识机制革新: DAG结构与异步拜占庭容错(aBFT)

1.  Lachesis共识算法(SonicCS 2.0)

1.1 并行Event事件处理

Sonic 网络采用基于有向无环图(DAG)的Lachesis共识机制,支持验证节点并行生成并广播事件(Event),每个事件可以包含多个交易(Transaction)。与传统区块链严格线性区块结构不同,Sonic通过事件图(Event DAG)来表达各节点生成事件的因果顺序和依赖关系,使交易执行与事件生成可以在多个节点间并发进行,显著提高系统吞吐量与响应能力。

每个节点独立地将自身生成的事件(包含本地用户提交的交易)链接至其已知的前序事件,通过结构性引用构建局部DAG。在事件被广播并被其他节点接收后,各节点通过Lachesis共识协议异步地对事件进行排序与确认。通过这种方式,网络无需依赖严格同步的出块过程即可实现共识,降低了共识延迟。

 

image

 

1.2 每个事件的 Lamport 时间戳

在 Lachesis 中,每个事件有一个 Lamport Clock 值,用来表示它在整个 DAG 中的“逻辑时间”。

✅ 核心规则如下:

1.  每个节点维护一个本地计数器(初始为0)。

2.  本地事件发生时:计数器 +1。

3.  发送消息时:把当前计数器值一同发送出去。

4.  接收消息时:接收者将自己本地计数器设为 max(本地计数器, 收到的计数器) + 1。

这样,每个事件都被赋予一个递增的逻辑时钟值,从而我们可以建立事件之间的“happened-before”关系(→)

1.3 Root 的产生

每个验证节点持续创建自己的 Event,并将最近收到的其他节点 Event 的 hash 引用进来,构成一个 DAG。

当一个新 Event 能够通过其引用路径“看到”(i.e. 通过引用链可达)超过 2/3 的验证节点的最新 Event 时,它就被标记为一个 Root Event

● ✅ 无需额外投票;

● ✅ 是基于本地信息和引用关系自动判断出来的;

● ✅ 所有 honest 节点最终会选出一致的一组 Root。

1.4 Clotho 的选取

Clotho 是一组候选的最终共识 Event,它从 Root 中选出。

● 某个 Root 被后面的一些 Root “看到”,当这个 Root 被2/3 的 Root 引用时(即“被看到”),它就成为一个 Clotho 候选;

● 这实际上也不需要发起专门的 P2P 投票消息,而是通过 DAG 中的引用信息(事件之间的连线)隐含完成。

● ✅ 所以 Clotho 的产生也是“隐式投票”,不依赖额外通信;

● ✅ 是节点本地根据 DAG 分析得出;

● ✅ 每个节点都会得到相同的一组 Clotho(最终收敛)。

 

1.5 为 Clotho 分配共识时间戳,变为 Atropos

一旦一个 Clotho 候选在多个节点中都被确认:

1.  各个 honest 节点 都会试图为该 Clotho 事件选出一个“时间戳”

a.  👉 这个时间戳不能随便选,而是通过一种确定性的方法得出:观察引用了该 Clotho 的 Root 所处的时间;

b.  从这些 Root 所报告的时间中取中位数作为该 Clotho 的时间戳;

c.  这个中位数时间就是该 Clotho 事件的 Atropos 时间。

2.  如果多个 honest 节点都为该 Clotho 事件分配了相同的中位时间戳,那么它就变成了 Atropos

3.  所有节点会最终对这些时间戳收敛,因此每个 Clotho 最终确定是否晋升为 Atropos,以及其确定的共识时间。

1.6 SCC(Sonic Certification Chain)区块打包

一旦某个事件单元(event)在 DAG 中被选为 Atropos,意味着它在整个 DAG 中的相对顺序已经确定,可以用于驱动全局有序链(SCC)的构建。

在 DAG 共识中,事件是异步并发生成的,而 SCC 出块的目的是将这些 DAG 事件线性化,生成一个全序的区块链序列,以供 EVM 执行和状态转换使用。出块流程如下:

步骤一:事件排序

● 节点根据 DAG 共识确定的 Atropos 序列,按全局时间戳或 DAG 层级进行排序。

● 每个 Atropos 事件背后可能包含多个普通事件(event block),这些事件也被排序。

步骤二:构造区块

● 节点从排序后的事件中提取交易(transactions)。

● 将交易按顺序打包进一个 SCC 区块,形成与传统区块链类似的数据结构(包含 transactionsRoot, receiptsRoot, stateRoot 等)。

步骤三:执行交易

● 使用 SonicVM 对区块中的交易进行顺序执行,计算新的世界状态(state)和状态根(stateRoot)。

● 如果存在并行执行机会,也可能在 VM 内部启用局部并发(详见 SonicVM 的 optimistic exec 模式)。

步骤四:广播新区块

● 构造好的 SCC 区块通过 gossip 协议或定向传播向其他节点广播。

● 区块中包含 Atropos 编号(epoch+index)用于索引与验证。

1.7 共识流程梳理

通过Lamport时间戳与中位时间计算实现事件的全局排序,确保异步环境下的强一致性,交易确认时间压缩至 0.7秒

以下是事件在 DAG 中从普通 Event 成为 Atropos 的过程(这是 Lachesis 的核心共识流程):

1.  所有节点不断生成事件并加入 DAG

2.  每个事件广播后会被其他节点的事件引用,当被超过⅔节点引用,它就晋升为 Root

3.  一些 Root 事件被判定为 Clotho 候选(通过观察引用关系和 Frame 层);

4.  多数节点投票确认 Clotho;

5.  被投票确认的 Clotho 最终晋升为 Atropos

6.  所有节点根据 Atropos 的时间戳对所有已确认事件排序,形成一个全局一致的顺序(并打包为 Block)。

2 为什么 Atropos 能加快交易确认速度?

1.  异步确认、并发推进

a.  不像 PBFT、HotStuff 等共识算法需要几轮广播和同步锁,Lachesis 是 异步推进的,事件只需被足够多节点引用,就可以被选为共识基础;

b.  因此没有「共识回合」,确认速度更快。

2.  局部达成共识后即刻确认

a.  某个 Event 一旦成为 Atropos,其祖先事件也就被视为“已共识”;

b.  节点无需等待所有事件同步完成,只要 DAG 的一部分稳定即可快速确认。

3.  逻辑时间戳(Lamport Clock)+ DAG 结构

a.  节点无需强制同步“谁先谁后”,而是通过事件引用关系 + Lamport 时间进行排序;

b.  确保交易顺序唯一确定,避免因链重组或分叉导致确认回滚。

4.  Finality 是 deterministic 的(非概率)

a.  一旦 Atropos 事件被选中,其祖先交易就不可逆了,无需额外等待“6个区块”或“重组窗口”。

 

 

二、存储引擎优化: Carmen数据库(SonicDB)

Sonic 的存储引擎 CarmenDB 采取了扁平化、非 Merkle 化的设计方式,有几个关键特性:

1. 取消传统 Merkle 状态树

● 不再维护类似以太坊中的 Patricia Merkle Trie,这种树状结构的最大特点是便于验证状态哈希(即根哈希)用于共识或轻节点验证(SPV)。

● Sonic 认为在一个并行异步的 DAG 架构下,这种传统的「全局状态快照」成本高、延迟大,反而拖慢吞吐量,因此摒弃它。

2. 不支持轻节点(SPV)

● 正因为没有了全局状态树,也就没有可验证的根哈希,因此无法像比特币或以太坊那样支持 SPV(简化支付验证)节点

● Sonic 设计更偏向于“全节点+高性能”,而非轻节点或移动端友好。

状态快照 + 标签化数据定位

✳️ LiveDB(当前状态数据库)

● 只保留最新状态数据,不保留历史。

● 每当交易改变了某账户的状态,其旧状态会被「修剪掉」而不是保留(Live Pruning)。

● 这样可以大幅压缩数据库体积(官方宣称从 2TB → 300GB)。

✳️ ArchiveDB(历史归档数据库)

● 如果有节点或外部需求(比如审计、区块浏览器),可以选择将历史数据持久化在 ArchiveDB 中。

● 这部分数据是“冷存储”,对实时共识无影响。

✳️ 标签化 + 扁平数据

● 不用路径散列树状结构定位数据(如 keccak256(keccak256(key)))。

● 而是用类似「标签/命名空间」直接映射,例如 account:0xABC123.balance → 100。

● 这种方式检索速度更快,减少无谓路径遍历,提高交易执行效率。

 

三、执行层创新: SonicVM虚拟机与即时编译(JIT)

为了突破传统解释型虚拟机的性能瓶颈,SonicVM 引入了多项执行层级优化手段:

1. 即时编译(JIT, Just-In-Time Compilation):

○ 在合约执行过程中,SonicVM 会将智能合约的 EVM 字节码实时编译为宿主机器架构下的机器码(如 x86_64、ARM)。

○ 避免逐条解释执行带来的指令解析与上下文切换开销,大幅提升执行效率。

○ 执行速度比传统 EVM 提升数倍,为支持高并发高 TPS 奠定基础。

2. 超级指令(Super Instructions):

○ 将常见操作序列(如:SHA3 哈希计算、字符串拼接、内存复制等)合并为原子级“超级指令”。

○ 这些 Super Instructions 预先编译为本地高效指令,减少指令跳转与堆栈操作,极大提升 CPU 执行效率。

○ 对于热点合约代码块,支持动态优化路径,进一步压缩执行延迟。

○ 目标系统吞吐可达 10,000 TPS(当前),未来目标 400,000 TPS

3. Gas Power 反垃圾机制

为了防止低成本滥发交易对网络造成拥塞,Sonic 引入一种新的资源计费模型:

● Gas Power(气力值):

○ 每个验证者拥有一个随时间自动恢复的 Gas Power 值,表示其可用的网络操作“能量”。

○ 创建事件(事件是 Sonic DAG 中的核心结构,相当于区块)时需要消耗 Gas Power。

○ 若频繁创建事件,Gas Power 会迅速下降,从而抑制滥用行为。

● 抗 DDoS 机制:

○ 恶意节点无法以极高频率广播事件或发起交易攻击,因为其 Gas Power 会被迅速耗尽。

○ 无需依赖交易手续费(如传统 Gas)来完成反垃圾功能,系统抗压能力更强。

 

 

四、BLS 签名与 SCC

BLS 签名在 Sonic 共识中的应用:SCC(Sonic Certification Chain)

✅ 背景

Sonic 的核心共识机制基于 DAG 拓扑结构,其中事件(event)之间存在因果关系。但最终要落地为区块,需要在 SCC(Sonic Certification Chain) 中进行投票认证,这一过程类似于「Checkpoint」或「Finality Gadget」。

✅ BLS 聚合签名的用法

在 SCC 中,多个验证者节点需对某个候选区块或事件投票,传统方式下需分别广播每个验证者的签名,带来巨大带宽与计算开销。而 Sonic 采用了:

● BLS 聚合签名机制:将多个验证者对某事件的签名压缩为一个签名

● 验证时只需对该聚合签名进行一次验证(而非每个单独签名)

✅ 效果与优势

● 签名聚合效率:原本需要验证 n 次签名,聚合后仅需验证 1 次

● 带宽优化:一个聚合签名仅为 96 字节,远小于传统多签广播

● 节点同步提速:新节点同步 SCC 时验证工作大幅减少

● 性能提升估算

○ 签名验证性能提升高达 5 倍以上

○ 节点消息体大小下降至原来的 10%~20%

○ 大幅降低高 TPS 情况下的共识延迟和网络拥塞

 

 

💎 性能对比(实测数据)

指标

Sonic

以太坊

Solana

TPS峰值

10,000+

30

2,000-3,000

确认时间

0.7秒

6分钟

2-5秒

单笔Gas费

≈$0.0001

1−10

≈$0.00025

存储效率

提升90%

中等

 

💎 结语

Sonic的高性能源于 架构级协同优化

👉 共识层 (DAG并行)→ 存储层 (扁平化压缩)→ 执行层 (JIT编译)→ 跨链层 (安全批处理)

这一技术栈在保持EVM兼容的同时,解决了“不可能三角”中的效率瓶颈,为DeFi高频交易与链游实时交互提供了新范式。不过任然存在如下挑战

● 节点间拓扑同步压力仍高:DAG 的并行性意味着节点必须高速接收并存储多方事件,且每个事件都需解析、排序、更新状态,I/O 压力巨大。

● 高频并发下状态一致性难度:尤其是 EVM 的全局状态模型会成为瓶颈,如果未来引入并行执行(Parallel EVM),需要重新定义冲突检测与状态隔离策略。

● 轻节点缺失会限制部分场景:如移动端钱包、跨链桥验证等。

● 目标 400,000 TPS 仍未实证,当前 10,000+ TPS 成绩是在受控环境下跑出的,不代表公链开放运行下的持续性性能。

 

posted @ 2025-08-05 15:53  深蓝  阅读(72)  评论(0)    收藏  举报

我要啦免费统计