Starknet / Cairo >>>>> EVM / Solidity 類型系統:Cairo 擁有強類型、泛型、代數數據類型和特徵。Solidity 沒有泛型,且模式匹配較弱。 擁有權 / 編譯時借用檢查器:Cairo 擁有這個功能,單一擁有者移動語義和借用規則可以捕捉到移動後的使用。 Solidity 的內存安全依賴於開發者的紀律。 算術安全:Cairo 默認使用檢查數學。Solidity 現在有檢查算術,但可以選擇不使用。 Cairo 附帶一個中間表示(Sierra),無法表達未定義行為或失敗的斷言,每個函數在編譯時都被證明會終止。 升級模式:在 Cairo 中,這是通過本地系統調用來替換類哈希,同時保留存儲,並由證明強制執行,沒有代理存儲碰撞的風險。 在 Solidity 中,代理是手動編寫的,存儲槽碰撞和 delegatecall 錯誤代表著風險。 Cairo 故意省略了 Solidity 中某些特性,例如修飾符、類繼承。 Cairo 偏好組合性而非繼承,這有助於編寫更乾淨、更模組化的代碼,使其更容易推理和審計安全缺陷。 Cairo 設計在代碼編譯之前消除了整個錯誤類別,而 Solidity 依賴於像檢查效果互動和外部 linter 這樣的約定。
Fede’s intern 🥊
Fede’s intern 🥊7月9日 23:01
Solidity 是我一生中使用過的最糟糕的程式語言。我不在乎以太坊裡誰告訴我相反的話,但對於任何曾經使用過優秀編譯器和其他程式語言的人來說,這是顯而易見的。
14.82K