Каждая программа Solana читает и записывает одно и то же состояние, поэтому обмен, погашение займа и обновление оракула могут выполняться в одной атомарной транзакции. Начните с рабочего приложения на Anchor, подключите живую ликвидность и выпускайте проект, следуя продакшен-практикам.
Свойства, на которые можно опираться при проектировании протокола
Атомарная компонуемость
Программы вызывают друг друга через Cross Program Invocation в рамках одной транзакции. Если любой шаг завершается ошибкой, вся транзакция откатывается, поэтому стратегия с несколькими протоколами никогда не выполнится наполовину.
Каждая транзакция заранее объявляет аккаунты, которые она читает и в которые пишет. Среда выполнения параллельно исполняет транзакции, не затрагивающие одни и те же изменяемые аккаунты, поэтому один загруженный рынок не тормозит несвязанные с ним.
Транзакции, записывающие данные в востребованный аккаунт, конкурируют за долю блока, приходящуюся на этот аккаунт. Определяйте приоритетные комиссии по аккаунтам, в которые вы пишете, а не по средним значениям по всей сети.
Время slot в основной сети сокращается поэтапно, а Alpenglow заменит нынешний протокол голосования и финализации. Следите за обоими изменениями, прежде чем настраивать срок действия котировок, тайм-ауты и окна ликвидации.
Путь по умолчанию для нового протокола: Anchor для программы, LiteSVM и Surfpool для тестов, Codama для клиентов и Kit для приложения.
01Напишите программу
Anchor или Pinocchio
Anchor — рекомендуемый фреймворк для большинства программ: проверка аккаунтов, генерация IDL и помощники для CPI уже встроены. Pinocchio, библиотеку без зависимостей, стоит применять на горячих путях, где важна каждая вычислительная единица.
Запускайте быстрые тесты в рамках процесса с помощью LiteSVM или Mollusk. Затем выполняйте интеграционные тесты на Surfpool — локальной сети, которая подгружает аккаунты основной сети по запросу, так что можно тестировать на реальных пулах и оракулах.
Генерируйте типизированные клиенты на TypeScript и Rust из IDL вашей программы, чтобы конструкторы инструкций и декодеры аккаунтов всегда соответствовали каждому деплою.
@solana/kit — стандартный JavaScript SDK. Его плагин кошелька находит установленные кошельки через Wallet Standard, без отдельных пакетов-адаптеров для каждого кошелька.
Эти протоколы публикуют документацию для разработчиков по своим программам и API. Прежде чем направлять через протокол средства пользователей, изучите его документацию и отчёты об аудите.
Обмены и маршрутизация
Направляйте обмены по ликвидности Solana через API агрегатора или запрашивайте «сырые» инструкции, чтобы встроить обмен в собственную транзакцию.
Выпускайте активы со встроенным поведением, которое должен учитывать ваш протокол: transfer hooks, балансы с начислением процентов, масштабируемые суммы в интерфейсе и конфиденциальные переводы.
Только примеры. Упоминание протокола не является рекомендацией Фонда Solana.
Доставка транзакций
Проводите транзакции, когда рынки движутся
Пик DeFi-трафика приходится на периоды волатильности — именно тогда, когда пользователям нужно, чтобы их транзакции прошли. Заложите всё это в клиент до запуска в основной сети.
1
Задайте лимиты вычислений и приоритетные комиссии
Запустите симуляцию, чтобы измерить вычислительные единицы, задайте точный лимит и определяйте приоритетные комиссии по недавним комиссиям для аккаунтов, в которые вы пишете.
Транзакции v1 увеличивают лимит размера, а таблицы поиска адресов сжимают длинные списки аккаунтов. У каждого варианта есть компромиссы для сложных маршрутов.
Stake-weighted QoS резервирует пропускную способность лидера для транзакций, пересылаемых validator со стейком. Выберите RPC-провайдера, который его поддерживает.
Отслеживайте истечение срока действия blockhash, повторно рассылайте транзакцию, пока она не пройдёт или не истечёт, и подтверждайте её на уровне commitment, который нужен вашей логике.
DeFi-программа может хранить средства пользователей с самого первого деплоя. Контролируйте, кто может её изменять, подтверждайте, что именно развёрнуто, и следите за её работой.
Защитите права управления мультиподписью
Храните права на обновление программы и административные права в мультиподписи Squads с тайм-локом на изменения.
Пройдите независимые аудиты до запуска в основной сети и запустите программу bug bounty. Фонд Solana финансирует оценки безопасности STRIDE и бесплатные инструменты для команд экосистемы.