Jak stworzyć inteligentny kontrakt “Hello World” za pomocą Solidity?

Jak stworzyć inteligentny kontrakt “Hello World” za pomocą Solidity?

29 września

/

Bez kategorii

Aby zostać specjalistą z zakresu smart kontraktów i programistą technologii blockchain trzeba wykonać pierwszy krok. Niniejszy poradnik przedstawia to, w jaki sposób zbudować kontrakt  "Hello World" przy użyciu języka programowania Solidity. Warto podkreślić, że do wykonania tej czynności nie trzeba posiadać specjalistycznej wiedzy. Osoba, która nie jest zawodowym programistą podążając za naszymi krokami stworzy swój własny smart kontrakt korzystając z języka Solidity. 

Czym są inteligentne kontrakty?

Smart kontakt, to program komputerowy, który jest publikowany i wykonywany w technologii blockchain. W związku z faktem działania na blockchainie, może on być uruchomiony bez serwera, bądź centralnej strony. Gdy stworzymy smart kontrakt nie ma możliwości jego zaktualizowania, bądź wprowadzenia w nim zmian. Wynika to z niezmienności blockchaina. Istnieje opcja, że smart kontrakt może być zaprogramowany funkcjami do zmiany danych. Oznacza to, że informacje mogą zostać zapisane w jednym bloku, lecz usunięte w innym. Takie zachowanie nie wyklucza prześledzenia historii zmian. 

Czym jest język programowania Solidity?

Solidity jest pierwszym językiem tworzącym smart kontrakty. Jedną z najważniejszych rzeczy, o których należy pamiętać podczas nauki Solidity, jest to, że jest on językiem zaprojektowanym specjalnie z myślą o Ethereum Virtual Machine, czyli EVM. Solidity jest zbliżone do JavaScript. Warto w tym miejscu wskazać, że jeżeli potrafisz programować w Javie, to Solidity będzie w nauce łatwiejsze. Co prawda występują różnice w składni, jednak patrząc na polecenia i koncepcje  - oba języki są do siebie zbliżone. Język natywny Ethereum, Ma wbudowane polecenia. To jest wykonane dla Solidity  celem uzyskania dostępu do blockchaina np. znacznika czasu, bądź adresu bloku. Takie funkcje pomagają łatwo programować smart kontrakty Solidity. Co więcej, język, który jest zorientowany na kontrakty na pewno będzie różnić się od języków zorientowanych obiektowo np. 

  • Java,
  • C++, 

jednak głównie kładzie się tutaj nacisk na kontrakty i funkcje. Solidity jest typowany w sposób statyczny. Obsługuje także biblioteki i inne funkcje zdefiniowane dzięki użytkownikowi, które posiadają tendencję do bycia skomplikowanymi. Język kompiluje wszelkie instrukcje do bytecode, co pozwala odczytywać i interpretować informacje w sieci Ethereum.

Smart kontrakty w Solidity

Celem Ethereum jest rozwiązywanie i wykonywanie transakcji na poziomie ludzkim, podobnie jak ambicja pełnej maszyny Turinga. Wymaga to z jednej strony przyjęcia logiki na poziomie człowieka z przyjazną dla programistów prostotą, a z drugiej realizacji inteligentnych kontraktów Solidity w kompletnym systemie zwanym Wirtualną Maszyną Turinga, co pozwala na niespotykaną dotąd złożoność i determinizm. Moc obliczeniowa tej „wirtualnej” maszyny jest wbudowana w implementację węzła, niezwykłe osiągnięcie decentralizacji i produkt innowacji ruchu blockchain. Inteligentne kontrakty Solidity programowo ustalają reguły transakcji biznesowych i robią to w uproszczonym języku czytelnym dla maszyn. Ta bezprecedensowa zdecentralizowana koncepcja jest zautomatyzowana i może działać 24/7 na całym świecie, bez nadzoru człowieka i zaufanych stron. Dlaczego warto znać język Solidity? Gdyż jest bardziej zaawansowany i skuteczny w tworzeniu Smart Kontraktów, a ponadto próbuje czegoś, czego nigdy wcześniej żaden język nie próbował — mianowicie stosuje połączenia rozumowania ludzkiego i maszynowego. Ponadto Solidity ułatwia wyrażanie się w kodzie, a także przekształcanie naszego kodu czytelnego dla człowieka w funkcjonalność biznesową. 

Remix - wdrożenie do Solidity 

Remix to narzędzie internetowe, które służy do pisania, kompilacji oraz wdrażania i debugowania  kodu Solidity. Remix zawiera środowisko  JavaScript VM, które pełni funkcję symulatora blockchaina działającego w przeglądarce. Poniżej przedstawiamy praktyczny poradnik tego, jak tworzy się smart kontrakty przy użyciu Solidity. Zapraszamy! 

Jak stworzyć inteligentny kontrakt? 

Jak na razie bedziemy uzywac wspomnianego wyżej remixa do kompilowania i deployowania naszego kodu.  Odpalamy więc remixa i tworzymy nowy plik ja go nazwę Hello World, ale możesz go nazwać jak chcesz. Zacznijmy od zdefiniowania wersji solidity, którą bedziemy uzywac. Ja w tym tutorialu będę używał wersji 0.8.0 w górę, więc na gorze pliku pisze : pragma solidity ^0.8.0;

Solidity

Po zdefiniowaniu wersji mozemy zaczac pisac nasz pierwszy smart contract. 

Definiujemy contract o nazwie HelloWorld Contract, to w nim będzie się znajdować cala funkcjonalność naszego smart contractu.

W środku naszego smart contractu tworzymy funkcję say Hello World, będzie ona publiczna czyli,że każdy będzie mógł ją wywołać, pure co oznacza, że funkcja nie zczytuje ani nie modyfikuje żadnych danych z blockchaina  i zwracała stringa. 

Solidity

Chcemy aby funkcja zwróciła nam string “Hello World!”, więc musimy tylko wpisać w środku funkcji : return “Hello World”.

Teraz żeby zdeplyować nasz smart contract na lokalny blockchain, musimy najpierw go skompilować. 

Klikamy w sekcje solidity compiler i klikamy w przycisk compile HelloWorld.sol.

Jak już mamy skompilowany nasz plik, to możemy zdeployować nasz smart contract.

Klikamy w sekcje Deploy & Run Transactions.

Solidity
Solidity

Gdy wybierzemy nasz smart contract klikamy deploy i koniec ! Nasz inteligentny kontrakt został z deployowany ! W sekcji Deployed Contracts powinien ci się pokazać twój smart contract z możliwością wywołania funkcji sayHello World, która zwróci ci “Hello World”.

Zalety programowania Solidity

Pomijając podstawową funkcjonalność oprogramowania z Solidity, jest kilka dodatkowych elementów, które dają mu przewagę nad innymi językami Ethereum. Można wskazać, że zalety są następujące:

  • Programowanie akceptuje złożone zmienne członkowskie i złożone dane.
  • Program posiada interfejs binarny aplikacji, celem zapewnienia stosownego bezpieczeństwa - Jeśli kompilator odkryje niedopasowany typ danych dla dowolnej zmiennej, ABI generuje błąd. 
  • Program porównuje się do budowy języka naturalnego, która jest wykorzystywana do konwersji specyfikacji zorientowanych na użytkownika na język łatwy do zrozumienia przez maszyny.

Podsumowanie 

Solidity, to narzędzie ułatwiające stworzenie smart kontraktów. Dzięki niemu programowanie w technologii blockchain jest proste, transparentne i przydatne. Dodatkowo programowanie akceptuje złożone zmienne dane, posiada interfejs binarny i jest zbliżony do języka naturalnego. 

Never miss a story

Stay updated about Nextrope news as it happens.

You are subscribed

More of our Blog

See the latest collection of articles produced by our seasoned professionals

Zakres projektu

API/Backend
Development

Strony Internetowe
Development

Aplikacje Mobilne
Development

Projektowanie
Design

Blockchain
Solutions

Usługi Internetowe
Services

Next Enterprises zapewniło bankowi usługę technologiczną potrzebną do wprowadzenia projektu opartego na blockchainie. W ramach współpracy firma zaprojektowała usługę w modelu SaaS. Rozwiązanie przechowuje na swoich serwerach, udostępniając je bankowi i jednocześnie gwarantując jakość zgodną ze standardami zawartymi w umowie.

Tomasz Sienicki

Tomasz Sienicki

Blockchain Strategy Manager, Alior Bank

Współpraca z zespołem Nextrope wyznacza zupełnie nowy poziom jakości, innowacyjnych rozwiązań i profesjonalnych usług. Jeśli potrzebujesz wsparcia przy technologii blockchain, trafiłeś na profesjonalistów. Zdecydowanie polecam!

Kajetan Komar-Komarowski

Kajetan Komar-Komarowski

Współzałożyciel i prawnik Lex Secure

W listopadzie 2017 r. opublikowaliśmy grę wykorzystującą inteligentne kontrakty jako mechanizm dystrybucji i transakcji. Zespół Nextrope wspierał nas w najważniejszej części projektu - tworzeniu i testowaniu bezpieczeństwa inteligentnych kontraktów blockchain w sieci Ethereum. Mogę gorąco polecić Mateusza i jego zespół - to prawdziwi eksperci w dziedzinie blockchaina.

Maciej Skrzypczak

Maciej Skrzypczak

CEO Gameset