Кожна програма Solana читає й записує той самий стан, тому своп, повернення позики й оновлення оракула можуть виконуватися в одній атомарній транзакції. Почніть із робочого застосунку Anchor, інтегруйте живу ліквідність і запускайте проєкт із дотриманням практик промислової експлуатації.
Властивості, на які можна спиратися під час проєктування протоколу
Атомарна композитність
Програми викликають одна одну через Cross Program Invocation в межах однієї транзакції. Якщо будь-який крок завершується помилкою, уся транзакція відкочується, тож стратегія з кількома протоколами ніколи не виконується наполовину.
Кожна транзакція наперед оголошує акаунти, які вона читає й записує. Середовище виконання паралельно виконує транзакції, що не торкаються тих самих акаунтів із правом запису, тож один завантажений ринок не гальмує непов’язані.
Транзакції, що записують дані в акаунт із високою конкуренцією, змагаються за частку блоку для цього акаунта. Визначайте пріоритетні комісії за акаунтами, у які ви пишете, а не за середніми показниками по всій мережі.
Тривалість slot у mainnet скорочують поетапно, а Alpenglow замінить поточний протокол голосування та фіналізації. Стежте за обома змінами, перш ніж налаштовувати строк дії котирувань, тайм-аути та вікна ліквідації.
Типовий шлях для нового протоколу: Anchor для програми, LiteSVM і Surfpool для тестів, Codama для клієнтів і Kit для застосунку.
01Напишіть програму
Anchor або Pinocchio
Anchor — рекомендований фреймворк для більшості програм, із вбудованою валідацією акаунтів, генерацією IDL і допоміжними засобами для CPI. Звертайтеся до Pinocchio, бібліотеки без залежностей, на критичних ділянках, де важлива кожна обчислювальна одиниця.
Запускайте швидкі тести в межах процесу з LiteSVM або Mollusk. Потім проводьте інтеграційні тести на Surfpool — локальній мережі, що завантажує акаунти mainnet на вимогу, — щоб тестувати з реальними пулами й оракулами.
Генеруйте типізовані клієнти TypeScript і Rust з IDL вашої програми, щоб конструктори інструкцій і декодери акаунтів завжди відповідали кожному деплою.
@solana/kit — стандартний JavaScript SDK. Його плагін для гаманців знаходить установлені гаманці через Wallet Standard, без окремих пакетів-адаптерів для кожного гаманця.
Ці протоколи публікують документацію для розробників щодо своїх програм і API. Прочитайте документацію та звіти про аудит кожного протоколу, перш ніж спрямовувати через нього кошти користувачів.
Свопи та маршрутизація
Маршрутизуйте свопи через ліквідність Solana за допомогою API агрегатора або запитуйте необроблені інструкції, щоб скомпонувати своп у власній транзакції.
Випускайте активи з вбудованою поведінкою, яку має обробляти ваш протокол: transfer hooks, баланси з нарахуванням відсотків, масштабовані суми в UI та конфіденційні перекази.
Лише приклади. Згадка протоколу в списку не є рекомендацією Solana Foundation.
Доставка транзакцій
Проводьте транзакції, коли ринки рухаються
Трафік DeFi сягає піку під час волатильності, саме тоді, коли користувачам потрібно, щоб їхні транзакції пройшли. Закладіть ці практики у свій клієнт до запуску в mainnet.
1
Задайте обчислювальні ліміти та пріоритетні комісії
Виконайте симуляцію, щоб виміряти обчислювальні одиниці, задайте точний ліміт і визначайте пріоритетні комісії за недавніми комісіями для акаунтів, у які ви пишете.
Відстежуйте строк дії blockhash, повторно розсилайте транзакцію, доки вона не пройде або не прострочиться, і підтверджуйте на рівні фіналізації, якого потребує ваша логіка.
Програма DeFi може зберігати кошти користувачів із першого деплою. Контролюйте, хто може її змінювати, доводьте, що саме розгорнуто, і стежте за її роботою.
Закріпіть повноваження за multisig
Тримайте повноваження на оновлення програми й адміністративні повноваження в multisig Squads із часовим блокуванням змін.
Замовте незалежні аудити до запуску в mainnet і запустіть програму винагород за помилки. Solana Foundation фінансує оцінки безпеки STRIDE та безкоштовні інструменти для команд екосистеми.