Experty – praktyczny przykład użycie blockchain jako smart contract

11/03/20173 min czytania — w Programowanie, Blockchain

Praktyczne użycie blockchain

To kolejny post z serii o blockchain.

W przygotowaniu jest implementacja kopania, a w między czasie spójrzmy na study case pewnego produktu.

Dlaczego experty?

Jestem programistą w ekipie experty.io Jest to oparta na blockchain platforma, gdzie można ‚wynająć’ jakiegoś specjalistę. Dłuższy czas myślałem o jakimś praktycznym przykładzie, na prawdziwym produkcie i zdecydowałem się na nasz Polski projekt. Nie chcę, żeby to wyglądało jak płatny post czy coś w tym stylu. Po prostu przy tym spędzam dużo czasu i nie popełnię tylu błędów, co analizując jakiś inny produkt, a wydźwięk artykułu będzie identyczny. Tak więc przejdźmy do rzeczy.

Fundament blockchain?

Tworząc jakiś produkt musimy oprzeć go na jakimś segmencie rynku. Musi on odpowiednio budować zaufanie do danego blockchain. Nie tylko pod względem technicznym, ale też praktycznym. Experty zostało oparte na wiedzy użytkowników. Ma za zadanie połączyć specjalistę w dowolnej dziedziny z osobą potrzebującą danych informacji.

lawyer

Skąd pomysł na wykorzystanie blockchain? Trzeba w jakiś sposób sformalizować przekazanie wiedzy i jej wartość. Załóżmy, że chcemy 2 zł za minutę rozmowy z nami. (Nie zwykłej rozmowy 🙂 Tylko w moim przypadku rozmowy o blockchain albo programowaniu). Łącząc się przez istniejące do tej pory platformy, musieliśmy ufać serwisowi albo drugiemu użytkownikowi.

Dodatkowo nie jest to zwykła aplikacja gdzie można sobie kogoś znaleźć. Nie jest to marketplace ze specjalistami. Wszystko jest weryfikowane przez blogi, facebook, linkedin itd. Tam się wrzuca link do profilu w aplikacji i dzięki temu można odnaleźć odpowiednią osobę z udowodnioną tam wiedzą. Dzięki temu nie ma centralizacji użytkowników do aplikacji, ale jest w pełni zdecentralizowane wyszukiwanie. Tam gdzie ktoś wrzuci swój link, tam będzie można go znaleźć.

profile

Co jeśli serwis miał jakąś awarię? Albo użytkownik nas oszukał? Rozpoczyna się żmudny kontakt z supportem. Może odpiszą. Obecnie coraz bardziej rozwijają się formy elektroniczne dzielenia się wiedzy i takie sytuacje skutecznie odstraszają. Trzeba przygotować odpowiednie rozwiązania pod współczesne potrzeby. Zdecentralizowane, oparte na technologii p2p pozwolą na nieprzerwane działanie produktu.

userflow

Praktyczne zastosowanie

Praktycznym zastosowaniem będzie wykorzystanie blockchain do przechowywania informacji o rozpoczęciu, zakończeniu i podsumowaniu rozmowy. Możemy tam ustalić o której się wszystko rozpoczęło, z jakim kosztem i pomiędzy kim. Po zakończeniu rozmowy wiemy ile trwała. Przygotowujemy podsumowanie i środki zmieniają właściciela.

Wszystko jest widoczne. Widać kto ile razy rozmawiał, ile rozmawiał. Mamy pewność, że zostaniemy opłaceni, a rozmowa się odbędzie. Dodatkowo nie płacimy z góry tylko za czas trwania, dlatego w każdej chwili możemy przerwać rozmowę.

Techniczne podejście

Wszystko brzmi fajnie. Jednak trzeba to zabezpieczyć. Jest masa sposobów na realizację takiego systemu. Jednak dla pełnej przejrzystości przygotowaliśmy coś takiego:

Wstęp do rozmowy

Na początku wysyłamy informację do drugiej osoby, że chcemy rozpocząć z nim rozmowę. On odsyła nam warunki rozmowy, czyli między innymi koszt za minutę. Podpisujemy to własnym kluczem prywatnym, druga osoba to weryfikuje i jest to wysyłane do blockchain.

Blockchain

Zapisuje informacje o rozpoczętej rozmowie. Blokuje również możliwość wypłaty środków oraz możliwość rozpoczęcia rozmowy z innymi. Dzięki temu mamy pewność, że w trakcie rozmowy nie znikną środki na koncie ani nie będziemy prowadzili kilku rozmów, np z tą samą osobą co spowodowałoby kilkukrotne naliczenie kosztów.

Zaczynamy rozmowę

Rozmowa została rozpoczęta. Wszystko zostało zapisane w blockchain. Jednak jak mieć pewność, że opłata zostanie poprawnie naliczona? To już się dzieje poza blockchainem ze względu na optymalizację i szybkość.

W każdej sekundzie są przesyłane informacje pomiędzy rozmówcami z aktualnym czasem, kluczami publicznymi itd. Każda strona podpisuje taki pakiet swoim kluczem prywatnym i przesyła drugiej osobie do weryfikacji. Dopóki takie pakiety są przesyłane to widzimy, że trwa połączenie.

Dodatkowo mamy zapisane w blockchain kiedy się zaczęła rozmowa, więc usunięcie pakietów nic nie da. Poza tym wystarczy jedna osoba do przerwania połączenia. Wysyłane są wtedy odpowiednie pakiety do blockchain, który weryfikuje poprawność połączenia i nalicza odpowiednio koszt połączenia.

Co jeśli ktoś podmieni ostatnie pakiety? Druga strona również przesyła informacje o połączeniu i wszystkie pakiety są podpisane co pozwala potwierdzić autentyczność. Dlatego nie ma możliwości oszustwa. Obie osoby informują blockchain o zakończonym połączeniu, mimo że wystarczy tylko jedna osoba do przerwania połączenia.

work

Niezależność od serwisu

Zyskujemy w ten sposób ogromne możliwości. W żaden sposób dane nie trafiają do serwerów. Wszystko dzieje się pomiędzy blockchain oraz użytkownikami. Połączenie p2p pozwala zachować dużą szybkość i niezależność od połączeń z serwerami. Blockchain pilnuje poprawności transakcji. Jest zdecentralizowany, więc ryzyko awarii sieci praktycznie nie istnieje. Pozwala to zapewnić ciągłość działania.

Możliwości

Wykorzystanie takiego rozwiązania pozwala obsłużyć nieograniczoną liczbę użytkowników, pomimo ogromnego obciążenia. Rozmowy wideo czy głosowe są realizowane zabezpieczonym protokołem bezpośrednio między nimi. Nie daje to szans na podsłuchanie bądź jakąkolwiek ingerencję.

Ciągłe potwierdzanie trwania połączenia daje pewność, że zostaną naliczone odpowiednie koszty.

Zapisywanie danych do blockchain sprawia, że transakcje są niezmienne. Dodatkowo blokowanie możliwości wypłat po zakończeniu rozmowy trwa jeszcze przez 10 kolejnych bloków. Usuwa to ryzyko zmiany blockchain (więcej o tym tutaj: https://blog.patys.pl/2017/10/27/kryptografia-blockchain-czyli-dlaczego-nikt-nie-moze-ukrasc-moich-pieniedzy-poradnik/) i odrzuceniu transakcji.

Podsumowanie

Analizując istniejący produkt widzimy niezaprzeczalne korzyści płynące z wykorzystania blockchain. Zmniejsza on koszty po stronie twórcy, obciążenie serwerów, możliwość wystąpienia awarii. System działa nieprzerwanie.

Implementacja dodatkowych rozwiązań pozwala zabezpieczyć części aplikacji, które są w stanie obejść się w efektywniejszy sposób bez blockchain, tylko w oparciu o niego.

Nadszedł czas na aplikacje zarządzane przez społeczność i przez nie tworzone. Już nikt nie musi ufać na wiarę serwisom. Otwartość, przejrzystość transakcji, w zależności od wykorzystanego protokołu również anonimowość i bezpieczeństwo, stają się podstawą dobrego produktu.

Po więcej informacji o Experty zapraszam na https://www.experty.io/en

Warto się również zapoznać z whitepaper, który dokładnie opisuje jak ma wyglądać serwis: https://www.experty.io/docs/wp

Patryk Szczygło
Programista w Netguru. Bloger od 2017 roku. Miłośnik podróży, książek i elektroniki. Stworzył własny blockchain w JavaScript. Marzy o automatyzacji i robotyce w życiu.