Вышла новая версия Solidity 0.8.30
Команда Solidity представила версию 0.8.30 компилятора. Этот релиз — техническое обновление, связанное с предстоящим обновлением сети Ethereum Pectra, которое вышло на прошлой неделе. Основное изменение — смена EVM-версии по умолчанию с Cancun на Prague.
Pectra — это масштабное обновление Ethereum, следующее за Dencun, которое вносит изменения как в execution layer, так и в consensus layer сети. Рассмотрим ключевые EIP, влияющие на Solidity.
EIP-7623: Увеличение стоимости calldata
EIP-7623 повышает стоимость calldata для транзакций, которые в основном отправляют данные. Это компенсирует увеличение пропускной способности из-за EIP-7691, уменьшая максимальный размер блока.
Изменение может повлиять на оптимизацию констант в компиляторе. Например, значение 2**256 - 1 можно закодировать как PUSH32 (3 газа, 33 байта) или PUSH0 NOT (5 газа, 2 байта). Оптимизатор выбирает вариант, исходя из стоимости calldata, но из-за нелинейного роста затрат точный расчет усложняется.
Команда Solidity не стала вносить изменения в алгоритмы оптимизации, так как учесть новый расчет стоимости на уровне отдельных opcode практически невозможно. Вместо этого рекомендуется настраивать параметры оптимизации вручную, например, через --optimizer-runs.
EIP-7702: Делегирование EOA контракту
EIP-7702 добавляет новый тип транзакции, позволяющий EOA временно делегировать управление контракту. Это важный шаг к полной account abstraction.
В версии 0.8.30 нет изменений, связанных с этим EIP, но предыдущий релиз (0.8.29) добавил контроль над storage layout, чтобы несколько пользователей могли безопасно использовать хранилище одного EOA.
EIP-2537: Прекомпиляция для операций с BLS12-381
EIP-2537 добавляет прекомпиляцию для верификации BLS-подписей на блокчейне. В отличие от ECDSA, BLS-подписи поддерживают агрегацию, что делает их полезными для консенсуса.
Пока Solidity не добавляет встроенную поддержку BLS, так как вызовы прекомпилированных контрактов можно реализовать через внешние функции. Команда рассматривает возможность включения этой функциональности в стандартную библиотеку в будущем.
Исправления и улучшения
1. Установлена EVM-версия по умолчанию prague.
2. NatSpec теперь фиксирует документацию enum в AST.
3. Исправлены ошибки в SMTChecker, включая ложные отчеты о постоянных условиях и внутренние ошибки компилятора.
Обновляйтесь и тестируйте свои контракты с выходом Pectra!
#solidity
Post #1373
973
- 👍 11
- ❤ 3