Вот как работает базовая операция Solidity изнутри. Возьмем простое выражение, например, uint c = a + b — кажется, что оно очень простое при написании, но компилятор преобразует его в нечто совершенно иное на уровне байткода.
После компиляции вы получаете набор опкодов, которые примерно выглядят так: PUSH1 a PUSH1 b ADD
Это говорит виртуальная машина Ethereum (EVM). Каждая инструкция выполняется одна за другой. Клиент обрабатывает каждый отдельный опкод последовательно, помещая значения в стек, выполняя операции и переходя к следующей инструкции. Никаких сокращений, никакой магии — только детерминированная последовательность шагов, которая преобразует ваш код высокого уровня в машинно-исполняемые операции.
Именно поэтому оптимизация газа так важна в разработке блокчейн-приложений. Каждый опкод имеет свою стоимость, и понимание того, какой байткод генерируется из вашего Solidity, — это разница между эффективными и расточительными смарт-контрактами.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
10 Лайков
Награда
10
5
Репост
Поделиться
комментарий
0/400
SelfSovereignSteve
· 2ч назад
Первый раз я понял, что наш код такой простой и грубый, прямо как стековая безумная толчка и тянучка
gas действительно является ключевым моментом, разница между контрактами, понимающими байткод и не понимающими, очень велика
Эй, почему некоторые все еще пишут такие вещи, которые сильно расходуют gas...
Написание на Solidity действительно приятно, но после компиляции эта вся система выглядит очень запутанной
Вот почему низкоуровневые операции в assembly иногда могут сэкономить большие деньги
Посмотреть ОригиналОтветить0
SchrödingersNode
· 2ч назад
Кажется, простое сложение после компиляции превращается в этот набор опкодов... Каждый раз нужно напоминать себе, что не стоит считать что-то очевидным
Посмотреть ОригиналОтветить0
BearMarketBarber
· 2ч назад
Честно говоря, разработка на Solidity без знания байткода — это платная интеллектуальная налоговая плата.
Посмотреть ОригиналОтветить0
RetiredMiner
· 2ч назад
Черт, написать a+b оказалось так сложно на самом деле, неудивительно, что комиссия за газ такая больная
Посмотреть ОригиналОтветить0
AirdropSkeptic
· 2ч назад
Вот так, за простой строкой кода скрывается выполнение opcode, неудивительно, что комиссия за газ такая жадная...
Вот как работает базовая операция Solidity изнутри. Возьмем простое выражение, например, uint c = a + b — кажется, что оно очень простое при написании, но компилятор преобразует его в нечто совершенно иное на уровне байткода.
После компиляции вы получаете набор опкодов, которые примерно выглядят так:
PUSH1 a
PUSH1 b
ADD
Это говорит виртуальная машина Ethereum (EVM). Каждая инструкция выполняется одна за другой. Клиент обрабатывает каждый отдельный опкод последовательно, помещая значения в стек, выполняя операции и переходя к следующей инструкции. Никаких сокращений, никакой магии — только детерминированная последовательность шагов, которая преобразует ваш код высокого уровня в машинно-исполняемые операции.
Именно поэтому оптимизация газа так важна в разработке блокчейн-приложений. Каждый опкод имеет свою стоимость, и понимание того, какой байткод генерируется из вашего Solidity, — это разница между эффективными и расточительными смарт-контрактами.