POIT #061: Blockchain

Witam w sześćdziesiątym pierwszym odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest technologia blockchain.

Dziś moim gościem jest Adam Smolarek – blockchain developer. Programista Java i Scala. Blogger oraz podcaster szerzący wiedzę i świadomość o blockchain.

W tym odcinku o technologii blockchain rozmawiamy w następujących kontekstach:

  • blockchain jako zestaw technologii ale i architektura systemów informatycznych,
  • czym są bloki i transakcje w blockchain?
  • jakich technologii, języków programowania, frameworków, silników baz danych używa się w technologii blockchain?
  • jak wygląda praca blockchain developera?
  • w jaki sposób testuje się takie rozwiązania?
  • jak ta technologia wypada w świetle CAP theorem?
  • jakie są jej wady i zalety?
  • jakie ma zastosowania?
  • czym są smart kontrakty?
  • czym są tokeny i jak je się w praktyce wykorzystuje?
  • jakie umiejętności i technologie musi posiąść blockchain developer?
  • w którym kierunku zmierza ta technologia?

Konferencja PickJS:

W dniach 7-9 maja 2020 r. w Katowicach odbędzie się konferencja PickJS. Konferencja jest organizowana przez fundację Gruba.IT. Przypominam, że z założycielami tej fundacji rozmawiałem w 57 odcinku podcastu. Są to 3 dni prelekcji, warsztatów i networkingu związanych z językiem JavaScript i technologiami towarzyszącymi. Dodatkowo organizatorzy przygotowali wycieczkę po regionie śląskim by zaznajomić chętnych z historią i tradycją tych okolic. Myślę, że jest to absolutnie unikalne wydarzenie. Więcej informacji na stronie pickjs.com.

Subskrypcja podcastu:

Linki:

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner  (posłuchaj)

Transkrypcja podcastu

To jest 61. odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiam o technologii blockchain. 

Przypominam, że w poprzednim odcinku rozmawiałem o druku 3D. Wszystkie linki oraz transkrypcję dzisiejszej rozmowy znajdziesz pod adresem porozmawiajmyoit.pl/61

Jeśli jeszcze tego nie zrobiłeś, to wystaw ocenę lub recenzję w podcastowej aplikacji, w której tego teraz słuchasz, abym wiedział, że jesteś. 

Chcę poszerzać horyzonty ludzi z branży IT i wierzę, że poprzez wywiady takie jak ten, publikowane jako podcasty, będę to robił z sukcesem. 

Nazywam się Krzysztof Kempiński i życzę ci miłego słuchania. Odpalamy! 

 

Cześć! Mój dzisiejszy gość to blockchain developer, programista Java i Scala, bloger oraz podcaster, szerzący wiedzę i świadomość o blockchainie. Mam dziś przyjemność gościć Adama Smolarka. Cześć, Adam! Bardzo miło mi gościć cię w podcaście. 

 

Cześć, Krzysztof! Bardzo miło mi uczestniczyć w tym podcaście. 

 

No właśnie, z Adamem porozmawiamy sobie o technologii blockchain w ogólności — czyli o takim temacie, który niektórych rozpala do czerwoności, natomiast my się postaramy wyjaśnić, jak pewne rzeczy działają w oderwaniu od różnych, powiedziałbym, wokoło — nietechnicznych rzeczy. Mam nadzieję, że wyjdzie z tego bardzo fajna i wartościowa rozmowa. Ponieważ Adam specjalizuje się w technologii blockchain, to mam nadzieję, że przybliży różne rzeczy, które niekoniecznie są jasne, ale też takie, które związane są z całym takim ruchem związanym z blockchainem, jak gdyby nie tylko samą technologią, ale o tym, jak się rozwijać pracując jako blockchain deweloper, ponieważ to jest to, czym Adam się na co dzień zajmuje. Zanim przejdziemy do właśnie tego tematu, to standardowe pytanie wprowadzające: czy słuchasz podcastów, a jeśli tak, to jakich najczęściej? 

 

Ostatnio właśnie zacząłem słuchać mniejszej ilości podcastów, bardziej przerzuciłem się na audiobooki. Czasami zdarza mi się jeszcze posłuchać Joe Rogana, on ma tam czasami fajnych gości. To głównie ten podcast. Bardziej na YouTube niż na podcastach.

 

Okej. To powiedz może na początek: jak to się w ogóle stało, że zainteresowałeś się blockchainem, bo specjalizujesz się w Javie, w Scali. Czy to, że jesteś programistą tych dwóch języków w ogóle ma jakiś wpływ na to, że zainteresowałeś się blockchainem? Jest jakieś powiązanie? 

 

Trochę to miało wpływ. Tak od początku, to najpierw o blockchainie powiedział mi mój znajomy, który przy okazji dao fork się tym zainteresował. Była tam akcja z ZTR, że tam bardzo dużo kasy ludzie stracili. Wtedy mi powiedział, że ta technologia jest w ogóle super, że powinienem się nią zainteresować, żeby poczytać o niej. Wtedy to olałem i zostawiłem na boku. Później zająłem się magisterką, zrobiłem kierunek, który był bardzo związany z kryptografią, co okazało się później pomocne. No i właśnie przez tę Javę i Scalę, czyli języki, w których pracuję, dostałem w pracy projekt. Miał on na celu napisanie klienta do Ethereum od zera. Od wtedy więc zacząłem na poważnie interesować się blockchainem, zgłębiłem tę całą technologię, jak to działa, bo trzeba to było napisać.

 

Czyli trochę przez przypadek, ale później pokierowałeś swoim rozwojem w tym kierunku? 

 

Tak, później był projekt do wzięcia — miałem to szczęście, że dołączyłem i tak to się zaczęło. 

 

No i tak, można powiedzieć, wsiąknąłeś w tę technologię? 

 

Tak, od tamtego czasu tak!

 

Dobrze. Blockchain to słowo, które opisuje zestaw technologii. To nie jest jedna rzecz — o tym sobie jeszcze porozmawiamy. Natomiast blockchain to także jest pewna architektura systemów informatycznych, powiedzmy. Do składowania, do wymiany informacji w taki sposób, który daje nam dużą dozę zabezpieczenia tych transakcji — to też postaramy się jeszcze tutaj ten wątek pociągnąć. 

 

Mógłbyś powiedzieć teraz o tej architekturze wymiany informacji? Jak to wygląda i na czym to polega, bez wchodzenia w konkretne technologie? 

 

Powiedzmy, że mamy takie systemy rozproszone, czyli mamy takie sieci P2P. Kojarzysz Torrenty, BitTorrent. Są to sieci stworzone z takich samych węzłów, które wymieniają się ze sobą informacjami. 

 

Blockchain to jest coś w ten deseń, tylko że do tej wymiany informacji dorzucona została jeszcze kryptografia — czyli podpisywanie tych informacji, weryfikowanie, czy są poprawne i w ten sposób mamy sieć blockchain, gdzie właśnie krążą transakcje, ale niekoniecznie. Mogą to być po prostu jakieś podpisane informacje, które są później weryfikowane, pakowane w te tytułowe bloki i z tych bloków składa się łańcuch bloków, czyli blockchain. 

 

Okej, brzmi trochę skomplikowanie może na początek! Postaramy się to jeszcze trochę pogłębić. To idźmy dalej. Pod względem technologicznym, blockchain to jest też taka zdecentralizowana, rozproszona baza danych — do tego często sprowadza się definicja blockchainu. Często mówi się też o łańcuchu bloków — to jest bezpośrednie nawiązanie do samej nazwy. 

 

Mógłbyś powiedzieć, czym są te bloki i transakcje w blockchainie? 

 

Mamy transakcje, które krążą w sieci — są niezweryfikowane. Mamy również te zweryfikowane transakcje albo zamiast transakcje, możemy mówić po prostu informacje — które są zapakowane w bloki. Taki blok jak taki koszyk, czy pojemnik na informacje. Węzły, które uczestniczą w sieci, te krążące, niezweryfikowane, informacje wybierają według własnego widzimisię, taki zbiór tych informacji, weryfikują je w procesie kopania bloku: podpisują taki blok, pakują informacje do bloku i to jest taki pojemnik, który zawiera już zweryfikowane informacje i jest dołączany jako kolejna część tego łańcucha. 

 

Blok to jest taki pojemnik na informacje, a transakcja jest po prostu informacją. W przypadku kryptowalut jest informacją o przelewie z konta A na B, ale można też sobie wyobrazić blockchain, który będzie na przykład przechowywał rekordy DNS. Wtedy taką transakcją będzie powiązanie jakiejś nazwy, która jest zrozumiała dla ludzi z adresem IP i który — to też jest taka informacja, która po zweryfikowaniu, zapakowaniu do bloku jest uważana już za obowiązującą. 

 

Czyli w tej rozproszonej bazie danych zapamiętywane są bloki a krążą gdzieś, można powiedzieć, transakcje pomiędzy węzłami?

 

Jeżeli taki blok zostanie przygotowany, to ten blok też jest rozsyłany po innych węzłach w tej sieci. Te informacje więc krążą tam po tej całej sieci — nie tylko transakcje, ale bloki też. Przy czym różnią między tymi informacjami a blokami jest taka, że masz już wtedy pewność, że ten blok, że przynajmniej jeden węzeł z tej sieci zweryfikował informacje, które są tam w środku. W ten sposób ten blok dołączył do łańcucha bloków. Ty powinieneś sprawdzić te informacje, ale jeśli je sprawdzisz, to zwykle są one poprawne. W ten sposób rozbudowuje się ten łańcuch bloków. 

 

Dobrze. Powiedziałeś trochę o teorii i takim spojrzeniu abstrakcyjnym, to może zejdźmy do jakichś konkretów. Jakich technologii, powiedzmy języków programowania, frameworków, baz danych i tego typu rzeczy używa się, jeśli mówimy o technologii blockchain, na co dzień, produkcyjnie. 

 

Jeżeli chodzi o Javę, to z uwagi na to, że jest to sieć, która łączy się ze sobą różnymi węzłami — musisz mieć biblioteki służące do komunikacji sieciowej. Możesz wykorzystać, HTP, jakieś serwery aplikacji — myślę, że też dadzą radę, ale z uwagi na optymalizację, żeby tych bajtów wysyłać jak najmniej, to protokół http jest trochę za bardzo gadatliwy, więc zwykle schodzi się do poziomu TCP/IP, więc masz połączenia bezpośrednie po TCP. 

 

Kolejną rzeczą, której musisz użyć, to kryptografia, żeby być w stanie podpisywać informacje, które wysyłasz i weryfikować informacje, które odbierasz. Takim — przynajmniej z tego, co widzę — standardem w przypadku Javy i C Sharpa, to jest taka biblioteka Bouncy Castle, czyli Skaczący Zamek, utrzymywana przez Legię Skaczącego Zamku. Do tego jeszcze przyda ci się baza danych. W przypadku transakcji i bloków to jest zwykle powiązanie hash i block, czyli key-value store, więc możesz wrzucić wedle twojego uznania jakieś Mongo, możesz też pójść w normalną, relacyjną bazę danych i wykorzystać tylko jedną tabelkę czy trzy do tego, żeby przechowywać wartość klucz — ale to już wedle implementacji, wymagań. 

 

 

Nie wiem, czy dobrze zrozumiałem — nie ma takiego jednego przodującego języka programowania, teoretycznie można użyć, powiedzmy, dowolnego i tak samo z frameworkami, raczej framework w danym języku, związany z blockchainem może występować, natomiast to nie jest tak, że jeśli chcemy być blockchain developerem, to musimy opanować jakiś jeden, konkretny język programowania, specjalnie przeznaczony do tej technologii? Dobrze to zrozumiałem? 

 

Dokładnie tak! Na przykład, z tego projektu, który miałem okazję pisać, ten klient, którego my pisaliśmy, napisany był w języku Scala, ale inne aplikacje, które były już na rynku napisane były w Go, w Rustcie. Jest też sporo kodu napisanego w czystym C, więc jeżeli chodzi o język, możesz wybrać co chcesz. Musisz tylko dostarczyć kryptografię i połączenie TCP. 

 

Są takie rzeczy, które wspierane są pewnie przez całkiem sporą ilość nowoczesnych języków. Myślę, że takie biblioteki kryptograficzne i TCP, połączenia TCP/IP to w miarę standard, prawda?

 

Tak. 

 

Jesteś blockchain developerem, to może powiedz, jak na co dzień wygląda twoja praca? Czym się zajmujesz, czy to jest bardziej związane z bazami danych, z programowaniem sieciowym, może z testami? Gdybyś mógł trochę więcej powiedzieć o swojej pracy. 

 

Może trochę wyjaśnię, że aktualnie moim projektem, którym się w tym momencie zajmuję, z którego zarabiam, to nie jest blockchain, w tym przypadku zajmuję się tym bardziej w formie konsultacji. Jeżeli chodzi o moją pracę nad projektami, które wykonywałem, to zależy, na której warstwie sobie pracujesz. Jeżeli piszesz goły blockchain, od zera, to twoją pracą w większości jest czytanie dokumentacji: wzorków matematycznych, w jaki sposób mają być zakodowane struktury danych, implementacja tego w jakimś języku programowania, a później porównywanie tego, co zaimplementowałeś z innymi klientami, które są na rynku. Dlatego, że jeżeli coś jest zapisane w dokumentacji — w White Paperze albo Yellow Paperze, to wcale nie znaczy, że to jest prawda. To, że coś działa możesz sprawdzić dopiero, jeśli połączysz się z innymi klientami w sieci i one cię nie wytną — to znaczy, nie zostaniesz oznaczony jako oszust. Jeżeli pracujesz na tym wyższym poziomie, czyli tych Smart Contractów, to wtedy twoja praca polega na tym, że piszesz kod Solidity zastanawiasz się, jak optymalnie coś przechowywać na blockchainie, żeby cię to zbyt dużo nie kosztowało. Piszesz testy, zwykle w Truffle , oczywiście też śledzisz jak wygląda aktualny stan solidity, czy nie wyszedł jakiś zero bait, który musisz załatać. 

 

Jeżeli piszesz goły blockchain, od zera, to twoją pracą w większości jest czytanie dokumentacji: wzorków matematycznych, w jaki sposób mają być zakodowane struktury danych, implementacja tego w jakimś języku programowania, a później porównywanie tego, co zaimplementowałeś z innymi klientami, które są na rynku. Dlatego, że jeżeli coś jest zapisane w dokumentacji — w White Paperze albo Yellow Paperze, to wcale nie znaczy, że to jest prawda.

 

Czyli to jest tak naprawdę połączenie sporej ilości różnych dziedzin związanych z programowaniem? Wspomniałeś i o bazach danych, i o testowaniu, programowaniu, trochę o security. Muszę przyznać, że to jest taka trochę interdyscyplinarna dziedzina, tak przynajmniej mi się wydaje.

 

Tak. Jeżeli chcesz się zajmować samym tym spectrum, to tak. 

 

Wspomniałeś chwilę o testach. Zastanawiam się, czy tego typu rozwiązania testuje się w podobny sposób jak powiedzmy aplikacje. Pisze się jakieś testy jednostkowe, coś takiego? Jakie tu praktyki się stosuje w kontekście testowania? 

 

W kontekście testowania? Tak, oczywiście piszesz. Jeżeli masz dokumentację, to ta dokumentacja w pewnym sensie dyktuje ci od razu testy integracyjne, jednostkowe, które możesz sobie napisać. Jeżeli piszesz taki blockchain, który już istnieje na rynku, tak jak w przypadku Ethereum to jesteś też w takiej dobrej sytuacji, że twoja implementacja musi przetworzyć w ten sam sposób transakcje, które już są w tym łańcuchu bloków. To znaczy, masz jakieś trzy miliony bloków, więc masz trzy miliony testów jednostkowych, na których możesz puścić swoją implementację. 

 

Czasami wychodzą też bardzo dobre testy, które łapią corner case’y. Jeżeli chodzi o testowanie tych smart contractów, to są do tego frameworki, do których też piszesz sobie testy jednostkowe i taki test jest w stanie zdeplojować twój contract na lokalną sieć, w jakiś sposób zrobić z nim interakcję i sprawdzić, czy zostały przelane odpowiedni środki, czy zostały zapisane odpowiednie dane. To są takie dwie części. 

 

Czyli w miarę, w miarę standardowe podejście, powiedziałbym. 

 

Dobrze. Powiedziałeś chwilę o White Papers, powiedziałeś o technologiach otwartych, typu właśnie języki programowania, bazy danych typu Mongo i tak dalej. To wszystko w jakiś sposób są technologie dostępne dla wszystkich. Czy istnieje coś takiego, jak zamknięte blockchainy, które są dostępne tylko w jakiś ograniczony sposób, albo z jakąś bramką? Czy każdy blockchain jest z definicji, powiedzmy, otwarty? 

 

Z tymi rozwiązaniami, z którymi ja się spotkałem, to wszystkie są otwarte. Praktycznie wszystkie mają swoje repozytorium na GitHubie, do którego możesz zajrzeć, przeczytać kod, przeczytać dokumentację. Może istnieją rozwiązania zamknięte, ale ja ich na oczy nie widziałem. Z tego, co wiem to jest głównie otwarta technologia.

 

Jeśli mówimy głównie o bazach danych, to istnieje coś takiego, jak CAP theorem , który mówi, że system może spełniać maksymalnie dwa z założeń takich jak consistency, partition tolerance i availability. Zastanawiam się, jak na tym tle wypada blockchain? Jak do tego ma się algorytm konsensusu czy rozwiązywanie konfliktów?

 

Jeśli chodzi o blockchain, to on poszedł sobie w dostępność i tolerancję na podziały, czyli to partition tolerance i trochę odpuścił to consistency. Dlatego, jak robisz na przykład przelewy na giełdach kryptowalut, to zawsze jest ten czas oczekiwania na tzw. potwierdzenie bloku. Czyli, jeżeli blok, który zawiera twoją transakcję jest odpowiednio głęboko w łańcuchu, to dopiero wtedy dostaniesz przelew złotówek czy dolarów na swoje konto. Na consistency trzeba poczekać. W przypadku tego protokołu konsensusu, to właśnie też ma załatwiać to consistency. Mimo tego, że każdy z tych węzłów może równolegle tworzyć swoje własne bloki, to przez ten algorytm konsensusu masz prawie że pewność, że na końcu, po skończonym czasie, powiedzmy pół godziny, każdy z węzłów sieci będzie miał dokładnie tę samą wersję do chaina. 

 

 

Jeśli chodzi o blockchain, to on poszedł sobie w dostępność i tolerancję na podziały, czyli to partition tolerance i trochę odpuścił to consistency. Dlatego, jak robisz na przykład przelewy na giełdach kryptowalut, to zawsze jest ten czas oczekiwania na tzw. potwierdzenie bloku. Czyli, jeżeli blok, który zawiera twoją transakcję jest odpowiednio głęboko w łańcuchu, to dopiero wtedy dostaniesz przelew złotówek czy dolarów na swoje konto.

 

 

Powiedz jeszcze właśnie o tym algorytmie konsensusu czy rozwiązywania konfliktów. Jak to ma się do blockchaina?

 

Mamy takie trzy. Proof of work, proof of stake i proof of authority. 

 

Takim pierwszym i w sumie używanym do tej pory, na przykład w blockchainie, jest Proof of work. Polega to na tym, że masz do rozwiązania w skończonym czasie taką łamigłówkę kryptograficzną, która wymaga od ciebie dużej ilości prądu. Możesz to porównać mniej więcej do rzucania kostką. Jeżeli sobie taką kostką rzucisz wystarczająca ilość razy, to czasami ci coś wypadnie, czasami nie. W tym przypadku nie możesz oszukiwać — nie możesz powiedzieć, że ci wypadło sześć — nie wypadło ci sześć, bo masz to zabezpieczenie przez kryptografię. 

 

Głównym zadaniem tego Proof of work i wszystkich innych, jest wybrać z całej tej puli węzłów jeden węzeł, który będzie miał prawo do wykopania, czyli do przygotowania kolejnego bloku. W ten sposób mamy do rozrzucenia tę dystrybucję i nie ma takiej opcji, żeby jeden węzeł prze zmowę miał kontrolę cały czas nad produkowaniem nowych bloków. Z uwagi na to, że wybieranie tego węzła jest deterministyczne — to znaczy, bierzesz pod uwagę tylko tyle, ile wyrzuciłeś — jeżeli ktoś wyrzucił więcej, to zawsze, jeżeli masz dwa bloki do porównania, to każdy węzeł z sieci poprzez to porównanie wybierze ten konkretny blok. Ten konkretny blok, który ma najwięcej tych oczek, będzie później częścią blockchaina. Nie wiem, czy to w jakiś sposób odpowiada na twoje pytanie. 

 

Myślę, że to pokazuje, w jaki sposób kryptografia wspiera czy gwarantuje pewne rzeczy, które powiedzmy są zapisywane w blockchainie. 

 

Poruszyliśmy kilka takich kwestii mniej lub bardziej technicznych, teraz chciałbym przejść do tych trochę mniej technicznych — związanych z zastosowaniami blockchaina. Jakie są według ciebie zalety czy korzyści wynikające z blockchaina? Po co ludzie silą się na budowanie rozwiązań opartych o blockchain

 

Wydaje mi się, że trochę wracając do tego CAP theorem z uwagi na dostępność i odporność na te partition tolerance, odporność na podziały, przez co odpada taki problem, jak na przykład… Spali ci się serwerownia w takim jednym miejscu i później taka jedna sieć komórkowa przestanie w jakiś sposób działać — to w przypadku Ethereum to musiałoby być dużo, dużo większy kataklizm, żeby takie wydarzenie miało wpływ na całą sieć i na przelewy, które robisz na przykład na giełdach. 

 

Są też silne gwarancje związane z autentycznością informacji, przez podpisy cyfrowe i przez sprawdzanie ich. Takim jeszcze jednym feature’em blockchaina jest to, że jeżeli coś wrzucisz na blockchain, szczególnie publiczny, to prawdopodobnie tam zostanie do końca świata i jeden dzień dłużej. Prawie jak z wrzucaniem zdjęć do Internetu. Tam zostanie stworzonych tyle kopii, że z dużą pewnością możesz założyć, że to po prostu będzie na którymś z tych węzłów. 

 

Technologia daje nam całkiem sporo, różnych możliwości. Jak sobie myślę o blockchainie, to oczywiście siłą rzeczy przychodzą mi do głowy kryptowaluty, na czele z Bitcoinem, czy Ethereum. Nie jest to ostateczna czy całościowa lista zastosowań? 

 

W jakich gałęziach przemysłu i powiedzmy, ludzkiej działalności ogólnie wykorzystuje się obecne technologie blockchain? 

 

Powiedziałbym, że kryptowaluty to jest wierzchołek góry lodowej. Jeżeli chodzi o zastosowania blockchaina, to szukając przykładów w Polsce, to chociażby Alior Bank poszedł w trwały nośnik i zapisuje na blockchainie informacje dotyczące tabeli opłat, czy czegoś takiego. 

 

Jest taka firma Doxy Chain, która na blockchainie próbuje robić zarządzanie upoważnieniami, pełnomocnictwami, które dajesz na przykład prawnikowi czy jakieś pełnomocnictwa związane z odbiorem poczty. Taka firma, Zara, ta od kosmetyków, oni na przykład używają blockchaina do śledzenia promocji w swoich sklepach, żeby sprawdzać, czy te sklepy rzeczywiście sprzedały te produkty po cenie promocyjnej i w jaki sposób zwrócić za tę promocję. 

 

Bardziej ze świata: Starbucks razem z Microsoftem, jeżeli dobrze pamiętam robi taki blockchain, który śledzi łańcuchy dostaw kawy, że jesteś w stanie od kubka do praktycznie zerwania tych ziaren z krzaka, przejść. Też Microsoft, tylko z Louis Vuitton robi zabezpieczenia związane z dobrami luksusowymi. Jeżeli masz jakieś… Kapcie za pięć kafli [śmiech] czy coś takiego, to jesteś w stanie dojść do tego, czy one rzeczywiście zostały sprzedane za te pięć kafli, czy nie. 

 

używają blockchaina do śledzenia promocji w swoich sklepach, żeby sprawdzać, czy te sklepy rzeczywiście sprzedały te produkty po cenie promocyjnej i w jaki sposób zwrócić za tę promocję. Bardziej ze świata: Starbucks razem z Microsoftem, jeżeli dobrze pamiętam robi taki blockchain, który śledzi łańcuchy dostaw kawy, że jesteś w stanie od kubka do praktycznie zerwania tych ziaren z krzaka, przejść. Też Microsoft, tylko z Louis Vuitton robi zabezpieczenia związane z dobrami luksusowymi. 

 

Alians robi prototypy — to jeszcze nie jest produkt — ale prototyp związany z ubezpieczeniami. W takich dziedzinach ubezpieczeń, gdzie normalni ubezpieczyciele nie chcą się bawić, bo ryzyko jest bardzo duże. Wtedy masz captive insurance czy coś takiego — nie pamiętam dokładnie, jak się nazywa — ludzie, którzy się ubezpieczają, są jednocześnie właścicielami tego ubezpieczenia i oni finansują w jakiś sposób, jeżeli komuś z ubezpieczonych się coś stanie. 

 

Przechodząc do strony technologicznej blockchaina, to jest też IPFS, czyli InterPlanetary File System. Czyli taki system plików oparty na blockchainie, gdzie jesteś w stanie zapisać coś, ten twój plik jest później replikowany w różne miejsca. Idąc jeszcze dalej, to jest InterPlanetary Name System, czyli to samo co z systemem plików, ale w przypadku DNSA — rekordy jesteś w stanie zapisać w blockchainie. 

 

Jeszcze z ciekawych zastosowań, to jest zastosowanie blockchaina w satelitach i innych urządzeniach, które latają w kosmosie. Dlatego, że one mają… No, czasami ten partyczny tolerance się bardzo przydaje, bo połączenie z innym satelitą może być przerwane przez praktycznie dowolną rzecz — gaz słoneczny, cokolwiek. 

 

Faktycznie, sypnąłeś z rękawa mnóstwem zastosowań! Muszę przyznać, że wiedziałem, że blockchain jest stosowany dosyć szeroko, ale nie przypuszczałem, że w aż tak wielu miejscach można go znaleźć, fajnie. 

 

Dobrze. Kiedy już, powiedzmy, bardziej się wniknie w tę technologię, to z pewnością trafi się na smart contracty, o których trochę powiedziałeś. Mógłbyś nieco rozszerzyć? Czym one są, do czego się je wykorzystuje? 

 

Smart contracty to są takie programy, tak jak masz program, który odpalasz sobie na komputerze, tak samo są programy odpalane na blockchainie. Tak naprawdę są odpalane na wszystkich węzłach sieci blockchain. Wyniki takiego programu mogą być później zapisywane w blockchainie i w pewien sposób mogą wpływać na dalsze działania tego programu, te programy mogą też przelewać i zarządzać środkami. To jest główne zastosowanie. 

 

Okej. Jak sobie trochę zacząłem czytać na temat smart contractów, to trafiłem na takie ciekawe słowo, które przykuło moją uwagę: wyrocznie. Mógłbyś powiedzieć, czym one są i do czego się je wykorzystuje?

 

Właśnie, jeśli chodzi o taki smart contract, który jest odpalany na tych wszystkich węzłach w sieci, to trochę ciężko jest dostarczyć do takiego smart contractu informacje ze świata zewnętrznego, które byłyby wiarygodne, potwierdzone. 

 

Weźmy ten przykład ubezpieczeń. Jeżeli mamy, powiedzmy, grupę rolników, którzy chcą się ubezpieczyć przed powodzią, to ci rolnicy zakładają contract, ustawiają tam warunki tego, że powódź ustąpi: to jest ilość opadów na metr kwadratowy, to jakaś tam wartość i później mamy taki problem, że temu smart contractowi trzeba powiedzieć, że to wydarzenie wystąpiło. Nie może tego jednak zrobić żaden z rolników dlatego, że mamy konflikt interesów. Kto pierwszy wyśle informację, że on został zalany, ten zgarnie całą kasę. Jest więc taki mechanizm tej wyroczni, której głównym zadaniem jest to, żeby dostarczyć informacje do tego kontraktu. Dostarczyć informacje, że jakieś zdarzenie ze świata zewnętrznego wystąpiło albo nie. To jest ten koncept. 

 

Jak to jest realizowane? To jest trochę trudniejsze. 

 

Pewnie — może nie idźmy w tym kierunku. Chciałem tylko wiedzieć ogólnie, czym są te magiczne wyrocznie! 

 

Dobra. Może porozmawiajmy nieco ogólnie na razie o tym blockchainie, jakie wady, problemy widzisz obecnie, z którymi ta technologia się próbuje, powiedzmy, uporać?

 

Taką główną wadą będzie skalowanie tego całego rozwiązania, ponieważ ilość transakcji na sekundę w przypadku Bitcoina, w przypadku Ethereum jest bardzo mała w porównaniu z takimi tradycyjnymi formami płatności. Był niedawno — może trochę czasu temu — problem z Ethereum, że jeden smart contract był w stanie przepchać całkiem sporą sieć — to były te smart cryptokitties, czyli ludzie, którzy wymieniali się kotkami byli w stanie wygenerować tyle transakcji, że sieć nie była w stanie tego przemielić. 

 

Kolejnym problemem jest ilość przechowywanych informacji. Z uwagi na to, że Ethereum przechowuje informacje od początku istnienia tego blockchaina, no to tych danych jest już całkiem sporo i synchronizacja tych danych przez sieć tez zaczyna być problematyczna, więc to są takie problemy, z którymi teraz się blockchain boryka. Badania też są prowadzone w tym kierunku. 

 

Właśnie miałem zapytać, czy to jest powiedzmy, problem jakiegoś rozwiązania, problem konkretnej kryptowaluty czy to wynika raczej z samych podstaw blockchaina, z tego, jak on działa, z wszystkich algorytmów, które powiedzmy muszą zostać wykonane. Z mocy obliczeniowej, która jest wymagana, gdzie tutaj według ciebie leży problem? 

 

Jeżeli chodzi o ilość transakcji przetwarzanych na sekundę, to problem polega na tym, że transakcje, które zostaną zapakowane w ten blok później muszą się w jakiś sensowny sposób rozprzestrzenić po tej sieci. Trzeba dać im na to czas. 

 

Jeżeli więc mamy kilka tysięcy, czy tam dziesięć tysięcy node’ów, to żeby ten algorytm konsensusu był w stanie w stabilny sposób działać, to musi mieć dostęp do wystarczającej ilości informacji i w niektórych przypadkach jest to sztucznie spowalniane przez zwiększenie hash rate’a, po to, żeby te dane mogły się rozpropagować po sieci — żeby zapewnić właśnie to consistency, tę spójność. 

 

Wspomnieliśmy tutaj kilka razy o projekcie Ethereum — powstałej w 2015 roku kryptowaluty, która wprowadziła koncepcję tokenów. Coraz więcej firm, z tego, co obserwuję, a także prywatnych osób, prywatnych marek, tworzy swoje tokeny, by przykładowo pozyskać jakiś kapitał za pomocą ICO. Niestety, słyszy się też często o różnego typu nadużyciach, które z tego wynikają. To jest naturalna konsekwencja – otwiera to drzwi, ale także daje możliwości do nadużyć pozyskiwania pieniędzy bez pokrycia w jakiejś realnej wartości. 

 

Mógłbyś powiedzieć, czym są te tokeny? Jak ludzie je w praktyce wykorzystują na tę chwilę? 

 

W przypadku Ethereum, żeby się już tego trzymać, to jest smart contract i jest on dosyć standardowy. Kod tego smart contractu jest napisany i wystarczy, że go weźmiesz, wrzucisz do sieci i powiesz, że to jest twój token. Cała filozofia więc kończy się w tym momencie, że później musisz dostarczyć jeszcze tę wartość, która związana jest z tym tokenem no i tak jak mówiłeś — niektórzy tej wartości nie dostarczają. 

 

Mam wrażenie, że coraz więcej tokenów jest już takich, które są powiązane z jakąś wartością materialną, to nie jest po prostu byt wirtualny, który ma swoją wartość, z uwagi na to, że ktoś tak powiedział, tylko jest to na przykład część firmy, część jakiejś nieruchomości, więc myślę, że pójdzie to raczej w tę stronę. 

 

Tokeny mogą istnieć tylko w sieci Ethereum? Czy to jest niezależne? 

 

Jest wiele sieci, które udostępniają taką funkcję jak tokeny, ale w przypadku Ethereum to jest smart contract. 

 

Jasne. Powiedzmy, że chciałbym zostać blockchain developerem. Według ciebie jakie umiejętności, jakie technologie musiałbym poznać, żeby rozwijać swoją karierę w tym kierunku? 

 

Jeżeli chodzi o pisanie swoich własnych blockchainów, czyli takich nowych sieci, to systemy rozproszone, kryptografia i bezpieczeństwo związane z analizą tego wszystkiego, żeby to miało sens. Jeżeli jednak chodzi o smart contracty, to też masz konkretne języki do uczenia się ich. W przypadku smart contractów to dowolności z językami raczej nie ma. Jeżeli chodzi o przodujący teraz, to z uwagi na wielkość całej infrastruktury i sieci, to jest Solidity, czyli główny język do Ethereum. 

 

Musisz mieć też wiedzę związaną z dobrymi praktykami w Solidity. Dlatego, że z uwagi na to, że te contracty czasami zarządzają czasami dużymi ilościami pieniędzy w formie tokenów czy kryptowalut, błąd w takim programie jest bardzo bolesny. Podążanie za dobrymi praktykami, ale także audytowanie kodu, który piszesz albo korzystanie z już audytowanego kodu, żeby mieć pewność, że to, co napisałeś rzeczywiście nie da możliwości wyłudzenia środków. 

 

Dobrze Adam, to jeszcze na koniec zapytam cię, w którym kierunku będzie ta technologia zmierzała, jakie trendy obecnie możemy obserwować, czego możemy się spodziewać w najbliższej przyszłości? 

 

To, co widzę, jeżeli chodzi o kryptowaluty to, że trochę czas się dla nich skończył. Jest ta cała zima, czy tam przestój. Wszyscy mają nadzieję, że to wróci — nie wiem, jak będzie. 

 

Jeżeli chodzi o mnie, to bardziej widzę przyszłość tej technologii w rozwiązaniach bardziej biznesowych — połączenie blockchaina z łańcuchem dostaw, w jakiś sposób z konsorcjami, gdzie masz wiele firm, do których akurat ta technologia pasuje. Do takich organizacji, które ufają sobie, ale nie do końca. Przydałby im się powiernik, który trzymałby wspólne informacje w takim konsorcjum albo w jakiś sposób będzie używany do uzgadniania różnych sytuacji między nimi. 

 

Jeżeli chodzi o ciekawe zastosowanie, to Europejski Bank Centralny ostatnio zaprosił do współpracy biznes w przypadku Central Bank Digital Currency, czyli blockchainy, które są używane do tego, żeby przechowywać informacje po prostu o FIAT czyli złotówkach lub Euro. To jest też całkiem ciekawe zastosowanie tej technologii. Jeżeli chodzi o trendy w samej technologii, to co mówiłem ten problem z ilością transakcji na sekundę… Głównie badania teraz skupiają się na shardingu, czyli na podziale tej dużej sieci na takie małe fragmenty, które są w stanie dużo szybciej przetwarzać transakcje, więc tam są prowadzone też badania. 

 

Kolejne badania są w przypadku Proof of stake, czyli zamiany tej kryptografii, która wymaga dużo prądu, na kryptografię, która nie wymaga prądu, ale niesie za sobą inne problemy. Wydaje mi się, że to głównie te rzeczy są teraz ciśnięte, aby je rozwinąć. 

 

Fajnie, Adam! Bardzo ci dziękuję za ciekawą rozmowę. Muszę przyznać, że z ciekawością będę też obserwował rozwój tej technologii w najbliższym czasie. Widać, że jest sporo możliwości, sporo też jeszcze problemów pewnie do rozwiązania. 

 

Cieszę się, że pokazałeś, jak wygląda blockchain okiem dewelopera, to mogło też zainspirować słuchaczy do tego, żeby może w tym kierunku pokierować swoją karierę. Może i chociaż jako taki pet project powiedzmy, popróbować swoich sił z tą ciekawą technologią, także jeszcze raz bardzo ci dziękuję i powiedz proszę, gdzie można znaleźć cię w Internecie? 

 

Również dziękuję za rozmowę! Można mnie znaleźć na blogu, chaindev.pl Prowadzę też swoją listę mailową, więc tam wysyłam ciekawe informacje. Można mnie też znaleźć na YouTube’ie, LinkedInie, Twitterze, albo napisać do mnie po prostu do adam@chaindev.pl

 

Oczywiście wszystkie linki podlinkuję do notatki do tego odcinka. Adam, jeszcze raz wielkie dzięki, do usłyszenia, cześć!

 

Dobrze, dzięki! Cześć!

 

 

I to tyle z tego, co przygotowałem dla ciebie na dzisiaj. Blockchain to znacznie więcej niż tylko kryptowaluty. Myślę, że ta technologia będzie się w najbliższym czasie mocno rozwijać i odnajdować swoje zastosowanie w różnych gałęziach ludzkiej działalności. 

Małe ogłoszenie. 7 – 9 Maja 2020 w Katowicach, odbędzie się konferencja Pick JS. Konferencja jest organizowana przez fundację Gruba.IT. Przypominam, że z założycielami tej fundacji rozmawiałem w 57 odcinku podcastu

Są to trzy dni prelekcji, warsztatów i networkingu związanych z językiem JavaScript i technologiami towarzyszącymi. Dodatkowo organizatorzy przygotowali wycieczkę po regionie śląskim, by zaznajomić chętnych z historią i tradycją tych okolic. Myślę, że jest to absolutnie unikalne wydarzenie. 

Jeśli spodobał ci się ten odcinek i nie chcesz przegapić kolejnych epizodów podcastu, zasubskrybuj go w swojej aplikacji podcastowej. Jeśli nie wiesz, jak to zrobić, wejdź na stronę porozmawiajmyoit.pl/subskrybuj

Zapraszam też do mojego drugiego podcastu o nieco luźniejszej tematyce. Wyszukaj Wyszukaj: Krzysztof Kempiński- podcast w swojej aplikacji. Jeśli masz jakieś pytania, pisz oczywiście śmiało na krzysztof@porozmawiajmyoit.pl

Nazywam się Krzysztof Kempiński a to był odcinek podcastu Porozmawiajmy o IT o technologii blockchain.

Zapraszam do kolejnego odcinka już za dwa tygodnie! Cześć!

+ Pokaż całą transkrypcję
– Schowaj transkrypcję
Tags:
mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny. Moją misją jest inspirowanie ludzi do poszerzania swoich horyzontów poprzez publikowanie wywiadów o trendach, technologiach i zjawiskach występujących w IT.