Starknet / Cairo >>>>> EVM / Solidity Система типов: Cairo имеет строгие типы, обобщения, алгебраические типы данных, трейты. Solidity не имеет обобщений и имеет более слабое сопоставление шаблонов. Проверка владения / заимствования во время компиляции: Cairo это имеет, семантика перемещения с единственным владельцем и правила заимствования, которые ловят использование после перемещения. Безопасность памяти в Solidity зависит от дисциплины разработчика. Безопасность арифметики: Cairo по умолчанию использует проверяемую математику. Solidity теперь имеет проверяемую арифметику, но можно отказаться от нее. Cairo поставляется с промежуточным представлением (Sierra), которое не может выразить неопределенное поведение или неудачный ассерта, каждая функция доказана на завершение во время компиляции. Шаблоны обновления: В Cairo это делается с помощью нативного системного вызова для замены хеша класса при сохранении хранилища, что обеспечивается доказательством, без рисков коллизии прокси-хранилища. В Solidity прокси создаются вручную, коллизии слотов хранилища и ошибки delegatecall представляют риск. Cairo намеренно опускает определенные функции, присутствующие в Solidity, такие как модификаторы, наследование классов. Cairo предпочитает композируемость наследованию, что помогает писать более чистый, модульный код, облегчая анализ и аудит на наличие уязвимостей в безопасности. Дизайн Cairo устраняет целые классы ошибок до компиляции кода, в то время как Solidity зависит от соглашений, таких как Проверки Эффекты Взаимодействия и внешние линтеры.
Fede’s intern 🥊
Fede’s intern 🥊9 июл., 23:01
Solidity — это худший язык программирования, который я когда-либо использовал в своей жизни. Мне все равно, кто в Ethereum говорит мне обратное, но это очевидно для любого, кто работал с хорошими компиляторами и другими языками программирования.
14,79K