Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Эта запись описывает предстоящее обновление программы LaunchLab. Она была проверена на локальной ветке релиза перед развёртыванием. Перед использованием новых аккаунтов или инструкций убедитесь в развёрнутой версии программы.
PlatformConfig.curve_params. Этот механизм проверял только точное совпадение: запись либо фиксировала поле на одно значение, либо подстраивала его с помощью sentinel. Кроме того, он мог содержать максимум 10 записей для каждого GlobalConfig, который поддерживала платформа, и находился на самом аккаунте PlatformConfig, увеличивая его на 491 байт за запись.
Эти три свойства столкнулись по мере добавления конфигов в протокол. Выражение «целевой объём сбора средств между 50 и 200 SOL» требовало одной записи на каждое допустимое значение и было поэтому невозможно. Собственные пороги GlobalConfig тем временем были открыты широко — ставки 1 bps, границы предложения 99999 — именно чтобы каждая платформа вписалась под них, что оставило платформы без способа их сузить.
Этот релиз заменяет whitelist на правила кривой: один аккаунт PlatformCurveRule на пару (платформа, конфиг), содержащий до 10 групп проверок, каждая содержит до 25 ограничений (field, op, value) над 19 параметрами запуска, с операторами Eq, Gte, Lte и Neq. Ограничения внутри группы связаны AND, группы связаны OR. Диапазон — это Gte плюс Lte на одном поле.
Полная модель и девять рабочих примеров находятся на новой странице: products/launchlab/curve-rules.
TL;DR для интеграторов
PlatformConfigсохраняет размер и все смещения существующих полей. Это фиксированные 944 байта.curve_paramsудалён;restrict_curve_param(u8),curve_rule_manager(Pubkey) и 4 байта, которые занимал префикс длины вектора, выходят из padding, который сокращается со 107 до 78.- Декодеры должны отбросить завершающий вектор. Декодер, который всё ещё ожидает
Vec<PlatformCurveParam>после padding, прочитает два новых поля как байты вектора. Всё перед padding не затронуто, поэтому декодер, который читает только кошельки комиссий и ставки, продолжит работать без изменений. - Построители запусков нуждаются в одном дополнительном аккаунте, когда флаг включен. Пока
restrict_curve_paramравен1,InitializeV2иInitializeWithToken2022требуют PDA правила вremaining_accounts— включая когда аккаунт не существует, чтобы его пропуск не мог обойти проверку. Вывод:[b"platform_curve_rule", platform_config, global_config]. - Ни одна платформа не ограничена по умолчанию.
restrict_curve_paramравен0на каждом существующем аккаунте, и0означает, что программа вообще не читает правила. - Две инструкции удалены:
UpdatePlatformCurveParamиRemovePlatformCurveParam. Четыре добавлены:CreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRule. UpdatePlatformConfigполучает два варианта:RestrictCurveParam(u64)с индексом dispatch 13 иCurveRuleManager(Pubkey)с индексом 14. Существующие индексы 0–12 не изменены.- Семь кодов ошибок добавлены,
6024–6030.6020CurveParamIsNotExistсохранён как заполнитель, хотя его последний вызывающий удалён, поэтому ничто после него не сдвигается. См.reference/error-codes. - Требуется обновление IDL. Новый тип аккаунта, четыре новые инструкции, две удалены, два новых варианта dispatch, семь новых кодов ошибок.
- Проверьте правила off-chain перед отправкой. SDK предоставляет
checkLaunchAgainstCurveRule(отражает проверку во время запуска, включая fail-closed поведение) иcheckCurveRuleGroupWritable(отражает валидацию во время записи). Обе — чистые функции. См. Check before you send. - Репетируйте на devnet перед включением на mainnet. Включение
restrict_curve_paramсразу же меняет, что могут делать ваши создатели. Рекомендуемая последовательность — включая запуск одного токена, который должен быть отклонён, чтобы доказать, что ваш построитель действительно проходит проверку правила — находится в Test on devnet first.
Что может выразить правило, чего не мог whitelist
19 полей включают четыре производные ставки —
SellRateA, LockRate, MigrateRateA, FundRaisingRateB — что делает правило портативным между предложениями вместо привязки к одному.
Делегированное управление
PlatformConfig.curve_rule_manager — это горячий кошелёк, который может создавать, обновлять, удалять и закрывать аккаунты правил этой платформы. Редактирование правил — рутинная операция, и ключ администратора платформы обычно является multisig; это поле, которое держит multisig вне цикла. Установите его один раз через UpdatePlatformConfig::CurveRuleManager.
Администратор платформы сохраняет ту же власть параллельно — программа принимает его путём повторного вывода PDA PlatformConfig от подписывающего — поэтому потерянный ключ менеджера восстанавливается путём ротации поля. Pubkey::default() означает только администратора.
Скомпрометированный ключ менеджера может ослабить или удалить правила параметров и вернуть rent аккаунта правила. Он не может переключить restrict_curve_param, трогать кошельки комиссий, поле vesting или конфиг CPMM, или нарушить лимит GlobalConfig.
Rent и размер
Аккаунт правила создаётся без группы и изменяется в размере при каждом изменении, поэтому платформа платит за правила, которые она действительно написала, и удаление группы возвращает разницу подписывающему.
Поскольку размер динамический, декодеры должны читать фактическую длину аккаунта, а не предполагать константу.
Стоимость вычислений при запуске
Проверка выполняется при каждом запуске, пока она включена. Измерено end-to-end — вывод PDA, сканированиеremaining_accounts, десериализация, оценка:
Производное ограничение стоит около 223 CU против около 48 для чтения прямого поля. Даже полностью загруженное правило остаётся в пределах трети бюджета по умолчанию 200 000 CU на инструкцию. Группы оцениваются до тех пор, пока одна не совпадёт, поэтому наиболее используемый уровень должен быть первым.
Одноразовая миграция
Платформы, которые использовали whitelist, были перенесены протоколом в один проход, прежде чем флаг стал доступен для включения. Выделенный орган запустил одну транзакцию на платформу, которая перевела каждую устаревшую запись в группы проверок аккаунта правила конфига, который она назвала, очистила записи изPlatformConfig и сжала этот аккаунт обратно до 944 байт.
Перевод сохранил старую семантику точно: каждая запись стала одной группой, каждое не-sentinel поле стало одним ограничением Eq, и запись all-sentinel — которая совпадала с каждым запуском — стала группой без ограничений, которая также совпадает с каждым запуском.
Миграция написала правила, но не включила их. Перенесённая платформа оставалась неограниченной, пока она сама не установила restrict_curve_param на 1. Инструкция миграции была удалена из программы теперь, когда проход завершён, вместе с устаревшим полем, которое она читала.
Что не изменилось
GlobalConfig. Тот же макет, те же лимиты, те же инструкции. Правила сужают эти лимиты и проверяются вместе с ними; они никогда не могут расширить один.- Списки аккаунтов и аргументы инструкций запуска.
InitializeV2иInitializeWithToken2022принимают те же фиксированные аккаунты и те же аргументы. Толькоremaining_accountsполучает запись, и только пока флаг включен. - Пути торговли, выпуска, комиссии и vesting. Не затронуты.
PlatformAllowConfig. Не изменён и не связан: он решает, какие конфиги могут использовать запуски платформы, в то время как правило решает, какие параметры внутри конфига. Два флага независимы.- Коды ошибок
6000–6023. Не изменены,6020включён. - Размер
PlatformConfigи смещения перед padding. Не изменены, поэтому существующие аккаунты не нуждаются в собственной миграции.
Обновлённые страницы
products/launchlab/curve-rules— новая страница. Трёхуровневая модель, таблицы 19 полей и 4 операторов, девять примеров, ограничение типа кривой, два off-chain помощника проверки, последовательность репетиции devnet, делегированное управление, rent, порядок развёртывания и стоимость вычислений.products/launchlab/platform-config— «Whitelist параметров кривой» заменён на «Правила параметров запуска»; макет обновлён дляrestrict_curve_param,curve_rule_managerи 78-байтного padding; таблица пути обновления, фрагмент пути чтения и подводные камни переписаны.products/launchlab/instructions— новый раздел «Правила параметров запуска платформы», охватывающий четыре инструкции, их аккаунты, аргументы и ошибки; строка инвентаря заменена.products/launchlab/accounts—PlatformCurveRuleдобавлен в инвентарь и получил собственный раздел с полным макетом и предупреждением о переменном размере.reference/error-codes—6024–6030задокументированы;6018и6020аннотированы.

