vApps:互联网规模的可验证应用程序
我们与LayerZero合作,推出了一种名为 vApps(可验证应用程序)的全新开发范式。vApps 让您能够构建应用程序,为用户提供 Web3 级别的安全性和透明度,同时又能提供熟悉的 Web2 开发体验。我们知道,dApp 开发者已经厌倦了目前面临的种种限制。他们被迫使用 Solidity 语言,处理 EVM 代码,并承担低吞吐量的后果。简而言之,他们被迫在盒子里构建应用程序。vApps 摆脱了 EVM 分叉的模式,让开发者能够编写普通应用程序,并使用简单的 Rust SDK 将其转换为可验证的版本。
Succinct 正在构建一个由 SP1 驱动的去中心化证明网络,该网络是支持 vApp 的关键基础设施。通过为每个 vApp 提供可验证的计算层,该计算层可以生成代码执行的零知识证明 (ZK proofs),Succinct 网络使开发者能够专注于核心应用逻辑。在 vApp 框架中,开发者无需使用 Solidity 等专用语言,也无需实现融合链上和链下组件的后端工作流,只需编写一个 Rust 应用程序即可;所有证明、互操作性和结算工作均由其处理。vApp允许现有的 web2 应用程序和新的 web3 应用程序通过一个简单的插件实现可验证。
借助 vApp,我们终于可以让真正的应用受益于加密技术的魔力。无论是可验证的广告交易平台(每天为发布商和广告商结算数十亿次展示)、每秒发生数千次游戏内事件的游戏,还是医疗保健等关键领域的医生匹配,vApp 框架提供的可验证性都能为任何应用带来变革。vApp SDK 目前正在开发中。阅读vApp 白皮书并加入开发者 Telegram了解更多信息。
dApp 开发已崩溃
去中心化应用程序向用户和开发者承诺了几项重要功能,这些功能是对传统网络的升级:
去信任化:通过将交易结算到公链,dApp 旨在实现去信任化的用户体验。dApp 不再像传统金融系统那样要求第三方执行交易并证明其正确性,而是允许任何人通过检查区块链来验证交易执行是否正确。这使得传统金融应用及其他应用的透明度和可公开审计性大大提升。
可组合性:dApp 承诺相互组合,从而带来丰富的用户体验。在金融领域,可组合性将带来共享的流动性,并赋予其进行跨链交换和借贷等复杂交易的能力。简而言之,可组合性将使应用程序“感觉像一个整体”,从而实现目前在 Web 上无法实现的体验。
无需许可的创新: dApp 开发者无需任何人许可即可发布新应用、分叉或升级现有应用。这将促进更多创新,因为应用开发者可以基于开放标准进行构建。dApp 开发的无需许可性推动了去中心化金融交易和借贷应用的显著进步。
然而,目前去中心化应用的开发现状远未达到这一承诺。如今,为了让他们的应用获得这些特性,dApp 开发者被迫在诸多限制下进行构建。为了在以太坊或其 Rollup 堆栈等区块链上构建应用,他们必须:
处理 EVM 和其他通用虚拟机的语义。
使用像 Solidity 这样的专门语言。
考虑复杂的后端基础设施,包括数据库、索引器和链上结算,以将链上状态连接到链下数据存储。
没有任何区块链或汇总堆栈可以让开发人员以 web2 方式编写应用程序并获得开箱即用的可验证性。
虚拟机施加约束
在以太坊等层上使用 Rollup 堆栈时,开发者面临的主要成本是使用通用虚拟机(例如 EVM)的限制。EVM 的可验证性代价很高。在 EVM 中编写应用程序逻辑,然后通过 SP1 验证过的解释器使其可验证,会带来巨大的开销(高达 832 倍),如图 1 所示。
在 vApp 框架中,我们演示了原生 Rust 执行如何显著减少在 SP1 中可验证运行应用程序所需的工作,这有望成为当今汇总应用程序开发的有力替代方案。
专用编程语言拖慢开发者
在当前范式下编写应用程序,开发人员需要承担诸如 Solidity 等专用语言带来的额外开销。相比之下,全球近300 万 Rust 开发人员与 Solidity 开发人员相比,后者只是 Rust 开发人员的一小部分。正如行业领袖所指出的(图 2),Solidity 开发极具挑战性,并且导致开发人员不得不承担语言改进路线图的技术债务。
在 vApps 中,开发人员可以使用 Rust 等安全语言编写应用程序,并将复杂的链上工程完全抽象出来。
后端基础设施不仅仅是工作
dApp 要求开发者拥有后端功能,用于复制链上状态并维护跨认证数据库的一致性。这些功能通常包括经过认证的数据库、索引服务和链上结算基础设施。这种重复工作效率低下,导致每个应用都必须在内部重新实现相同的功能。尤其是在同时包含 web2 和 web3 组件的应用中,这可能会导致状态不一致;应用团队需要专门指派工程人才来维护这些后端基础设施。
vApp 通过为每个应用提供访问规范可验证数据库和与链上验证接口的消息服务来解决这个问题。使用 vApp,开发者无需进行重复的后端工程来构建应用。vApp 在避免重复的后端基础设施的同时,还能让应用避开“嘈杂邻居”,因为应用不共享通用区块空间。
vApp SDK
vApp SDK 是框架的核心,它允许您构建真正的应用程序。它抽象了应用程序所需的所有组件,您只需编写应用程序逻辑即可。传统 Web 开发也是如此,加密货币领域也应如此。vApp 使用模块化组件来处理链上构件(例如证明验证和状态承诺)以及链下构件(例如证明生成、可验证数据库和索引),让您可以专注于应用程序逻辑。
该 SDK 附带一种基于 Rust 的领域特定语言,开发人员可以轻松地将其应用程序逻辑封装到所需的组件中。图 4 展示了 vApp SDK 如何实现简单的代币转移。该 SDK 使用#[derive(ProvableState)]等注解来确保余额更新被捕获到易于承诺的数据结构中,并且#[vApp:Handler]入口点对传递到证明器的应用程序逻辑进行了编码。重要的是,开发人员只需编写 Rust 代码,其余部分即可运行。
简洁启用 vApp
简洁证明者网络 (Succinct Prover Network) 是 vApp 的关键基础设施,为 vApp 提供高性能可验证计算层。高性能 vApp 的独特优势在于可验证计算技术的进步,尤其是像 SP1 这样的 zkVM。
借助 Succinct 的证明者网络 (Prover Network),vApp 可受益于零知识证明,该证明可以证明 vApp 交易执行的完整性,并使从 Web2 到 Web3 的每个 vApp 都可验证。Succinct不再局限于特定于应用程序的狭窄用例,无需开发人员构建自定义电路并理解复杂的加密技术,而是可以直接从普通代码生成零知识证明。
在 vApp 论文中,通过对 zkVM 进行基准研究,我们证明 vApp 的架构可以利用本机执行来避免 VM 开销、预编译以减少工作量以及硬件加速以加快证明生成。
本机执行避免虚拟机开销
在 SP1 中,vApp 使用原生 Rust 执行,从而避免了 EVM 和其他解释器高达 832 倍的开销。原生 Rust 执行使应用开发者在证明成本和延迟方面体验到显著的性能提升。通过仅使用特定于应用的函数调用(而非通用的 EVM 执行),应用开发者可以获得巨大的性能优势。此外,原生执行可以通过改进核心证明系统进行优化。
预编译减少工作量
vApp 可以使用 zkVM 的预编译功能,将常见加密操作所需的证明工作量减少高达 95%,如图 6 所示。SP1 已针对预编译功能进行了优化,预编译是一种预先构建的电路,可以加速重复操作的证明。许多应用程序需要“常规管道”工作:恢复帐户数据、初始化经过身份验证的数据库以及执行状态读写操作。SP1 已经使用ECDSA 恢复预编译来加速以太坊证明中的帐户恢复。预编译可以加速 vApp 的证明生成。
硬件加速加速证明
zkVM 可通过加速硬件进行高度优化。如图 7 所示,GPU 可将吞吐量提升高达 30 倍。GPU 集群中的并行化可以将吞吐量提升数倍。Succinct 已为我们的生产客户运行数千个 GPU。随着 vApp 的构建,Succinct 网络将成为应用程序开发者使用开箱即用、高可靠性的证明生成服务的关键基础设施。
您可以构建哪些 vApp?
我们很高兴能够支持 vApp 开发者开发激动人心的全新用例。我们之前讨论过可验证交易所,它们允许在各种 情况下进行可验证的存款和强制提现。但更重要的是,vApp 还能使任何 web2 应用程序变得易于验证。
例如,遵循传统 Web 开发实践的游戏可以轻松集成可验证计算,而无需学习全新的平台。今年早些时候,我们撰写了一篇关于信任危机的文章。vApp 使任何应用程序(无论是 Web2 还是 Web3)都能摆脱这场危机。我们非常兴奋:
向发布商和广告商证明拍卖结果的广告交易平台
每秒数百个事件的可验证博弈
医生匹配,可由任何第三方检查
报告可审计信用评分的信用评分
要开始 vApp 开发并为 SDK 做出贡献,请立即加入构建者 Telegram。