Solidity | Stwórz swój pierwszy smart kontrakt na Ethereum!

3 864

Jeśli zastanawiałeś się kiedykolwiek, w jaki sposób tworzone są smart kontrakty na blockchainie Ethereum, ten poradnik jest w sam raz dla Ciebie. Chcesz nauczyć się podstaw Solidity? Zróbmy sobie smart kontrakt!

Solidity to język programowania stworzony w latach 2014-2015 przez Gavina Wooda jako język komputerowy o kompletności Turinga do interakcji z wirtualną maszyną Ethereum.

Język pozwala programistom tworzyć „skomputeryzowane protokoły transakcji, które egzekwują warunki kontraktów” – smart kontrakty. (Nick Szabo)

Składnia Solidity jest podobna do JavaScript,co czyni ją zrozumiałą dla większości programistów.

Smart kontrakty zasilają ekosystem Ethereum i od 2015 roku umożliwiły powstanie wielu wspaniałych projektów. Przykłady użycia obejmują:

Po nitce do kłębka, czyli konfigurujemy środowisko programistyczne (IDE)

IDE, którego użyjemy, to Remix. Wszystko, co musisz zrobić, to wpisać ten adres URL. Gdy to zrobisz, powinieneś zobaczyć ekran, który wygląda tak:

ide ethereum smart kontrakt

Po lewej stronie zaznaczyłem dwa główne komponenty. Pierwsza ikona to eksplorator plików, w którym możesz zobaczyć wszystkie swoje pliki Solidity, a druga ikona to menedżer wtyczek, z poziomu którego możesz dodawać nowe wtyczki. Jeżeli po uruchomieniu Remix nie widzisz dwóch ikon, których nie zaznaczyłem, trzeba będzie dodać wtyczki. Kliknij ikonę menedżera wtyczek i wpisz „Solidity Compiler”. Następnie aktywuj go, klikając „Activate” i zrób to samo, aby dodać wtyczkę „Deploy and run transactions”.

Po zainstalowaniu pluginów zobaczysz ich ikony na pasku po lewej stronie ekranu. Zakładka „Solidity Compiler” pozwoli Ci skonfigurować parametry kompilatora i skompilować Twoje inteligentne kontrakty, a zakładka „Deploy and run transactions” umożliwi Ci wdrożenie smart kontraktów w łańcuchu bloków i wejście w interakcję z nimi. Lista ikon powinna teraz wyglądać tak:

Pierwszą rzeczą, którą powinieneś teraz zrobić, jest zaznaczenie opcji auto-kompilacji (auto-compile) w zakładce kompilatora. Następnie skonfigurujemy Remix, aby używał plików z lokalnej pamięci.

Będziesz musiał zainstalować remixd. Możesz to zrobić z poziomu wtyczek lub za pomocą następującego polecenia:

npm install -g remixd

Po zakończeniu instalacji możesz utworzyć folder, w którym umieścisz pliki Solidity, a następnie uruchom następujące polecenie, aby powiedzieć Remixowi, aby używał plików z Twojego folderu:

remixd -s — remix-ide https://remix.ethereum.org

Teraz przejdź do strony głównej Remix i kliknij „Connect to localhost” (Połącz z lokalnym hostem), a następnie wybierz „Connect” (Połacz). W zakładce „File explorers” (eksploratory plików)powinieneś zobaczyć obszar o nazwie localhost w zakładce Jeśli go rozwiniesz, zobaczysz wszystkie pliki zawarte w folderze, który udostępniłeś z lokalnej pamięci:

Gratulacje! W tej chwili dysponujesz już narzędziem i środowiskiem, dzięki którym możesz zacząć pisać swój pierwszy smart kontrakt.

Chwileczkę… czy nie powinniśmy instalować czegoś do interakcji z blockchainem Ethereum? Nie teraz. Zaczniemy najprościej, jak się tylko da. Remix zapewni Ci sandboxowył blockchain, który działa w Twojej przeglądarce. Możesz używać go do wdrażania umów i interakcji z nimi. Upewnij się, że jako środowisko w zakładce „Deploy and run” wybrałeś maszynę wirtualną JavaScript (JavaScript VM Berlin, JavaScript VM London).

Twój pierwszy smart kontrakt

Oto, jak wygląda mój pierwszy smart kontrakt:

bithub robi smart kontrakt 3

Identyfikator licencji SPDX

Zaufanie do smart kontraktu można lepiej ugruntować, jeśli dostępny jest kod źródłowy. Ponieważ udostępnianie kodu źródłowego zawsze dotyka problemów prawnych związanych z prawami autorskimi, kompilator Solidity zachęca do używania odczytywalnych maszynowo identyfikatorów licencji SPDX. Każdy plik źródłowy powinien zaczynać się komentarzem wskazującym na jego licencję.

(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

Pragma (wersja)

Pliki źródłowe mogą (i powinny) być opatrzone adnotacjami wersji, aby odrzucić kompilację z przyszłymi wersjami kompilatora, które mogą doprowadzić do pewnych niezgodności.

(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

Wersje wydań, które mają istotne zmiany, występują w postaci 0.x.0 lub x.0.0. W naszym przykładzie wersja kompilatora, której można użyć, powinna być wyższa lub równa 0.7.0 i mniejsza niż 0.8.0 (ten drugi warunek jest dodawany za pomocą ^). Możliwe jest określenie bardziej złożonych reguł dla wersji kompilatora.

Pierwsze dwie linie powinny znajdować się we wszystkich plikach smart kontraktów.
Aby rozpocząć pisanie kodu musisz użyć słowa kluczowego contract, po którym następuje nazwa kontraktu, a następnie – między nawiasami klamrowymi – możesz umieścić swój kod .

Stwórzmy kontrakt Hello World

Utwórz nowy plik w folderze współdzielonym o nazwie przykladowy_kontrakt.sol i wklej kod, który podałem wyżej. Jeśli zaznaczyłeś opcję auto-kompilacji, kod skompiluje się automatycznie. Jeśli nie, upewnij się, że to sprawdziłeś i skompilowałeś kod.

Teraz nadszedł czas na wdrożenie naszego pierwszego kontraktu i interakcję z nim.
Kliknij zakładkę „Deploy and run transactions”, a następnie upewnij się, że masz wybraną maszynę wirtualną JavaScript w środowisku i nazwę kontraktu w polu z etykietą CONTRACT. Kliknij „Deply”.

Powinieneś teraz zobaczyć swój smart kontract w obszarze „Deployed Contracts” (Wdrożone kontrakty).
Jeśli go rozwiniesz, zobaczysz funkcję helloWorld. Kliknij ją, aby wysłać transakcję wywołującą tę funkcję, a zobaczysz wydrukowany ciąg hello world (w moim przypadku jest to fraza „Bithub robi smart kontrakt”).

Struktura inteligentnego kontraktu

Zobaczmy teraz, co możesz umieścić w swoim smart kontrakcie:

  • Zmienne stanu (state variables): są to zmienne, których wartości są trwale przechowywane w pamięci kontraktu
  • Funkcje (functions): Funkcje są wykonywalnymi jednostkami kodu. Funkcje są zwykle definiowane w kontraktach, aczkolwiek można je również definiować poza nimi
  • Modyfikatory funkcji (Function Modifiers): modyfikatorów funkcji można używać do zmiany semantyki funkcji w sposób deklaratywny
  • Zdarzenia (Events): Zdarzenia to wygodny interfejs z funkcjami rejestrowania EVM.
  • Typy strukturalne (struct types): struktury to typy zdefiniowane przez użytkownika, które mogą grupować kilka zmiennych
  • Typy wyliczeniowe (enum types): wyliczeń można używać do tworzenia niestandardowych typów ze skończonym zestawem „wartości stałych”.

przydatne linki:

Solidity – naucz się sam języka programowania smart kontraktów na Ethereum!

Jeśli chcielibyście „liznąć” Solidity nieco bardziej i rozpocząć naukę z prawdziwego zdarzenia, poniżej przedstawiam kilka ciekawych źródeł.

Od czego zacząć?

  • zapoznaj się z fundamentami technologii blockchain, przeczytaj whitepaper Bitcoina i Ethereum
  • poczytaj opisy czołowych kryptowalut (np. tutaj i tutaj)
  • sprawdź to: https://www.udemy.com/course/blockchain-developer/ (to nie jest link sponsorowany)
  • poszukaj tutoriali ERC20 i ERC721 na YouTube
  • Poczytaj dokumentację różnych projektów blockchainowych
  • przestudiuj przykładowe smart kontrakty
  • spróbuj wyjaśnić swojemu znajomemu pojęcia i procesy, których się nauczyłeś
  • kontynuuj naukę i pisz kod.

Filmy na temat Bitcoina i Ethereum

Powinny one pomóc Ci zrozumieć podstawy Bitcoina, a ostatni film Vitalika Buterina (współzałożyciela Ethereum) jest świetnym wyjaśnieniem i wprowadzeniem do aspektów technicznych.

Kursy Solidity

Ten kurs kosztuje aktualnie 48 PLN. Można nauczyć się podstaw i wykonać ćwiczenia z samouczka, aby dowiedzieć się, jak działa składnia Solidity i móc wykonać kilka projektów.

Oto inne, bezpłatne kursy na YouTube:

Tutoriale dla początkujących:

Poniższe samouczki pomagają ugruntować podstawową wiedzę i testować umiejętności Solidity oraz tworzyć prawdziwe aplikacje za pomocą EVM.

https://www.ludu.co/course/ethereum/what-is-ethereum

https://medium.com/pinata/how-to-build-erc-721-nfts-with-ipfs-e76a21d8f914

Tutoriale dla średniozaawansowanych

Skorzystaj z nich, aby zagłębić się w testowanie, Graph, Hardhat i nauczyć się interfejsów web3 za pomocą Reacta.

https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13

https://maksimivanov.com/posts/gradient-coin-tutorial/

Gry edukacyjne na temat kryptowalut

Te dwie gry edukacyjne są bardzo. Pomagają ludziom na wszystkich poziomach zaawansowania odświeżyć i zrozumieć podstawy Solidity i smart kontraktów.

https://cryptozombies.io/

https://ethernaut.openzeppelin.com/

Kogo obserwować na YouTube?

Poniżsi Youtuberzy pomogą Ci zrozumieć, co dzieje się w przestrzeni Ethereum i nauczą Cię podstaw Solidity.

Dapp University: https://www.youtube.com/channel/UCY0xL8V6NzzFcwzHCgB8orQ

EatTheBlocks: https://www.youtube.com/channel/UCZM8XQjNOyG2ElPpEUtNasA

Finematics: https://www.youtube.com/channel/UCh1ob28ceGdqohUnR7vBACA

The Defiant: https://www.youtube.com/channel/UCL0J4MLEdLP0-UyLu0hCktg

Na początek wystarczy. Dajcie znać w komentarzach, czy chcielibyście więcej tego rodzaju treści na Bithub!

Może Cię zainteresować:

Komentarze