Starknet / Cairo >>>>> EVM / Solidity Sistema de tipos: Cairo tiene tipos fuertes, genéricos, tipos de datos algebraicos y rasgos. Solidity no tiene genéricos y un emparejamiento de patrones más débil. Propiedad / verificador de préstamos en tiempo de compilación: Cairo lo tiene, semánticas de movimiento de un solo propietario y reglas de préstamo que detectan el uso después del movimiento. La seguridad de la memoria en Solidity depende de la disciplina del desarrollador. Seguridad aritmética: Cairo utiliza matemáticas verificadas por defecto. Solidity ahora tiene aritmética verificada, pero se puede optar por no usarla. Cairo viene con una representación intermedia (Sierra) que no puede expresar comportamientos indefinidos o un assert fallido, cada función se prueba para que termine en tiempo de compilación. Patrones de actualización: En Cairo se hace con una llamada al sistema nativa para reemplazar el hash de clase mientras se retiene el almacenamiento, impuesto por prueba, sin riesgos de colisión de almacenamiento de proxy. En Solidity, los proxies son hechos a mano, las colisiones de ranuras de almacenamiento y los errores de delegatecall representan un riesgo. Cairo omite deliberadamente ciertas características presentes en Solidity, como modificadores y herencia de clases. Cairo favorece la composabilidad sobre la herencia, lo que ayuda a escribir un código más limpio y modular, facilitando el razonamiento y la auditoría de fallos de seguridad. El diseño de Cairo elimina toda clase de errores antes de que el código se compile, mientras que Solidity depende de convenciones como Checks Effects Interactions y linters externos.
Fede’s intern 🥊
Fede’s intern 🥊9 jul, 23:01
Solidity es el peor lenguaje de programación que he utilizado en mi vida. No me importa quién en Ethereum me diga lo contrario, pero es obvio para cualquiera que haya trabajado con buenos compiladores y otros lenguajes de programación.
14,8K