
Surfpool 简介:Solana Devnet 的替代方案
本文将重点介绍 Surfpool。这是一个来自 Helius Startup Launchpad 的项目,曾在 Colosseum Radar 黑客松中荣获一等奖,如今正在 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 数据,也无法与实时运行的生态协议交互。
因此,虽然它非常适合隔离模拟,却无法满足组合性测试或真实条件下的端到端验证需求。
Solana 的 Localnet 相当于 Ethereum 的 Devnet,是用于快速私密模拟的隔离本地环境。
Solana Devnet
Devnet 是由 Solana Foundation 和少数社区验证者运营的公共 Solana 网络。它复刻了 Mainnet 的架构和执行行为,但没有经济风险。
Devnet 上的代币没有现实价值。开发者需要通过水龙头获取代币。这些公共端点会发放少量测试代币,用于开发。
这些水龙头通常设有速率限制,而且每种代币往往都有自己的水龙头和不同规则(例如 Helius 的 Solana 水龙头、Circle 运营的 USDC 水龙头等),因此配置代币组合既繁琐又耗时。
Devnet 是一个共享的公共预发布环境。开发者使用它来模拟程序间交互、在实时环境中测试客户端行为,并为 Mainnet 上线做好准备。当项目需要集成 Localnet 中不可用的预言机、DEX 或代币程序等第三方服务时,它非常方便。
由于 Devnet RPC 端点可以公开访问,Devnet 也常用于开发和调试应用前端。
许多团队也使用 Devnet 构建内部测试环境。较大的协议(例如 Pyth)有时会在 Devnet 上创建应用的“沙盒”部署,方便其他团队进行集成测试。
务必记住,每个团队都会自行定义 Devnet 部署策略。Mainnet 上的协议通常经过审计,稳定且保持最新,而 Devnet 部署可能已经过时、不完整或配置错误。
因此,其组合性非常有限。
当然,也存在不同做法。一些团队维护自己的内部 Devnet 环境,用于预发布和集成测试;另一些团队则运营公共 Devnet,为第三方开发者和合作伙伴提供支持。与共享的 Solana Devnet 相比,这些自定义环境通常能提供更强的控制能力、更高的稳定性或更有针对性的访问方式。
Solana 的 Devnet 相当于 Ethereum 的 Testnet。
Solana Mainnet-beta
Mainnet 是真正的实战环境:网络每秒接收数千笔对抗性交易,代币具有真实价值,任何错误都可能造成高昂代价。与 Devnet 或 Localnet 不同,部署到 Mainnet 需要充分准备、严格的安全实践,以及对代码的高度信心。
从运维角度看,Mainnet 改变了一切。
部署密钥对通常保存在多签或硬件钱包中,必须受到严格保护。部署流程中的任何问题都可能造成严重后果。此时,你将直接面对真实的网络条件,包括不可预测的流量、现实中的延迟,以及与真实用户和资产的交互。
但 Mainnet 也带来了完整的组合性,并能与所有重要协议集成。你的程序将在 Mainnet 上经受真正的压力与完整规模考验,证明自身实力。
事实证明,我们遇到的大多数开发者很快都会因 Devnet 有限的组合性而碰壁。为了加快速度或访问准确数据,他们往往直接在 Mainnet 上迭代,但这会带来更高风险、更慢的迭代周期和更多运维开销。Devnet 未能成为两者之间真正有效的桥梁。
Surfnets 简介
Surfnet 既能提供本地优先的 Localnet 优势,又能确保交易无需同步节点即可访问 Mainnet 状态。
这是 Surfpool 针对传统 Solana 网络局限给出的答案:一个专门构建、以开发者为中心的环境,弥合 Localnet 与 Mainnet 之间的差距。
Surfpool 可以按需从你选择的任意 RPC 获取实时账户数据,同时在本地隔离并跟踪程序状态。你因此可以获得完全控制权、更快的迭代速度和高保真的模拟环境。
得益于这种架构,Surfnet 的行为类似于延迟分叉网络:读取时复制状态,在本地写入变更。它和 Localnet 一样能够即时启动,但速度快得多。Surfnet 实例非常轻量,甚至可以在 Raspberry Pi 这样低成本的设备上运行。
Surfpool 遵循标准 RPC 约定,因此实际上兼容依赖这些端点的钱包、浏览器和 CLI 工具。
Surfnet RPC 方法
为了进一步改善 Solana 开发体验,Surfnet 引入了一组称为作弊码的 RPC 方法。你可以在模拟期间借此突破网络规则,实现更快迭代和更强控制能力。其中包括:
surfnet_setAccount:向网络状态中注入任意账户数据。surfnet_setTokenAccount:使用自定义余额和元数据即时创建代币账户。surfnet_setMintAccount:定义或覆盖铸币配置,包括供应量、精度和权限。
这些作弊码就像本地开发中的超能力,让你能够实现原本需要繁琐研究、手动配置和复杂脚本才能完成的场景。
作弊码结合 Mainnet 数据,为开发者带来了前所未有的能力。本地网络可以完整访问真实世界的上下文,同时又允许开发者随意调整规则,从而实现丰富、可控且高度逼真的模拟。
如果在 Localnet 上复现这个看似简单直接的配置,通常需要数天时间。
作弊码案例研究:The Heist
为了展示 Surfpool 作弊码的能力,我们构建了一个代号为 The Heist 的水龙头。
为什么叫这个名字?因为它用起来就像抢银行一样,没有阻力、没有风险,而且完全可控。你可以立即向任意账户注入任意代币:SOL、USDC 或自定义 SPL。没有速率限制,无需等待,也不依赖第三方服务。只需一条命令,你就拥有了流动资金。
水龙头一直是开发者的痛点:速度慢、不可靠,而且分散在整个生态中。借助 The Heist,我们彻底改变了这一现状。它速度快、在本地运行,并内置于你的 Surfnet 环境中。
这完全得益于 Solana 的设计。共享的预编译代币程序确保所有代币都使用一致的存储布局,使这种通用水龙头成为可能。在代币实现差异很大的平台上,这种方案无法实现。
The Heist 不只是一款开发工具,它还展示了快速、简洁的模拟可以释放怎样的潜力。
加密基础设施即代码(IaC)
强大的模拟只是其中一环。Surfpool 还将基础设施即代码引入 Solana,在不给开发者增加太多负担的前提下,为每次部署带来可复现性、自动化和安全性。
**加密基础设施即代码(IaC)**本身就值得单独写一篇文章。多年来,我们通过亲自参与 Pyth、Wormhole Core、Circle CCTP、Bitcoin Ordinals 等复杂协议的工作,在这一领域积累了深厚经验。
从高层来看,加密基础设施通常由三大类组件构成:
- 链上基础设施
- 签名基础设施
- 链下基础设施
链上基础设施
这包括程序部署、升级和状态迁移。在设计良好的 IaC 系统中,智能合约会通过可复现、可审计的流程进行部署,从而确保完整性、版本控制和可追溯性。
签名基础设施
大多数安全故障都发生在密钥管理环节。生产级系统不会依赖不安全的本地密钥对,而是使用硬件钱包、门限密码学或多签配置,以安全、可靠的方式签署交易。
在设计良好的 IaC 系统中,签名基础设施应采用模块化设计并支持配置。只需更新几行配置,你就能从硬编码私钥切换到复杂的多签签署流程。
链下基础设施
这包括围绕并支持智能合约的一切组件:索引器、状态监控器、钱包哨兵、自动化脚本等。
这些组件通常与链上事件紧密耦合,也应该被视为代码:能够在本地测试、便于迁移,并且可以完整部署。
在我们对加密基础设施即代码的构想中,有意排除了节点配置和 RPC 端点管理。Terraform、Ansible 或云原生解决方案等现有工具已经能够很好地处理这些工作,因此无需在应用级基础设施的范围内重复造轮子。
加密基础设施即代码的优势
设计良好的 IaC 系统应该支持静态分析。你无需执行任何代码,就能了解它将执行哪些操作。
你应该能够预先生成完整的执行计划,详细说明会涉及哪些程序和签名者、会操作哪些资源,以及需要多少成本。
不使用基于 JavaScript 的 DSL,也不使用不透明的 shell 脚本,只采用简洁的声明式代码。系统应该支持组合、易于维护,并将学习成本降至最低。
借助这样的系统,开发者从 Localnet 迁移到 Mainnet 应该非常简单,只需将签名基础设施从存储在本地磁盘上的密钥对切换为 Squad 签名者即可。
我们花费数月时间设计并构建了名为 Web3 Runbooks 的技术栈,不断完善语言、降低使用难度,并确保运行时安全且可组合。
通过 Surfpool,我们希望让这项 Runbook 技术更加易用且对用户更友好,同时继续拓展边界,确保 Solana 开发者能在最佳基础之上进行构建。
通过在 Surfpool 中结合 Surfnets 与加密基础设施即代码,我们正在打造自己心目中最出色的 Web3 开发者工具。开发者可以使用本地优先的技术栈,并随着协议逐渐成熟,只需调整 IaC 配置即可逐步迁移到 Mainnet。
回到网络这个话题,值得注意的是,Surfnets 可以通过基础设施即代码进行定义和管理。这意味着开发者可以轻松启动临时网络,并预先配置数百个账户。这些账户已经注入与协议交互所需的正确代币组合(SOL、USDC 等)。
资源与文档
我们建议观看由 Solana Foundation 开发者关系负责人 Jacob Creech 主持的这期 Solana Changelog 节目,通过 45 分钟的内容深入了解 Surfpool。
我们还将推出系列短篇录屏教程,通过简短且注重实操的课程帮助开发者开始使用 Surfpool。
完整文档请访问 docs.surfpool.run。
总结
前路仍然漫长,但未来一片光明。开发者已经对 Surfpool 表现出浓厚兴趣,他们的反馈让我们更加坚信,自己正在构建一款不可或缺的工具。
尽管如此,我们目前还只是触及表面。
我们的使命,是让 Mainnet 模拟与真实环境无法区分。
目前,Surfpool 尚未覆盖一些关键因素,例如交易争用和优先级,以及 MEV 和三明治攻击等对抗性行为。
我们对未来充满期待。Surfpool 已经在改变人们基于 Solana 构建项目的方式,而我们会继续推动它走得更远。
相关文章
订阅 Helius
及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新


