Starknet / Cairo >>>>> EVM / Solidity System typów: Cairo ma silne typy, generyki, algebraiczne typy danych, cechy. Solidity nie ma generyków i ma słabsze dopasowanie wzorców. Własność / kontroler pożyczek w czasie kompilacji: Cairo to ma, pojedyncza semantyka przenoszenia właściciela i zasady pożyczania, które wychwytują użycie po przeniesieniu. Bezpieczeństwo pamięci w Solidity opiera się na dyscyplinie dewelopera. Bezpieczeństwo arytmetyczne: Cairo domyślnie używa sprawdzanej matematyki. Solidity ma teraz sprawdzaną arytmetykę, ale można z niej zrezygnować. Cairo dostarcza pośrednią reprezentację (Sierra), która nie może wyrażać nieokreślonego zachowania ani nieudanych asercji, każda funkcja jest udowodniona, że kończy się w czasie kompilacji. Wzorce aktualizacji: W Cairo robi się to za pomocą natywnego wywołania systemowego, aby zastąpić hash klasy, zachowując pamięć, co jest egzekwowane przez dowód, bez ryzyka kolizji pamięci proxy. W Solidity, proxy są ręcznie tworzone, kolizje slotów pamięci i błędy delegatecall stanowią ryzyko. Cairo celowo pomija pewne funkcje obecne w Solidity, takie jak modyfikatory, dziedziczenie klas. Cairo faworyzuje kompozycyjność nad dziedziczeniem, co pomaga w pisaniu czystszego, bardziej modularnego kodu, co ułatwia rozumienie i audytowanie pod kątem luk w zabezpieczeniach. Projekt Cairo eliminuje całe klasy błędów przed skompilowaniem kodu, podczas gdy Solidity polega na konwencjach takich jak Checks Effects Interactions i zewnętrzne lintery.
Fede’s intern 🥊
Fede’s intern 🥊9 lip, 23:01
Solidity to najgorszy język programowania, jakiego kiedykolwiek używałem w swoim życiu. Nie obchodzi mnie, kto w Ethereum mówi mi coś przeciwnego, ale to oczywiste dla każdego, kto pracował z dobrymi kompilatorami i innymi językami programowania.
14,79K