Jak działa smart contract?
Cześć wszystkim, mam taki mały zgryz. Ostatnio mocno siedzę w krypto i próbuję ogarnąć programowanie w web3, ale im głębiej w las, tym więcej pytań. Wszędzie non stop przewija się jedno hasło, więc chciałbym zapytać tak na chłopski rozum: jak działa smart contract?
Niby każdy w internetach powtarza, że to taki samowykonujący się kod na blockchainie. No super, ale co to właściwie znaczy pod maską? Czy to jest po prostu zwykły skrypt napisany np. w Solidity, który wisi sobie w sieci Ethereum i czeka, aż jakiś user wywoła konkretną funkcję z zewnątrz? Jeśli tak, to kto tak naprawdę odpala tę transakcję i pokrywa te nieszczęsne koszty za gas, kiedy akcja idzie z automatu?
Zastanawia mnie też jeszcze jedna ważna kwestia. Skąd wogóle taki smart contract wie, co się dzieje w realnym świecie? Przecież blockchain to raczej mocno odizolowane środowisko, prawda? Więc jak ten cały mechanizm ogarnia, że dajmy na to lot samolotem się opóźnił i system ma automatycznie wypłacić komuś odszkodowanie na portfel?
Czy ktoś z Was, kto ma trochę więcej expa w temacie, mógłby mi wyjaśnić zasady działania smart contractów tak totalnie krok po kroku? Czym to się fizycznie różni od zwykłego backendu postawionego na pierwszym lepszym VPS-ie? Pytam, bo planuję niedługo naklepać swój pierwszy mini projekt, ale nie chcę pisać kodu w ciemno, bez pełnego czajenia bazy. Będę mega wdzięczny za łopatologiczne wytłumaczenie i jakieś fajne przykłady z życia. Dzięki z góry!
Zarabiaj na wzrostach i spadkach ⚡
Kontrakty z dźwignią, niskie prowizje i do 20 € za depozyt.
2 Odpowiedź
Cześć stary, super że o to pytasz, bo większość wchodzi w web3 i tylko kopiuje gotowce, nie kumając w ogóle bazy. Zasada działania smart contractu nie jest wcale taka magiczna, jak próbują to sprzedać na Twitterze.
Masz rację z tym skryptem. Wyobraź sobie, że piszesz prosty backend w Node.js i wrzucasz na VPS. Jak nie zapłacisz za serwer, to apka znika. Z inteligentnymi kontraktami jest tak, że deployujesz kod do sieci Ethereum i on tam już zostaje na zawsze. Rozsiewa się po tysiącach węzłów. Fizyczna różnica polega na tym, że na zwykłym VPS-ie możesz zedytować kod w locie, a z blockchainem jest amen w pacierzu. Raz wrzucony kontrakt jest niemutowalny i nikt go nie wyłączy.
No i teraz najważniejsze: sam z siebie ten kod na blockchainie nie zrobi dosłownie nic. Będzie tak wisiał do końca świata. Żeby mechanizm smart contractu zadziałał, ktoś z zewnątrz musi go kopnąć. To wywołanie musi przyjść z normalnego portfela i to ten user płaci za gas.
Pytasz, co w sytuacji gdy akcja idzie „z automatu”. Prawda jest taka, że w krypto nie ma pełnej automatyzacji z powietrza. Jak masz np. automatyczną likwidację pozycji na jakiejś giełdzie, to w tle działa sobie bot napisany na zwykłym serwerze. Ten bot monitoruje sieć i jak widzi, że warunki są spełnione, to uderza z transakcją do smart cotnractu i pokrywa gas z własnej kieszeni, zgarniając za to z reguły jakąś nagrodę (to tzw. keepers).
A skąd skrypt wie o opóźnionym locie? Sam z siebie nie wie, jest totalnie ślepy. Blockchain nie potrafi sam zapytać zewnętrznego API o pogodę czy status samolotu. I tu wjeżdżają na pełnej tak zwane Wyrocznie (Oracles), z których najbardziej znany to Chainlink. To po prostu sieć zaufanych serwerów, które pobierają dane z „realu” i wrzucają je transakcją prosto na łańcuch bloków. Dopiero wtedy twój inteligentny kontrakt może sobie te dane odczytać i na ich podstawie komuś zapłacić. Znowu – to oracle płaci za gas dostarczając te informacje do sieci.
Jak planujesz klepać swój pierwszy projekt, to traktuj te skrypty po prostu jako publiczną, zdecentralizowaną bazę danych z wbudowaną logiką, gdzie każdy zapis kosztuje. Odpal sobie Remix IDE, zrób jakiś najprostszy token albo system głosowania i mega szybko załapiesz flow. Powodzenia w dłubaniu w kodzie!
Zarabiaj na wzrostach i spadkach ⚡
Kontrakty z dźwignią, niskie prowizje i do 20 € za depozyt.
Siemka, ziomek wyżej wyjaśnił ci to super od strony bebechów, ale ja bym chciał dorzucić jeszcze jedną kwestię z totalnie innej perspektywy. O tym się często zapomina, jak ktoś dopiero wchodzi w programowanie web3.
Zamiast patrzeć na to tylko jak na serwer i skrypty, wyobraź sobie staroświecki automat z batonami. To jest chyba najlepsza metafora na działanie smart contractu. Wrzucasz monetę, wciskasz guzik B4, wypada snickers. Automat nie dzwoni do szefa, czy może ci wydać tego batona. Kod jest prawem. I to jest ta najważniejsza różnica względem klasycznego backendu – w krypto całkowicie wycinamy ludzki czynnik zaufania. Na zwykłym VPS-ie admin może wejść do bazy SQL i z palca dopisać ci milion punktów na koncie. Na blockchainie? Nie ma szans. Nikt tego nie oszuka.
Samo środowisko Ethereum to tak naprawdę jedna gigantyczna, globalna maszyna stanów. Twój inteligentny kontrakt to po prostu zbiór sztywnych reguł, które mówią, jak ten stan można modyfikować. User wysyła transakcję, maszyna mieli to przez twój kod i jak warunki się zgadzają, zmienia zapisy w tej publicznej księdze. Brzmi banalnie, nie?
Ale tu wjeżdża mój osobisty ból i exp. Skoro raz wrzucony kod staje się prawem, to każdy, nawet najmniejszy błąd kosztuje realny hajs. Jak piszesz apkę w pehapie czy nodzie i zrobisz buga, to user zobaczy błąd 500. Zrobisz szybkiego fixa, wrzucisz na serwer i po krzyku. W smart contractach tak się nie da. Kiedyś dłubałem przy swoim pierwszym systemie do stakingu. Zapomniałem o jednym głupim zabezpieczeniu przy funkcji wypłaty. Efekt? Jakiś typek w kilka minut wyczyścił mi całą pulę ze środków. Dobrze że to była tylko sieć testowa, bo jakby to był mainnet to bym ze zgryzoty zjadł własną klawoaturę.
Więc jak planujesz swój projekt, to pamiętaj o jednym – to nie jest zwykłe klepanie backendu. Tutaj piszesz aplikację finansową, nawet jak to jest głupia gra. Poczytaj od razu o popularnych wektorach ataków jak reentrancy. Rób sobie testy jednostkowe do porzygu. W normalnym it testy to dobra praktyka, w web3 to warunek przetrwania. Trzymaj się tam i powodzenia z pierwszą apką!
Zarabiaj na wzrostach i spadkach ⚡
Kontrakty z dźwignią, niskie prowizje i do 20 € za depozyt.







![[Resizer.in]-63adb17e76ce8 [Resizer.in]-63adb17e76ce8](https://www.kryptoporadnik.pl/wp-content/uploads/2022/12/Resizer.in-63adb17e76ce8-75x75.jpg)




![[Resizer.in]-639732542d4f6 [Resizer.in]-639732542d4f6](https://www.kryptoporadnik.pl/wp-content/uploads/2022/12/Resizer.in-639732542d4f6-75x75.jpg)