Укладач: пан Хуай, директор департаменту інвестиційних досліджень клубу Web3 Уханьського університету
Вступ
Після детального аналізу такої інформації, як репозиторій Solidity Github, дорожня карта Solidity, обговорення спільноти в Twitter, активні запити на Пул та проблеми, ця стаття глибоко занурюється в те, куди рухається майбутнє Solidity.
Провідна мова програмування смарт-контрактів ось-ось буде випущена з оновленнями 0.9.0 і 1.0.0, які представлять кілька довгоочікуваних поліпшень.
Мета цієї статті – познайомити читачів з останніми розробками та вдосконаленнями Solidity, які ґрунтуються на внеску спільноти та поточних дискусіях. Хоча надана відповідна інформація є непереконливою, вона розкриває потенційні напрямки технологічного прогресу.
1. Революційна інтеграція require() з Custom Error
Поточний метод (0.8.x):
Очікується, що це станеться на 0.9.0 або 1.0.0:
Замість того, щоб використовувати велику кількість умов 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.
7. Вбудований захист повторного входу
До версії 0.8.0 бібліотека SafeMath була поширеним інструментом, який використовувався розробниками для арифметичних операцій, щоб уникнути проблем з переповненням і переповненням нижньої межі. З виходом Solidity 0.8.0 ці перевірки безпеки вбудовані безпосередньо в мову.
Аналогічним чином, очікується, що версія Solidity 0.9.0 або 1.0.0 матиме вбудований захист від повторного входу. Ця функція призначена для спрощення процесу впровадження протоколів безпеки для запобігання атакам повторного входу.
Ви побачите щось на кшталт цього:
8. Перероблені макети успадкування та сховища
У Solidity спадкування створює новий контракт, який набуває властивостей і функціональності існуючого контракту. Заплановане оновлення спрямоване на покращення лінеаризації макетів успадкування та зберігання, тим самим підвищуючи передбачуваність та організацію контрактної архітектури. Це може підвищити ефективність використання сховища та зменшити плутанину в сценаріях із кількома успадкуваннями.
Наприклад, контрактний дочірній файл, який успадкований від ParentA та ParentB, матиме оптимізовану структуру сховища та безперервне змінне сховище, що знизить вартість операцій зі зберіганням.
9. Удосконалені прапорці компіляції та параметри конфігурації
Розробка Solidity включає розширення сфери застосування прапорців компіляції та налаштувань конфігурації, надаючи розробникам високий ступінь контролю над процесом компіляції. Ці вдосконалення можуть призвести до більш персоналізованого розгортання контрактів із точним контролем над оптимізацією газу, перевірками безпеки та можливостями налагодження.
Нові прапорці компіляції можуть дозволити розробникам перемикати певні оптимізації або перевірки безпеки:
Наприклад, новий прапорець компіляції, --enable-loop-optimization, буде зосереджений на оптимізації циклів для підвищення ефективності газу, а новий прапорець компіляції, --strict-security-checks, запровадить жорсткий аналіз безпеки під час компіляції
10. Удосконалені засоби налагодження та повідомлення про помилки
Розширений інструмент налагодження має більш детальні повідомлення про помилки і може значно спростити процес розробки, особливо для складних контрактних структур. Покращені повідомлення про помилки можуть допомогти розробникам краще зрозуміти проблеми в їхньому коді, а розширені інструменти налагодження можуть допомогти розробникам ефективніше знаходити та виправляти проблеми.
11. Підтримка розширених типів і структур даних
Впровадження складних типів даних і структур у Solidity може надихнути на нові контрактні та функціональні можливості. Це може включати підтримку більш складних числових типів, удосконалених структур даних або вдосконалених методів обробки великих наборів даних у контрактах.
Solidity може представити нову структуру даних, таку як TreeMap, яка організовує дані впорядкованим способом для ефективного пошуку. Це може бути корисно в контрактах, де дані потрібно сортувати або сортувати, наприклад, у системах голосування. [Примітка перекладача: Схоже на червоне і чорне дерево.] Іншим досягненням може бути підтримка більш складних типів чисел, таких як числа з фіксованою комою, які можуть виконувати точні математичні операції безпосередньо в контракті.
12. Знайомство з узагальненнями та шаблонами
Узагальнення та шаблони в Solidity зроблять можливим більш адаптивний та багаторазово використовуваний код. Наприклад, ви можете створити загальну функцію для обробки різних типів активів (таких як токени ERC20, NFT тощо) стандартизованим способом без необхідності переписувати функцію для кожного конкретного типу активів. Це підвищить ефективність проектування та розробки контрактів, оскільки одна функція може бути застосована до різних сценаріїв.
Майбутні перспективи: шлях до солідності 1.0.0
На різних платформах, таких як Github, Twitter, Ethresearch і Reddit, у спільноті Solidity ведеться багато дискусій щодо розробки релізу 0.9.0.
Центральною темою дебатів є оприлюднення:
Це прямий і обережний перехід на Solidity 1.0.0, щоб оголосити про повну зрілість мови, чи це поступовий перехід до більш просунутої версії з першим випуском 0.9.0?
Під впливом відгуків спільноти та творчих ідей очікуваний дебют Solidity 1.0.0, ймовірно, збігатиметься з великим оновленням для ETH Workshop, що відображає зростання та стабільність екосистеми в цілому.
Еволюція типових систем: підвищення гнучкості та безпеки. Очікується, що з’явиться система модернізаційного типу, яка черпатиме натхнення з функціональних мов програмування, таких як Haskell або Scala. Ця еволюція спрямована на підвищення безпеки та гнучкості розробки контрактів.
Інтегрована вбудована підтримка оракулів: спростіть взаємодію із зовнішніми даними. Плани включають інтеграцію вбудованої підтримки децентралізованих оракулів у Solidity, що сприятиме більш безпечній та прямій взаємодії із зовнішніми джерелами даних.
Покращення управління станами: покращення взаємодії з блокчейном. Обговорюються вдосконалення можливостей управління станами, а такі елементи, як державні канали або сайдчейни, можуть бути представлені як вбудовані структури, призначені для оптимізації взаємодії в блокчейні та зниження плати за газ.
Модульний підхід до проектування контрактів: покращення можливості повторного використання. Передбачається перехід на модульну контрактну архітектуру, що дозволяє використовувати змінні компоненти. Це значно спрощує процес розробки та покращує працездатність коду.
Інтегруйте інструменти формальної перевірки: забезпечте надійність контракту. Очікується, що формальні інструменти верифікації будуть інтегровані безпосередньо в Solidity, крок, який спрямований на забезпечення відповідності контрактів певним стандартам і поведінці, тим самим зменшуючи ймовірність помилок і вразливостей.
Створіть крос-чейн можливості: Досягніть сумісності між блокчейнами. Майбутні оновлення можуть представити нативні функції крос-чейн сумісності, що дозволить контрактам Solidity безперебійно працювати в різних блокчейн-протоколах.
Впроваджуйте розширені заходи конфіденційності: підвищуйте безпеку даних. Планується інтегрувати передові інструменти конфіденційності, такі як докази з нульовим розголошенням або гомоморфне шифрування, безпосередньо в мову, щоб підвищити безпеку даних і конфіденційність користувачів.
Квантово-стійка криптографія: підготовка до майбутніх викликів. Враховуючи нові можливості квантових обчислень, люди розглядають можливість впровадження квантово-стійких методів криптографії, щоб захистити ETH контракти від потенційних майбутніх загроз.
Висновок
Коли ви досліджуєте потенційні шляхи до Solidity, ця стаття поєднує ідеї спільноти та поточні події з прогнозами спільноти, щоб дати вам повне розуміння теми. Хоча ми заглибилися в можливості версій 0.9.0 і 1.0.0, фактична траєкторія та набір функцій можуть змінюватися, оскільки Solidity продовжує свій шлях розробки. Слідкуйте за оновленнями, щоб побачити, як ці розмови та концепції оживають у світі програмування смарт-контрактів, що постійно розвивається.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Які покращення є в новій версії мови смарт-контрактів Solidity?
Автор: Адам Буджемаа
Укладач: пан Хуай, директор департаменту інвестиційних досліджень клубу Web3 Уханьського університету
Вступ
Після детального аналізу такої інформації, як репозиторій Solidity Github, дорожня карта Solidity, обговорення спільноти в Twitter, активні запити на Пул та проблеми, ця стаття глибоко занурюється в те, куди рухається майбутнє Solidity.
Провідна мова програмування смарт-контрактів ось-ось буде випущена з оновленнями 0.9.0 і 1.0.0, які представлять кілька довгоочікуваних поліпшень.
Мета цієї статті – познайомити читачів з останніми розробками та вдосконаленнями Solidity, які ґрунтуються на внеску спільноти та поточних дискусіях. Хоча надана відповідна інформація є непереконливою, вона розкриває потенційні напрямки технологічного прогресу.
1. Революційна інтеграція require() з Custom Error
Поточний метод (0.8.x):
Очікується, що це станеться на 0.9.0 або 1.0.0:
Замість того, щоб використовувати велику кількість умов 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.
7. Вбудований захист повторного входу
До версії 0.8.0 бібліотека SafeMath була поширеним інструментом, який використовувався розробниками для арифметичних операцій, щоб уникнути проблем з переповненням і переповненням нижньої межі. З виходом Solidity 0.8.0 ці перевірки безпеки вбудовані безпосередньо в мову.
Аналогічним чином, очікується, що версія Solidity 0.9.0 або 1.0.0 матиме вбудований захист від повторного входу. Ця функція призначена для спрощення процесу впровадження протоколів безпеки для запобігання атакам повторного входу.
Ви побачите щось на кшталт цього:
8. Перероблені макети успадкування та сховища
У Solidity спадкування створює новий контракт, який набуває властивостей і функціональності існуючого контракту. Заплановане оновлення спрямоване на покращення лінеаризації макетів успадкування та зберігання, тим самим підвищуючи передбачуваність та організацію контрактної архітектури. Це може підвищити ефективність використання сховища та зменшити плутанину в сценаріях із кількома успадкуваннями.
Наприклад, контрактний дочірній файл, який успадкований від ParentA та ParentB, матиме оптимізовану структуру сховища та безперервне змінне сховище, що знизить вартість операцій зі зберіганням.
9. Удосконалені прапорці компіляції та параметри конфігурації
Розробка Solidity включає розширення сфери застосування прапорців компіляції та налаштувань конфігурації, надаючи розробникам високий ступінь контролю над процесом компіляції. Ці вдосконалення можуть призвести до більш персоналізованого розгортання контрактів із точним контролем над оптимізацією газу, перевірками безпеки та можливостями налагодження.
Нові прапорці компіляції можуть дозволити розробникам перемикати певні оптимізації або перевірки безпеки:
Наприклад, новий прапорець компіляції, --enable-loop-optimization, буде зосереджений на оптимізації циклів для підвищення ефективності газу, а новий прапорець компіляції, --strict-security-checks, запровадить жорсткий аналіз безпеки під час компіляції
10. Удосконалені засоби налагодження та повідомлення про помилки
Розширений інструмент налагодження має більш детальні повідомлення про помилки і може значно спростити процес розробки, особливо для складних контрактних структур. Покращені повідомлення про помилки можуть допомогти розробникам краще зрозуміти проблеми в їхньому коді, а розширені інструменти налагодження можуть допомогти розробникам ефективніше знаходити та виправляти проблеми.
11. Підтримка розширених типів і структур даних
Впровадження складних типів даних і структур у Solidity може надихнути на нові контрактні та функціональні можливості. Це може включати підтримку більш складних числових типів, удосконалених структур даних або вдосконалених методів обробки великих наборів даних у контрактах.
Solidity може представити нову структуру даних, таку як TreeMap, яка організовує дані впорядкованим способом для ефективного пошуку. Це може бути корисно в контрактах, де дані потрібно сортувати або сортувати, наприклад, у системах голосування. [Примітка перекладача: Схоже на червоне і чорне дерево.] Іншим досягненням може бути підтримка більш складних типів чисел, таких як числа з фіксованою комою, які можуть виконувати точні математичні операції безпосередньо в контракті.
12. Знайомство з узагальненнями та шаблонами
Узагальнення та шаблони в Solidity зроблять можливим більш адаптивний та багаторазово використовуваний код. Наприклад, ви можете створити загальну функцію для обробки різних типів активів (таких як токени ERC20, NFT тощо) стандартизованим способом без необхідності переписувати функцію для кожного конкретного типу активів. Це підвищить ефективність проектування та розробки контрактів, оскільки одна функція може бути застосована до різних сценаріїв.
Майбутні перспективи: шлях до солідності 1.0.0
На різних платформах, таких як Github, Twitter, Ethresearch і Reddit, у спільноті Solidity ведеться багато дискусій щодо розробки релізу 0.9.0.
Центральною темою дебатів є оприлюднення:
Це прямий і обережний перехід на Solidity 1.0.0, щоб оголосити про повну зрілість мови, чи це поступовий перехід до більш просунутої версії з першим випуском 0.9.0?
Під впливом відгуків спільноти та творчих ідей очікуваний дебют Solidity 1.0.0, ймовірно, збігатиметься з великим оновленням для ETH Workshop, що відображає зростання та стабільність екосистеми в цілому.
Еволюція типових систем: підвищення гнучкості та безпеки. Очікується, що з’явиться система модернізаційного типу, яка черпатиме натхнення з функціональних мов програмування, таких як Haskell або Scala. Ця еволюція спрямована на підвищення безпеки та гнучкості розробки контрактів.
Інтегрована вбудована підтримка оракулів: спростіть взаємодію із зовнішніми даними. Плани включають інтеграцію вбудованої підтримки децентралізованих оракулів у Solidity, що сприятиме більш безпечній та прямій взаємодії із зовнішніми джерелами даних.
Покращення управління станами: покращення взаємодії з блокчейном. Обговорюються вдосконалення можливостей управління станами, а такі елементи, як державні канали або сайдчейни, можуть бути представлені як вбудовані структури, призначені для оптимізації взаємодії в блокчейні та зниження плати за газ.
Модульний підхід до проектування контрактів: покращення можливості повторного використання. Передбачається перехід на модульну контрактну архітектуру, що дозволяє використовувати змінні компоненти. Це значно спрощує процес розробки та покращує працездатність коду.
Інтегруйте інструменти формальної перевірки: забезпечте надійність контракту. Очікується, що формальні інструменти верифікації будуть інтегровані безпосередньо в Solidity, крок, який спрямований на забезпечення відповідності контрактів певним стандартам і поведінці, тим самим зменшуючи ймовірність помилок і вразливостей.
Створіть крос-чейн можливості: Досягніть сумісності між блокчейнами. Майбутні оновлення можуть представити нативні функції крос-чейн сумісності, що дозволить контрактам Solidity безперебійно працювати в різних блокчейн-протоколах.
Впроваджуйте розширені заходи конфіденційності: підвищуйте безпеку даних. Планується інтегрувати передові інструменти конфіденційності, такі як докази з нульовим розголошенням або гомоморфне шифрування, безпосередньо в мову, щоб підвищити безпеку даних і конфіденційність користувачів.
Квантово-стійка криптографія: підготовка до майбутніх викликів. Враховуючи нові можливості квантових обчислень, люди розглядають можливість впровадження квантово-стійких методів криптографії, щоб захистити ETH контракти від потенційних майбутніх загроз.
Висновок
Коли ви досліджуєте потенційні шляхи до Solidity, ця стаття поєднує ідеї спільноти та поточні події з прогнозами спільноти, щоб дати вам повне розуміння теми. Хоча ми заглибилися в можливості версій 0.9.0 і 1.0.0, фактична траєкторія та набір функцій можуть змінюватися, оскільки Solidity продовжує свій шлях розробки. Слідкуйте за оновленнями, щоб побачити, як ці розмови та концепції оживають у світі програмування смарт-контрактів, що постійно розвивається.