スタークネット / カイロ >>>>> EVM / Solidity タイプシステム:カイロには、強力なタイプ、ジェネリックス、アグレブリックデータ型、トレイトがあります。Solidity にはジェネリックがなく、パターン マッチングが弱くなります。 コンパイル時の所有権/借用チェッカー:カイロには、単一の所有者の移動セマンティクスと、移動後の使用をキャッチする借用ルールがあります。 Solidityメモリの安全性は、開発者の規律に依存しています。 算術の安全性: カイロでは、デフォルトでチェックされた数式が使用されます。Solidityは現在、算術演算をチェックしていますが、オプトアウトすることができます。 Cairoには、未定義の動作や失敗したアサートを表現できない中間表現(Sierra)が付属しており、すべての関数はコンパイル時に終了することが証明されています。 アップグレードパターン:Cairoでは、ネイティブのシステムコールを使用して、ストレージを保持しながらクラスハッシュを置き換え、証明によって強制され、プロキシストレージの衝突リスクはありません。 Solidityでは、プロキシは手作業でロールされ、ストレージスロットの衝突やデリゲートコールのミスはリスクを表します。 Cairo は、修飾子やクラス継承など、Solidity に存在する特定の機能を意図的に省略しています。 Cairo は継承よりもコンポーザビリティを優先するため、よりクリーンでモジュール化されたコードを書くのに役立ち、セキュリティ上の欠陥についての推論と監査が容易になります。 Cairoの設計では、コードがコンパイルされる前にバグクラス全体が排除されますが、SolidityはChecks Effects Interactionsや外部リンターなどの規則に依存しています。
Fede’s intern 🥊
Fede’s intern 🥊7月9日 23:01
Solidityは、私が人生で使った中で最悪のプログラミング言語です。イーサリアムで誰が反対のことを言うかは気にしませんが、優れたコンパイラや他のプログラミング言語を使ったことのある人なら誰でも明らかです。
14.81K