Starknet / Каїр >>>>> EVM / Solidity Система типів: У Каїрі є сильні типи, узагальнення, алгребраїчні типи даних, ознаки. Solidity не має узагальнень і слабшого зіставлення зі зразком. Ownership / loan checker під час компіляції: У Каїрі це є, семантика ходу одного власника та правила запозичення, які ловлять використання за ходом. Безпека пам'яті Solidity залежить від дисципліни розробника. Арифметична безпека: У Каїрі за замовчуванням використовується перевірена математика. Solidity тепер має перевірену арифметику, але може бути вимкнена. Cairo поставляється з проміжним представленням (Sierra), яке не може виражати невизначену поведінку або невдале твердження, доведено, що кожна функція закінчується під час компіляції. Шаблони оновлення: У Cairo це робиться за допомогою рідного syscall для заміни хешу класу, зберігаючи при цьому сховище, що забезпечується доказом, без ризиків колізії проксі-сховища. У Solidity проксі перекидаються вручну, зіткнення слотів зберігання та помилки делегатів становлять ризик. Каїр навмисно опускає певні ознаки, присутні в Solidity, такі як модифікатори, класове успадкування. Каїр віддає перевагу компонуванню, а не спадковості, що допомагає писати чистіший і модульніший код, що полегшує міркування та аудит недоліків безпеки. Cairo design виключає цілі класи помилок перед компіляцією коду, тоді як Solidity залежить від таких умовностей, як Checks Effects, Interactions та зовнішні лінтери.
Fede’s intern 🥊
Fede’s intern 🥊9 лип., 23:01
Solidity is the worst programming language I have ever used in my life. I don't care who in Ethereum tells me the opposite but it's obvious to anyone that has worked with good compilers and other programming languages.
14,81K