Uwaga! Trwają prace nad nową wersją serwisu. Mogą występować przejściowe problemy z jego funkcjonowaniem. Przepraszam za niedogodności!
🔥 Kurs programowania obiektowego (OOP) w JS – już dostępny w całości! 🔥
➡ Saifedean Ammous, Standard Bitcoina
➡ Instagram: www.instagram.com/fullstak_pl
➡ Twitter: twitter.com/ArtiChmaro
➡ Bio ze wszystkimi aktualnymi linkami: fullstak.pl/bio
➡ Kurs Solidity Dev Starter: web3army.dev
Dziś moim gościem jest Artur Chmaro. Artur opowie nam o technologii blockchain z perspektywy programisty. Arturze, dziękuję, że przyjąłeś moje zaproszenie na rozmowę.
Dziękuję za zaproszenie i już się nie mogę doczekać, aż pogadamy o blockchainowych sprawach.
Na początku porozmawiajmy trochę o Tobie. Powiedz nam coś więcej o sobie i co łączy Cię z branżą IT.
Na ten moment pracuję jako CTO w start-upie license.rocks, gdzie budujemy oprogramowanie typu SaaS do handlu NFT i w zasadzie wspierania tego handlu. Jeżeli ktoś chce odpalić własny marketplace czy zrobić coś z NFT, zapraszam do kontaktu.
Natomiast drugą rzeczą, którą się zajmuję, jest prowadzenie różnych szkoleń związanych z JavaScriptem czy ze smart kontraktami. Jestem obecnie autorem dwóch kursów online. Oprócz tego na swoim kanale Artur Chmaro na YouTubie dzielę się wiedzą – ostatnio głównie z Web3, ale też z JavaScriptu. To są takie dwie rzeczy, którymi się teraz głównie zajmuję, ale generalnie w branży webowej, nazwijmy to tradycyjnej, jestem jakoś od 2009 roku.
To trochę czasu już minęło. Dużo rzeczy zrobiłeś?
Tak, dużo błędów, dużo bugów, dużo różnych rzeczy.
No to pamiętajcie, że programowanie to przede wszystkim niedziałanie, a dopiero potem działanie. Od tego zaczynamy.
Tak. Dokładnie.
No dobrze, to teraz przejdźmy do tematu, który już wywołałeś, więc może na początku powiedzmy sobie, czym jest blockchain i jak działa.
To może dam swoją definicję, nie jakąś książkową. Blockchain to jest taki inny niż tradycyjny – zaraz powiem, co mam na myśli, mówiąc tradycyjny – model przechowywania i przetwarzania danych bez centralnego punktu, któremu musimy zaufać. I tutaj rozumiem przez to np. taką sytuację: jak bym chciał wysłać Ci $10 z użyciem serwisu PayPal. Tam wszystko odbywa się w sposób centralny, czyli musimy zaufać PayPalowi, PayPal może od razu przekazać Ci pieniądze, ale po drodze może wymagać wysłania jakichś dokumentów, mogą sobie zmienić regulamin, podjąć różne decyzje co do tego, czy mogę wysłać te pieniądze i czy Ty możesz je odebrać.
Natomiast w modelu blockchainowym przetwarzanie danych odbywa się w taki sposób, że nie mamy jednego punktu, któremu całkowicie ufamy. Mamy natomiast protokół, w którym uczestniczą różne tak zwane węzły. I tymi węzłami są np. osoby, które przetwarzają te transakcje, które wchodzą do sieci blockchain i są za to nagradzane np. jakąś kryptowalutą Ethereum albo w sieci Bitcoin po prostu bitcoinem.
Ta sieć działa w taki sposób, że po drodze jest sporo różnych algorytmów, sporo różnych rzeczy związanych z kryptografią. Jeżeli ktoś do tego blockchaina wprowadzi dane, a później ktoś je zmieni, nie mając do tego odpowiednich uprawnień, to wtedy jesteśmy w stanie to kryptograficznie ustalić, że ten nowy blok, który powstał, jest nie do końca poprawny. Tak w skrócie działa blockchain.
Mamy dane, one są w blokach i te bloki zawierają jeszcze dodatkowe dane, które pozwalają nam weryfikować, czy dany blok jest prawidłowy. Nie wiem, czy dobrze to wytłumaczyłem. W razie czego dopytuj.
Pewnie, jak zwykle, pojawiają się dodatkowe pytania. Wspomniałeś o przykładzie z PayPalem – że trzeba zaufać. W takim razie, skoro jest decentralizacja (zaraz sobie o niej powiemy), komu musimy ufać? Kto tym zarządza, bo ktoś za to odpowiada.
To jest bardzo dobre pytanie. Tutaj trzeba tak naprawdę zaufać protokołowi. W momencie, kiedy chcemy zbudować taką usługę jak PayPal w oparciu o sieć Ethereum, wierzymy, że sieć Ethereum faktycznie działa. Za siecią Ethereum stoi fundacja, która nazywa się Ethereum, natomiast to nie jest do końca tak, że ta fundacja może zrobić kompletnie, co chce, z danym blockchainem, ponieważ w danej sieci uczestniczą te węzły, o których wspomniałem, i za uczestnictwo w takiej sieci, za przetwarzanie takich transakcji, mamy korzyści finansowe. Czyli w dużym uproszczeniu przetwarzamy te transakcje i dostajemy za to nagrodę. To powoduje, że mamy zachętę, żeby w tej sieci blockchain uczestniczyło jak najwięcej osób.
I teraz gdyby fundacja Ethereum nagle podjęła decyzję, że jednak nie chcą już być blockchainem, chcą wszystko, nazwijmy to, sprywatyzować (co się w Polsce nie najlepiej zawsze kojarzy przez różne historyczne sprawy), mogliby ogłosić to światu i wszyscy uczestnicy sieci blockchain, którzy do tej pory z niej korzystają, mogliby powiedzieć: No dobra, to my wam dalej już nie ufamy, chcemy zrobić tzw. forka, czyli po prostu zabieramy te wszystkie protokoły, wszystkie narzędzia, które są open source i od tej pory budujemy sieć, którą już nie będzie zarządzać fundacja Ethereum, tylko zupełnie inna fundacja. Jeżeli ktoś się zainteresuje tym, że nie chce już więcej być na tym Ethereum, tylko chce być na innej sieci blockchain, to może się po prostu łatwo przełączyć na takiego forka. Odbywa się to w taki sposób, że w zależności od tego, komu ufasz, na takim jesteś blockchainie, więc możesz sobie go zmienić.
W sytuacji, kiedy jesteś na platformie typu PayPal, nie możesz tego zrobić. Jesteś po prostu postawiony pod ścianą i możesz albo się zgodzić na to, co oni zrobią, albo po prostu pójść w swoim kierunku.
W świecie blockchaina bardzo pasjonujące jest dla mnie to, że te wszystkie narzędzia są budowane w sposób otwarty. Każdy wie, jak działa protokół, każdy może sobie wejść na GitHuba, jeżeli rozumie ten kod, może go przeczytać, pobrać do siebie lokalnie, odpalić testy developerskie. Nic tutaj nie jest zamknięte. To jest wspaniałe, bo w dzisiejszych czasach, w tym scentralizowanym świecie często jest tak, że mamy nasz biznes zawierzony takiemu PayPalowi, a PayPal jest tak naprawdę dla nas czarną skrzynką. Nie wiemy, co się tam dzieje z naszymi danymi, gdzie i w jaki sposób przypływają, nie możemy zrobić takiego forka. To jest moim zdaniem siła systemów blockchainowych.
Trochę wspomniałeś o tym temacie, ale żebyśmy sobie to wszystko usystematyzowali: co oznacza decentralizacja przechowywania danych i jak to wpływa na bezpieczeństwo? Powiedziałeś, że możemy się przenieść gdzieś indziej, jeżeli nam coś nie pasuje albo jeżeli ktoś będzie chciał zmienić warunki gry, ale jeśli chodzi o samo bezpieczeństwo, to coś innego też zyskujemy na tej decentralizacji?
Myślę, że dużo zależy od produktów i tego, co się chce zrobić. Jeżeli ktoś buduje np. grę lokalną w chińczyka, w którą mogą grać dwie osoby na jednym komputerze, to pewnie wsadzanie tego do sieci blockchain nic wielkiego nie zmienia, a w zasadzie utrudnia wiele rzeczy. Nie widzę tutaj jakichś korzyści z grania w chińczyka lokalnie na jednej maszynie w blockchainie, natomiast są różne systemy, w których bardzo dobrze się to sprawdza, że masz dane dostępne w sposób zdecentralizowany.
Przykładowo: chcemy zrobić crowdfunding w świecie Web3, mieć grupę ludzi, którzy wspólnie decydują się, że chcą zbudować projekt i mają plan, że zbierają od każdego pewną sumę pieniędzy, później przeznaczają ją na kupno domeny, później przeznaczają ją na trzech developerów i na końcu np. na designera. W przypadku, gdy mamy blockchain i dostęp do historii tych transakcji, możemy po prostu zrobić takie przedsięwzięcie i być pewnymi, jaki jest przepływ tego pieniądza, i mieć to jakby zagwarantowane, jeżeli się posłużymy np. smart kontraktem. Natomiast w świecie tradycyjnych finansów nie możemy tego zrobić.
Druga rzecz, którą widzę jako wielkość blockchaina i ogólnie kryptowalut, to jest to, co w Europie dla nas nie stanowi żadnego problemu, natomiast w Afryce dostęp do systemów bankowych nie jest tak oczywisty jak u nas. Często są takie absurdy: np. ktoś pracuje w Europie, a ma rodzinę w Afryce. Jak chce przekazać pieniądze swojej rodzinie, to jedyne, co może zrobić, to pójść do Western Union i zapłacić np. $30 za przesłanie $100, co w dzisiejszych czasach moim zdaniem jest bandyctwem, złodziejstwem po prostu. Myślę, że w średniowieczu były poważne kary za takie naliczanie biednych ludzi w instytucjach finansowych. Blockchain pozwala ominąć ten cały cyrk bankowy i te śmiesznie wysokie opłaty. Nikt mi nie wmówi, że przesłanie pieniędzy do Afryki naprawdę tyle kosztuje.
Moim zdaniem jest to po prostu wyzyskiwanie systemu, który takim po prostu jest. Gdyby były inne opcje, żeby przesłać te pieniądze, to by nie kosztowało to 30 dolarów. Myślę, że w takich mikro, czy nawet nie mikro, ale po prostu płatnościach międzyświatowych bitcoin i inne kryptowaluty wprowadzają spory zamęt, dlatego bankom się to nie do końca podoba.
Jeżeli chodzi jeszcze o samą decentralizację, myślę, że tutaj jest plus dla developerów, którzy chcą budować różne rozwiązania w oparciu o zdecentralizowane protokoły. Jeżeli budujemy swoją aplikację, która pod spodem korzysta np. z Ethereum, to mamy dużo większą szansę, że ten protokół się nie zmieni i nasza aplikacja będzie działała tak, jak zakładaliśmy dzisiaj. Inaczej niż w przypadku centralnych systemów, które mogą powiedzieć: zmieniamy cennik albo nie obsługujemy już tego pana, zmieniamy zasady, zmieniamy nasz model biznesowy itd. Dlatego myślę, że w przypadku decentralizacji jest dużo tego typu plusów.
Jeszcze jeden, może nie plus, ale właściwość decentralizacji to sytuacja, jaka miała miejsce z bitcoinem w przypadku, gdy Chiny zakazały kopania tych kryptowalut. Wszyscy ludzie, którzy nie do końca się znali na bitcoinie, bardzo się cieszyli z tego, że Chiny zakazały wydobycia kryptowalut, twierdząc, że jest to koniec bitcoina, bo skoro jest tam 80% kopalni i dzisiaj muszą przestać działać, jutro otwieramy szampana, bo już nie będzie bitcoina, prawda?
Okazało się, że to nie ma kompletnie znaczenia, bo jeżeli wyłączysz wszystkie kopalnie w Chinach i nagle uruchomisz je w Stanach (a możesz to zrobić tak naprawdę bez aż takiego czasowego opóźnienia), to nagle się okazuje, że sieć znakomicie działa, tylko że teraz większość węzłów nadaje nie z Chin, tylko z Ameryki i tam są kopane te bitcoiny. Myślę, że ten system działa w taki sposób, że jest naprawdę rozproszony i nawet w przypadku, kiedy ktoś trzyma swoje dane w blockchainie i np. te węzły w Chinach czy w innym państwie ucierpią w wypadku kataklizmu czy wojny, to mamy inne węzły w sieci, które mogą być w Rumunii, Polsce, w Afryce lub Ameryce Południowej, i możemy te dane odzyskać.
Cały czas rozmawiamy o pieniądzach, a w zasadzie kryptowalutach, ale przecież blockchain to nie tylko kryptowaluty. Jaki potencjał jeszcze ma ta technologia? Gdzie już jest wykorzystywana i gdzie będzie?
Myślę, że przy okazji innych zastosowań blockchaina warto powiedzieć, że jeden z popularniejszych obecnie blockchainów, czyli Ethereum, pozwala wdrażać na swoją sieć smart kontrakty. Jak słucha nas ktoś, kto już coś wie z programowania: smart kontrakty to takie małe end pointy, takie małe API, które są w stanie coś zrobić, wykonać zadanie, przyjąć dane i wypluć wynik. Te smart kontrakty powodują to, że blockchain możemy wykorzystywać do różnych rzeczy.
Pierwszy sposób użycia, który wszyscy znają, to kryptowaluty. Co ciekawe, kryptowaluty też działają jako smart kontrakt – taki bardzo prosty smart kontrakt, w którym zakładamy, że jeżeli łączymy się z siecią blockchain (myślę, że to też jest taki ważny szczegół), nie używamy loginu albo hasła, tylko używamy kryptografii. Musimy posłużyć się naszym prywatnym kluczem, który zwykle jest przechowywany w kryptograficznym portfelu.
Jeżeli zarządzamy naszymi kryptowalutami, to tak naprawdę łączymy się z małym smart kontraktem, który przechowuje balance. Załóżmy, że ja mam $100, Ty masz $150 – to jest po prostu przechowywane w smart kontrakcie. Takich smart kontraktów może być więcej, mogą robić różne rzeczy.
Pytałeś o inne przypadki użycia. Myślę, że warto wspomnieć o smart kontraktach typu NFT, które pozwalają nam przypisać własność do cyfrowego przedmiotu. Tutaj dużo osób korzysta z blockchaina i ze smart kontraktów do tego, żeby np. sprzedawać dostęp do ograniczonych społeczności. Za przykład weźmy społeczność przedsiębiorców, gdzie w grupie może być 1000 osób. W momencie, kiedy ktoś już nie chce być w tej grupie i chce sprzedać swój dostęp, może ten token NFT wystawić na giełdzie, która wspiera ten standard, i po prostu sprzedać dostęp do tej grupy.
Te wszystkie transakcje odbywają się właśnie na sieci blockchain, co jest fajne, bo możemy łatwo wyłapać wartość takiej grupy. Jeżeli ktoś nam powie, że ma 1000 osób na Discordzie, to ciężko jest zweryfikować, jaką wartość ma ta grupa, bo każdy może sobie dodać tam 1000 botów czy po prostu zrobić konkurs i zebrać randomowe osoby. Natomiast w przypadku takich tokenów NFT można bardzo łatwo w transparentny sposób prześwietlić: Aha, OK, to jest 1000 walletów. Te wallety są unikalne, sprzedawały dostęp do tej społeczności na łączną kwotę 900 tys. zł. Wtedy już wiesz, że ta grupa ma jakąś wartość.
Kolejny przykład: smart kontrakty i ogólnie sieć blockchain używane są w grach komputerowych, też jako powiązanie z pewnymi przedmiotami. Jak ktoś, kto nas słucha, grał kiedyś w jakieś gry MMORPG typu Tibia, Knight Online, Helbreath itd., to tam można było zdobywać różne przedmioty. Jeśli chciało się komuś sprzedać taki przedmiot, to powstawał problem, bo twórcy gry nie zawsze na to zezwalali, a jednak rynek na to był dosyć duży. Teraz z kolei jest sporo gier, które działają w taki sposób, że zdobywa się w grze różnego rodzaju surowce albo przedmioty i można je reprezentować jako te NFT oraz sprzedawać na różnych zdecentralizowanych platformach. I idąc dalej, są też przypadki...
Może przerwę Ci na chwilkę i dopowiem tylko jedną rzecz, bo chyba nie dopowiedziałeś tego, że jeśli chodzi o tę grę, to faktycznie można było kupić ten przedmiot, ale nie byłeś pewny, czy dostaniesz to, co trzeba. Przy NFT natomiast będziesz miał jakby pewność tego, że to, co kupujesz, to jest to, czego oczekiwałeś, tak?
Tak, to jest bardzo dobra uwaga. Jest jeszcze jedna rzecz, o której warto wspomnieć, która przekonuje twórców do wprowadzania tego typu rozwiązań. Blockchain przez to, że jest taki transparentny i przez to, że tak naprawdę jest to też standard, jest to też pewny interfejs. Jeżeli sprzedaję NFT, to NFT ma pewien standard, który rozumieją wszystkie inne aplikacje w świecie, które łączą się z NFT, i to daje nam bardzo fajną właściwość. Jeżeli ja Ci sprzedam ten miecz w grze za 1000 zł, to producent tego NFT, czyli producent gry albo posiadacz licencji do tej gry, może Ci powiedzieć, że od każdej takiej transakcji chce sobie odciągnąć prowizję, nawet jeżeli Ty sprzedajesz to później wielokrotnie na rynku wtórnym.
To jest bardzo fajny koncept, który wiele osób, które mają gry komputerowe albo jakieś licencje, przekonuje do tego, że NFT ma sens. Mogą zarabiać na rynku wtórnym, który i tak gdzieś tam jest, tylko do tej pory było tak, że wszyscy udawali, że tego nie widzą. Nie zarabiali na tym pieniędzy, a teraz jest możliwe, żeby jeszcze tych oryginalnych twórców wynagrodzić właśnie dostępem do royalties.
Są oczywiście jeszcze różne inne przypadki użycia. Są smart kontrakty używane np. do głosowania i to w taki sposób, że możesz powiedzieć, że robisz głosowanie i mogą głosować tylko osoby, które mają jakieś NFT, czyli które np. grały w jakąś grę albo są członkami Twojej społeczności. Wtedy możemy łatwo zwalidować w takim smart kontrakcie, że ktoś faktycznie coś posiada, czyli jest uprawniony do głosowania. Możemy umożliwić to głosowanie znowu w sposób transparentny, bo jeżeli robisz głosowanie na swoim serwerze z PHP z bazą MySQL, to po pierwsze wiadomo, że możesz na nie wpłynąć. Po drugie nagle po dwóch latach, jak ktoś chce wrócić do tego głosowania, okazuje się, że serwer nie został opłacony i nie ma już dostępu do żadnego głosowania, bo serwer po prostu leży. Są więc tutaj też takie systemy.
Są też bardzo ciekawe projekty z dziedziny tak zwanych zdecentralizowanych finansów, czyli DeFi. Tam się dzieją w ogóle kosmiczne rzeczy. Już może nie będę się rozgadywał za bardzo, bo wiem, że mamy jeszcze szereg innych tematów do omówienia, ale w skrócie mamy ten DeFi, gdzie możemy mieć dostęp do kryptowalut, które są tak zwanymi stable coinami. Mają wartość, która jest utrzymywana względem tradycyjnych walut, czyli np. jeżeli przesłałeś mi 1ETH za wykonaną pracę i dzisiaj 1ETH stoi, dajmy na to, $5000, to mogę zdecydować: nie wierzę, że ETH utrzyma się na takim kursie względem dolara. Mogę wówczas wymienić ETH na stable coin, który reprezentuje dolara i momentalnie mam $5000 reprezentowanych przez kryptowalutę, np. USDC albo USDP, która jest po prostu stable coinem.
Jak ktoś zna się na matematyce i na finansach, może się domyślić, że mamy cały system różnych gier walutowych. Ktoś ciągle sprzedaje, ktoś coś wymienia, ktoś pożycza. Tak jak mamy w tradycyjnym świecie Forex czy różne inne produkty, czy tam instrumenty finansowe – to wszystko też można robić na smart kontraktach, co też jest bardzo ciekawe.
Mamy tak naprawdę transparentny dostęp do tych danych, bo nikt mi nie wmówi, że obecny system finansowy, to jak działa Forex, jak działają giełdy, że to jest transparentne. Tam bardzo dużo opiera się na różnych kulisach, kuluarach – tu się ktoś dogadał, tu coś podpisał, tu coś wydrukował i nagle kurs ląduje w Excelu. W przypadku tych zdecentralizowanych finansów oczywiście nie możemy robić tych wszystkich operacji, co na tradycyjnym rynku, ale możemy robić niektóre z instrumentów.
Są też nowe instrumenty, o których nie będę się rozgadywał, ale generalnie sam fakt rozliczania różnych rzeczy w oparciu o smart kontrakty jest bardzo ciekawy, bo mamy po prostu dostęp do tzw. danych on-chain i możemy na bieżąco sprawdzać, kto co wysyła do tych smart kontraktów, co z tego wynika. Każdy ma dostęp do tych samych danych. Nie, że ktoś ma więcej, a ktoś mniej.
Nie wspomniałeś chyba jeszcze o jednej rzeczy, która mnie trochę interesuje, czyli o tokenizacji organizacji, spółek, słyszałem też o nieruchomościach czy markach osobistych. To też jest chyba ciekawy temat, który może się rozwinąć. Czy chciałby coś dodać?
Pojawiają się próby tokenizacji różnych rzeczy. Oczywiście trzeba z tym bardzo uważać, bo musicie pamiętać o tym, że wszędzie tam, gdzie pojawiają się pieniądze, pojawiają się dobrzy i źli ludzie. Niestety tak jest w każdej możliwej branży, w każdym możliwym sektorze i nie inaczej jest w Web3, nie inaczej jest w blockchainie. Są oczywiście projekty, które tokenizują różne rzeczy typu nieruchomości, zarządzanie jakąś spółką czy organizacją, natomiast głównym problemem w mojej opinii jest tutaj prawo, które jeszcze nie nadąża za tym wszystkim. W niektórych stanach bardzo dobrze działają projekty, gdzie masz np. jakieś uproszczone spółki z o.o. lub cywilne, które są bardzo scyfryzowane, zdigitalizowane, gdzie możesz wszystko utworzyć i zarządzać majątkiem takiej spółki praktycznie online. Te projekty pozwalają Ci tokenizować np. nieruchomość.
Myślę, że to jest ciekawa rzecz. Nie muszę Wam mówić, że w obecnych czasach na kupno nieruchomości jako inwestycji nie każdy może sobie pozwolić. Natomiast w przypadku tokenizacji moglibyśmy kupić np. mieszkanie w centrum Warszawy w 1000 osób – tak, że każdy by się na nie zrzucił. Później byłoby wynajmowane albo za pięć lat zostałoby odsprzedane i wszyscy byśmy podzielili się zyskiem. Wtedy najprawdopodobniej więcej osób byłoby w stanie skorzystać z takiego mechanizmu. Oczywiście w dzisiejszych czasach tego nie zrobisz, bo jest to bardzo trudne: za każdym razem trzeba ganiać do notariusza, notariusz musi wziąć swoją dolę, trzeba zapłacić prawnikowi, trzeba pani w urzędzie wytłumaczyć, że 1000 osób posiada tę nieruchomość, więc jest to dosyć karkołomna konstrukcja.
W przypadku, gdy się posłużymy blockchainem, tokenem, który po prostu jest w stanie przyjąć i rozdzielić jakąś własność nawet na 10 tys. części albo i więcej, nagle się okazuje, że możemy łatwiej wchodzić w takie inwestycje jak nieruchomości, działki, organizacje czy dzieła sztuki, a później wychodzić z tej inwestycji w dużo prostszy sposób, bo po prostu naszym kluczem do tej inwestycji jest token, który posiadamy w naszym wallecie.
Są takie projekty, natomiast uczulam naszych słuchaczy, że to jest bardzo młody rynek. Wiele projektów twierdzi, że mają coś wspólnego z blockchainem, a tak naprawdę zajmują się zbieraniem pieniędzy i wypłacaniem ich dla siebie, więc uważajcie na to, bo myślę, że dużo osób się przejechało na takich projektach.
To zapytam Cię o coś innego, bo w zasadzie jesteśmy na początku naszej rozmowy, ale już tyle tematów poruszyliśmy i ciągle zapala mi się jedno światełko w głowie. Czy uważasz, że blockchain to jest rewolucja, która jest zatrzymywana przez obecny system, bo uwalnia wiele rzeczy?
Tak. Uważam, że w wielu rzeczach na świecie, które się dzieją, nie ma przypadku. Moim zdaniem obecnie jest duży atak na krypto. Wystarczy sobie spojrzeć i wpisać w wyszukiwarce jakiegoś portalu mediowego (typu Onet, Reuters, CNN) hasło kryptowaluty – zawsze tam jest, że ktoś został oszukany, że przestępca, że kurs spadł albo kurs poleciał do góry. Nie ma żadnych innych newsów. Nie ma o tym, że możemy zbudować na tym transparentne systemy, że Afrykańczyk może sobie przesłać pieniądze do rodziny z Europy do Afryki 30 razy taniej i szybciej. O tym się w ogóle nie mówi.
Cały czas jest nagonka na krypto i moim zdaniem to jest nieprzypadkowe z tego względu, że adopcja krypto na świecie obecnie jest bardzo mała. Jak to działa i jak z tego korzystać, wie tak naprawdę garstka ludzi, ale wyobraźmy sobie, że nagle ta liczba wzrośnie 10 razy. Co to oznacza? To oznacza, że prezes jakiegoś banku nie kupi sobie kolejnego jachtu, nie kupi sobie kolejnego pałacu i nie wypłaci sobie kolejnych dywidend, bo ten biznes zahacza o tak potężny sektor, jakim jest sektor finansowy, na którym obecnie się kręci lody.
Wiele różnych ataków na krypto moim zdaniem wynika z tego, że jest duża grupa ludzi, którzy korzystają na tym, że coś jest centralne. To jest ich biznes model, są gatekeeperami, pilnują, kto wchodzi, kto wychodzi i na jakich zasadach. Tak naprawdę wprowadzenie jakiegoś DeFi czy jakiejś usługi, która nagle działa bez nich, jest sprzeczne z ich biznes modelem. Myślę, że tych ataków będzie dużo w nadchodzących miesiącach, tak że warto to obserwować.
W takim razie, jeżeli słuchasz tego podcastu, a za miesiąc wrócisz do niego i okaże się, że film jest zablokowany, to już wiesz dlaczego.
Tak, mam nadzieję, że do tego nie dojdzie, ale kto tam wie.
Tak jest. Ale wracając do tego, co powiedziałaś: ci, co wiedzą, jak działa. Chciałbym Cię zapytać, jak te smart kontrakty działają. Już wspomniałeś, gdzie je możemy wykorzystać, ale jak byś mógł nam dogłębnie powiedzieć, o co chodzi z tymi smart kontraktami. Wiemy, że możemy z nich korzystać w wielu miejscach, ale o co tak naprawdę z nimi chodzi?
Weźmy taki prosty smart kontrakt do głosowania. Jeżeli chcemy przeprowadzić głosowanie, musimy mieć jakiś fragment pamięci, np. jakąś tablicę, w której przechowujemy, kto już zagłosował i na co zagłosował. Musimy mieć do tego logikę, która np. sprawdzi, że nie możesz dwa razy zagłosować, że nie możesz zmienić głosu, albo że być może w jakichś sytuacjach jesteś w stanie go zmienić.
To jest właśnie smart kontrakt, który możemy sobie wyobrazić jako taką funkcję napisaną w JavaScripcie, która przyjmuje jakieś parametry i pod spodem w tej funkcji jesteśmy w stanie się połączyć z różnymi strukturami, np. jesteśmy w stanie przechować informacje wewnątrz pamięci smart kontraktu o tym, kto już zagłosował.
Oczywiście smart kontrakty mogą być dużo bardziej skomplikowane. Możemy np. rozszerzyć je o funkcję do przyjęcia pieniędzy – czyli mogę zdeponować w smart kontrakcie $200 i w momencie, kiedy ktoś zagłosuje jako pierwszy, to mogę mu za to wypłacić nagrodę $20.
Smart kontrakt działa w taki sposób, że przez narzędzia developerskie jesteśmy w stanie ten nasz kod wysłać na sieć blockchain. Do bloku w tej sieci wpada nie informacja o tym, że chcę Ci przesłać kasę, tylko kod funkcji tego smart kontraktu. To zostaje w pamięci blockchaina na stałe.
To ma szereg różnych fajnych właściwości, między innymi to, że jak wrzucę kod tego smart kontraktu i ogłoszę to światu, to każdy wie, że w blockchainie pod tym adresem znajduje się smart kontrakt, który zrobił Artur. Może sobie przeczytać jego kod i kod tego smart kontraktu nie może zostać zmieniony. Nieważne, czy ten smart kontrakt wyląduje na komputerze w Chinach, w Stanach, w Rumunii, czy w Paragwaju, on zawsze będzie taki sam. Jeżeli ktoś zacznie gmerać przy tym smart kontrakcie, to w skrócie, checksuma tego bloku nie będzie się zgadzać, więc będzie wiadomo, że coś jest nie tak z kodem. Myślę, że tak można to pokrótce wytłumaczyć.
To może ja bym jeszcze dopowiedział jedną rzecz. Powiedz, czy dobrze mówię, czy nie. Czyli taki smart kontrakt to w zasadzie może być algorytm, który opisuje, co ma się wydarzyć?
Tak. To opisany w języku programistycznym przepis na coś, co się ma wydarzyć w określonych sytuacjach. Jeżeli słucha nas ktoś z zacięciem informatycznym – a myślę, że wiele osób – to jest to normalnie język, tak zwany Turing-complete. Wszystko to, co jesteś w stanie zrobić w Javie, w C++, w JavaScripcie, jesteś w stanie zrobić w Solidity. Oczywiście są pewne różnice w programowaniu smart kontraktów, są pewne limity, ograniczenia, ale generalnie możemy tam zapisać taki pełnoprawny program, algorytm.
No to teraz poważne pytanie: kto za to płaci?
To jest dobre pytanie.
Bo wiesz, mówiliśmy o tym, że każdy uczestnik otrzymuje wynagrodzenie za dołączenie się do tego, więc jeżeli my wysyłamy te algorytmy, to ktoś musi za to płacić. Płacimy my, programiści czy użytkownicy? Czy to jest jakoś podzielone? Jak to jest?
Jest różnie. Na przykład chcemy zdeployować kontrakt NFT na sieć blockchain (oczywiście są do tego narzędzia). Przygotowałem kod smart kontraktu i w momencie, kiedy chcę go umieścić w sieci blockchain, kompilator kompresuje ten kod i wylicza np. że ten smart kontrakt korzysta z pamięci, ma 10 funkcji, jakieś odwołania do innego smart kontraktu i tak naprawdę wypluwa mi liczbę gazu, który musi zostać spalony przez sieć blockchain do tego, żeby umieścić dany smart kontrakt w sieci blockchain. Jeżeli byśmy zrobili taki smart kontrakt dzisiaj, trzeba wziąć pod uwagę, czy dzisiaj sieć jest obciążona, czy jest dużo węzłów, które są chętne, żeby przetworzyć tę naszą transakcję i umieścić ten kod w sieci blockchain. Musimy sprawdzić kurs ETH (ponieważ na sieci Ethereum opłacamy te koszty gazu w ETH) i np. dzisiaj mogłoby się okazać, że wdrożenie naszego smart kontraktu na sieć kosztuje $120 – to jest cena, którą ja jako developer, jako osoba, która wprowadza kod na sieć, muszę dzisiaj ponieść.
Natomiast jutro sieć może być dużo bardziej obciążona, cena ETH może pójść do góry i tak naprawdę ten sam kontrakt następnego dnia mogę wrzucić za $1000, bo sieć i warunki na niej powodują, że cena się zmienia. Więc pierwsza opłata, jaką musimy ponieść, to za wniesienie kontraktu na sieć. Druga rzecz…
To ja na chwilkę Ci przerwę. Czy to jest tak, że możemy zlecić naszemu kompilatorowi, żeby wybrał najlepszy moment na to, żeby wysłać ten kod? Czyli nam nie zależy na tym, żeby to było od razu, tylko żeby on wybrał ten moment, kiedy jest taniej. Czyli w zasadzie z racji tego, że koszt kryptowalut spadł, to jest dobry moment, żeby budować te smart kontrakty, żeby było taniej, a nie czekać aż wzrośnie cena. Czyli to, że spadło, to wcale nie jest taka zła informacja dla nas jako developerów.
Tak, dla developerów to jest zawsze bardzo dobra informacja, że ETH spada albo że sieć jest mało używana. Oczywiście zależy, na jaki horyzont czasowy patrzymy, bo jeżeli dzisiaj chce wdrożyć kontrakt i jest sieć mało obciążona, to super, ale jak za miesiąc nikt z niej nie będzie korzystał, to też nie o to chodzi – bo nikt nie będzie korzystał z tego mojego smart kontraktu.
Natomiast są takie narzędzia, w których możesz ustawić w bardzo precyzyjny sposób np. maksymalną cenę, jaką jesteś w stanie zapłacić za wdrożenie swojego smart kontraktu i po prostu poczekać na odpowiednie okienko. Wtedy Twój smart kontrakt może zostać wdrożony – do tego jest więc pełne wsparcie.
Drugi moment, w którym płacimy, to moment, w którym nasz smart kontrakt dokonuje zapisu jakichś danych, czyli np. w momencie, gdy smart kontrakt jest już wdrożony, a ja chcę zagłosować – czyli chcę zmienić pamięć tego smart kontraktu w środku, zapisać, że Artur zagłosował za czymś. Wtedy zmieniam pamięć tego smart kontraktu i znowu muszę zapłacić uczestnikowi sieci za to, że ktoś weźmie tę transakcję i ją sprawdzi, obejrzy z każdej strony i wsadzi do smart kontraktu, jeżeli wszystko jest OK. Wtedy za takie zapytanie do smart kontraktu możemy zapłacić np. $0,20, z tym że tutaj wszystko się bardzo dynamicznie zmienia, ponieważ Web3 i blockchain się rozwijają.
To nie jest tak, że coś powstało w 2008 roku i tak będzie do końca świata. Tutaj są czasami odstępstwa od tego, ponieważ są przede wszystkim rozwiązania typu Gas Station, które pozwalają np. developerowi zadecydować, że później użytkownicy, którzy korzystają z tego smart kontraktu, nie ponoszą kosztów transakcji, tylko jest specjalny mechanizm w protokole, w którym ktoś może wprowadzić chęć połączenia się z danym smart kontraktem, a my wtedy za niego opłacamy tę transakcję. Tak że to też jest możliwe, ale generalnie zasada jest taka, że płacimy za deploy i za wszelkie transakcje, które mogą coś zmienić w pamięci albo ogólnie w stanie blockchaina, natomiast nie płacimy za odczyt. Czyli jeżeli chcemy odczytać, np. czy Artur faktycznie zagłosował, wtedy sczytujemy tę informację z blockchaina i tutaj żadnych opłat transakcyjnych za to nie ma.
To teraz dodatkowe pytanie, a w zasadzie może stwierdzenie, obawa. Czy to nie jest tak, że jak coś źle napiszemy, to popłyniemy z pieniędzmi?
Tak, to jest właśnie duży problem. Mnie też się niestety zdarzyły takie fuck-upy. Myślę, że innym programistom Solidity też. Największym problemem jest to, że generalnie nie możemy zmienić kodu danego kontraktu. Tu też jest oczywiście odstępstwo, bo można zdeployować specjalny rodzaj kontraktu, którego kod można zmieniać, ale większość smart kontraktów jest deployowanych tak, że nie można ich kodu zmienić.
To jest duży problem, zwłaszcza jeżeli czegoś nie przetestujemy dobrze. Są różne przypadki, brutalne sytuacje, że np. kontrakt przechowuje pieniądze na jakiś cel, a jest w nim bug, który umożliwia wyciągnięcie środków z tego smart kontraktu. Było bardzo dużo różnych głośnych sytuacji, że miliony kryptowalut o wartości milionów dolarów były wykradzione ze smart kontraktów.
Czasami dzieje się bardziej przyziemna rzecz, ale też jest bardzo kłopotliwa. Popieprzymy coś z logiką w środku tego smart kontraktu w taki sposób, że on wchodzi w taki stan „nieużywalny”. Ktoś np. wprowadzi do niego input, który powoduje, że jakaś pętla się wysypuje albo że do jakichś danych nie da się dostać, bo są nadpisane. Wtedy pojawia się problem, że mamy smart kontrakt, ale jest on zbugowany i nie da się więcej z niego korzystać.
Tak że tu jest problem, ale tak jak już powiedziałem kilka razy w tej rozmowie: są narzędzia, które pozwalają to minimalizować. Są narzędzia developerskie pozwalające te smart kontrakty wdrażać na taki blockchain lokalny, nie musimy za to płacić żadnych pieniędzy. Są sieci testowe działające w taki sposób, że przyznają nam wirtualne kredyty, które możemy używać do wdrażania smart kontraktów i nie inwestujemy prawdziwych pieniędzy. Różne narzędzia więc, które minimalizują te wydatki, są oczywiście dostępne.
To jeszcze dopytam, jeśli chodzi o te pieniądze: czy musisz zdeponować jakieś pieniądze, które są zamieniane na wspomniany gaz, i dzięki temu wiesz, że tyle wydasz i więcej nie? Czy musisz mieć cały czas „podpiętą kartę”, żeby to mogło wszystko funkcjonować?
Nie. W skrócie to trzeba sobie wyobrazić tak, że za każdym razem, kiedy umieszczasz smart kontrakt na blockchainie, mamy po prostu nasz wallet kryptograficzny. I to może być oczywiście wallet sprzętowy, taki za 500 zł, superbezpieczny, który stoi u Ciebie na biurku, albo może to być jakiś najtańszy wallet albo wallet przeglądarkowy zrobiony z użyciem plugina MetaMask, albo może być to po prostu wygenerowany klucz prywatny wstawiony jako plain text do skryptu Node.js, który go zaciąga do pamięci i obsługuje go.
Trzeba pamiętać, że zawsze musi być wallet, z którego wychodzą środki na pokrycie danej operacji. To może być wallet, tak jak już powiedziałem, jakiś superhiperbezpieczny, to może być jedna linijka w naszym kodzie. To, co jest najważniejsze, to że jest to właśnie osobny wallet, czyli nie musimy na nim trzymać oszczędności naszego życia.
To jest takie coś, że np. dzisiaj wdrażam projekt dla klienta X, to tworzę nowy wallet, mówię klientowi, że trzeba go doładować na $100 i tyle. To jest wallet, który służy wyłącznie do tego, żeby wdrożyć kontrakt na sieć. I nawet jak tam coś się z nim popieprzy, nawet jak ktoś uzyska do niego dostęp, to nic wielkiego się nie dzieje, bo na tym wallecie już może nie być w ogóle żadnych pieniędzy, bo te $100 zostało już spalone na wrzucenie kontraktu i tyle. Tak to trzeba więc sobie wyobrazić.
No dobrze, to jak już porozmawialiśmy o tych smart kontraktach, to powiedz nam teraz, proszę, jakie języki i frameworki wykorzystujemy do tworzenia aplikacji blockchainowych.
Myślę, że na frameworki, przynajmniej według mojej wiedzy, to aż tak się jeszcze nie rozwinęło – czyli nie mamy może takich całych gotowych bibliotek frameworkowych do budowania smart kontraktów.
Mamy język, którym się posługuję, z którego szkolę, z którego są też materiały na moim YouTubie, czyli Solidity. Jest to obecnie najbardziej popularny na świecie język do tworzenia smart kontraktów. Jest z nim związanych najwięcej ofert pracy, narzędzi, artykułów, materiałów w sieci.
Solidity jest miksem różnych języków. Trochę taki JavaScript z Pythonem, może trochę Javy tam jest. Generalnie zlepek różnych języków. Myślę, że jak ktoś sobie wyświetli kod Solidity, to jeżeli kodowaliście w innym języku programowania, to dosyć szybko powinniście się tam odnaleźć.
Oprócz Solidity są oczywiście jeszcze inne języki, mniej popularne, np. Vyper. W zasadzie nie wiem o nim więcej ponad to, że istnieje, bo po prostu jest mało popularny. Moim zdaniem lepiej korzystać z narzędzi, które są najpopularniejsze na ten moment, bo jest mniejsze ryzyko, że wpadniemy w sytuację, że nie wiemy, co dalej zrobić, jest jakiś dziwny błąd i nikt nam nie jest w stanie pomóc. Dlatego osobiście zawsze decyduję się na takie bardziej popularne rozwiązania.
No i jest język Rust, który nie jest używany wyłącznie do smart kontraktów. Jest to język silnie typowany z bardzo dobrym zarządzaniem pamięcią – taki C++, tylko myślę, że chyba nowocześniejszy. Rust też jest używany na niektórych sieciach blockchain do programowania smart kontraktów, tylko że ja z nim nie miałem za wiele do czynienia, więc też nie chcę tutaj za bardzo wchodzić w szczegóły.
Myślę, że to są główne języki do tworzenia smart kontraktów. Naokoło używa się jeszcze języków do „zarządzania tym wszystkim”. Jeżeli mamy smart kontrakt, to zwykle piszemy sobie skrypt, który np. wdraża ten smart kontrakt na sieć, i możemy to zrobić z użyciem JavaScriptu. Myślę, że jest on najbardziej rozwinięty, jeżeli chodzi o narzędzia dotyczące smart kontraktów, bo jest to najpopularniejszy język. Moim zdaniem takim kryterium jest to, żeby powstawało jak najwięcej tych narzędzi, żeby jeszcze bardziej nie utrudniać wejścia w Web3.
Samo wejście w Web3 jest już wystarczająco dużym wyzwaniem, a jak jeszcze ktoś by się musiał uczyć kompletnie nowych języków, które nie przypominają tych, co są już znane, to byłoby to jeszcze cięższe.
W JavaScripcie mamy narzędzia typu Hardhat, które wspierają pisanie np. testów jednostkowych i wdrażanie tych smart kontraktów na sieć, ale są oczywiście też narzędzia w Pythonie, w Javie, nawet w Bashu. Myślę, że w każdym języku programowania znajdziemy jakieś mniejsze lub większe narzędzia, które umożliwią nam np. deploy tych smart kontraktów na sieć.
No dobrze, to jak już znamy języki, frameworki, to teraz powiedz nam, jakie zadania czekają programistę przy budowaniu i utrzymywaniu takiego rozwiązania. Wspomnieliśmy trochę o tych błędach, które mogą nas mniej lub więcej kosztować. Co byś do tego jeszcze dodał?
Myślę, że najważniejsze jest zrozumienie platformy, na którą piszemy kod. Można to porównać troszeczkę do świata webowego. Ciężko mi sobie wyobrazić, żeby ktoś zaczął tworzyć strony internetowe, nigdy z nich nie korzystając i nie wiedząc, do czego one służą. Myślę, że takie główne wyzwanie na początek jest takie, żeby w ogóle się zainteresować, czym jest blockchain, jak on działa, jakie problemy rozwiązuje i w jaki sposób. To jest na początku bardzo ważne, żeby później zrozumieć, jak te smart kontrakty ze sobą rozmawiają, jakie są limity ich działania. To jest takie pierwsze wyzwanie.
Drugie wyzwanie to zaopatrzenie się w wallet kryptograficzny. Myślę, że to ważna rzecz, żeby wiedzieć, że np. jak chcę wrzucić smart kontrakt, to muszę mieć swój adres, muszę mieć na nim jakieś środki, więc muszę wiedzieć, jak się do tego zabrać.
Trzecia rzecz to poznanie narzędzi developerskich, które pozwalają nam kompilować, testować kod, bawić się nim lokalnie. Myślę, że nie ma sensu, jak ktoś dopiero pierwszy raz się zaznajamia z tym wszystkim, żeby to wrzucać od razu na sieć i płacić za te smart kontrakty. Ważne jest to, żeby poznać te narzędzia i przetestować je sobie lokalnie, napisać testy jednostkowe, podpiąć się do swoich smart kontraktów, np. z poziomu Node.js, czy jak ktoś zna .Net, to z poziomu .Net, i po prostu nauczyć się tych smart kontraktów w takim bezpiecznym środowisku.
Kolejne kroki to już, myślę, wdrożenie pierwszych smart kontraktów na produkcję, być może skorzystanie z jakichś istniejących smart kontraktów, żeby zbudować jakąś usługę w oparciu o istniejące rzeczy. Myślę, że tak bym pokrótce to opisał.
No dobrze, a w takim razie, jakie będzie Twoim zdaniem największe programistyczne wyzwania przy pracy z blockchainem?
Jest duże ryzyko popełnienia błędu. W kontrakcie, który już wejdzie na sieć i ktoś zacznie z niego korzystać, nie da się niestety tak łatwo zmienić kodu i wdrożyć go jeszcze raz.
Drugie wyzwanie, może się powtórzę, ale to jest właśnie zrozumienie, kiedy ten blockchain pomaga, w czym on pomaga – żeby uniknąć takich sytuacji, że budujemy jakiś smart kontrakt, a na końcu się okazuje, że nie rozwiązuje on problemu albo że część rzeczy, które w nim są, w zasadzie można by było wyrzucić poza blockchain, a w blockchainie przechowywać tylko jakieś strzępki informacji. I to w zupełności by wystarczyło, żeby mieć kompletny system i do tego lepiej działający.
Myślę, że to jest duże wyzwanie, żeby rozumieć to, co się robi biznesowo. Wiem, że w świecie webowym często jest tak, że możemy robić projekt i nawet nie rozumieć do końca, co on robi, ale jesteśmy w stanie coś tam dowieźć. Natomiast w przypadku smart kontraktów myślę, że często dużo ważniejsze jest to, żeby poznać od podszewki problem, który rozwiązujemy, rozumieć go i przy okazji połączyć to z tą wiedzą, jak działa dany blockchain, jakie ma limity, czy nie wpadniemy w jakąś dziwną sytuację, że to, co ten smart kontrakt robi, będzie np. za drogie dla naszego użytkownika. Przecież jeżeli ktoś chce kupić dostęp do gry, która jest warta $1, a musi zapłacić za transakcję $15, to się nie spina, prawda? Nie ma to sensu.
A to może tak dopytam, bo mówiłeś, że to się zmienia. Czy jesteśmy w stanie to przewidzieć, żeby tak nie było?
Tak, oczywiście. Są różne mechanizmy. Specjalnie może nie wchodziłem tak w szczegóły, bo oprócz tego, że mamy sieci główne, takie jak Ethereum czy Bitcoin, to mamy jeszcze tak zwane Second-Layer Solutions albo sidechainy, czyli to takie blockchainy poziom niżej, które co jakiś czas zrzucają swój zapis do tego blockchaina głównego. To powoduje np. że ten blockchain, który jest warstwę niżej, może nie jest aż tak bezpieczny i tak w pełni transparentny jak ta główna sieć, ale już np. w przypadku jakichś gier czy konkretnego zastosowania biznesowego okazuje się, że bezpieczeństwo tego sidechaina jest w zupełności wystarczające. Nagle się okazuje, że tam masz opłaty transakcyjne, np. 100, 1000 razy mniejsze niż na sieci głównej – czyli jak podałem Ci cenę $100 za wdrożenie smart kontraktu, to na sieci Polygon możesz zapłacić $1 czy $2, a za transakcję możesz zapłacić $0.001, więc są oczywiście różne sposoby, żeby to obchodzić.
Co do przewidywania, kiedy ceny gazu są niższe, to oczywiście są takie metody czysto statystyczne: np. w piątek o 14:00 jest drogo, bo wszyscy deployują i chcą ruszyć na weekend, a w sobotę czy w niedzielę rano ceny gazu są bardzo niskie, bo mało kto siedzi w pracy i myśli o tym, żeby wdrażać kontrakty, a Ty jak akurat masz chwilę, to możesz puścić jakiś kontrakt i zaoszczędzić dużo pieniędzy.
Są tutaj różne modele, ale trzeba pamiętać, że to jest już bardzo duży i dynamicznie działający rynek. Jak dzieją się jakieś akcje, typu protokół jest zhakowany, czy dzieje się coś dziwnego na rynku regulacyjnym, to często można obserwować, że nagle te opłaty transakcyjne rosną. I w zasadzie nie da się tego przewidzieć.
To żeby nie było tak pesymistycznie, to może są też łatwiejsze elementy dla programisty blockchainowego niż takiego tradycyjnego?
Jeżeli chodzi o łatwiejsze rzeczy, to wydaje mi się, że można czasami trochę łatwiej debugować taki system produkcyjny przez to, że każda transakcja w blockchainie jest transparentna. Kolejność wykonywania transakcji, co kto wysłał, z jakiego walleta – to jest od razu widoczne.
Oczywiście wiem, że w systemach tradycyjnych też można to osiągnąć, można sobie zrobić piękne logowanie, zbieranie wszystkich możliwych eventów i takie debugowanie produkcji też jest łatwe, tylko wiadomo, że to są jakby dodatkowe rzeczy, o które musimy zadbać, a w przypadku takiego developmentu na blockchainach, to po prostu jest. Nie trzeba o tym myśleć, bo to jest część całej zabawy. Tutaj jest więc z tym troszeczkę łatwiej.
Systemy, czy może smart kontrakty przez to, że one mają ograniczenia w postaci, np. tego, ile danych możemy w nich przechować, ile kosztuje to przechowywanie danych, powodują, że te smart kontrakty są prostsze niż logika w takich tradycyjnych systemach – bo trzeba pamiętać, że czasami są budowane jakieś systemy do obsługi PKP czy Deutsche Bahn, i tam jest tych danych tyle, że żeby napisać back end, który jest skalowalny, który się nie zacina i który pozwala mieć błyskawiczny dostęp do tych wszystkich danych zbieranych z różnych miejsc, to jest to bardzo duże wyzwanie programistyczne, architektoniczne, jak to wszystko poukładać, zrobić ze sobą itd.
Natomiast smart kontrakty póki co nie są aż tak skomplikowane. To są zwykle dosyć proste operacje typu: ten ktoś ma jakiś token, ten token może się uwolnić, jak coś się stanie. Myślę, że te operacje są dużo prostsze, przez co tak naprawdę tego kodu jest mniej.
To są takie dwie rzeczy, które mi się nasuwają.
To w takim razie chętnie bym się jeszcze od Ciebie dowiedział, jak w ogóle tworzymy albo w zasadzie dopisujemy dane do tego blockchaina. Powiedzmy, że mamy już koncepcję, deployujemy. Jak wygląda cały ten proces? Na co powinno się zwrócić uwagę? Gdzie, na jakim etapie jest to weryfikowane? Wspominałeś o pobieraniu pieniędzy. Czy w ogóle można tam wrzucać jakieś wirusy albo, czy pojawiają się wirusy? Jak to wszystko wygląda?
À propos wirusów to może opowiem o tym na końcu, bo oczywiście jest coś takiego, ale troszeczkę inaczej to działa.
Tutaj dużo rzeczy jest rozwiązywanych na poziomie, nazwijmy to narzędzia/protokołu, czyli w momencie, kiedy stworzę smart kontrakt, to oczywiście mógłbym to zrobić w taki sposób, że odpaliłbym ręcznie jakieś narzędzie, które skompiluje mi kod, weźmie ten kod i zamieni go np. na format transakcji, czyli w skrócie taki JSON, który jest rozpoznawalny przez sieć Ethereum i przez innych uczestników tej sieci. Mógłbym wziąć swój e-wallet, złożyć podpis na tej transakcji, potwierdzając ją swoim podpisem kryptograficznym: że w takiej formie, ten JSON jest podpisany przeze mnie. Mógłbym go dołączyć i wysłać ręcznie, czy tam jakimś HTTP callem, do bramki Ethereum, i pewnie po dziesiątkach godzin spędzonych nad tym, że coś nie działa, coś się opóźnia, to pewnie by to zadziałało.
Natomiast są narzędzia developerskie, które te wszystkie kroki są w stanie zrobić w 10 sekund. Czyli mam skonfigurowany projekt w Hardhacie, odpalam skrypt do deploya z moich smart kontraktów i Hardhat po kolei robi to, co wymieniłem: kompiluje kod, opakowuje go, składa podpis, łączy się z jakąś szybką bramką do wrzucania transakcji na blockchain i po prostu jest to w pełni zautomatyzowany proces. Nie trzeba się tam dużo więcej na ten temat zastanawiać.
Są narzędzia, które to jeszcze upraszczają. Jest Remix IDE, taki edytor online, który pokazuję u mnie na kanale i w kursach, w którym tak naprawdę z okna przeglądarki jesteśmy w stanie wdrożyć smart kontrakt, pod warunkiem że mamy podpięty w przeglądarce krypto wallet. Jesteśmy w stanie wrzucić nasz kod bezpośrednio na sieć, prosto z okna przeglądarki.
Po drodze jest bardzo dużo bramek kontrolnych, czyli jeżeli ten kod się nie kompiluje, to nie wyląduje na sieci. Jeżeli próbujemy go wrzucić przez wallet, który nie jest doładowany krypto, dostaniemy powiadomienie. Jeżeli mamy za mało pieniędzy, to też zostaniemy o tym poinformowani. Jeżeli są nawet jakieś potencjalne błędy w bezpieczeństwie smart kontraktów, to te narzędzia odpowiednio skonfigurowane są w stanie wyłapać proste rzeczy, a pewnie wkrótce będą w stanie wyłapać jeszcze więcej. Te narzędzia developerskie są naprawdę bardzo dobrze przemyślane, ciężko jest tak naprawdę sobie strzelić w stopę.
Te narzędzia developerskie pod spodem są dogadane z fundacją Ethereum. Są różnego rodzaju granty przeznaczane dla teamów Open Source, które tworzą te narzędzia, integrują się z tym, ustalają np. standardy takich transakcji: jak one wyglądają, jak działa ten podpis kryptograficzny. Wszystko jest od tej fundacji, od protokołu jakby wyspecyfikowane. Na to są przeznaczane granty, nad tym pracują różne zespoły, które czasami mają jakiś pomysł, jak w ogóle monetyzować takie narzędzia.
Okazuje się, że np. taki MetaMask – który jest w zasadzie pluginem w przeglądarce i działa jak taki wallet – jest całkowicie bezpłatny, ale umożliwia np. zamianę prawdziwych pieniędzy, dolarów czy złotówek, przez kartę kredytową na krypto. I m.in. na tym taki MetaMask zarabia całkiem niezłe siano, więc po drodze też oczywiście te developerskie narzędzia czasami mają jakieś płatne plany, czasami są finansowane przez fundację Ethereum i tyle. Te narzędzia są i muszą być zawsze zgodne z protokołem.
Natomiast co do wirusów, to jest to ciekawe pytanie, bo wirus, którego znamy z tradycyjnych systemów komputerowych, działa w taki sposób, że podłączę pendrive’a, ściągnie mi się coś na dysk i zablokuje mi komputer albo wyśle moje zdjęcia komuś czy cokolwiek innego. Wszyscy wiemy mniej więcej, jak takie wirusy działają, jesteśmy w stanie sobie to wyobrazić.
Natomiast w świecie Web3 i w świecie smart kontraktów wirus może działać w taki sposób, że mamy smart kontrakt, który np. nas w jakiś sposób zmyla. Myślimy, że chcemy komuś coś przesłać, jakieś pieniądze, a nagle się okazuje, że ten smart kontrakt nie wysyła żadnych pieniędzy, tylko połączenie tego smart kontraktu z jakąś spreparowaną stroną webową stara się nas nakłonić do podpisania jakiejś transakcji, która działa na naszą niekorzyść. Czyli np. mam jakieś wartościowe NFT, np. dostęp do tej grupy 1000 przedsiębiorców Firestarters, i w momencie, kiedy wejdę na taką trefną stronę, ktoś może mi obiecać: o tutaj możesz odebrać NFT za darmo. Jak podpiszę tę transakcję, to mogę być nieuważny i podpisać transakcję, która w rzeczywistości nie da mi darmowego NFT, tylko sprawi, że to swoje wartościowe NFT wyślę do tego hakera, który przygotował tę całą stronę.
Więc jest to troszeczkę inne działanie, wymaga zwykle kroku ze strony użytkownika. Raczej ciężko jest mi sobie wyobrazić sytuację ataku, w której coś jest kradzione, a my w tym nie uczestniczymy – chyba że ktoś wykradnie nasz klucz prywatny i się nim posłuży. Wtedy możemy spać, a ktoś wykradnie nasze tokeny i się nic z tym nie zrobi.
Natomiast większość takich scamów w sieci zwykle polega na tym, że po prostu wchodzimy gdzieś, potwierdzamy jakąś transakcję, nie wiemy do końca czemu i w tle się dzieje coś niedobrego.
Inny przykład to już, uważam, naiwność ludzka. Dużo osób się na to nabiera, np. ktoś na YouTubie mówi: Słuchajcie, mam tutaj sekretny smart kontrakt. Jak wpłacisz do niego $100, to on codziennie, automatycznie trade’uje – tu coś sprzeda, tu coś kupi – i np. dziennie będziesz na tym zarabiał 3%. I wtedy ludzie siadają, otwierają kalkulator, liczą sobie, że będą mieli 3% pewnego zysku ze $100, i już myślami wyjeżdżają na wakacje, zmieniają swoje życie itd., a okazuje się, że ten smart kontrakt bierze te $100 i przelewa je do przestępcy. I nic więcej się tam nie dzieje.
Ludzie czasami są po prostu naiwni, wierzą, że coś można uzyskać z niczego, i idą w takie smart kontrakty, które okazują się oszustwem. Więc wirusy oczywiście są, ale mają troszeczkę inną formę.
Jak korzystamy z blockchaina, smart kontraktów, to powinniśmy uważać i nie przestawać myśleć.
Przejdźmy do tematu rozwoju blockchaina. Cały czas jest on z nami, cały czas się rozwija. Czy masz jakąś perspektywę, jak on się zmieni w najbliższym albo w dalszym czasie? I czy myślisz, że to może mieć związek ze sztuczną inteligencją?
Myślę, że blockchain na pewno będzie się zmieniał ze względu na duży kapitał na tym rynku. Jest dużo firm, które w momencie tej rozmowy budują różne rzeczy, o których dopiero usłyszymy. Wątek sztucznej inteligencji jest bardzo ciekawy, do niego zaraz przejdę, tylko wcześniej skończę poprzedni.
Jeśli chodzi o rozwój, to moim zdaniem głównie to, co powinno być naprawione, to żeby łatwiej dało się w to wszystko wejść. Obecnie kryptowaluty są bardziej skierowane do takich osób, które się tym interesują, a kompletnemu laikowi bardzo ciężko jest w to wejść. Myślę, że bardzo dużo trzeba zrobić z perspektywy adopcji – żeby to było prostsze i ciężej było popełnić błąd.
Myślę, że już jest robiony progres. Gdy sobie porównuję, jak korzystałem z sieci blockchain w 2017-2018, a jak jest teraz, to myślę, że jest to przepaść. Jest dużo projektów, które np. ułatwiają onboarding, ułatwiają kupno pierwszego krypto, które sprawiają, np. że czasami nie trzeba mieć kryptowaluty, ale można się posługiwać tylko podpisami. Jest dużo innowacji w tym wszystkim.
Natomiast jak na to wpłynie sztuczna inteligencja… Myślę, że będziemy żyli teraz w bardzo ciekawych czasach. Wyobraźmy sobie sytuację, że byśmy chcieli ChatGPT podpiąć do naszego konta w mBanku i byśmy powiedzieli: słuchaj, to Ty dzisiaj sobie zacznij, masz tu 1000 zł i sobie handluj. mBank zadzwoniłby do Ciebie po 10 minutach i powiedziałby, że zamykają Ci konto i nie możesz się bawić w takie rzeczy.
Natomiast jeżeli wymyślimy sobie plugin, skrypt (czy cokolwiek), który jest w stanie korzystać z API sztucznej inteligencji, i podpiąć go do walleta, to nagle może się okazać, że sztuczna inteligencja będzie w stanie trade’ować 30 różnymi walutami, będzie w stanie kupować rzeczy na market place’ach, będzie w stanie tworzyć jakieś NFT, sprzedawać, zarabiać pieniądze i po prostu nimi dysponować. Myślę, że to będzie bardzo ciekawe połączenie. Będziemy mogli wykorzystywać wiedzę czy to, co robi sztuczna inteligencja, z akcjami, które są powiązane z pieniędzmi i z transakcjami, czyli de facto z kontaktem ze światem zewnętrznym. Myślę więc, że tutaj będzie dużo dobrego.
Myślę też, że będzie jeszcze łatwiej tworzyć rozwiązania Web3 przez to, że będziemy mieli dostęp np. do takich narzędzi jak GitHub Copilot czy ChatGPT, który będzie w stanie nam np. pomóc napisać smart kontrakt albo go sprawdzić pod kątem bezpieczeństwa czy błędów. Myślę, że to też będzie taka fajna ścieżka rozwoju i synergii tych narzędzi.
Natomiast co będzie w przyszłości… To się tak szybko teraz zmienia, że równie dobrze za tydzień możemy się dowiedzieć, że Stany Zjednoczone powiedzą, że jak ktoś ma krypto, to jest terrorystą i nie można tego używać. Nie wykluczam tutaj żadnego scenariusza, ale sam jestem bardzo ciekawy.
Trochę mnie przestraszyłeś z tymi Stanami Zjednoczonymi.
No, jeżeli masz dużo krypto, to myślę, że trzeba obserwować, co tam się dzieje. Na Twitterze jest już dużo informacji o tym, że obecna administracja w Stanach Zjednoczonych po cichu walczy z krypto. Nie mówi otwarcie, że krypto jest nielegalne, czy że nie można go mieć, ale naciska powoli banki, że jak ktoś handluje krypto, to lepiej z nim rozwiązać umowę i jakieś różne takie dziwne zagrywki. Tak że myślę, że w nadchodzących miesiącach wiele powinno się wyjaśnić w świecie krypto i regulacji.
OK, to może warto powiedzieć, że nagrywamy to pod koniec marca, odcinek będzie gdzieś w maju, więc może już się coś zacząć. Trzeba było mówić, że nie jest tak źle, bo teraz wszyscy zaczną sprzedawać i spadnie.
Nie powiedziałem tego na początku, ale ja aż tak kursami krypto się nie pasjonuję, nie przyjmuję, nie jestem też wielkim inwestorem. To wszystko mnie interesuje bardziej od strony technologii. Odnosząc się do kursów, oczywiście fajnie by było szybko się wzbogacić, natomiast rynek jest, tak jak mówiłem, bardzo trudny, trzeba się na tym znać. Ja się na tym nie znam, więc nie będę tutaj żadnych spekulacji kursowych prowadził.
Jasne, powinniśmy chyba dodać jeszcze na początku, że nie jesteśmy traderami. Macie nie brać naszych porad pod uwagę i tak dalej.
Tak, tam jest taka formułka.
Jakby co, to przeczytajcie sobie ją i my się pod nią podpisujemy.
Tak.
Przejdźmy do kolejnego pytania. Jakimi dziedzinami powinniśmy się zainteresować, by na blockchainowym rynku pracy nasza kandydatura była atrakcyjna?
Myślę, że ważne jest to, żeby spróbować to powiązać ze swoimi zainteresowaniami albo już posiadanymi umiejętnościami. Jeżeli ktoś jest programistą C++, .Net albo czegokolwiek to warto zobaczyć, jakie są np. implementacje, biblioteki czy narzędzia, które w danym języku możemy wykorzystać do porozumiewania się ze smart kontraktami, i co możemy zrobić.
Druga rzecz, jak ktoś się interesuje sportem lub ekonomią, to po prostu spróbować znaleźć jakiś zastosowania blockchaina w tych dziedzinach, na których już się znamy. Zrobić research – czy są jakieś projekty blockchainowe, które o to zahaczają, bo gdy już siedzimy w jakimś temacie, to łatwiej jest zrozumieć korzyści.
Tak naprawdę w każdym sektorze, w każdym przypadku blockchain może troszeczkę inaczej pomóc, więc myślę, że trzeba zacząć od tego, co się już ma. Jak ktoś jest front-end developerem to np. w jaki sposób się połączyć z blockchainem, jak sczytać dane, jak nasłuchiwać jakieś eventy, jak opłacić koszyk z użyciem krypto. Myślę, że zarówno na back endzie, jak i na front endzie jest sporo takich przestrzeni, gdzie można spróbować swoich sił i myślę, że to jest najważniejsze na początek, bo nie każdy musi zostać programistą blockchain czy Web3. Myślę, że lepiej, żeby robili to ludzie, którzy w jakiś sposób się tym interesują albo ta decentralizacja jest dla nich ważna i interesująca. Myślę, że to są chyba pierwsze kroki, jakie bym tu wskazał.
OK, a jeśli miałbyś wskazać jakiś pierwszy projekt, który chcielibyśmy wdrożyć przy wykorzystaniu blockchaina, to co byś polecił? Może coś konkretnego? Jakieś konkretne narzędzia albo technologie?
Myślę, że takim dobrym początkiem jest taki system do głosowania. Czyli po prostu odpalam sobie smart kontrakt, w którym jestem w stanie oddać głosy, i robię do tego front end, w którym np. przyjmuję to głosowanie i nasłuchuję na sieci, czy ktoś inny zagłosował. Jak ktoś zagłosował, to wyświetlam jakiś modal, powiadomienie, cokolwiek.
Myślę, że to jest fajny projekt na start, bo przede wszystkim zahacza o Solidity, trzeba zrobić smart kontrakt, który pozwala przechowywać te odpowiedzi i zwracać je. Zahacza też o część front-endowo-odczytującą, czyli nawet jeżeli ktoś nie jest front-endowcem i się nie czuje na siłach, to może napisać nawet w oknie terminala skrypt, który odczytuje coś z danego kontraktu albo nasłuchuje na eventy, które dany smart kontrakt wyemitował.
Myślę, że to jest fajny projekt, bo zahacza o kilka różnych rzeczy, czyli nie tylko jest czytanie, nie tylko pisanie, są też eventy, po drodze będzie trzeba się dowiedzieć, jak się połączyć z tym blockchainem, jak odczytywać te informacje, jak skorzystać z walleta, jak wdrożyć kontrakt na sieć, jak zdobyć jakieś wirtualne kredyty, żeby zrobić to za darmo. Jest tutaj szereg różnych rzeczy, które trzeba po drodze wykonać, i wtedy tak naprawdę można się tego nauczyć.
To wszystko, co wymieniłem, jest w moim kursie Solidity, tak że jak ktoś chciałby kiedyś skorzystać, to zapraszam. Oczywiście są też materiały na YouTubie. Myślę, że ta wiedza jest teraz coraz bardziej dostępna, więc taki projekcik do głosowania warto sobie zrobić na start.
No dobrze, za nami kilka różnych projektów, myślimy już o pracy. Czy rekrutacja na blockchain developera wygląda jakoś inaczej niż zwykłego programisty, jakoś specjalnie powinniśmy się do niej przygotować?
Wiesz co, nie wiem… Myślę, że bardzo podobnie to wygląda, czyli cała ta otoczka, interview techniczne, czasami code review, czasami po prostu pokazanie swoich projektów i omówienie ich.
Sama ścieżka czy rozmowa jest bardzo zbliżona do takich tradycyjnych posad, natomiast myślę, że warto nauczyć się takich podstaw i rzeczy stricte związanych z danym blockchainem, na który się „rekrutujemy”. Podczas rekrutacji na programistów Solidity, które przeprowadzałem, często miałem wrażenie, że ci programiści znają składnię, wiedzą, jak coś napisać, ale kompletnie nie wiedzą po co, z czego to wynika. Być może znają czasami jakąś metodę albo best practice, ale nie wiedzą do końca, dlaczego to tak jest.
Czasami u takich świeżych programistów/programistek Solidity widać też, że chcą po prostu pchać trochę za dużo danych do tego smart kontraktu, nie myśląc tak naprawdę o tym, że być może to się będzie wiązało z jakimiś limitami, z jakimiś potężnymi kosztami w używaniu tego smart kontraktu. Czasami są takie sytuacje, że ta wiedza jest taka płytka i przez to można się łatwo na tej rozmowie potknąć – bo widać, że ta wiedza jest powierzchowna, że ktoś jest bardzo skupiony na składni i na programowaniu, a nie dostrzega tych wszystkich rzeczy, które są dookoła, które tak naprawdę też są ważne.
Często od programisty Solidity nie oczekuje się, żeby coś tam zakodził i siema, tylko żeby dało się wypracować wspólnie jakieś rozwiązanie, jakiś smart kontrakt, który sprosta wymaganiom biznesowym. Myślę, że warto jest orientować się przynajmniej w tej domenie – co się często zdarza właśnie w przypadku smart kontraktu – czyli NFT, DeFi, znać te wszystkie pojęcia, do czego to się używa, dlaczego jest to złe albo dlaczego jest to dobre.
Nie wiem dlaczego, ale jak zacząłeś opowiadać, przyszło mi do głowy takie porównanie, że teraz tworzenie tych smart kontraktów to trochę jak początki programowania, czyli np. karty perforowane czy ograniczenia pamięci. Dużo czasu potrzebowaliśmy, żeby to w ogóle zaczęło działać. Czy to nie jest tak, że właśnie zaczynamy od początku, ale w takiej wersji decentralizowanej, i za niedługo ten blockchain tak się rozwinie jak obecnie programowanie, gdzie te narzędzia teraz są bez porównania?
Tak. Myślę, że masz bardzo dużo racji, mówiąc, że właśnie jesteśmy na samym początku. Trzeba pamiętać, że jak zaczynało się robić w Solidity w 2018 roku, to wielu z tych narzędzi, o których mówiłem, że tak fajnie działają i robią to wszystko, w ogóle nie było albo były dużo bardziej toporne.
Tutaj naprawdę jest bardzo duży progres i myślę, że faktycznie dojdziemy do takiego punktu, gdzie wdrażanie tych smart kontraktów nie będzie tak kosztowne albo tak problematyczne, jak to jest teraz.
Tylko trzeba pamiętać, że w przypadku smart kontraktów to, co jest pod spodem, jest troszeczkę inne niż w centralnych serwerach, w scentralizowanym webie. Moje ulubione porównanie dotyczące tego: jak np. mamy CSS-a i drzewo DOM w oknie przeglądarki, musimy się nauczyć, że mamy ten obiekt document, możemy do niego pisać, możemy w nim łączyć ze sobą jakieś elementy i to ma jakieś różne implikacje na to, jak się buduje strony internetowe. Tak samo jest w smart kontraktach, tylko że pod spodem nie jest DOM, tylko jest EVM, czyli Ethereum Virtual Machine, a pod spodem nie ma serwera linuxowego gdzieś tam w serwerowni, tylko jest po prostu protokół blockchain. Mimo że te wszystkie narzędzia będą ułatwiać nam życie, to myślę, że wiedza, jak działa ten protokół, jak te informacje są między sobą wymieniane, będzie potrzebna, żeby sprawnie z tych wszystkich narzędzi korzystać.
No dobrze, to już końcowe pytanie. Jaką książkę polecisz osobie, która chce zgłębić temat blockchainu?
Polecam wszystkim dwie książki. Pierwsza książka to Standard Bitcoina. Ktoś, kto przeczyta tytuł, może sobie pomyśleć: o, jakiś szaleniec opowiada o bitcoinie, chce mnie namówić na kupno bitcoina itd. Tymczasem Standard Bitcoina to książka, która opowiada o całej historii pieniądza: jak się kształtował na świecie, jak to wyglądało podczas I Wojny Światowej, jak to wyglądało po II Wojnie Światowej, i opisuje różne elementy z naszej współczesnej ekonomii. Dopiero na koniec jest kilka rozdziałów o Bitcoinie.
Myślę, że niektórzy po przeczytaniu tej książki powiedzą, że to stek bzdur i szkoda czasu, natomiast niektórym osobom być może zapali się w głowie kilka lampek, bo ta książka jest napisana w taki sposób, że jest bardzo dużo źródeł, odniesień do tradycyjnej ekonomii i różnych rzeczy, które są faktami historycznymi, z którymi ciężko dyskutować. Myślę, że warto ją przeczytać jako taki wstęp do tego, czy ta decentralizacja to jest coś, co nam pasuje i czy chcielibyśmy to zgłębić.
Natomiast jak ktoś jest już przekonany i widzi w tym jakiś sens, to myślę, że warto przeczytać książkę Mastering Ethereum. Jest trochę zdeaktualizowana, ale wydaje mi się, że dużo z niej można wynieść. Jest dostępna za darmo i można w niej przeczytać różne rzeczy: od takich ogólników, jak działanie Ethereum, po takie szczegóły, jak pisać kod w Solidity, jak rozwiązywać różne rzeczy.
W temacie tych naszych dzisiejszych rozważań myślę, że poleciłbym te dwie książki.
Może tylko od siebie dodam, że polecam książkę Bitcoin. Ilustrowany przewodnik. Myślę, że jest to książka napisana dość przystępnym językiem. Pozwala zrozumieć, na jakiej zasadzie to wszystko działa. Myślę, że to jest taka książka pomiędzy Standardem Bitcoina a Mastering Ethereum, więc też można zajrzeć do niej.
Akurat nie czytałem, ale brzmi dobrze.
Wydawnictwo Helion, ilustrowana, dużo rysunków itd. Myślę, że dość fajnie wyjaśniona.
To już tak całkowicie na końcu, powiedz nam, proszę, gdzie możemy Cię znaleźć w sieci. Jeżeli ktoś chciałby skorzystać z Twoich kursów, o coś dopytać, czegoś się dowiedzieć, to gdzie Cię szukać?
Mam takie jedno miejsce – fullstak.pl/bio – i tam są wszystkie rzeczy, które aktualnie są dla mnie ważne. Są tam też oczywiście linki do mojego Twittera, można się ze mną połączyć na Instagramie, gdzie czasami coś wrzucam. Jest link do mojego YouTube’a i newslettera. Myślę, że to jest taki jeden link, gdzie najlepiej sobie zajrzeć jak ktoś ma ochotę napisać, czy zapoznać się z ofertą. Tam zawsze to wszystko będzie w jednym miejscu.
To zapraszamy wszystkich zainteresowanych, a ja Tobie, Arturze, bardzo dziękuję za tę rozmowę i podzielenie się z nami swoją wiedzą i doświadczeniem.
Jasne, bardzo dziękuję za zaproszenie.
Dzięki, cześć.
Udostępnij ten artykuł:
Zapisz się i zgarnij za darmo e-book o wartości 39 zł: Jak zostać programistą? Skuteczny przewodnik!
Jak zostać programistą? Skuteczny przewodnik
TERAZ DOSTĘPNY BEZPŁATNIE!
Cena w sklepie to 39 zł, a Ty możesz otrzymać ten e-book bezpłatnie za zapis na newsletter. To ponad 40 stron konkretów o nauce programowania i pracy w IT.