Фундаментальные ограничения между Солидностью и Змеем

Твердость можно рассматривать как «более высокий уровень», чем «Змей». Существуют ли какие-либо «низкоуровневые» функции в «Змеи» или которые могут быть реализованы в «Змеи», которые невозможно или невозможно сделать с помощью «Солидности»?

Если есть, то, что невозможно, тому, что невозможно или вряд ли будет реализовано в Solidity, поможет нам определить, нужно ли использовать другой.

20 голосов | спросил eth 21 Jam1000000amThu, 21 Jan 2016 00:40:35 +030016 2016, 00:40:35

3 ответа


13

Ответ

Я не думаю, что существует «ограничение» для Solidity, способного реализовать функции /доступ к низкоуровневому уровню, такие как типы вещей, которые может сделать Змей. Однако эти два языка могут иметь разные приоритеты. Змей, скорее всего, сосредоточен на более низком уровне по сравнению с флагманским языком высокого уровня Solidity.

Языки высокого уровня Ethereum в порядке близости вы можете получить прямой доступ к EVM:

  1. LLL (самый низкий уровень, в основном на 1 шаг выше байтового кода EVM)
  2. Змей (супер-набор LLL)
  3. Солидность (сводится непосредственно к байтовому коду EVM)

Подробнее

Змей имеет прямой доступ к кодам операций EVM (это надмножество LLL) , но также имеет множество функций высокого уровня. Недостатком Serpent является то, что компилятор более сложный и теоретически может содержать больше ошибок.

Можно утверждать, что Solidity более подвержена проблемам, связанным со стеком:

Виталик Бутерин написал этот комментарий Reddit :

  

Solidity компилирует все переменные в значения в стеке,   и методы DUPN в Ethereum позволяют вам получить 2-16-е значение из   стек в любой момент времени. Фактическая глубина стека равна 1024. Змей   переменные компилируются в обращения к памяти, поэтому у вас нет этой проблемы   в змее; чтобы обойти это в прочности, я бы рекомендовал вам попробовать упаковать   вещи в структуры больше.

Будучи флагманским языком, Solidity была сосредоточена на разных приоритетах, чем «Змей». Solidity была меньше сосредоточена на добавлении функций низкого уровня в пользу функций более высокого уровня, но я не думаю, что невозможно добавить более низкие функции уровня для Solidity. На самом деле есть история о дорожной карте развития Solidity: добавить встроенную ASM в Solidity , что позволило бы доступ на более низкий уровень к EVM.

ответил Hudson Jameson 9 FebruaryEurope/MoscowbTue, 09 Feb 2016 07:32:52 +0300000000amTue, 09 Feb 2016 07:32:52 +030016 2016, 07:32:52
1

Это не совсем сравнение двух языков, но важно для кого-то, кто хочет рассмотреть один за другим.

аудит основал критические ошибки в Serpent, а аудиторы назвали проект Serpent «низким качеством» и «ошибочным».

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

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

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

ответил Matt Au 18 MarpmSun, 18 Mar 2018 16:39:15 +03002018-03-18T16:39:15+03:0004 2018, 16:39:15
-1

Основное отличие - синтаксис. Змей больше питона, как во время Solidity - это javascript cpp like

Но твердость также лучше развита и имеет приятную функцию в качестве шаблонов.

Вы найдете гораздо больше примеров кода надежности.

ответил Roman Mandeleil 21 Jam1000000amThu, 21 Jan 2016 01:00:11 +030016 2016, 01:00:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132