Surfpool介绍:Solana Devnet的替代方案

  • Helius
  • 发布于 3小时前
  • 阅读 27

Surfpool是一个Solana开发工具,旨在通过提供本地优先的开发环境来弥合Localnet和Mainnet之间的差距。它通过按需从Mainnet获取实时账户数据,同时在本地隔离和跟踪程序状态,从而实现更快的迭代和更真实的模拟环境。此外,Surfpool还引入了基础设施即代码(IaC)的概念,以实现可重现、可审计和安全的部署到Solana网络。

10 分钟阅读

2025 年 5 月 9 日

在这篇文章中,我们将重点介绍 Surfpool,这是来自 Helius Startup Launchpad 的一个项目,该项目在 Colosseum 的 Radar Hackathon 中获得了第一名,并在 Solana 开发者生态系统中掀起了波澜。

我们将首先分析 Localnet、Devnet 和 Mainnet——它们的角色、优势和痛点——然后再深入研究 Surfnet、基础设施即代码,并探索它们如何为在 Solana 上工作的开发者解锁新的速度、安全性和信心。

什么是 Surfpool?

Surfpool 是 Localnet 测试环境的直接替代品,专门为构建 Solana 的开发者提供最佳体验。它允许开发者使用及时获取的 Mainnet 账户在本地模拟 Solana 程序

Surfpool 还将 基础设施即代码 (IaC) 无缝引入到基于 Anchor 或 Pinocchio 的项目中,从而能够以可重现、可审计和安全的方式部署到任何 Solana 网络——私有或公共。

在了解 Surfpool 如何改善 Solana 开发体验之前,必须先检查开发者当今使用的网络环境。

Solana 有多个集群——Localnet、Devnet 和 Mainnet——每个集群在开发生命周期中都有不同的用途。虽然这些环境至关重要,但它们也带来了影响代码交付速度、可靠性和信心的权衡。

Localnet

Localnet 指的是 Solana 区块链的本地实例,通常使用 solana-test-validator 命令启动。它本质上是一个在你的机器上运行的私有区块链,没有网络延迟,并且可以完全控制环境。

Localnet 因与 Anchor 框架 的紧密集成而广受欢迎,它提供了 Solana 运行时的高保真执行,使其成为快速迭代和调试的理想选择。开发者使用它来模拟交易、验证程序逻辑、消除错误、重置状态并进行迭代。

Localnet 也通常集成到持续集成 (CI) 管道中。它们允许团队在每次提交时运行自动化测试套件,确保更改不会破坏现有行为。这有助于保持代码质量并及早发现回归。

然而,这种隔离也是它最大的限制。

Localnet 在真空中运行:它没有真实世界的账户、对 Mainnet 数据的访问权限或与实时生态系统协议的交互。

因此,虽然它非常适合隔离模拟,但在现实条件下的可组合性测试或端到端验证方面却显得不足。

EVM 开发者请注意:

Solana 的 Localnet 相当于以太坊的 Devnets——一个用于快速、私有模拟的隔离本地环境。

Solana Devnet

Devnet 是由 Solana 基金会和一些社区运营的验证者运营的公共 Solana 网络。它反映了 Mainnet 的架构和执行行为,但没有经济风险。

Devnet 上的 Token 没有实际价值。为了获得它们,开发者依赖于水龙头——用于分配少量测试 Token 以用于开发目的的公共端点。

这些水龙头通常受到速率限制,并且每个 Token 通常都有自己的水龙头,并具有不同的规则(Solana 基金会运营 SOL 水龙头,Circle 运营 USDC 水龙头 等),这使得 Token 篮子的设置变得繁琐且耗时。

Devnet 用作共享的公共暂存环境。开发者使用它来模拟跨程序的交互、在实时环境中测试客户端行为以及为 Mainnet 发布做准备。当使用 Localnet 中不可用的预言机、DEX 或 Token 程序等第三方集成时,它很方便。

由于 Devnet RPC 端点 是公开可用的,因此 Devnet 也通常用于开发和调试应用程序前端。

许多团队还依赖 Devnet 作为内部测试环境。较大的协议(例如 Pyth)有时会在 Devnet 上创建其应用程序的“沙箱”部署,以方便其他团队进行集成测试。

重要的是要记住,每个团队都定义了自己的 Devnet 部署策略。与 Mainnet 上的协议通常经过审计、稳定且是最新的不同,Devnet 部署可能已过时、不完整或配置错误。

因此,可组合性受到限制。

当然,也有一些变体。一些团队维护自己的内部 Devnet 环境用于暂存和集成测试,而另一些团队则运营公共 Devnet 以支持第三方开发者和合作伙伴。与共享的 Solana Devnet 相比,这些自定义环境通常提供更多的控制、稳定性和定制访问权限。

EVM 开发者请注意:

Solana 的 Devnet 相当于以太坊的 Testnet。

Solana Mainnet-beta

Mainnet 是真的:网络每秒吸收数千个对抗性交易,Token 具有实际价值,并且每个错误都可能代价高昂。与 Devnet 或 Localnet 不同,部署到 Mainnet 需要严格的准备、严格的安全措施以及对代码的高度信心。

在操作上,Mainnet 改变了一切。

部署密钥对(通常保存在多重签名或硬件钱包中)必须得到严密保护,并且部署过程中的任何问题都可能产生严重后果。你现在面临实际的网络条件,包括不可预测的流量、实际的延迟以及与实时用户和资产的交互。

但它也带来了与每个重要协议的完全可组合性和集成的优势。Mainnet 是你的程序证明自己的地方——在真正的压力下,以完整的规模。

事实证明,我们遇到的大多数开发者由于 Devnet 有限的可组合性而很快碰壁。为了更快地移动或访问准确的数据,他们通常开始直接在 Mainnet 上进行迭代,这带来了更高的风险、更慢的迭代周期和更多的运营开销。Devnet 未能成为两者之间有意义的桥梁。

介绍 Surfnets

Surfnet 使你能够享受以本地优先的 Localnet 带来的好处,同时确保交易可以访问 Mainnet 状态,而无需同步节点。

它是 Surfpool 对传统 Solana 网络局限性的回应:一个专门构建的、以开发者为中心的环境,弥合了 Localnet 和 Mainnet 之间的差距。

Surfpool 根据需要从你选择的任何 RPC 获取实时账户数据,同时在本地隔离和跟踪你程序的转台。这使你能够拥有完全控制、更快的迭代速度和忠实的模拟环境。

由于这种架构,Surfnet 的行为类似于延迟分叉的网络,在读取时复制转台并在本地写入更改。与 Localnet 一样,它的启动速度很快,并且速度明显更快。Surfnet 实例很轻量级,可以在像 Raspberry Pi 这样便宜的设备上运行。

通过遵守规范的 RPC 约定,Surfpool 实际上与依赖这些端点的钱包、资源管理器和 CLI 工具兼容。

Surfnet RPC 方法

为了进一步增强 Solana 开发者体验,Surfnet 引入了一组 RPC 方法(称为 作弊码),使你能够弯曲网络规则,以便在模拟期间实现更快的迭代和更好的控制。这些包括:

  • surfnet_setAccount:将任意账户数据注入到网络转台中。
  • surfnet_setTokenAccount:立即创建具有自定义余额和元数据的 Token 账户。
  • surfnet_setMintAccount:定义或覆盖 Mint 配置,包括供应量、小数位数和权限。

这些作弊码就像本地开发的超能力,能够实现原本需要繁琐的研究、手动设置和涉及的脚本的场景。

结合 Mainnet 数据,作弊码为开发者提供了前所未有的强大功能。他们的本地网络可以完全访问真实世界的环境,同时允许他们随意弯曲规则,从而实现丰富、受控且高度逼真的模拟。

在 Localnet 上重现这种看似简单但直接的设置通常需要数天时间。

作弊码案例研究:The Heist

为了展示 Surfpool 作弊码的功能,我们构建了一个我们代号为 The Heist 的 水龙头

为什么要起这个名字?因为它感觉像抢劫银行——零摩擦、零风险和完全控制权。使用任何 Token 立即资助任何账户:SOL、USDC 或自定义 SPL。没有速率限制、没有等待、没有第三方服务。只需一个命令,你就可以获得流动性。

水龙头一直是开发者的痛点——缓慢、不可靠且分散在整个生态系统中。通过 The Heist,我们颠覆了这一点。它快速、本地且内置于你的 Surfnet 环境中。

这只有通过 Solana 的设计才有可能实现。共享的预编译 Token 程序确保所有 Token 的存储布局一致,从而使这种通用水龙头可行。这在 Token 实现差异很大的平台上是不可能的。

The Heist 不仅仅是一个开发工具,它还是对快速、干净的模拟可以解锁什么的一种声明。

加密基础设施即代码 (IaC)

运行强大的模拟只是故事的一部分——Surfpool 还将基础设施即代码引入 Solana,从而为每次部署带来可重现性、自动化和安全性,并为开发者带来低开销。

加密基础设施即代码 (IaC) 是一个很容易需要专门文章的主题。多年来,通过与 Pyth、Wormhole Core、Circle CCTP、Bitcoin Ordinals 等复杂协议的实际工作,我们在此领域积累了深厚的专业知识。

从高层次上讲,加密基础设施通常包含三大类组件:

  1. 链上基础设施
  2. 签名基础设施
  3. 链下基础设施

链上基础设施

这包括程序部署、升级和状态迁移。在精心设计的 IaC 系统中,智能合约通过可重现和可审计的过程进行部署,从而确保完整性、版本控制和可追溯性。

签名基础设施

大多数安全故障发生在密钥管理中。生产级系统不依赖不安全的本地密钥对,而是使用硬件钱包、阈值密码学或多重签名设置来安全可靠地签署交易。

在精心设计的 IaC 系统中,签名基础设施应该是模块化和可配置的,允许你通过简单地更新几行配置,从硬编码的私钥切换到复杂的多重签名仪式。

链下基础设施

这包括围绕和支持你的智能合约的一切:索引器、状态监视器、钱包哨兵、自动化脚本等。

这些组件通常与链上事件紧密耦合,应被视为代码——可以在本地进行测试、可移植且完全可部署。

注意:

在我们对加密基础设施即代码的愿景中,我们有意排除节点配置和 RPC 端点管理。这些可以通过 Terraform、Ansible 或云原生解决方案等现有工具得到很好的服务,并且不需要在应用程序级别基础设施的范围内进行重新发明。

加密基础设施即代码的好处

精心设计的 IaC 系统应该是静态可分析的。你无需执行任何代码即可了解它将执行的操作。

你应该能够预先生成完整的执行计划,详细说明将涉及哪些程序和签名者、将触及哪些资源以及将花费多少成本。

没有基于 JavaScript 的 DSL不透明的 shell 脚本——只有干净、声明式的代码。它应该是可组合的、易于维护的,并且具有最小的学习曲线。

使用这样的系统,开发者从 Localnet 迁移到 Mainnet 应该像将签名基础设施从磁盘上的本地密钥对交换到小队签名者一样简单。

我们花了几个月的时间来设计和构建我们所谓的 Web3 Runbooks 堆栈——改进语言、使其易于使用以及使运行时安全且可组合。

通过 Surfpool,我们的目标是让这种 Runbook 技术更加易于访问和用户友好,同时进一步突破界限,以确保 Solana 开发者在尽可能好的基础上构建。

通过在 Surfpool 中结合 Surfnets 和加密基础设施即代码,我们正在创建我们认为 Web3 中最好的开发者工具。开发者可以访问 本地优先堆栈,并且只需调整其 IaC 配置,就可以随着其协议的成熟逐步转向 Mainnet。

为了闭环并返回到网络,值得注意的是,Surfnets 可以通过基础设施即代码进行定义和管理。这意味着开发者可以轻松启动 临时网络,这些网络预先配置了数百个已使用正确的 Token 篮子(SOL、USDC 等)资助的账户,这些账户需要与其协议进行交互。

资源和文档

我们建议观看由 Solana 基金会开发者关系主管 Jacob Creech 主持的 Solana Changelog 剧集,以深入了解 Surfpool 45 分钟。

我们还在推出 一系列简短的截屏视频,以帮助开发者通过简短的、实践操作的会话开始使用 Surfpool。

我们的完整文档可在 docs.surfpool.run 上找到。

结论

未来的道路很长,但前途一片光明。开发者已经对 Surfpool 表现出浓厚的兴趣,他们的反馈使我们更加坚信我们正在构建一些必不可少的东西。

也就是说,我们只是触及了皮毛。

我们的使命是使 Mainnet 模拟与真实事物无法区分。

今天,Surfpool 尚未考虑一些关键方面,例如交易竞争和优先级,或者对抗行为,例如 MEV 和三明治攻击。

我们对未来感到兴奋。Surfpool 已经在改变人们在 Solana 上构建的方式,我们致力于进一步推动它。

  • 原文链接: helius.dev/blog/surfpool...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/