НОВОЕ: Helius приобретает Light Protocol
узнайте, как использовать Surfpool
Блог/Разработка

Представляем Surfpool: альтернатива Solana Devnet

Сооснователь, txtxLudo Galabru в XLudo Galabru в LinkedIn
Сооснователь, txtxMicaiah Reid в XMicaiah Reid в LinkedIn
Чтение: 10 мин

В этой статье мы расскажем о Surfpool — проекте из Helius Startup Launchpad, который занял первое место на Radar Hackathon от Colosseum и уже привлекает внимание в экосистеме разработчиков Solana. 

Сначала мы разберем Localnet, Devnet и Mainnet: их роли, преимущества и недостатки. Затем перейдем к Surfnet и инфраструктуре как коду и рассмотрим, как они помогают разработчикам Solana работать быстрее, безопаснее и увереннее.

Что такое Surfpool?

Surfpool — полноценная замена средам тестирования Localnet, специально созданная для максимально удобной разработки на Solana. Она позволяет разработчикам локально моделировать работу программ Solana, используя аккаунты Mainnet, загружаемые непосредственно перед выполнением.

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 Devnet

Devnet — публичная сеть Solana, которой управляют Solana Foundation и несколько валидаторов сообщества. Она воспроизводит архитектуру и поведение Mainnet при выполнении операций, но не несет экономических рисков.

Токены в Devnet не имеют реальной ценности. Разработчики получают их через краны — публичные сервисы, выдающие небольшие объемы тестовых токенов для разработки. 

На таких кранах обычно действуют ограничения частоты запросов. Кроме того, для каждого токена часто существует отдельный кран со своими правилами (например, кран Solana от Helius, кран USDC от Circle и другие). Из-за этого подготовка нужного набора токенов становится утомительной и занимает много времени.

Devnet служит общей публичной промежуточной средой. Разработчики используют ее для моделирования взаимодействия между программами, тестирования клиентской части в работающей сети и подготовки к запуску в Mainnet. Она удобна при работе со сторонними интеграциями, такими как оракулы, DEX или токен-программы, недоступные в Localnet.

Поскольку RPC-эндпоинты Devnet общедоступны, Devnet также часто используют для разработки и отладки фронтендов приложений. 

Многие команды также используют Devnet для внутреннего тестирования. Крупные протоколы, например Pyth, иногда создают «песочницы» своих приложений в Devnet, чтобы упростить интеграционное тестирование для других команд.

Важно помнить, что каждая команда самостоятельно определяет стратегию развертывания в Devnet. В Mainnet протоколы обычно проходят аудит, стабильны и своевременно обновляются. Развертывания в Devnet могут быть устаревшими, неполными или неправильно настроенными.

В результате компонуемость остается ограниченной.

Конечно, возможны разные варианты. Одни команды поддерживают собственные внутренние среды Devnet для промежуточного и интеграционного тестирования, а другие используют публичные Devnet, чтобы помогать сторонним разработчикам и партнерам. Такие специализированные среды часто обеспечивают больше контроля, стабильности или гибкости доступа, чем общая Solana Devnet.

Solana Mainnet-beta

Mainnet — это настоящая рабочая сеть. Она ежесекундно обрабатывает тысячи потенциально враждебных транзакций, токены в ней имеют реальную ценность, а любая ошибка может дорого обойтись. В отличие от 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, использующими эти эндпоинты.

Методы RPC в Surfnet

Чтобы еще больше упростить разработку на 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 и многие другие, мы накопили глубокие знания в этой области.

На верхнем уровне криптоинфраструктура обычно состоит из трех основных категорий компонентов:

  1. Ончейн-инфраструктура
  2. Инфраструктура подписания
  3. Офчейн-инфраструктура

Ончейн-инфраструктура

Сюда входят развертывание и обновление программ, а также миграции состояния. В правильно спроектированной системе IaC смарт-контракты развертываются с помощью воспроизводимых и контролируемых процессов, обеспечивающих целостность, управление версиями и отслеживаемость.

Инфраструктура подписания

Большинство сбоев безопасности связано с управлением ключами. Вместо небезопасных локальных пар ключей промышленные системы используют аппаратные кошельки, пороговую криптографию или мультиподписные схемы для безопасного и ответственного подписания транзакций. 

В правильно спроектированной системе IaC инфраструктура подписания должна быть модульной и настраиваемой. Тогда для перехода от жестко заданного закрытого ключа к сложной процедуре мультиподписи достаточно изменить несколько строк конфигурации.

Офчейн-инфраструктура

Сюда относится всё, что окружает и поддерживает смарт-контракты: индексаторы, средства отслеживания состояния, системы мониторинга кошельков, скрипты автоматизации и многое другое. 

Эти компоненты часто тесно связаны с ончейн-событиями, поэтому их следует рассматривать как код: локально тестируемый, переносимый и полностью готовый к развертыванию.

Преимущества криптоинфраструктуры как кода

Правильно спроектированная система IaC должна поддерживать статический анализ. Чтобы понять, что она сделает, вам не нужно выполнять код.

Вы должны иметь возможность заранее сформировать полный план выполнения с указанием задействованных программ и подписантов, затрагиваемых ресурсов и общей стоимости.

Никаких DSL на базе JavaScript и непрозрачных shell-скриптов — только чистый декларативный код. Он должен быть компонуемым, простым в сопровождении и освоении.

С такой системой переход разработчиков от Localnet к Mainnet должен сводиться к простой замене инфраструктуры подписания: вместо локальной пары ключей на диске используется подписант Squad.

Нам потребовались месяцы, чтобы спроектировать и создать стек под названием Web3 Runbooks: усовершенствовать язык, упростить использование и сделать среду выполнения безопасной и компонуемой. 

С помощью Surfpool мы хотим сделать технологию Runbook еще доступнее и удобнее. Одновременно мы расширяем ее возможности, чтобы разработчики Solana могли работать на наилучшей основе.

Объединяя Surfnets и криптоинфраструктуру как код в Surfpool, мы создаем, как нам кажется, лучший инструмент для разработчиков в Web3. Они получают доступ к стеку, ориентированному на локальную разработку, и могут постепенно переходить к Mainnet по мере развития протокола, просто корректируя конфигурацию IaC.

Возвращаясь к сетям, важно отметить, что Surfnets можно определять и управлять ими с помощью инфраструктуры как кода. Разработчики могут легко запускать эфемерные сети, заранее настроенные с сотнями аккаунтов, на которых уже есть нужные для взаимодействия с протоколами наборы токенов (SOL, USDC и другие).

Ресурсы и документация

Для подробного 45-минутного знакомства с Surfpool рекомендуем посмотреть этот выпуск Solana Changelog, ведущим которого выступил Джейкоб Крич, руководитель по работе с разработчиками в Solana Foundation.

Мы также запускаем серию коротких скринкастов, чтобы помочь разработчикам начать работу с Surfpool с помощью коротких практических занятий.

Полная документация доступна на сайте docs.surfpool.run.

Заключение

Впереди еще долгий путь, но будущее выглядит многообещающе. Разработчики уже проявляют большой интерес к Surfpool, а их отзывы укрепляют нашу уверенность в том, что мы создаем действительно важный продукт.

Но пока мы лишь слегка коснулись возможностей Surfpool. 

Наша цель — сделать симуляции Mainnet неотличимыми от реальной сети. 

Сегодня Surfpool пока не учитывает некоторые критически важные аспекты, включая конкуренцию и приоритизацию транзакций, а также враждебное поведение, такое как MEV и сэндвич-атаки. 

Мы с нетерпением ждем следующего этапа. Surfpool уже меняет подход к разработке на Solana, и мы намерены развивать его дальше.

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях

Увеличенное изображение