For the complete documentation index, see llms.txt. This page is also available as Markdown.

Бюджет вычислений

Стоимость вычислительных единиц Solana (CU) для операций Rome EVM — атомарные и итеративные бюджеты и принципы проектирования экономичных по CU контрактов Solidity.

Каждая транзакция Solana имеет вычислительный бюджет, измеряемый в единицах вычисления (CU). Понимание затрат CU помогает проектировать эффективные контракты Rome.

Обзор бюджета

Режим
Макс. CU
Примечания

Атомарный (VmAt)

~1,400,000 CU

Одна транзакция Solana

Итеративный (VmIt)

Без ограничений (multi-tx)

Адаптивные опкоды/шаг — подгоняются под бюджет CU каждой транзакции

Каждая транзакция Solana по умолчанию имеет бюджет 200,000 CU, который можно увеличить примерно до 1.4M CU с помощью инструкций compute budget (добавляются автоматически SDK Rome).

Оценка затрат CU

Операции EVM

Операция
Примерный расход CU
Примечания

Проверка подписи (ecrecover)

~5,000 CU

secp256k1 через системный вызов Solana

Простой перевод

~50,000-100,000 CU

Только обновление балансов

Перевод ERC-20

~100,000-150,000 CU

Включает вызов SPL precompile

Развертывание контракта (небольшого размера)

~200,000-400,000 CU

Зависит от размера байткода

Запись в хранилище (SSTORE)

~5,000-20,000 CU

Холодный и теплый доступ

Операции предкомпиляции

Предкомпиляция
Примерный расход CU

ecrecover

~3,000-5,000 CU

SHA-256

~1,000 CU

BN254 ecAdd

~10,000 CU

BN254 ecMul

~40,000 CU

BN254 ecPairing

~200,000+ CU

Техники оптимизации

1. Используйте Yul для критически важных участков

Оптимизатор Solidity генерирует приемлемый код, но Yul (встроенный ассемблер) может значительно снизить CU для критически важных операций:

2. Кэшируйте вычисления PDA

Вычисление PDA через find_program_address — дорогая операция. Храните вычисленные PDA в хранилище контракта, а не вычисляйте их при каждом вызове:

3. Жестко задавайте известные ID программ

Не загружайте ID программ из хранилища — используйте константы:

4. Минимизируйте число аккаунтов

Каждый аккаунт в транзакции Solana увеличивает накладные расходы CU. Сократите число аккаунтов за счет:

  • Группировки операций, использующих общие аккаунты

  • Использования меньшего числа промежуточных аккаунтов

  • Избежания избыточных проверок создания ATA

5. Используйте настройки оптимизатора

Соберите с помощью npx hardhat compile --build-profile production.

Измерение потребления CU

Используйте eth_estimateGas для измерения CU перед отправкой:

Или через ethers.js:

Что дальше

Последнее обновление

Это было полезно?