
Surfpool 소개: Solana Devnet의 대안
이 글에서는 Helius Startup Launchpad 프로젝트이자 Colosseum Radar Hackathon에서 1위를 차지하고 Solana 개발자 생태계에 큰 반향을 일으키고 있는 Surfpool을 소개합니다.
먼저 Localnet, Devnet, Mainnet의 역할과 강점, 문제점을 살펴봅니다. 이어서 Surfnet과 코드형 인프라를 자세히 알아보고, 이들이 Solana 개발자에게 한 차원 높은 속도와 안전성, 확신을 어떻게 제공하는지 살펴보겠습니다.
Surfpool이란?
Surfpool은 Localnet 테스트 환경을 바로 대체할 수 있는 솔루션으로, Solana에서 개발하는 데 최적의 경험을 제공하도록 설계되었습니다. 개발자는 필요한 순간에 가져온 Mainnet 계정을 사용해 Solana 프로그램을 로컬에서 시뮬레이션할 수 있습니다.
Surfpool은 Anchor 또는 Pinocchio 기반 프로젝트에 **코드형 인프라(Infrastructure as Code, IaC)**를 원활하게 도입합니다. 이를 통해 비공개 또는 공개 Solana 네트워크 어디에든 재현 가능하고 감사 가능하며 안전하게 배포할 수 있습니다.
Surfpool이 Solana 개발 경험을 어떻게 개선하는지 이해하려면 먼저 오늘날 개발자가 사용하는 네트워크 환경을 살펴봐야 합니다.
Solana에는 Localnet, Devnet, Mainnet 등 여러 클러스터가 있으며, 각각 개발 수명 주기에서 서로 다른 역할을 합니다. 이러한 환경은 필수적이지만 코드를 출시할 때 속도와 안정성, 확신에 영향을 미치는 상충 관계도 존재합니다.
Localnet
Localnet은 일반적으로 solana-test-validator 명령으로 실행하는 Solana 블록체인의 로컬 인스턴스입니다. 네트워크 지연 시간 없이 개발자의 컴퓨터에서 실행되며 환경을 완전히 제어할 수 있는 비공개 블록체인입니다.
Anchor 프레임워크와 긴밀하게 통합되면서 널리 사용되기 시작한 Localnet은 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을 사용합니다. 규모가 큰 프로토콜(예: Pyth)은 다른 팀의 통합 테스트를 지원하기 위해 Devnet에 애플리케이션의 ‘샌드박스’ 배포 환경을 만들기도 합니다.
각 팀이 자체적으로 Devnet 배포 전략을 정의한다는 점을 기억해야 합니다. 프로토콜이 일반적으로 감사를 거치고 안정적이며 최신 상태인 Mainnet과 달리, Devnet 배포는 오래되었거나 불완전하거나 잘못 구성되어 있을 수 있습니다.
그 결과 조합 가능성이 제한됩니다.
물론 여러 변형이 있습니다. 일부 팀은 스테이징 및 통합 테스트를 위한 자체 내부 Devnet 환경을 유지하고, 다른 팀은 타사 개발자와 파트너를 지원하기 위해 공개 Devnet을 운영합니다. 이러한 맞춤형 환경은 공유 Solana Devnet보다 더 높은 제어력과 안정성을 제공하거나 필요에 맞춘 접근을 지원하는 경우가 많습니다.
Solana의 Devnet은 Ethereum의 Testnet과 같습니다.
Solana Mainnet-beta
Mainnet은 실제 환경입니다. 매초 수천 건의 적대적 트랜잭션이 유입되고 토큰은 실제 가치를 지니며, 모든 실수에 큰 비용이 따를 수 있습니다. Devnet이나 Localnet과 달리 Mainnet에 배포하려면 철저한 준비와 엄격한 보안 관행, 코드에 대한 높은 확신이 필요합니다.
운영 측면에서 Mainnet은 모든 것을 바꿉니다.
주로 멀티시그나 하드웨어 지갑에 보관하는 배포 키페어를 철저히 보호해야 하며, 배포 과정에서 발생하는 모든 문제는 심각한 결과로 이어질 수 있습니다. 이제 예측할 수 없는 트래픽, 실제 지연 시간, 라이브 사용자 및 자산과의 상호작용 등 실제 네트워크 조건에 노출됩니다.
하지만 완전한 조합 가능성과 모든 주요 프로토콜과의 통합이라는 이점도 얻습니다. Mainnet은 실제 압박과 최대 규모에서 프로그램의 역량을 입증하는 곳입니다.
저희가 만난 대부분의 개발자는 Devnet의 제한된 조합 가능성 때문에 곧 한계에 부딪혔습니다. 더 빠르게 작업하거나 정확한 데이터에 접근하기 위해 Mainnet에서 직접 반복 개발을 시작하는 경우가 많았습니다. 하지만 여기에는 더 큰 위험과 느린 반복 주기, 더 많은 운영 부담이 따릅니다. Devnet은 두 환경을 잇는 유의미한 다리 역할을 하지 못합니다.
Surfnet 소개
Surfnet은 로컬 우선 Localnet의 이점을 제공하면서 노드를 동기화하지 않고도 트랜잭션이 Mainnet 상태에 접근할 수 있도록 합니다.
이는 기존 Solana 네트워크의 한계에 대한 Surfpool의 해답입니다. Localnet과 Mainnet 사이의 간극을 메우기 위해 개발자 중심으로 설계된 전용 환경입니다.
Surfpool은 사용자가 선택한 RPC에서 라이브 계정 데이터를 필요할 때 가져오는 동시에 프로그램 상태를 로컬에서 격리하고 추적합니다. 이를 통해 완전한 제어권과 더 빠른 반복 개발, 실제에 충실한 시뮬레이션 환경을 제공합니다.
이 아키텍처 덕분에 Surfnet은 지연 포크된 네트워크처럼 동작합니다. 읽을 때 상태를 복사하고 변경 사항은 로컬에 기록합니다. Localnet처럼 즉시 부팅되며 훨씬 빠릅니다. Surfnet 인스턴스는 가벼워서 Raspberry Pi처럼 저렴한 장치에서도 실행할 수 있습니다.
Surfpool은 표준 RPC 계약을 준수하므로 해당 엔드포인트를 사용하는 지갑, 탐색기, CLI 도구와 사실상 호환됩니다.
Surfnet RPC 메서드
Surfnet은 Solana 개발 경험을 한층 개선하기 위해 치트 코드라는 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이나 불투명한 셸 스크립트는 필요 없습니다. 깔끔한 선언형 코드만 있으면 됩니다. 조합 가능하고 유지 관리가 쉬우며 학습 부담이 적어야 합니다.
이러한 시스템을 사용하면 개발자가 Localnet에서 Mainnet으로 이동하는 과정이 디스크에 저장된 로컬 키페어를 사용하는 서명 인프라에서 Squad 서명자로 교체하는 것만큼 간단해집니다.
저희가 Web3 Runbooks라고 부르는 스택을 설계하고 구축하는 데 몇 달이 걸렸습니다. 언어를 다듬고 사용법을 간소화했으며 런타임을 안전하고 조합 가능하게 만들었습니다.
Surfpool을 통해 이 Runbook 기술을 더욱 쉽게 접근하고 편리하게 사용할 수 있도록 하는 동시에, Solana 개발자가 가능한 최고의 기반 위에서 개발하도록 한계를 계속 확장하고자 합니다.
Surfpool에서 Surfnet과 암호화폐 코드형 인프라를 결합해 Web3 최고의 개발자 도구를 만들고 있습니다. 개발자는 로컬 우선 스택을 사용하다가 프로토콜이 성숙함에 따라 IaC 설정만 조정해 점진적으로 Mainnet으로 이동할 수 있습니다.
다시 네트워크 이야기로 돌아가면 Surfnet은 코드형 인프라를 통해 정의하고 관리할 수 있다는 점도 중요합니다. 즉, 개발자는 프로토콜과 상호작용하는 데 필요한 적절한 토큰 바스켓(SOL, USDC 등)이 이미 충전된 수백 개의 계정으로 미리 구성된 임시 네트워크를 손쉽게 가동할 수 있습니다.
리소스 및 문서
Surfpool을 45분 동안 자세히 알아보려면 Solana Foundation의 개발자 관계 책임자 Jacob Creech가 진행하는 Solana Changelog 에피소드를 시청해 보세요.
개발자가 짧은 실습 세션을 통해 Surfpool을 시작할 수 있도록 짧은 스크린캐스트 시리즈도 공개합니다.
전체 문서는 docs.surfpool.run에서 확인할 수 있습니다.
결론
앞으로 갈 길은 멀지만 미래는 밝습니다. 개발자들은 이미 Surfpool에 큰 관심을 보이고 있으며, 이들의 피드백은 저희가 꼭 필요한 것을 만들고 있다는 확신을 더해 줍니다.
하지만 이제 겨우 시작에 불과합니다.
저희의 목표는 Mainnet 시뮬레이션을 실제 환경과 구분할 수 없게 만드는 것입니다.
현재 Surfpool은 트랜잭션 경합과 우선순위 지정, MEV 및 샌드위치 공격 같은 적대적 행동 등 일부 핵심 요소를 아직 반영하지 못합니다.
앞으로의 여정이 기대됩니다. Surfpool은 이미 사람들이 Solana에서 개발하는 방식을 바꾸고 있으며, 저희는 이를 더욱 발전시키기 위해 최선을 다하겠습니다.
관련 아티클
Helius 구독하기
최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요


