Supra区块链技术堆栈深度解析与应用
摘要
💡 Supra 把多年的创新成果整合到一个强劲的架构里,这个架构全面支持 MultiVM 智能合约与原生服务,涵盖价格预言机、链上随机数、跨链通信和自动化功能。
在这一基础上,文中详细讲解了 Supra 区块链的端到端交易流程,展示了如何有效降低审查风险和最大可提取价值(MEV)攻击的威胁。
🚀 Supra 网络依托共享安全平台,提供了丰富的服务和功能。其中包括:分布式预言机协议(DORA)、分布式可验证随机函数(DVRF)、零区块延迟的自动化网络、受 AppChain 启发的容器架构、多 VM 支持,以及通过并行交易处理优化的区块执行。此外,Supra 的跨链设计——HyperLoop 和 HyperNova——使其成为全球首个通过智能合约平台逻辑实现多链互联的“IntraLayer”。
- 区块链服务的原生完全垂直集成
✨ Supra 致力于通过创新研究和卓越工程推动区块链技术的发展,目标是打造一款高效的 Layer 1 区块链,全面整合各类区块链服务,为用户、机构和开发者提供一体化解决方案,确保流畅的使用体验。
在本文中,我们将展示如何通过 Supra 技术来诠释亚里士多德的经典名言:“整体大于部分之和。” 通过完全垂直集成的理念,Supra 提供了一整套全面的区块链功能和服务,支持丰富的生态系统开发和多样化的应用场景。
核心功能概览
⚙️ Supra 区块链为 dApp 提供的原生服务(见图 1)涵盖以下核心功能:
-
Layer 1 区块链
支持多种资产类型,包括原生代币、可编程的同质化和非同质化代币,以及标准化的跨链代币。 -
智能合约执行环境
提供多种链上图灵完备的智能合约平台,适用于 DeFi 协议、区块链游戏、彩票、供应链追踪等各种公共区块链应用。 -
链下数据服务
提供基于需求(拉取式)和流式(推送式)的数据服务,包括加密货币价格预言机、外汇汇率、股票指数和天气数据等。这些数据通过 Supra 的分布式预言机协议(DORA)传输,不仅服务于 Supra 区块链,也支持其他区块链网络。
图 1 完全垂直集成 · 随机数服务 🎲
提供了既流式又按需的分布式可验证随机函数(dVRF),特别适合 Web 2.0 和 Web 3.0 用户,能有效生成和分发随机数。
· 自动化交易网络 ⏰
依靠特定时间、链上事件或DORA提供的链下事件,安排交易执行。比如,客户可以下达这样的请求:“在2025年6月1日东部时间12:00整,如果ETH价格超过4000美元,就出售我的DOGE。”
· 应用专用链(AppChain) 🔗
Supra容器赋予AppChain灵活性和自主性,大幅降低部署成本,同时享受Supra网络的高性能、共享安全性和统一流动性。
IntraLayer:连接Supra及其他区块链 🌐
虽然Supra提供了一系列原生服务,但我们深知多链生态的重要性和价值。为提升互操作性,我们设计了一种星型拓扑结构(见图2),在这一结构中,Supra的L1区块链及其集成服务作为IntraLayer网络的核心,通过我们的互操作性解决方案HyperLoop和HyperNova连接其他L1和L2区块链。
作为独立的MultiVM智能合约平台,Supra不仅提供自有服务,还致力于在多链生态中发挥关键作用。这种作用体现在网络间或“网络内”的价值交换中,通过原生智能合约、自动化功能和预言机服务实现安全高效的通信。
HyperLoop 🚀
基于传统的多签名跨链协议,HyperLoop是经过严格分析和博弈论验证的安全解决方案,首创的设计确保跨链交易的可靠性。
HyperNova 🔒
作为一种无需信任的互操作性方案,HyperNova提供了跨链通信的高度安全性,为多链生态中的信息与价值交换奠定了坚实基础。
通过HyperLoop和HyperNova,Supra实现了广泛的链间互联,为用户和开发者提供了强大的工具,推动多链生态的深度融合与发展。
连接链的安全性不再依赖于传统的跨链或中继节点的安全假设。下面是对 HyperLoop 和 HyperNova 的最佳应用场景的简要介绍。
-
HyperLoop 🚀
HyperLoop 跨链解决方案特别适合将 Optimistic Rollup 连接到 Supra。这项技术巧妙地消除了实现最终确定性所需的欺诈证明挑战期,让连接更加流畅。 -
HyperNova 🌌
HyperNova 适合将任何权益证明(PoS)L1 区块链连接到 Supra。这是因为它通过重新计算 Supra 交互链的共识来确保连接链的安全性,从而保持 L1 到 L1 的安全性。Supra 的 L1 区块链专门为安全高效的跨链通信而设计。
我们的计划是利用 HyperNova 将比特币跨链到 Supra,同时通过 HyperLoop 实现反向连接。我们还在探索如何在这个环境中实现原子交换,以进一步提升跨链互操作性。
以下是由 Supra IntraLayer 技术栈支持的一些核心功能:
-
DeFi IntraLayer 💰
作为“平台之上的平台”,Supra 封装了多种主流的 DeFi 协议(例如 AMM)。dApp 开发者可以轻松获取来自多个区块链的资产和信息,简化跨链开发流程。 -
跨链自动化服务 ⚙️
我们允许用户基于多个区块链的事件和数据设置自动化任务,极大提升用户体验和操作效率。
我们坚信,将多种原生服务完全垂直集成到一个高性能的 L1 区块链中,正好契合我们打造全球首个跨链 IntraLayer 的愿景。随着其他区块链对我们服务需求的不断增长,Supra 网络的实用性(包括我们的代币和链上资产)将自然带来价值波动,进一步激励用户和客户采用我们的基础设施。
与此同时,随着 IntraLayer 架构在不同生态系统中的广泛应用,越来越多的开发者将被我们的原生服务和出色性能所吸引,选择直接在 Supra 区块链上开发和构建应用。这不仅会增强我们的 DeFi 层,包括内部开发的协议和第三方协议,也将推动网络的整体采用率和吸引力。
我们相信,凭借卓越的性能和一站式、多元化的服务,Supra 将为开发者社区带来下一波 Web 3.0 技术普及浪潮,助力整个生态的快速发展。
- Supra 的核心——“部落与氏族”节点模型 🏰 微小发报道,Supra 的基本理念是实现完全垂直集成,几乎在一个平台上提供所有相关的区块链服务。这种方式确保用户和开发者能享受到无缝的使用体验。
完全垂直集成 vs 模块化 L2
Supra 的垂直集成架构和传统的模块化 L2 方案大相径庭:
在 L2 中,核心功能(如共识、执行和数据可用性)被分散到不同的网络。虽然这种设计自称为“模块化优势”,但也带来了不少麻烦:
- ⏳ 延迟增加:跨网络通信带来的时间拖延;
- 💰 经济安全分散:各网络有各自的代币,安全性无法共享;
- 🛠 复杂性高:整体架构的维护和协调难度大。
相比之下,Supra 的完全垂直集成设计将所有组件统一到一个区块链中,带来以下优势:
- 🔒 共享经济安全性和统一的代币经济;
- ⚡ 减少通信延迟,提升系统性能;
- 🛡 统一激励机制增强网络安全;
- 💵 降低整体运营成本。
拜占庭容错的突破
研究显示,在异步或部分同步的网络中,传统的拜占庭容错(BFT)协议最多只能容忍三分之一的恶意节点。然而,Supra 的创新突破将这一容忍度提升至一半,实现了前所未有的安全性和效率。
排序服务与诚信链
Supra L1 区块链的核心是排序服务,其共识协议负责交易排序,同时交易数据的传播和排序服务是分开的。因此:
- 📦 区块仅包含交易批次的元数据(如摘要和数据可用性证明),而不包括具体的交易数据;
- 🚀 这让 Supra 区块链的区块变得非常小,大大提升了运行效率。
由于排序服务是所有其他服务的基础,我们将 Supra 区块链称为“诚信链”。
为什么容忍更多拜占庭节点很重要?
容忍更多拜占庭节点的直接好处包括:
- 🧑🤝🧑 更小的委员会:比如,能容忍 50 个恶意节点,传统方法需 151 名成员,而 Supra 只需 101 名;
- 💸 降低成本:减少共识节点数量意味着需要补偿的节点更少,从而降低用户费用;
- ⚡ 提高执行速度:共识节点少,流程快,同时保持强大的安全性。 部落、氏族与家庭
这一核心促进了 Supra 区块链上多个服务的高效完全垂直集成。Supra 提出了一种全新的网络框架,支持在部落、氏族或家庭层面执行各种不同的算法。
如图 3 所示:
- 部落(Tribe):一个节点委员会,最多容忍三分之一的拜占庭节点;
- 氏族(Clan):一个节点委员会,最多容忍二分之一的拜占庭节点;
- 家庭(Family):一个节点委员会,至少需要一个正确节点。
为了实现最佳性能和强大的安全性,我们的网络架构如下:活跃节点被组织成一个运行共识协议的部落,为排序服务提供支持,并容忍最多三分之一的拜占庭节点。
设计中的关键点是,整个 Supra 部落并不需要参与交易执行或维护完整的 Supra 状态。相反,一个更小的子集——称为“氏族”——即可管理状态、执行交易、计算区块的后状态并签署状态承诺。因此,交易数据的传播最初仅在氏族层面发生,然后再进一步广播。
这种架构非常适合高效的状态分片,其中不同的氏族管理不同的状态分片,并可能使用独立的虚拟机。这样的设计提升了可扩展性,允许我们通过增加更多氏族(或分片)来调整吞吐量。因此,除了共识之外的所有协议(如数据传播、分片执行、预言机服务和分布式随机数服务)都在只需要简单多数正确节点的小型委员会(氏族)中运行。
我们通过随机选择将节点分配到氏族中,将排序部落和多个服务氏族组织在一起,使这些氏族实际上构成了部落的一个分区。共识或全局排序在部落上运行,而各种可验证的计算服务则在氏族中执行。这种随机选择允许我们在氏族层面执行,并为系统引入了概率因素。例如,假设部落由 625 个节点组成,其中最多有 208 个拜占庭节点。如果将部落分成 5 个氏族,每个氏族 125 个节点,则任一氏族中超过半数(即 62 个)节点为拜占庭节点的概率约为 35 × 10⁻⁶。换句话说,当部落中拜占庭节点占 33% 时,出现“坏氏族”的概率仅为百万分之 35。在实践中,这些概率极低。我们将在讨论周期和时间段时进一步分析这些概率,并展示它们在实践中几乎可以忽略不计。
交易流程
Supra 链上交易流程大致如下,具体步骤将在后续章节详细描述: 图 4 展示了 supra 区块链的端到端交易流程🚀
-
用户提交交易
用户通过 supra 的 starkey 钱包 [3] 或 dApp 提交交易 ttt。这个钱包连接到网关 RPC 节点,交易 ttt 就这样飞向了节点。 -
交易分类与存储
网关 RPC 节点对交易 ttt 进行基本验证和分类,然后把它送到指定批次提议者的主存储(Primary Bucket),同时还把它发往一些其他提议者的次存储桶(Secondary Bucket)。 -
打包交易
批次提议者从主存储桶里打包交易,同时将次存储桶中超时的交易也加入批次。想了解更多,去看看第 5 节吧! -
传播与仲裁
批次通过 xRBC 协议传播到执行氏族节点,只有形成数据可用性仲裁证书(DAQC),批次才能进入区块。这些证书会在部落中传播,批次也会回到网关 RPC 节点。 -
共识与区块构建
部落节点运作 supra 的 moonshot 共识协议。区块提议者通过打包这些 DAQC 和相关批次的元数据来构建区块。 -
区块排序
共识协议对区块进行排序,这样间接地也对跨批次的交易进行了排序。当区块最终确定时,所有运行共识协议的部落节点和氏族节点都能看到这些区块,最终确定的区块还会传播到网关 RPC 节点。 -
执行交易与状态更新
氏族节点从最终区块中执行相关批次的交易,并更新区块链的当前状态。接着,它们计算后状态、进行默克尔化操作并算出新的默克尔根。注意,不同氏族会并行执行不同的批次。氏族节点签署该默克尔根并传播到整个部落和网关 RPC 节点。 -
交易完成通知
网关 RPC 节点执行区块,计算后状态和默克尔根,验证其与接收到的签名默克尔根一致,交易完成后通知钱包。
最终确认性阶段
在我们的工作流程中,交易 ttt 经历了三个不同的最终性阶段,每个阶段都增强了交易在区块链上的状态保证:
-
预确认阶段
当包含交易 ttt 的批次 bbb 获得 DAQC 时,交易 ttt 被保证将包含在区块链中。此时虽然交易的包含性得到保障,但具体位置和执行结果尚未确认。 -
排序最终性
当共识协议对包含批次 bbb 的区块完成最终确认时,交易 ttt 在区块链中的位置固定且不可更改,确定了其相对于其他交易的执行顺序。 -
执行最终性
... 这是最终性阶段的终点。氏族节点执行批次 bbb,通过交易 ttt 的结果更新区块链状态,生成新状态的默克尔化版本,签署并广播生成的默克尔根以形成状态承诺。此阶段一旦完成,交易的执行结果就被视为最终且不可逆转。
Supra L1 提供了超快的最终性时间。我们的实验将在第 7 节中详细报告这些不同最终性阶段的观察时间。
后面的章节将深入探讨上述交易流程中的关键步骤。
5. 无内存池的分桶方案
咱们先聊聊以太坊和 Solana 的内存池协议,接着看看 Supra 是怎么在这基础上做出改进的。
以太坊内存池方案
传统以太坊内存池的工作流程是这样的:
· 客户端(钱包)把交易发送给 RPC 节点,节点通过 Gossip 协议把交易广播到所有共识验证者。
· 当某个验证者成为区块提议者时,尝试将已接收到的交易打包进区块。
· 区块提议者可能会选择不包含某些交易进行审查,但因为所有共识验证者都持有这些交易,下一轮成为提议者的验证者会把被遗漏或审查的交易包括进来。这使得协议具备抗审查性。
在典型区块链架构中,客户端(Web3 钱包)将交易发送到公开的 RPC 节点,然后节点通过点对点的 Gossip 协议将交易传播到整个 RPC 节点和共识验证者网络。这些节点维护一个名为“内存池”(mempool)的数据结构,用于暂存客户端发送的交易。
接下来,区块构建者从内存池中提取交易,打包成区块,并通过共识协议处理。一旦区块达到最终性,所有包含的交易也会被确认。
由于比特币和以太坊的内存池中积累了大量未处理的交易,平均来看,交易在被区块构建者选中之前会在内存池中停留较长时间。而且,点对点的 Gossip 协议在传播交易时也会进一步增加延迟。
Solana 无内存池方案
为了减少内存池的延迟,Solana 采用了一种无内存池的协议,流程如下:
· 区块生成有固定的时间表,区块提议者会提前确定。
· 客户端(如钱包)将交易发送到 RPC 节点,节点为交易附加读写访问信息等辅助数据,并将其发送给即将提议区块的部分提议者。如果某个提议者错过了该交易,其他提议者会在之后的区块中将该交易包含进去。 需要注意的是,solana 网络需要32个区块确认才能实现完全最终性。虽然 solana 在设计上优化了端到端延迟,但偶尔还是会出现交易重复的问题,可能导致网络中断。相比以太坊的内存池协议,solana 采用了定向通信,专门针对预期的区块提议者,这样有效减少了交易传播的延迟。
微小发报道:supra 无内存池协议方案
像 solana 一样,supra 也采用了无内存池协议,但我们用针对性通信代替了传统的 gossip 协议。supra 的方法在两个关键方面有所不同:
-
即时最终性
与 solana 的时间槽系统不同,supra 使用经典的拜占庭容错(BFT)PBFT 风格的共识协议,称为 moonshot(后文详解)。在 moonshot 协议中,一旦区块收到提交仲裁证书(QC),就可以实现即时最终性,不需要像 solana 那样等待32个区块确认。这样大大缩短了交易最终确认的时间,提升了系统性能。 -
批次元数据存储
在 supra 的共识设计中,区块不直接包含交易数据,而是存储交易批次的 DAQC 和元数据(详见第6节)。在我们的无内存池协议中,来自客户端钱包的交易会被放入由指定批次提议者管理的分桶中,流程如图5所示。
我们的分桶方案特点如下:
-
去重机制
每笔交易都有一个唯一的主批次提议者,该提议者负责将交易放入一个批次中。这种单一责任模型天然避免了重复交易被打包进区块链。 -
冗余与抗审查性
为确保交易不会被遗漏,我们引入了次级批次提议者作为备份。如果主批次提议者没能及时包含交易,次级提议者会在超时后将交易纳入批次中。-
尽管多个次级提议者同时处理交易可能导致重复打包,但 supra 系统会通过交易的首次出现来保持一致性。
-
重复的交易会因无效的交易序列号在执行阶段被自动中止,不影响链上状态。
-
-
不可更改的责任记录
如果次级提议者成功将交易包含进区块,它将生成一份不可更改的记录,证明主提议者未履行职责。这份记录可用于后续的网络分析,以对那些审查交易或导致不必要延迟的批次提议者进行处罚,确保系统的公平性和可靠性。
无内存池的分桶方案具体流程如下:
- 每个批次提议者维护两个分桶:主分桶和次分桶。 · 每笔交易 ttt 都有个独特且不可预测的标识符(哈希值),系统会把它分配到一个特定的批次提议者家庭(family)。在这个家庭中,某个节点会被指定为交易 ttt 的主批次提议者,其余的都是次级批次提议者。
· 当 RPC 节点从钱包或 dApp 前端收到交易 ttt 时,系统会根据标识符将其转发给对应的批次提议者家庭。主批次提议者会把交易 ttt 存储在他们的主分桶里,而次级批次提议者则把它放在各自的次分桶中。
· 在构建新批次时,批次提议者必须确保主分桶中的所有交易都被包含。为了防止拜占庭行为(比如故意从主分桶中排除交易),次级批次提议者起到备用机制的作用。
· 一旦批次被确认并由批次提议者观察到,该提议者就会从主分桶和次分桶中移除已包含的交易。
· 此外,每笔交易 ttt 还有个可配置的超时时间。如果 ttt 在超时之前没被纳入最终确定的批次,次级批次提议者在构建下一批次时必须从次分桶中将 ttt 包含进批次。这项机制确保了交易不会被遗漏,提升了系统的抗审查能力。
图 6 与现有解决方案的概念性比较
这种双层设计在高效去重与强大抗审查能力之间实现了巧妙平衡。而且,当次级批次提议者成功将某笔交易纳入批次时,会生成一份不可更改的记录,表明主提议者未能履行职责。这份记录可以用于后续分析,并对那些审查交易或造成不必要延迟的批次提议者施加惩罚。
- 无内存池架构:实现交易数据传播与交易排序的高效解耦
接下来,聊聊 Supra 是如何通过部落-氏族架构来实现交易数据传播与排序的高效解耦的。
近年来,一些协议(比如 Narwhal/Tusk [11] 和 Bullshark [20])已经意识到交易数据传输的重要性,并采用新设计范式,将数据传输与交易排序解耦。这一设计通过两个并行运行的子协议分别实现数据传输和排序:
· 当没有排序需求时,数据传输变成了可靠广播(RBC),这是分布式系统中广泛研究的基础操作。
· 具体来说,节点通过 RBC 子协议不断提议并传播新数据块;接着,这些数据块会通过排序子协议被确定并输出。 这种设计巧妙地提升了带宽资源的使用效率,让系统吞吐量在传统方法上有了明显的飞跃✨。Supra 也紧跟这一理念,将数据传输与交易排序的过程解耦。不过,咱们注意到,即使在当前最牛逼的共识协议里,优化的焦点依然主要集中在排序子协议上,这跟系统的实际瓶颈有点背道而驰呢。
举个例子,Tusk 和 Bullshark 的最大亮点是所谓的零消息排序——在排序阶段完全消灭通信开销。但如同我们之前提到的,通信成本的主要来源其实不是排序,而是数据传输本身。
对比了我们的方案与现有的解决方案。我们的目标是降低数据传输阶段每个节点的传输量,尤其是减少单一节点的最大传输负担。在实际操作中,网络带宽通常是制约系统吞吐量的关键因素。因此,优化数据传输过程能进一步提升系统整体的效能和效率🔧。
Supra 的 xRBC 协议
我们通过以下创新显著降低了数据传输的通信成本:采用一个由同一节点集运行的独立排序服务。
在传统方式中,数据传输通常依赖可靠广播(RBC)协议。RBC 需要系统中超过2/3的诚实节点,以防止广播者向不同节点发送不同的数据批次(即发送者歧义问题)。
但我们发现,可以利用独立的排序服务,将数据传输转变为一种放宽的 RBC 操作,称为 xRBC。在 xRBC 中,只需超过1/2的诚实节点即可完成数据传输,这样极大降低了通信成本。
xRBC 的设计优势
在 xRBC 中,仅凭参与节点无法完全杜绝发送者歧义。为了解决这个问题,排序服务会对广播者的批次进行认证,确保诚实节点之间的共识,从而消除分歧。尽管排序服务仍需超多数(超过2/3的诚实节点)的保障,但 xRBC 相比传统 RBC 具备以下显著优势:
-
更低的通信开销:通过减少对超多数诚实节点的依赖,降低了协议运行中的通信复杂度。
-
提升性能:xRBC 的设计能够更高效地处理数据传输,同时保持与传统 RBC 相当的安全性。
利用氏族分布式数据传播
由于交易仅在氏族(部落的随机子委员会)内部执行,交易数据最初只需传输到执行该氏族的节点。这大大降低了网络带宽负担,相比将数据传播到整个部落而言更为高效💨。在每个执行氏族内,我们指定部分节点作为批次提议者,负责从各自的分桶中构建交易批次,并将其传输给氏族内的所有节点。 值得注意的是,不同氏族的批次提议者能够独立进行交易批次的传播,完全不需要同步或等待协议步骤。这种并行的异步传播方式,简直是把网络带宽的利用率推向了极致🚀。
为了实现状态同步(好让节点在不同周期间重新分配,具体细节见第9节),交易数据可能会在后续阶段进一步向整个部落传播。这种分阶段的数据传播设计,不仅保证了网络的性能,还确保了系统的一致性和灵活性👍。
具体流程(图 7 说明)
-
批次提议者构建交易批次,并把它发送到氏族里的所有节点。
-
当氏族节点收到有效的批次后,开始对批次的数据可用性投票,并把结果广播给氏族内的所有节点、部落的其他节点,还有指定的网关RPC节点。
-
一旦简单多数投票通过,系统就会生成一个数据可用性证书(DAQC),保证至少有一个诚实节点持有完整的交易数据。
-
如果某个节点缺失部分批次数据,它可以向简单多数的氏族节点提出请求,而DAQC确保这个请求一定能被满足。
-
对于超过大小阈值的批次,或者在并非所有氏族节点都担任批次提议者的情况下,我们引入纠删编码(erasure coding),确保数据在氏族内部均匀分布,优化带宽使用效率。
区块内容与最终性
区块中只包含批次证书。当共识协议的验证者(部落节点)作为区块提议者时,会把接收到的所有批次的DAQC打包进区块。一旦区块获得最终性并被验证者确认,这些已包含的DAQC就会从缓存中移除,因为它们已经被记录在最终确定的区块中,不再需要保留。
由于区块只包含批次证书,而不直接存储交易数据,Supra区块链实际上是一条超级轻量的区块链。这种设计大幅减少了区块的大小,提高了数据传输效率📦。
7. 共识协议
拜占庭容错 (BFT) 共识协议:区块链的核心
BFT共识协议是区块链的核心组件,负责给区块提供标准的排序,从而确保区块内的交易顺序也很标准。我们创新性地设计了一种新型的BFT共识协议,叫Moonshot SMR,灵感来自经典的实用拜占庭容错(PBFT)协议,并在此基础上进行了性能优化💡。 正如之前提到的,共识协议在部落内运作,而交易执行则仅限于氏族。因此,Moonshot 采用了灵活的设计,能够根据实际交易需求进行调整。特别值得一提的是,区块中并不直接存储交易数据,而是包含批次证书,这让系统的高效性和轻量化得以实现。🚀
Moonshot 的性能 📈
Moonshot 在以下几个关键性能指标上表现优异:
- 连续提议延迟(两次区块提议之间的最小延迟):1 个消息延迟 (md)。
- 提交延迟:3 md。
- 批次传播及数据可用性证书生成的累计延迟:2 md。
- 由于每次区块在网络跳跃时都会被提议,数据可用性证书需等待下一个区块提议,平均排队延迟为 0.5 md。
综上所述,系统的整体端到端延迟为 5.5 md。
形式化验证:确保协议安全性 🔒
分布式协议的复杂性和无限的状态空间,使得验证其正确性成为一项艰巨的任务。而形式化验证是确保协议安全的金标准,因为它能通过数学手段证明协议的无误。
为此,我们使用微软的 IvY 验证器 对 Moonshot 共识协议的安全属性进行了形式化验证,严格证明了其永不分叉的特性,为协议的正确性和安全性提供了数学支持。📚
实验评估 🔍
我们在 谷歌云平台 (GCP) 上进行了全面评估,节点均匀分布在五个不同区域:
- us-east1-b(南卡罗来纳州)
- us-west1-a(俄勒冈州)
- europe-north1-a(芬兰哈米纳)
- asia-northeast1-a(东京)
- australia-southeast1-a(悉尼)
实验设置如下:
- 客户端与共识节点共置
- 每笔交易由 512 字节随机数据组成,批次大小设为 500KB
- 每次实验运行 180 秒
- 延迟测量:计算从交易生成到所有非故障节点提交的平均时间,确定端到端延迟
- 吞吐量测量:基于每秒最终确定的交易数量进行评估 我们测试的系统架构包含300个节点,分成5个氏族,每个氏族60个节点(每个GCP区域部署12个节点)。在这种配置下,某个氏族(60个节点)因内部不诚实多数而失败的概率为0.0107。
不过,我们的目标不仅仅是展示这种架构的卓越性能,还希望证明即便在更大规模的系统中,它依然能够保持高吞吐量和低延迟。
硬件配置:
我们使用了e2-standard-32机器,每台配备32个vCPU、128GB内存,出口带宽最大可达16Gbps。
通过这些实验,我们验证了Supra架构在性能和扩展性方面的强大能力。
从系统的吞吐量与端到端延迟的关系来看,具体如下:
- 当吞吐量达到500,000 TPS时,端到端延迟仍保持在1秒以内。
- 在300,000 TPS时,延迟大约为650毫秒,已接近架构设计的理论极限。
同时,我们测量了**数据可用性证书(DAQC)**的生成时间,约为160毫秒。
总结一下:
- 交易的预确认延迟约为160毫秒;
- 排序最终性延迟低于1秒。
DAG共识协议
受到DAG(有向无环图)共识协议的启发,我们设计了一种全新的DAG共识协议,名为Sailfish。这个协议在不牺牲系统吞吐量的情况下,将提交延迟优化至1次可靠广播 + 1消息延迟(md),超越了当前最先进的DAG共识协议的性能。
此外,我们开发了Sailfish的一个变体,将其与部落-氏族架构结合,以进一步提升系统吞吐量。现在,我们正在进行广泛的实验测试。如果Sailfish在大规模网络环境下的表现优于现有的Moonshot协议,我们计划将核心共识协议切换为Sailfish,实现更高效的共识流程。
执行
区块链的当前状态记录了所有资产及其所有权信息,以及所有智能合约的最新数据。在执行已最终确定的区块交易时,需要加载相关的状态部分,按照区块内交易的顺序更新状态,并将修改后的状态持久化存储。 在现代区块链的世界里,交易处理能力的提升让执行时间成为交易确认延迟中不可忽略的因素。尤其是在 Solana、Sui、Aptos 和 Monad 等链上,通过并行化执行的方式,明显缩短了这个延迟。
部落-氏族架构同样实现了交易的并行执行,但我们是在网络层面优化这一过程。具体来说,交易的执行局限于氏族内部,不同的氏族各自并行处理自己的交易批次,从而大幅提高了系统的执行效率(见图 9)。
并行执行交易 🚀
除了网络层面的并行性,我们还探索如何充分利用单个节点内的多核处理器,以高效地并行执行交易。目前,文献和行业常见的并行执行方法主要分为两类:
- 乐观/推测性执行技术
- 基于确定性依赖关系的预先确定技术
软件事务内存(STM) 🧠
STM 技术在传统计算领域被广泛应用于多核程序的并行执行。Aptos 的 BlockSTM 将 STM 技术引入区块链交易执行,其核心思想是:
- 乐观地在所有可用核心上并行执行交易;
- 随后验证交易之间是否存在依赖关系冲突;
- 如果发现冲突,通过一个协作调度器重新执行冲突的交易。
Supra 创新方案 💡
我们提出了一种创新的 STM 并行执行算法,与 Aptos 的 BlockSTM 不同,我们的设计无需调度器即可高效解决冲突。这种方法在性能和架构上与 BlockSTM 相当,目前正对该设计进行深入评估,以验证其在实际应用中的优势。
基于访问规范的并行化 🔍
一些区块链通过指定交易的访问模式实现并行化:
- Solana 的 Sealevel 要求交易明确声明需要读取和写入的账户。
- Sui 要求交易指定读取和写入的对象(通过对象标识符),并声明这些对象是独占的还是共享的。
- 其他方法则不同,区块提议者使用 BlockSTM 技术执行区块,预先计算交易之间的依赖关系,并将这些依赖信息包含在区块中,以便其他验证者能并行执行互不依赖的交易。
不过,得注意的是,无论是在交易中明确声明访问模式,还是在区块中包含依赖信息,都会显著增加区块大小。这可能导致带宽迅速饱和,从而限制系统的最大吞吐量。 我们正在开发一种确定性并行执行算法,通过对智能合约进行静态分析,自动推导出其访问规范,并将这些规范存储在区块链状态中。这一过程无需依赖 RPC 节点或钱包来显式提供访问模式。通过这些规范,我们能够将最终确定区块中的线性交易顺序优化为部分(放宽的)顺序,实现独立交易的并行执行。这种方法不仅降低了带宽占用,还提升了系统的吞吐量和效率。🚀
混合方法
我们认为,利用静态推导的访问规范来改进 STM 算法的混合方法,可能是优化执行技术的终极形式(见图 9)。目前,我们正对这一设计进行全面评估。
8.2 执行顺序的公平性
为了确保交易排序的公平性,我们设计了一个两步流程:
- 初始随机排序:共识协议首先生成交易的初始随机种子排序。
- 最终排序:通过基于区块的 BLS 门限签名生成的链上随机数协议,推导出最终确定的交易排序,从而决定实际执行顺序。
这一额外的随机化机制有效缓解了最大可提取价值(MEV)攻击,因为批次提议者或区块提议者无法预测或操控最终的随机化交易执行顺序。
为了应对垃圾交易(Spam)问题,我们引入了局部费用市场。在争议状态下,交易成本将呈指数级增长,从而增强系统的抗干扰能力,同时确保交易排序的效率和公平性。💰
8.3 多虚拟机 (Multi-VM)
以太坊引入的 EVM 是一种图灵完备的链上编程环境,极大释放了 dApp 开发的创造力,尤其为 DeFi 应用提供了强大支持。EVM 借鉴了 Web 2.0 编程语言的经验,催生了 Solidity。然而,随着区块链技术的发展,社区意识到需要一种专为资产转移和链上资产管理设计的编程语言。于是,Meta 的 Diem 团队开发了 Move 语言,并衍生出 Aptos Move 和 Sui Move 等变体。
Supra 深刻认识到定制化链上交易编程语言的重要性,因此选择 Move 语言作为我们智能合约平台的首选,并将在 Move 的支持下推出我们的 L1 区块链。同时,我们也看到了多虚拟机生态系统的巨大潜力。不同虚拟机下的开发者能相辅相成,共同推动区块链行业的创新与发展。因此,我们设计了一个高效的多虚拟机架构。✨ 基于部落-氏族架构的天然分片特点,每个氏族负责一个状态分片,而不同的氏族则可以运行各自的虚拟机。😎
集成 Move 智能合约平台后,Supra 将向以太坊虚拟机(EVM)扩展,实现与庞大的以太坊生态系统的兼容。接下来,还会集成 Solana 虚拟机(SVM),支持开发者用 Rust、C 和 C++ 等流行编程语言构建智能合约。🚀
最后,Supra 将支持 CosmWasm,确保与活跃的 Cosmos 生态系统无缝连接。✨
跨虚拟机通信
在多虚拟机环境中,用户可能在不同虚拟机上有多个账户,想要实现跨虚拟机的资产转移。而且,Supra 的原生代币 $SUPRA 需要在所有虚拟机中统一管理。为此,我们设计了一个简单高效的三步工作流:
-
提交跨虚拟机转移交易 用户发起跨虚拟机的资产转移交易 ttt,交易包括两个部分:
- 源虚拟机的扣款交易 tdt_dtd
- 目标虚拟机的入账交易 tct_ctc
交易 ttt 首先在源虚拟机上执行,完成扣款并触发相关事件。
-
事件监控与提交 从源虚拟机的氏族中随机选择一个家庭(至少包含一个诚实节点),这些节点负责监控扣款事件并提交入账交易 tct_ctc。
-
执行目标虚拟机入账 目标虚拟机的氏族接收并执行 tct_ctc,完成资产入账,跨虚拟机转移流程就此结束。🎉
纪元与周期
在 Supra 的架构中,只有在纪元(Epoch)的边界时,才允许向部落中添加新节点或移除现有节点。纪元的持续时间是可配置的,通常根据区块数量或实际时间来设定。我们打算将纪元的时长设置为大约一周。在每个纪元期间,部落中的所有节点会通过运行共识协议来执行排序服务。
如图 10 所示,一个纪元还会细分为多个周期(Cycle),每个周期通常持续约一天。在每个周期中,部落中的节点会通过 Supra 的 VRF(可验证随机函数)随机分配到不同氏族。例如:
- 在纪元 1 的周期 2(e1c2),某节点可能担任 DORA 验证者的角色;
- 而在纪元 1 的周期 3(e1c3),同一节点可能负责执行 EVM 交易的任务。😏 这种每个周期随机重新分配节点角色的机制,真的是提升安全性的小能手✨,有效对抗恶意行为者对特定角色或功能进行的攻击。
攻击者如果想针对特定服务(比如服务SSS)下手,可能会试图让提供该服务的氏族中的一些节点失效。
为了应对这样的威胁,我们每个周期都会运行一个分布式密钥生成(DKG)协议,进行氏族重组。我们能够频繁进行这种重组,得益于在DKG领域的创新——开发了一种基于类群的高性能DKG协议。
坏氏族出现的概率
在第3节中,我们分析了一个包含625个节点的部落,划分为5个氏族(每个氏族125个节点)时的安全性影响:
- 坏氏族的定义:拜占庭节点占据某氏族的简单多数。
- 坏氏族形成的概率:随机形成坏氏族的概率大约为百万分之35。
假设每个周期为一天,并且氏族每天都进行节点重组。在最极端的情况下(部落中33%的节点由拜占庭行为者控制),坏氏族出现的概率依然极低,预计每78年才会发生一次。
这个概率几乎微不足道,充分证明了我们氏族形成机制在提供强大安全保障方面的可靠性💪。
- 容器
Supra容器是专为开发者社区设计的一项重要功能,其灵感来自当前流行的应用链概念。
我们充分认可应用链的优势,特别是在为dApp开发者及其社区提供主权能力方面的独特价值。而且,应用链还能支持基于应用的商业模式。目前,Layer 2、侧链、Polkadot平行链、Cosmos区域链和Avalanche子网都是应用链领域的领先解决方案。
不过,我们也意识到,这些解决方案在高吞吐量区块链(如Supra L1)环境下并不理想。应用链通常需要提供以下关键功能:
- 智能合约的受限部署
- 自定义Gas代币
- 自定义Gas定价 当应用链落地到次级链(比如平行链、区域链、子网等)时,它们的 Gas 费用就不会跟主链(像 Polkadot 中继链、Cosmos Hub 或 Avalanche C-Chain)争抢市场,也不会随主链的价格波动。这种本地化的费用市场让用户的交易费用体验变得更可预测,简直是实际应用中的一大优点。
通过 Supra 容器,我们的目标是把这些应用链的优势和高性能 L1 区块链的能力结合起来,为开发者和用户打造一个灵活、稳定的生态环境。
Supra 容器(Supra Container)是区块链世界中的新概念。我们把它看作是服务于单个或一组相关 dApp 的智能合约集合。通过 Supra 容器,我们优化了 Supra 的运行时框架,为 dApp 开发者提供了类似应用链(Appchain)的体验,具备以下显著特点:
- 自定义 Gas 代币
- 自定义 Gas 定价
- 智能合约的受限部署
这一切都能以超低成本实现,完全避免了启动全新次级网络(像需要抵押激励的验证者网络)的繁琐过程。
解决流动性碎片化问题
更重要的是,通过支持跨容器方法调用的原子可组合性,我们解决了应用链常见的流动性碎片化问题。这一设计保证了容器间的高效交互,同时保持流动性的集中性。
促进并行执行
在以太坊 EVM 模型中,每个智能合约都有独立的存储空间。引入 Supra 容器后,我们可以将区块链状态划分为多个分区:
- 容器内交易(intra-container transactions)只访问目标容器的状态,不会影响其他容器的状态。
- 这种状态隔离优化了容器内交易的执行时间,并减少了不同容器间的冲突。
基于这一特性,我们构建了一个简单而高效的工作共享队列,用于优化并行执行。通过这一设计,Supra 容器显著提升了区块链的执行效率,既简化了开发者体验,又推动了整个生态系统的性能提升。 supra,作为一个完全垂直集成的intralayer,经过多年的严谨研究,终于将其雄心壮志逐步实现。我们在多场顶尖学术会议上发表了不少研究成果,比如IEEE Security & Privacy、网络与分布式安全研讨会(NDSS)和ACM计算机与通信安全会议(CCS)。同时,我们也发布了一系列核心组件的白皮书,列举如下:
- moonshot 和 sailfish 共识协议
- 分布式预言机协议(DORA)
- 分布式可验证随机函数(DVRF)
- 高效类群分布式密钥生成(DKG)
- supra 容器
- hyperloop
- hypernova
这次,supra首次全面展示了我们关于完全垂直集成区块链基础设施栈的愿景,结合了多年开发的创新协议,旨在打造一个极致高性能的全方位区块链一体化解决方案。