Какие улучшения есть в новой версии языка смарт-контрактов Solidity?

Автор: Адам Будьемаа

Составитель: г-н Хуай, директор департамента инвестиционных исследований Web3 Club Уханьского университета

Введение

После обширного анализа такой информации, как репозиторий Solidity на Github, дорожная карта Solidity, обсуждения сообщества в Twitter, активные запросы на слияние и проблемы, в этой статье делается глубокое погружение в то, куда движется будущее Solidity.

Ведущий язык программирования смарт-контрактов скоро будет выпущен с обновлениями 0.9.0 и 1.0.0, которые внесут несколько долгожданных улучшений.

Цель этой статьи - познакомить читателей с последними разработками и улучшениями в Solidity, которые основаны на предложениях сообщества и текущих дебатах. Несмотря на то, что представленная информация не является окончательной, она раскрывает потенциальные направления технологического прогресса.

1. Революционная интеграция require() с Custom Error

Текущий метод (0.8.x):

详解智能合约语言Solidity新版本有哪些改进?

Ожидается, что это произойдет в версии 0.9.0 или 1.0.0:

详解智能合约语言Solidity新版本有哪些改进?

Вместо того, чтобы использовать большое количество условий if для выдачи ошибки со строковой информацией или пользовательской ошибки, использование комбинации require() и пользовательской ошибки сделает программу более понятной и сэкономит ресурсы.

2. Оптимизация внутреннего представления (IR): эффективность релиза

Процесс внутреннего представления (IR) в Solidity играет ключевую роль в преобразовании исходного кода смарт-контракта в исполняемые инструкции для виртуальной машины ETH (EVM).

Внутреннее представление оптимизирует и стандартизирует сложный код, делая процесс преобразования кода в машинный язык более эффективным. Предстоящие улучшения Solidity в версии 0.9.0 призваны сделать этот процесс компиляции более быстрым и эффективным, что в конечном итоге снизит затраты и повысит производительность разработчиков.

3. Улучшенная обработка ошибок: прояснение и упрощение кода

Ожидается, что будущие обновления улучшат обработку ошибок в Solidity, что приведет к более простым сообщениям об ошибках и упрощению отладки.

Это улучшение особенно полезно для разработчиков, работающих со сложными контрактами, экономя время и сводя к минимуму возможные ошибки.

4. Арифметика с фиксированной запятой: высокая точность и высокая производительность

[Примечание переводчика: Число с фиксированной запятой — это тип данных, используемый компьютерами для представления десятичных чисел, соответствующих числам с плавающей запятой, а его целые цифры и десятичные знаки являются фиксированными значениями, поэтому они более безопасны, чем числа с плавающей запятой.] В настоящее время Solidity не имеет встроенных типов данных, представляющих десятичные дроби, и разработчикам часто приходится умножать исходные данные на большое число, чтобы вручную зарезервировать десятичные знаки, и следить за проблемой десятичной запятой в последующих операциях, что довольно хлопотно. 】

На этом этапе внешние библиотеки, такие как ABDKMath64x64 и DSMath, используют Solidity для реализации чисел с фиксированной запятой.

Ожидается, что в обновлении 0.9.0 будет интегрирована собственная арифметика с фиксированной запятой и больше не будут требоваться внешние библиотеки. Это значительно упростит десятичные вычисления.

5. Формат объекта EVM (EOF): создание байт-кода смарт-контракта

Предстоящее обновление EOF от Solidity готовит к внедрению структурированного и версионного байт-кода для смарт-контрактов.

Ожидается, что это улучшение упростит реализацию будущих обновлений контрактов, обеспечит обратную совместимость и обеспечит более эффективный анализ на этапе компиляции.

Хотя это не изменит опыт прямого кодирования для разработчиков смарт-контрактов, вывод компилятора будет более экономичным.

6. Временное хранение: оперативная и эффективная обработка данных

Новая функция Solidity, Transient Storage, предлагает способ временного сохранения данных во время исполнения контракта без постоянной записи их в блокчейн. Ожидается, что такой подход будет более эффективным с точки зрения потребления газа.

Временное хранилище, подобное приведенному ниже коду, скорее всего, будет найдено в Solidity 0.9.0 или Solidity 1.0.0.

详解智能合约语言Solidity新版本有哪些改进?

7. Встроенная защита от повторного входа

До версии 0.8.0 библиотека SafeMath была распространенным инструментом, используемым разработчиками для арифметических операций, чтобы избежать проблем с переполнением и переполнением нижнего предела. С выпуском Solidity 0.8.0 эти проверки безопасности встроены непосредственно в язык.

Аналогичным образом, ожидается, что в Solidity версии 0.9.0 или 1.0.0 будет встроена защита от повторного входа. Эта функция предназначена для упрощения процесса внедрения протоколов безопасности для предотвращения атак с повторным входом.

Вы увидите что-то вроде этого:

详解智能合约语言Solidity新版本有哪些改进?

8. Рефакторинг макетов наследования и хранения

В Solidity наследование создает новый контракт, который приобретает свойства и функциональность существующего контракта. Планируемое обновление направлено на улучшение линеаризации схем наследования и хранения, тем самым повышая предсказуемость и организацию контрактной архитектуры. Это может повысить эффективность использования хранилища и уменьшить путаницу в сценариях множественного наследования.

Например, дочерний элемент контракта, наследуемый от ParentA и ParentB, будет иметь оптимизированную структуру хранилища и непрерывное хранение переменных, что снизит затраты на операции хранения.

9. Расширенные флаги компиляции и параметры конфигурации

Разработка Solidity включает в себя расширение области применения флагов компиляции и конфигурационных настроек, предоставляя разработчикам высокую степень контроля над процессом компиляции. Эти усовершенствования могут привести к более настраиваемым развертываниям контрактов с точным контролем над оптимизацией газа, проверками безопасности и возможностями отладки.

Новые флаги компиляции позволяют разработчикам переключать определенные оптимизации или проверки безопасности:

Например, новый флаг компиляции, --enable-loop-optimization, будет сосредоточен на оптимизации циклов для повышения эффективности использования газа, а новый флаг компиляции, --strict-security-checks, будет вводить жесткий анализ безопасности во время компиляции

10. Улучшенные средства отладки и сообщения об ошибках

Улучшенный инструмент отладки имеет более подробные сообщения об ошибках и может значительно упростить процесс разработки, особенно для сложных контрактных структур. Улучшенные сообщения об ошибках могут помочь разработчикам лучше понять проблемы в своем коде, а расширенные средства отладки могут помочь разработчикам более эффективно находить и устранять проблемы.

11. Поддержка расширенных типов и структур данных

Внедрение сложных типов данных и структур в Solidity может вдохновить на создание новых контрактов и функциональные возможности. Это может включать поддержку более сложных числовых типов, улучшенные структуры данных или улучшенные методы обработки больших наборов данных в контрактах.

Solidity может внедрить новую структуру данных, такую как TreeMap, которая организует данные в виде сортировки для эффективного извлечения. Это может быть полезно в контрактах, где данные должны быть отсортированы или отсортированы, например, в системах голосования. [Примечание переводчика: Похоже на красное и черное дерево.] Еще одним усовершенствованием может стать поддержка более сложных типов чисел, таких как числа с фиксированной запятой, которые могут выполнять точные математические операции непосредственно в контракте.

12. Знакомство с универсальными шаблонами и шаблонами

Универсальные шаблоны и шаблоны в Solidity сделают код более адаптируемым и многократно используемым. Например, вы можете создать универсальную функцию для обработки различных типов активов (таких как токены ERC20, NFT и т. д.) стандартизированным способом без необходимости переписывать функцию для каждого конкретного типа активов. Это повысит эффективность проектирования и разработки контрактов, так как одна функция может быть применена к различным сценариям.

详解智能合约语言Solidity新版本有哪些改进?

Перспективы на будущее: путь к Solidity 1.0.0

На различных платформах, таких как Github, Twitter, Ethresearch и Reddit, в сообществе Solidity ведется много дискуссий о разработке версии 0.9.0.

В центре внимания дебатов обнародованы:

Является ли это простым и осторожным переходом на Solidity 1.0.0, чтобы объявить о полной зрелости языка, или это постепенный переход к более продвинутой версии с релизом 0.9.0?

Ожидаемый дебют Solidity 1.0.0 под влиянием отзывов сообщества и творческих идей, скорее всего, совпадет с крупным обновлением для ETH Workshop, отражающим рост и стабильность экосистемы в целом.

  1. Эволюция систем типов: повышение гибкости и безопасности. Ожидается, что появится система апгрейд-типа, которая черпает вдохновение из функциональных языков программирования, таких как Haskell или Scala. Эта эволюция направлена на повышение безопасности и гибкости разработки контрактов.

  2. Встроенная встроенная поддержка оракулов: упрощение взаимодействия с внешними данными. Планы включают в себя интеграцию встроенной поддержки децентрализованных оракулов в Solidity, что способствует более безопасному и прямому взаимодействию с внешними источниками данных.

  3. Улучшение управления состоянием: Улучшение взаимодействия с блокчейном. В настоящее время обсуждаются усовершенствования возможностей управления состоянием, и такие элементы, как каналы состояний или сайдчейны, могут быть введены в качестве встроенных структур, предназначенных для оптимизации взаимодействий в блокчейне и снижения платы за газ.

  4. Модульный подход к проектированию контрактов: улучшение возможности повторного использования. Предусматривается переход к модульной контрактной архитектуре, позволяющей использовать сменные компоненты. Это значительно упрощает процесс разработки и повышает работоспособность кода.

  5. Интегрируйте инструменты формальной проверки: обеспечьте надежность контракта. Ожидается, что инструменты формальной проверки будут интегрированы непосредственно в Solidity, что направлено на обеспечение соответствия контрактов определенным стандартам и поведению, тем самым снижая вероятность ошибок и уязвимостей.

  6. Создание кроссчейн-возможностей: Обеспечьте совместимость между блокчейнами. В будущих обновлениях могут появиться встроенные функции кроссчейн-совместимости, что позволит контрактам Solidity бесперебойно работать в различных протоколах блокчейна.

  7. Внедрите расширенные меры конфиденциальности: повысьте безопасность данных. В настоящее время разрабатываются планы по интеграции передовых инструментов конфиденциальности, таких как доказательства с нулевым разглашением или гомоморфное шифрование, непосредственно в язык для повышения безопасности данных и конфиденциальности пользователей.

  8. Квантово-устойчивая криптография: подготовка к будущим вызовам. Учитывая новые возможности квантовых вычислений, люди рассматривают возможность внедрения квантово-устойчивых методов криптографии для защиты контрактов ETH от потенциальных угроз в будущем.

Заключение

По мере того, как вы исследуете потенциальные пути к Solidity, эта статья сочетает в себе мнения сообщества и текущие разработки с прогнозами сообщества, чтобы дать вам полное понимание темы. Несмотря на то, что мы углубились в возможности версий 0.9.0 и 1.0.0, фактическая траектория и набор функций могут измениться по мере того, как Solidity продолжает свой путь разработки. Оставайтесь с нами, чтобы увидеть, как эти разговоры и концепции воплощаются в жизнь в постоянно развивающемся мире программирования смарт-контрактов.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить