
Surfpool 101
Testar programas Solana que dependem de Cross-Program Invocations (CPIs) tradicionalmente exige que os desenvolvedores façam dump de contas e programas da mainnet e depois os carreguem em um validador local.
Esse processo funciona para algumas contas, mas torna-se completamente inviável ao testar CPIs em programas complexos como o Jupiter, que pode depender de mais de 40 contas e mais de 8 programas.
O Surfpool resolve isso permitindo que os desenvolvedores simulem programas localmente usando contas da mainnet buscadas sob demanda, além de recursos adicionais:
Personalize variáveis do sistema: Viagem no tempo (teste seu programa em qualquer slot ou timestamp histórico), pause o relógio ou interrompa a produção de blocos
Modifique dados de contas: Defina o fornecimento de SOL (total, circulante e não circulante), transfira dados de contas entre programas ou atualize dados centrais da conta e informações da conta de token
Analise dados da chain: Faça perfil de transações para unidades de compute, mudanças em contas e detalhes de execução, e depois recupere perfis detalhados por assinatura, UUID ou tag
O que é o Surfpool
Surfpool é o SDK e conjunto de ferramentas abrangente, enquanto o Surfnet é a rede Solana local que ele cria. Pense no Surfpool como seu ambiente de desenvolvimento e no Surfnet como a rede blockchain executada dentro dele.
O Surfnet serve como um substituto direto para o solana-test-validator, construído especificamente para oferecer a melhor experiência de desenvolvimento para construtores na Solana.
Desenvolvido pela equipe TxTx, o Surfpool integra perfeitamente Infrastructure as Code em projetos baseados em Anchor, permitindo deployments reproduzíveis, auditáveis e seguros para qualquer rede Solana — privada ou pública.
Primeiros Passos
Tudo o que você precisa para executar o Surfnet está incluído no SDK do Surfpool. Como a instalação varia de acordo com o sistema operacional, siga a Página de Instalação oficial para sua configuração específica.
Após instalar o SDK do Surfpool, inicie o Surfnet com:
surfpool startIsso inicia o Surfnet na porta padrão do validador local (http://127.0.0.1:8899) com uma interface de terminal exibindo:
Slots e Epoch: Os slots em execução atual processam automaticamente a cada 400ms. Use Tab para avançar manualmente para o próximo slot, ou Barra de espaço para pausar/retomar a produção automática de blocos
Logs de transações: Fluxo de atividade com timestamp mostrando tudo o que suas transações executam
Para uma experiência baseada em navegador, conecte-se ao Surfpool Studio neste link.
Fazendo Deploy de Programas
Após configurar o Surfnet, faça o deploy do seu programa e comece a construir.
Programas Anchor: Use anchor deploy com seu Anchor.toml configurado para [programs.localnet].
Programas Pinocchio: Faça deploy via Solana CLI com sua configuração definida para localnet: solana program deploy ./target/deploy/your_program.so --program-id ./target/deploy/your_program-keypair.json
Testando Programas
Após fazer o deploy para localnet, conecte-se ao Surfnet direcionando para o validador local:
import { Connection } from "@solana/web3.js";
const connection = new Connection("http://localhost:8899", "confirmed");