Solidity przeszedł długą drogę, odkąd został po raz pierwszy zaproponowany w 2014 roku, a później opracowany przez zespół Solidity Ethereum. Istnieją setki tysięcy programistów, którzy używają języka programowania do tworzenia usług opartych na łańcuchu bloków dla coraz większej liczby przypadków użycia.
W tym artykule wyjaśniono, czym jest Solidity i jak jest używany w ekosystemie Ethereum. Ten artykuł jest dla Ciebie, jeśli chcesz dowiedzieć się więcej o wewnętrznym działaniu tego języka programowania opartego na łańcuchu bloków.
Co to jest solidność?
Solidity to zorientowany obiektowo język programowania wysokiego poziomu używany do tworzenia inteligentnych kontraktów, które automatyzują transakcje w łańcuchu bloków. Po zaproponowaniu w 2014 roku język został opracowany przez współtwórców projektu Ethereum. Język jest używany głównie do tworzenia inteligentnych kontraktów na blockchain Ethereum i twórz inteligentne kontrakty na innych blockchainach.
Solidność jest podobna do jednego z najpopularniejszych języków programowania, JavaScript. Można go uznać za dialekt JavaScript. Oznacza to, że jeśli rozumiesz JavaScript, możesz łatwo odebrać Solidity. Solidity ma również podobne cechy do języków programowania C ++ i Python.
Jako język wysokiego poziomu Solidity eliminuje konieczność wpisywania kodu w postaci zer i jedynek. Znacznie ułatwia ludziom pisanie programów w sposób, który uznają za łatwiejszy do zrozumienia, przy użyciu kombinacji liter i cyfr.
Solidność jest typowana statycznie, z obsługą dziedziczenia, bibliotek i złożonych typów zdefiniowanych przez użytkownika. Ponieważ Solidity jest wpisywane statycznie, użytkownik w dużym stopniu określa każdą zmienną. Typy danych pozwalają kompilatorowi sprawdzić poprawność użycia zmiennych. Typy danych solidności są zwykle klasyfikowane jako typy wartości lub typy referencyjne.
Główną różnicę między typami wartości i typami referencyjnymi można znaleźć w sposobie, w jaki są one przypisane do zmiennej i przechowywane w EVM (maszyna wirtualna Ethereum). Podczas gdy zmiana wartości w jednej zmiennej typu wartości nie wpływa na wartość w innej zmiennej, każdy, kto odwołuje się do zmienionych wartości w zmiennych typu referencyjnego, może otrzymać zaktualizowane wartości.
Jak działa solidność?
Piękno ekosystemu Ethereum polega na tym, że może z niego korzystać wiele różnych kryptowalut i zdecentralizowanych aplikacji. Inteligentne kontrakty umożliwiają tworzenie unikalnych technologii w Ethereum dla wszystkich rodzajów firm i organizacji.
Każdego roku świat wydaje miliardy dolarów na rozwiązania typu blockchain. Wiele z tych rozwiązań jest tworzonych przy użyciu Solidity. Inteligentne kontrakty zbudowane przy użyciu Solidity można traktować jako sposób na automatyzację procesów biznesowych i pozabiznesowych między różnymi osobami. Gwarantuje to, że osoby dokonujące transakcji w łańcuchu bloków nie muszą martwić się o ryzyko, takie jak oszustwo lub brak możliwości korzystania z tej samej waluty.
Jednym z kluczowych elementów umożliwiających wykonanie kodu Solidity jest EVM. EVM jest opisywany jako wirtualny komputer w łańcuchu bloków, który zamienia pomysły ludzi w kod uruchamiający aplikacje w łańcuchu bloków.
Pod maską Solidity tworzy kod na poziomie maszyny, który jest wykonywany na EVM. Kompilator służy do rozkładania kodu czytelnego dla człowieka na wysokim poziomie, który zamienia na instrukcje odczytywane przez procesor. Różne platformy zapewniają bezpłatną kompilację Solidity, w tym kompilator online Remix i pobrany kompilator podobny do poleceń na PC.
Inteligentne kontrakty EVM mają pewne ograniczenia, którymi należy się zająć. Jednym z najważniejszych z nich jest ograniczony dostęp do przydatnych funkcji bibliotecznych do analizowania struktur JSON lub arytmetyki zmiennoprzecinkowej.
Funkcje publiczne i prywatne
Funkcje publiczne są podobne do interfejsów API, do których ma dostęp każdy na świecie. Każdy może zadzwonić do nich w swoim kodzie. Funkcje publiczne są w wielu przypadkach zaprojektowane dla współdzielonych procesów na platformie, z której korzystają wszyscy użytkownicy.
Na przykład można by ustanowić funkcję publiczną, aby umożliwić wszystkim użytkownikom platformy sprawdzanie salda konta. Jednym z najpowszechniejszych sposobów wykorzystywania inteligentnych kontraktów są funkcje publiczne.
Związane z: Co to jest Blockchain i jak to działa?
Chociaż inteligentne kontrakty mogą być łatwe do napisania w Solidity, często bardzo trudno jest je bezpiecznie napisać. Na przykład, jeśli funkcja wypłaty w inteligentnej umowie nie jest bezpieczna, osoba atakująca może manipulować wrażliwą funkcją, aby spuścić środki z konta.
Atakujący może skorzystać z funkcji wypłaty, aby wysłać pieniądze na inne konto, używając pętli, która wielokrotnie powtarza tę funkcję.
Funkcje prywatne można wywołać tylko z poziomu umów. Zawierają instrukcje, które mogą być wykonane tylko po wywołaniu ich przez inne funkcje w łańcuchu. Utrudnia to manipulowanie kodem przez złośliwych aktorów.
Standardy i logika kodu
Pojawiają się różne standardy, które określają, w jaki sposób inteligentne kontrakty Solidity są wykorzystywane do tworzenia aplikacji w Ethereum. Normy te są znane jako standardy ERC (Ethereum Request for Comments). Standardy opierają się na dokumencie, który zawiera wytyczne dotyczące wymaganych funkcji oraz ograniczenia dotyczące sposobu, w jaki powinien zachowywać się kod.
Standardy ERC, które określają, jak działa Solidity, obejmują:
- ERC20
- ERC165
- ERC721
- ERC223
- ERC621
- ERC777
- ERC827
- ERC884
- ERC865
- ERC1155
Istnieją różne sposoby wykorzystania Solidity do interakcji inteligentnych kontraktów. Solidność można również wykorzystać do tworzenia dedykowanych instrukcji dotyczących sposobu przechowywania danych w inteligentnej umowie. Logikę i dane w inteligentnych kontraktach można oddzielić za pomocą Solidity. Stosując kontrakty zastępcze, można zmienić logikę kontraktu, aby to umożliwić.
Niezmienność
Nie można zmienić kodu inteligentnego kontraktu po jego napisaniu i skompilowaniu. Oznacza to, że każda linia kodu musi działać zgodnie z przeznaczeniem, w przeciwnym razie może wystąpić poważne ryzyko wykorzystania kodu.
Związane z: Jak zostać programistą Blockchain i zacząć zarabiać duże pieniądze
Ponieważ łańcuch bloków Ethereum jest niezmienny, nie można zmienić zapisanych w nim danych i logiki. Sposobem na obejście tego problemu jest użycie serwera proxy w celu wskazania innej umowy, która zawiera rzeczywistą logikę biznesową. Pozwala to na naprawę błędów podczas wdrażania nowej wersji umowy.
Koszty gazu
Istnieją dodatkowe koszty, które są opłacane za używanie Solidity w sieci głównej Ethereum. Niektóre z dodatkowych kosztów opierają się na systemie gazowym na Ethereum, który wymaga płatności od górników za zabezpieczenie sieci blockchain, aby kod mógł bezpiecznie na niej działać.
Pisząc inteligentne kontrakty, należy pamiętać, że koszty gazu mogą determinować skuteczność inteligentnego kontraktu. Ponieważ opłaty za gaz są uiszczane za każdy wykorzystany slot, czynności wykonywane przy użyciu kodu Solidity kosztują gaz. Jest mało prawdopodobne, aby inteligentny kontrakt, który jest drogi w prowadzeniu, był używany w dłuższej perspektywie.
Optymalizacja gazu pomaga obniżyć koszt gazu podczas wykonywania kodu Solidity. Niektóre z najpopularniejszych metod optymalizacji gazów obejmują korzystanie z bibliotek i mniej funkcji. Biblioteki są często używane do zapisywania kodu bajtowego.
Zamiast dodawać niepotrzebny kod bajtowy do inteligentnego kontraktu, logikę można umieścić w bibliotekach. Pomaga to zachować mały rozmiar inteligentnego kontraktu. Używając mniejszej liczby funkcji, potrzeba mniej kodu bajtowego, a także zmniejsza się trudność kontroli kodu.
Jak można wykorzystać solidność w Ethereum?
Solidity służy do tworzenia inteligentnych kontraktów na tokeny zamienne i tokeny niewymienialne. Do budowy niewymienialnych tokenów i żetonów wymiennych w ekosystemie Ethereum używane są różne standardy.
Pozwalają one na tworzenie różnych typów przypadków użycia dla osób korzystających z blockchain. Solidność umożliwia ludziom korzystanie z tokenów i niewymienialne tokeny na Ethereum. Od bicia niewymienialnych tokenów po dodawanie ich w celu uzyskania puli rolniczych dla dodatkowego zainteresowania, Ethereum umożliwia różne rodzaje zastosowań tokenów.
Solidity umożliwia również zdecentralizowane organizacje autonomiczne (DAO). DAO, czyli nowy typ struktury organizacyjnej online, jest głównie napisany w Solidity. DAO umożliwiają różnym osobom spotykanie się jako członkowie na platformie internetowej, na której głosują nad kluczowymi decyzjami DAO.
Solidność umożliwia automatyzację procesów w ramach DAO. Przykłady automatyzacji procesów w DAO obejmują oddawanie głosów za kluczowe decyzje i przypisywanie reputacji członkom DAO za ich wkład w grupę.
Definiowanie standardów dla łańcuchów bloków
Solidność to znacznie więcej niż język programowania. Definiuje standardy przyszłości technologii blockchain.
Dzięki liczbie programistów open-source pracujących nad poprawą bezpieczeństwa i wydajności Solidity, tysiące aplikacji w ekosystemie Ethereum nadal zależy od niego, jeśli chodzi o aplikacje obsługiwać. Wraz z tworzeniem nowych standardów dla inteligentnych kontraktów w Ethereum, język stanie się bezpieczniejszy w użyciu.
Czy jest możliwy prawdziwie zdecentralizowany internet? Co oznacza decentralizacja i jak zapewni Ci bezpieczeństwo?
Czytaj dalej
- Technologia wyjaśniona
- Programowanie
- Ethereum
- Blockchain
Calvin jest pisarzem w MakeUseOf. Kiedy nie ogląda Ricka i Morty'ego ani jego ulubionych drużyn sportowych, Calvin pisze o startupach, blockchainie, cyberbezpieczeństwie i innych dziedzinach technologii.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.