Основи Surfpool
Тестування програм Solana, які покладаються на міжпрограмні виклики (CPI), традиційно вимагає від розробників вивантаження облікових записів і програм з основної мережі, а потім завантаження їх на локальний валідатор.
Цей процес працює для кількох облікових записів, але стає абсолютно неможливим при тестуванні CPI у складних програмах, таких як Jupiter, які можуть залежати від понад 40 облікових записів і понад 8 програм.
Surfpool вирішує цю проблему, дозволяючи розробникам локально симулювати програми, використовуючи облікові записи основної мережі, які завантажуються за потребою, а також надає додаткові можливості:
- Налаштування системних змінних: Подорож у часі (тестуйте вашу програму на будь-якому історичному слоті чи часовій мітці), призупинення годинника або зупинка створення блоків
- Модифікація даних облікових записів: Встановлення запасу SOL (загального, циркулюючого та нециркулюючого), передача даних облікових записів між програмами або оновлення основних даних облікових записів та інформації про токени
- Аналіз даних блокчейну: Профілювання транзакцій для обчислювальних одиниць, змін облікових записів та деталей виконання, з подальшим отриманням детальних профілів за підписом, UUID або тегом
Що таке Surfpool
Surfpool — це комплексний SDK та набір інструментів, тоді як Surfnet — це локальна мережа Solana, яку він створює. Уявіть Surfpool як ваше середовище розробки, а Surfnet — як блокчейн-мережу, що працює всередині нього.
Surfnet служить заміною solana-test-validator, спеціально створеною для забезпечення найкращого досвіду розробки для розробників Solana.
Розроблений командою TxTx, Surfpool безперешкодно інтегрує інфраструктуру як код у проєкти на основі Anchor, забезпечуючи відтворювані, перевірені та безпечні розгортання в будь-якій мережі Solana — приватній чи публічній.
Перші кроки
Все необхідне для запуску Surfnet включено в SDK Surfpool. Оскільки процес встановлення залежить від операційної системи, дотримуйтесь офіційної сторінки встановлення для вашої конкретної конфігурації.
Після встановлення Surfpool SDK, запустіть Surfnet за допомогою:
surfpool start
Це запускає Surfnet на стандартному порту локального валідатора (http://127.0.0.1:8899
) з терміналом, що відображає:
- Слоти та Епоха: Поточні слоти виконуються автоматично кожні 400мс. Використовуйте Tab для ручного переходу до наступного слоту, або Пробіл для призупинення/відновлення автоматичного створення блоків
- Журнал транзакцій: Потік активності з часовими мітками, що показує все, що виконують ваші транзакції
Для роботи через браузер, підключіться до Surfpool Studio за цим посиланням.
Розгортання програм
Після налаштування Surfnet, розгорніть вашу програму та починайте розробку.
Anchor програми: Використовуйте anchor deploy
з вашим Anchor.toml
, налаштованим для [programs.localnet]
.
Pinocchio програми: Розгортайте через Solana CLI з конфігурацією, встановленою на localnet: solana program deploy ./target/deploy/your_program.so --program-id ./target/deploy/your_program-keypair.json
Тестування програм
Після розгортання на localnet, підключіться до Surfnet, націлившись на локальний валідатор:
import { Connection } from "@solana/web3.js";
const connection = new Connection("http://localhost:8899", "confirmed");