Zrozumieć Ethereum

Dzisiaj nadchodzi czas, aby zrozumieć drugą najpopularniejszą kryptowalutę na świecie: Ethereum. Jest to druga po Bitcoinie krypto, nie tylko jeśli chodzi o wycenę. Przede wszystkim jest to druga po Bitcoinie kryptowaluta, jeśli chodzi o jej wpływ na historię, teraźniejszość i prawdopodobniej też przyszłość krypto i technologii blockchain.
Bitcoin był pierwszy. Bitcoin był pionierem nowej technologii i nowego podejścia do pieniądza i transferu własności. To Satoshi Nakamoto, tworząc Bitcoina, wprowadził technologię, którą dziś nazywamy blockchainem. Nadal w oparciu o nią tworzona jest zdecydowana większość kryptowalut. No i właśnie pojęcie kryptowalut i jego ekspansja zaczęła się wraz z pojawieniem Bitcoina.
Następnie ludzie zaczęli tworzyć inne kryptowaluty. Najczęściej były to po prostu klony Bitcoina. Ktoś stwierdził, że w Bitcoinie coś jest robione źle. Albo że czegoś nie da się zrobić. Kopiował więc kod źródłowy Bitcoina, wprowadzał pewne poprawki i zaczynał nowy projekt. Tak powstały m.in. projekty które są dobrze znane do dziś jak Litecoin. Większość z nich miała jednak tak ograniczone zastosowanie, że nie przetrwała do dnia dzisiejszego.
Bitcoin zrewolucjonizował świat. Zmienił nasze podejście do pieniądza, wartości i jej transferu. Jadnak także często rozczarowywał. Kolejne rzesze entuzjastów chciały wykorzystywać Bitcoina do coraz to nowy zastosowań. I często po kilku czy kilkunastu miesiącach okazywało się że, się nie da tego zrobić. Jednym z najczęstszych powodów takich porażek jest bardzo ograniczony język skryptowy Bitcoina. Posiada on ograniczoną ilość instrukcji, za pomocą których można programować pewne typowe sytuacje. Jednak zazwyczaj jeśli chcemy napisać coś totalnie nowego, to okazuje się, że ten język skryptowy ma zbyt małe możliwości aby to zrobić. Pozwala on na przykład na tworzenie portfeli multi-sig (gdzie więcej niż jedna osoba zarządza środkami na portfelu). Jednak poza tym, niewiele więcej można zrobić.
Dlatego właśnie powstawały kolejne projekty bazujące na Bitcoinie, ale pozwalające na realizowanie dodatkowo czegoś jeszcze. Jak ktoś chciał mieć funkcjonalność X, to tworzył nowy blockchain X z tą funkcjonalnością. Ktoś inny chciał Y, to tworzył blockchain Y. Ktoś inny chciał znowu Z, więc tworzył projekt Z.
Wielu ludzi w społeczności krypto miało świadomość, że jest to w dłuższej perspektywie droga donikąd. Takie podejście było jak tworzenie oddzielnego komputera dla każdej aplikacji. Jak chcesz pograć w sapera, to musisz kupić do tego specjalny komputer. Jak chcesz napisać dokument tekstowy, to do tego musisz mieć też oddzielny komputer. Jak chcesz wysłać maila, to od tego też jest oddzielny komputer. Wszyscy wiemy, że przy takim podejściu komputery nigdy by się nie upowszechniły. Upowszechniły się dlatego, że możesz posiadać jeden komputer, na nim jeden system operacyjny, na którym możesz uruchamiać wiele aplikacji, które realizują Twoje poszczególne potrzebny.
A gdyby tak zrobić taki blockchain, ze swoistym systemem operacyjnym, na którym można by tworzyć różne rozbudowane aplikacje?
I w tym momencie na scenę wchodzi Vitalik Buterin. Cały na biało. I przedstawiam światu Ethereum. Wizję światowego zdecentralizowanego komputera, na którym można uruchamiać dowolne aplikacje.

Spis treści
Wstęp do Ethereum
Ethereum jest właśnie takim światowym komputerem. Programiści mogą pisać na niego aplikacje. A użytkownicy mogą je uruchamiać. Aplikacje te nazywane są Smart Contractami (rozwiniemy to pojęcie później). Jako, że ten światowy komputer jest oparty o blockchain, to te aplikacje mają specyficzny charakter.
Tak jak zapewne wiesz, blockchain ma kilka bardzo ciekawych cechy, takich jak:
- decentralizacja – nie ma pojedynczej organizacji odpowiedzialnej za prowadzenie sieci. Robią to spontanicznie ludzie z całego świata zgodnie z zasadami opisanymi w protokole Blockchaina.
- publiczny charakter – każdy może zarówno współtworzyć sieć jak i być jej użytkownikiem
- odporność na cenzurę – nikt nikomu nie może zabronić dostępu do sieci czy odmówić wykonania w niej transakcji
- niezmienialność – raz przeprowadzona transakcja nie może być zmodyfikowana czy usunięta. Cały czas znajduje się ona w blockchanie, dzięki czemu może być on uniwersalnym źródłem prawdy
I jeśli w blockchainie z takimi cechami umieścimy aplikacje, to aplikacje te nabędą również te cechy. Najważniejsze z nich to:
- Raz umieszczona w blockchainie aplikacja zawsze będzie działała w ten sam sposób. Tak jak działała wczoraj, tak działa dziś, będzie działać jutro i na wieki wieków amen. Oznacza to, że nikt nie może jej zmienić, włącznie z jej twórcami. Szerzej opowiem o tym w rozdziale o Smart Contractach
- Każdy może pisać i publikować swoje aplikacje na blockchainie. Nie potrzebuje niczyjej zgody (jak to ma np. miejsce w Apple AppStore)
- Każdy też może korzystać z tych aplikacji, są one publicznie dostępne
Zestaw tych cech sprawia, że nagle programy komputerowe mogą za nas robić rzeczy, do których do tej pory potrzebowaliśmy zaufanej trzeciej strony.
Niech przykładem będą zakłady bukmacherskie. Możemy się założyć o coś bezpośrednio z drugą osobą. Wtedy musimy mieć do niej zaufanie, że jeśli zakład przegra, to nam wypłaci wygraną. W gronie bliskich czy zaufanych osób to może działać. Jednak w szerszej skali, wśród nieznajomych, nie ma takiej opcji. Wtedy jest potrzebna zaufana trzecia strona, która zbierze zakłady od zainteresowanych stron, zweryfikuje wynik zakładu i następnie wypłaci nagrody zwycięzcom. Odcinając przy tym prowizję dla siebie za świadczenie tej usługi.
Jeśli jednak napiszemy niezmienialny program, który będzie przyjmował zakłady, weryfikował ich wynik i wypłacał nagrody, to możemy wyciąć naszego bukmachera. I wiele innych zaufanych trzecich stron z innych branż. Wtedy po pierwsze usługi takie mogą być tańsze – oszczędzamy na prowizji. Po drugie nie jesteśmy ograniczeni do opcji, które oferuje nam pośrednik. W naszym przykładzie możemy zakładać się o wszystko, nie tylko o to, co ma swojej ofercie bukmacher.
Smart Contracty – czyli światowy komputer nie wymagający zaufania

Przyjrzyjmy się teraz trochę bliżej Ethereum jako światowemu komputerowi.
Tak jak wspomnieliśmy wcześniej możemy na tym komputerze umieszczać swoje aplikacje. Raz umieszczona na blockchanie aplikacja dostaje swój adres w sieci i nie może zostać zmieniona. Oznacza to, że zawsze pod tym adresem będzie znajdował się ten sam kod i będzie robił te same rzeczy.
Jest to znacząca różnica wobec tego, z czym mamy do czynienia na naszych komputerach i telefonach. Tradycyjne aplikacje mają bowiem często wbudowany mechanizm aktualizacji. Niekiedy wykonują te aktualizacje w tle i bez naszej wiedzy. My mamy na pulpicie cały czas tę samą ikonkę i tę samą nazwę aplikacji, ale sama aplikacja zmienia się. Zazwyczaj są to małe zmiany i usprawnienia. Ale nie możemy mieć żadnej pewności, że nagle nasza aplikacja zacznie robić coś kompletnie innego, niż robiła do tej pory. Takie zachowanie systemu jest jak najbardziej w porządku w przypadku aplikacji z których korzystamy na co dzień. Chcemy mieć na instagramie nowe filtry. Chcemy aby aplikacje działały sprawniej i lepiej.
Jednak jest grupa problemów, dla których nie chcemy jakichkolwiek zmian reguł. Chcemy aby reguły te były niezmienne i ktoś egzekwował ich wykonanie. W tradycyjnym świecie rolę strażników zasad i ich egzekucji pełnią zaufane trzecie strony. Firmy bądź instytucje, które na podstawie prawa bądź kontraktu społecznego pilnują przestrzegania reguł w danym kontekście. W naszym przykładzie z zakładem była to firma bukmacherska. Innymi przykładami są np. banki czy platformy ecommerce. To one pilnują, aby reguły były przestrzegane. Jednak ich działalność nie zawsze jest transparentna i zdarzają się sytuacje, gdy reguły zmieniają się w trakcie gry. Bądź nie są przestrzegane. Do tego zaufane trzecie strony strony liczą sobie często słone prowizje za wprowadzenie tego elementu zaufania do systemu.
I smart contracty są właśnie alternatywą dla takich kosztownych i nie zawsze uczciwych pośredników. Mamy niezmienialny program, który zawsze robi to samo.
I tutaj w Twojej głowie powinno rodzić się pytanie. Skąd wiadomo, co dokładnie robi smart contract? Czy tam nie jest coś poukrywane?
Weryfikacja smart contractów
Żeby móc zaufać naszemu smart contractowi musimy najpierw być w stanie zweryfikować to, co robi i jak on to robi. Na szczęście Ethereum to blockchain, na którym jest zapisane wszystko. Także nasz smart contract.
I tutaj nasze szczęście się kończy, bowiem każdy smart contract owszem jest zapisany na blockchainie. Ale jest zapisany w formie, która jest dla nas nie czytelna. Jest to zapis w formie kodu wykonywalnego EVM 1 1. Ethereum Virtual Machine (Maszyna Wirtualna Ethereum). Więcej na jej temat mzoesz dowiedzieć się z anglojęzycznego artykułu Ethereum Virtual Machine Explained w serwisie Mycryptopedia × , tak zwanego bytecode 2 2. Zobacz hasło Kod bajtowy na Wikipedii × . Mówiąc w uproszczeniu na blockchainie mamy umiejscowiony już skompilowany kod programu. Jest on znakomicie czytelny dla komputerów, ale nie jest czytelny i zrozumiały dla ludzi. Co więcej, nie da się z niego wyciągnąć kodu źródłowego czytelnego dla człowieka. Sytuacja taka ma miejsce z dwóch powodów:
- bytecode zajmuje mniej miejsca niż czytelny dla człowieka kod źródłowy. A więc umieszczenie tego kodu źródłowego jest tańsze i blockchain Ethereum może pomieścić więcej takich aplikacji
- kompilacja kodu źródłowego do bytecodu jest zasobożernym procesem. Dzięki temu, że została ona wykonana raz przez programistę w momencie umieszczania smart contractu na blockchainie, ta kosztowna czynność nie musi być wykonywana za każdym razem przez wszystkie komputery w sieci Ethereum w momencie, gdy ktoś chce skorzystać ze smart contractu. Kompilacja jest na tyle zasobożerna, że wykonywanie jej w samym blockchainie nie tylko byłoby drogie, co byłoby właściwie w ogóle nie możliwe.
W jaki więc sposób można zweryfikować działanie smart contractu?
Chociaż nie można z bytecode’u odczytać kodu źródłowego, to można w łatwy sposób zweryfikować, czy bytecode powstał w wyniku kompilacji wskazanego kodu. Ten sam kod źródłowy skompilowany tą samą wersją kompilatora zawsze zwróci nam ten sam bytecode. Tak więc jeśli autor smart contractu wskaże nam kod źródłowy i informację o wersji kompilatora której używał, to my jesteśmy w stanie samodzielnie skompilować ten kod. I następnie porównać, czy otrzymaliśmy ten sam bytecode, który znajduje się na blockchainie pod adresem smart contractu.
Tutaj mogę się rodzić dwa pytania. Pierwsze: skąd wezmę kod źródłowy do skompilowania? Drugie: a co jeśli ja w ogóle nie jestem programistą, i nie mam pojęcia o kodach źródłowych i kompilacjach? Na obydwa odpowiem, że nie ma problemu. A oto szczegółowe odpowiedzi.
Kod źródłowy smart contractu powinien być otwarty i publicznie dostępny. Powszechną praktyką jest upublicznianie kodu źródłowego projektów w serwisach typu GitHub. Jeśli projekt nie udostępnia kodów źródłowych swoich contractów, to znaczy że projekt ten nie jest prawilny. Skoro nie udostępnia kodu źródłowego i nie pozwala na jego weryfikację, to pewnie ma coś za uszami. Raczej nie ma tam dobrych intencji. Takie projekty należy skreślić z miejsca.
Prawilne projekty nie tylko udostępniają kod źródłowy, ale też maksymalnie ułatwiają jego weryfikację. Nawet osobom nie będącą osobą techniczną. Na przykład jeden z najpopularniejszych blockexplorerów dla Ethereum – Etherscan – umożliwia autorom smart contractów przeprowadzenie weryfikacji w ich serwisie. Dokładnie na tych samych zasadach o którym pisałem wyżej. Twórcy importują do Etherscan kod źródłowy, podają wersję użytego kompilatora i system weryfikuje, czy otrzyma ten sam bytecode, co ten znajdujący się na blockchainie. Jeśli tak, to linkuje ten kod źródłowy ze smart contractem. Przedstawia następnie ten smart contract jako zweryfikowany i wyświetla jego kod źródłowy. Przykładem takiej weryfikacji, jest contract projektu GNOSIS, za pomocą którego był realizowany airdrop tokenów OWL dla posiadaczy tokenu GNO. Adres tego smart contractu to 0xbf74c12d6e6a8c2bd7f36a917250e2bf8bffefc1, a Etherscan w zakładce Contract wyświetli jego kod źródłowy.
Okej, okej, ale ja nie jestem programistą i nie rozumiem tych kodów. Jak ja mam to zweryfikować?
Ty sam nie dasz rady. Ja w sumie też sam tego nie robię. Wykorzystuje tutaj nie blockchainowe podejście i zaufane trzecie strony. Po pierwsze interesuje się tylko prawilnymi projektami, które mają otwarty kod źródłowy. Po drugie, takie projekty oprócz tego że mają otwarty kod źródłowy, to także zlecają zewnętrznym firmom wykonanie audytu. Zazwyczaj publikując potem publicznie raporty z audytu. Po trzecie korzystam jeszcze z dobrodziejstw społeczności. Jest projekt jest popularny i otwarto źródłowy, to będą ludzie którzy nie proszeni zajrzą w kody i zobaczą to co się tam dzieje.
O co chodzi z tym gasem?
Bitcoin jest prosty. Za transakcje płacisz miners fee wyrażone w Bitcoinie. W Ethereum niby płacisz w Etherze, ale po drodze jest też jeszcze jakiś gas? O co w tym chodzi? Wspomniany wcześniej “system operacyjny” komputera Ethereum, czyli EVM, na określone w sobie reguły, co ile kosztuje. EVM zawiera w sobie różne rodzaje operacji wraz z ceną ich wykonania. Jak menu w restauracji. Ceny w tym menu są właśnie podawanie w jednostce zwanej jako gas. Po polsku chyba najlepiej przetłumaczyć to jako paliwo. I dzięki analogii do paliwa lepiej zrozumieć ten mechanizm. Gas to paliwo, a Ether to pieniądze, jakie za to paliwo płacimy. Silnik zawsze w określonych stałych warunkach spali tą samą ilość paliwa. Tak samo ta sama transakcja będzie zawsze zużywała tą samą ilość gasu. Ale kwota, jaką zapłacimy za to paliwo (gas), zależy od tego, jaka jest cena paliwa. I realizując dowolną transakcję w sieci Ethereum ustalamy sobie cenę, jaką chcemy zapłacić. Jeśli będzie ona atrakcyjna dla górników, to nasza transakcja szybko trafi do bloku i zostanie zapisana na blockchanie. Jeśli nie, to sobie trochę poczeka na swoją kolej.
Co jest ważne, to ta abstrakcyjna jednostka paliwa (gas) czyni opłaty dla górników mniej zależne od wahań kursu Etheru. Jeśli cennik zawierałby koszty wyrażone bezpośrednio w Etherze, to wzrost jego wartości o 10 razy spowodowałoby również dziesięciokrotny wzrost kosztów korzystania z sieci. Co czyniłoby to mało opłacalnym. I sieć stawałaby się ofiarą swojego własnego sukcesu. Dzięki temu, że koszty są wyrażone w abstrakcyjnej jednostce (gas), to przy wzroście ceny Etheru występuje samoczynny rynkowy mechanizm zmniejszający ceny gasu wyrażonych w Etherze. Dzięki temu utrzymywanie sieci jest dalej opłacalne dla górników. Tak samo jak korzystanie z niej dla użytkowników.
Aktualne ceny gazy można śledzić na stronie https://ethgasstation.info. Większość z portfeli ma również wbudowane funkcje sugerowania aktualnych rynkowych cen.
Zdecentralizowane aplikacje – DApps
Bardzo często w kontekście Ethereum wspomina się o Decentralized Applications (DApps). Jak to się ma do naszych smart contractów? Czy to jest po prostu inna nazwa dla nich? Czy może coś innego?
Otóż jest to coś innego. Smart contract to kod komputerowy umieszczony i wykonywany na blockchanie. DApps wykorzystują smart contracty jako główny element, silnik swojego działania. Ale oprócz smart contract zawierają też inne elementy.
Przede wszystkim jest to interface, za pomocą którego użytkownik wchodzi w interakcje ze smart contractem. Oprócz tego mogę być to inne dane. Zarówno przechowywane w zdecentralizowany sposób (np. poprzez wykorzystanie zdecentralizowanego systemu plików IPFS) jak i tradycyjnie w zcentralizowanych, zamkniętych systemach.
Działające aplikacje na Ethereum
Pora zrobić mały przegląd dotyczący tego, jakie aplikacje już działają na naszym globalnym komputerze. Nie będę się tutaj skupiał na poszczególnych projektach. Bardziej będę opisywał ich kategorie. Będzie trochę ujęcia historycznego oraz zarys obecnego krajobrazu
Gry i hazard

Blockchain jest szczególnie atrakcyjny dla branży gier. Zwłaszcza tych powiązanych z pieniędzmi. Szczególnie jeśli chodzi o hazard. Wynika to głównie silnych regulacji dotyczących tych branż. W blockchainie te regulacje nie mają mocy sprawczej. Stąd też dużo, często szemranych, projektów z tej branży. Wystarczy wspomnieć niesławny FOMO3D z połowy 2018 roku. Główna nagroda gry zawierającej elementy piramidy finansowej wynosiła prawie dziesięć i pół tysiąca Etherów. Przy ówczesnym kursie to ponad 3,5 miliona dolarów. Do tego zwycięzca nie był wcale przypadkowy. Przeprowadził swoisty atak na sieć, aby zgarnąć główną nagrodę 3 3. Zobacz anglojęzyczny artykuł How the winner got Fomo3D prize — A Detailed Explanation autorstwa firmy SecBit. × .
Bardziej prawilnym projektem, który cieszył się ogromną popularnością u schyłku 2017 roku były CryptoKitties. Gra, które również przyciągnęła duże pieniądze, które ludzi byli skłonni wydawać na unikalne i niepowtarzalne krypto kotki. Gra też upowszechniła nowy standard unikalnych tokenów ERC-721 4 4. Standard unikalnych tokenów. W przeciwieństwie do tokenów ERC-20, gdzie każdy token jest taki sam, ma taką samą wartość i może być wymienny na inne (tak jak waluta), tokeny ERC-721 mają swoje indywidualne cechy dla poszczególnego egzemplarza i poszczególne egzemplarze różnią się wartością (tak jak np. obrazy). Więcej na temat tego standardu dowiesz się z anglojęzycznej strony http://erc721.org. × .
Gry i gambling to także pierwszy i najpopularniejszy segment Dapps na innych platformach dla smart contractów. Takich jak EOS czy TRON.
Tokeny i ICO
Kolejnym segmentem smart contractów na Ethereum są tokeny. Token jest również cyfrową walutą, tak jak kryptowaluty. Z tą różnicą, że ma on swojego własnego blockchaina, tylko jest emitowany na już istniejącym blockchainie. Najczęściej właśnie na Ethereum. Najpopularniejszym standardem są tokeny ERC-20 5 5. Zobacz hasło ERC-20 w anglojęzycznej Wikipedii. × . W chwili pisania tego tekstu (sierpień 2019 roku) na blockchainie Ehtereum stworzono ponad 200 tysięcy różnych tokenów. Wiele z nich jest nadal wycenianych na dziesiątki, setki milionów czy nawet miliardy dolarów 6 6. Zobacz stronę poświęconą tokeną ERC-20 w serwisie Etherscan. × .
Wraz z możliwością emisji tokenów pojawiła się też nowa opcja przeprowadzania ICO 7 7. Zobacz hasło Initial Coin Offering w Wikipedii. × . Przed powstaniem Ethereum to Bitcoin był standardem, jeśli chodzi o walutę, w jakiej zbierano środki. Ethereum wraz ze smart contractami niezwykle ułatwia i upraszcza cały proces. Odtąd stał się on automatyczny i nie wymagający zaufania (trustless). Ceny i reguły przydziału tokenów mogą zostać zapisane w smart contracie, który automatycznie przydziela emitowane tokeny ich nabywcy w momencie dokonywania wpłaty. Szczególnie obfitym rokiem w ICO było rok 2017r. Mówiło się wtedy wręcz że ICO to killer app dla Ethereum. Co bardziej złośliwi twierdzili wręcz, że poza zbieraniem pieniędzy nic innego nie da się tam zrobić.
Zdecentralizowane giełdy

Kolejny segment aplikacji wykorzystujących smart contracty to zdecentralizowane giełdy tokenów (DEX – decentralized exchange). Umożliwiają one przeprowadzenie transakcji wymiany tokenów pomiędzy uczestnikami bez pośrednictwa osób trzecich. Tokeny są cały czas w posiadaniu swoich właścicieli. Nie muszą oni transferować ich na giełdę, tak jak ma to miejsce w przypadku giełd scentralizowanych. Zamiast tego udzielają oni jedynie pozwolenia smart contractowi na przeprowadzenie transakcji wymiany. Przykłady zdecentralizowanych giełd to ForkDeltha, UniSwap, Bancor czy IDEX. Początkowo korzystanie z giełd było skomplikowane, z czasem wraz ze zmianą podejścia i interfejsów stało się bardzo proste i intuicyjne. Czasem wręcz prostsze niż w przypadku giełd zcentralizowanych. Jeśli nie wierzysz, zapraszam na giełdę UniSwap.
Zdecentralizowane finanse (Decentralized finance DeFi)
Kolejna nisza, obecnie najbardziej popularna zarówno jeśli chodzi o ilość aplikacji jak i liczbę ich użytkowników to zdecentralizowany sektor finansowy. Są to wszelkiej maści usługi finansowe oparte o blockchain. Usługi w których zarówno klientem, jak i często świadczącym usługi, może być każdy.
Wśród najpopularniejszych produktów zdecentralizowanego systemu finansowego należą:
- rynki predykcyjne (Augur, Gnosis)
- stablecoins (MakerDAO i DAI)
- platformy pożyczkowe (Dharma, dXdY, Compound)
- zapewnienie płynności dla zdecentralizowanych giełd (UniSwap Protocol)
Więcej na temat zarówno ICO, jak i zdecentralizowanych giełd oraz decentralized finance dowiesz się z artykułu:
Wyzwania stojące przed Ethereum

Chociaż Ethereum było z pewnością przełomowym krokiem w rozwoju technologii Blockchain, to jednak trzeba przyznać, że obietnica bycia światowym komputerem nie została jeszcze spełniona. Można powiedzieć, że powstał proof of concept 8 8. Rozwiązanie udowadniające, że coś jest możliwe do zrealizowania. Zazwyczaj jednak nie sprawdzające się jeszcze w realiach produkcyjnych, rynkowych × , który udowodnił, że możliwe jest stworzenie uniwersalnej platformy do tworzenia różnorakich aplikacji na blockchanie. Na chwilę obecną przypomina on jeszcze jednak bardziej kalkulator, niż pełnoprawny zdecentralizowany komputer o globalny zastosowaniu. Oto dwa główne wyzwania stojące przed Ethereum, aby rzeczywiście można było o nim powiedzieć jako o światowym komputerze.
Skalowalność
Jest to największy problem wśród kryptowalut. Głównie tych opartych o blockchain pierwszej (Bitcoin) i drugiej generacji (Ethereum). Troska o zachowanie zdecentralizowanego charakteru sieci, być może trochę naiwne założenia projektowe, sprawiły że sieci te są zazwyczaj w stanie przetworzyć kilkanaście transakcji na sekundę.
Oznacza to, że w ciągu jednej sekundy, tylko kilkanaście osób jest w stanie dokonać transferu bądź wejść w interakcję ze smart contractami umieszczonymi na blockchainie Ethereum. Wyobraźmy sobie internet, z którym w ciągu sekundy tylko kilkanaście osób może wyświetlić sobie oczekiwane przez nich strony. Reszta musi czekać w kolejce. Czy o takim internecie powiedzielibyśmy, że jest to sieć działająca globalnie?
Czy Ethereum ma w planach zrobić coś w tym temacie. Oczywiście że tak. Pracę nad zwiększeniem przepustowości trwają już od lat. Pracuje nad tym wiele projektów, a ich działania koncentrują się na trzech głównych obszarach.
Sharding
Obecnie w Ethereum każda transakcja, każda interakcja ze smart contractami, musi być wykonana i zapisana na wszystkim komputerach znajdujących się w sieci. Dziesiątki tysięcy komputerów liczy te samo i zapisuje to samo. Ma to swoje zalety, w postaci wysokiego poziomu bezpieczeństwa sieci 9 9. Im większa moc obliczeniowa włożona stworzenie bloku, tym większej mocy obliczeniowej potrzeba, aby przeprowadzić atak poprzez jego modyfikację. × .
Idea shardingu 10 10. Więcej na temat shardingu, szczególnie w kontekście Ethereum, dowiesz się z anglojęzycznego artykułu What is Sharding? Guide to this Ethereum Scaling Concept Explained w serwisie Blockonomi. × to podzielenie blockchaina na kawałki (shardy). Wtedy daną transakcję przeliczają nie wszystkie komputery w sieci Ethereum, ale tylko te znajdujące się w danym kawałku (shardzie). Dzięki temu możemy niemal proporcjonalnie zwiększać przepustowość sieci dzieląc ją na większą ilość shardów. Podzielenie blockchaina na 10 kawałków to mniej więcej 10 razy tyle transakcji. Podzielenie na 100 shardów, to 100 razy większa przepustowość.
Jakie tutaj są problemy do rozwiązania?
Po pierwsze bezpieczeństwo. Kawałek sieci, który jest zabezpieczony przez mniejszą ilość komputerów, jest łatwiej zaatakować. Między innymi po to, aby móc zaadresować ten problem Ethereum zmienia się algorytm konsensus 11 11. Zobacz artykuł Algorytmy konsensusu blockchain - do czego służą i na czym polegają? w serwisie FXMAG. × . Z Proof of Work 12 12. Algorytm konsensusu w którym sieć jest zabezpieczona przy wykorzystaniu komputerowej mocy obliczeniowej. Dowiedz się więcej z hasła Proof of work w anglojęzycznej Wikipedii. × przechodzi na Proof of Stake 13 13. Algorytm konsensusu w którym sieć jest zabezpieczona poprzez wykorzystanie zastawionych monet pod groźbą ich utraty w przypadku podjęcia próby wrogich działań. Dowiedz się więcej z artykułu Proof of Stake w Wikipedii. × .
Kolejny nietrywialny problem do zaadresowania to realizacja transakcji, w których udział biorą strony znajdujące się na różnych shardach.
Side chains (Łańcuchy poboczne)
Kolejny pomysł na zwiększenie przepustowości sieci to wykorzystanie tzw. łańcuchów pobocznych (side chains). Są to oddzielne blockchainy, które są w specyficzny sposób połączone z łańcuchem głównym (w przym przypadku jest to Ethereum). Poprzez to połączenie wysyłają do łańcucha głównego swój bieżący stan. W wyniku tego mechanizmu łańcuch poboczny korzysta z bezpieczeństwa łańcucha głównego. Chociaż sam może być zabezpieczony niską mocą obliczeniową i można łatwo przeprowadzić na niego atak, zmieniając zrealizowane już transakcje, to fakt że na łańcuchy głównym jest zapisana informacja weryfikująca historię łańcucha pobocznego, sprawia że atak taki jest nie skuteczny.
W skrócie, hash każdego bloku z łańcucha pobocznego jest zapisywany na łańcuchu głównym. Jeśli ktoś zmodyfikuje te bloki, to sieć będzie wiedziała, że jest to atak, bo nowy hash bloku nie będzie zgadzał się z tym, który jest zapisany na łańcuchu głównym.
Payment (state) channels
Dwa powyżej opisywane sposoby na zwiększenie wydajności Ethereum są działaniamy operującymi bezpośrednio na samym blockchainie. Albo dzielimy go na kawałki, albo łączymy go z innymi blockchainami w sieć. Jest to tak zwane skalowanie poziomu pierwszego (Layer 1).
Ale jest też oczywiście i skalowanie poziomu drugiego (Layer 2). W nim nie zajmujemy się bezpośredno blockchainem. Tworzymy rozwiązania, które są oparte o blockchain, są z nim połączone, ale nim nie są. Przy czym cały czas są one oparte o kryptografię i nie wymagające zaufania do drugiej strony transakcji i ewentualnych stron trzecich.
Przykładem takiego rozwiązania jest Lighting Network 14 14. Więcej na temat działania Lightning Network dowiesz się z nagrania Fakty i mity o Lightning Network autorstwa Rafała Kiełbusa. × dla Bitcoina. Zamraża ono środki na blockchainie, umożliwiając ich bezpieczne, niemal natychmiastowe i niemal darmowe wydawanie poza nim. Jednocześnie pozwalające w każdym momencie wrócić z posiadanymi środkami do blockchaina.
Dla Ethereum też istnieją rozwiązania podobne do Lightning Network. Z tą różnicą, że niektóre z nich pozwalają na wyjmowanie z blockchaina jedynie Etherów (payment channels 15 15. Zobacz anglojęzyczny artykuł Payment channels w serwisie EthHub. × ). Inne natomiast pozwalają na przeprowadzanie po za blockchainem operacji na smart contractach (state channels 16 16. Zobacz anglojęzyczny artykuł State channels w serwisie EthHub. × ).
User experience
Kolejny duży problem, jaki stoi przed Ethereum to kłopotliwy sposób korzystania z sieci. Nowym osobom, po raz pierwszy wchodzącym w świat blockchaina i Ethereum, trudno jest zrozumieć kilka fundamentalnych koncepcji.
Internet który jest dla nich punktem odniesienia działa natychmiastowo. Nie trzeba czekać na żadne umieszczenia transakcji w bloku a potem na potwierdzenia.
Internet jest też darmowy. W Ethereum trzeba za to płacić za zrealizowane transakcje. Do tego jeszcze trzeba określić cenę jaką chcemy zapłacić. WTF?
Nawet dla człowieka obytego w standardowym internecie są to kwestie, które przerastają entuzjazm i chęć spróbowania.
Są jednak też przykładu dobrego interface’u, który zonboardował także ludzi spoza świata blockchaina. W Cryptokitties grały też osoby spoza świata krypto, dla których był to pierwszy kontakt z blockchainem. Co więcej dobrze przemyślany design pozwala na tworzenie interfejsów prostszych niż te tradycyjne internetowe. Przykładem jest zdecentralizowana giełda UniSwap], która pod względem prostoty i łatwości obsługi bije scentralizowane giełdy i kantory o dwie klasy wielkości. W tym momencie należy się pokłonić przed twórcami portfela MetaMask, który poprzez integrację z przeglądarkami wykonał kawał świetnej roboty.
Wymienione jednak wyżej rodzynki nie zmieniają faktu, że większość rozwiązań nadal odstrasza i przerasta normalnego człowieka.
Podsumowanie
Pojawienie się Ethereum było krokiem milowym w rozwoju kryptowalut i technologii blockchain. Było początkiem blockchainów nowej generacji, która pozwalała programistom na tworzenie zdecentralizowanych aplikacji. Bardzo trafna jest tutaj analogia do telefonów komórkowych. Pierwsza generacja blockchainów, z Bitcoinem na czele, to Nokia. Ma jedno główne zastosowanie, plus może parę aplikacji stworzonych przez producenta. Tak jak Nokia generalnie służyła do komunikacji, tak Bitcoin generalnie służy do wymiany wartości.
Ethereum to iPhone wraz z jego AppStore. Generalnie dalej można się komunikować, ale oprócz tego, możesz korzystać z tysięcy innych aplikacji i robić setki innych rzeczy. Tak samo na Ethereum cały czas możesz przesyłać wartość, ale oprócz tego masz smart contracty i wykorzystujące je DApps, dzięki którym możesz robić jeszcze inne ciekawe rzeczy. Problem jaki mamy z naszym iPhonem jest taki, że ma w środku mało wydajny sprzęt oraz korzystanie z niego jest toperne. A konkurencja nie śpi…
Tradycyjnie zapraszam do feedbacku. Albo w komentarzach, albo w anonimowej ankiecie.
Stay fool, stay hodl!
Wspaniały artykuł
super content,dziękuję!
Dzień dobry,
Zainteresowałem się krypto ponad rok temu, oceniam swój poziom wiedzy na podstawowy i aktualnie z tą posiadaną wiedzą widzę tutaj pewne zagrożenie.
Wszędzie mówi się o tym, że Ethereum jest zdecentralizowane i nie można go wyłączyć.
Jednak jest grupa programistów którzy pracują nad rozwojem sieci, wprowadzają aktualizacje do sieci czyli według mnie takie aktualizacje są jednoznaczne z modyfikacją kodu programu.
Na jakiej podstawie akurat zespół Vitalika posiada możliwość modyfikacji kodu?
W związku z tym istnieje teoretyczne ryzyko wprowadzenia niekorzystnej aktualizacji z punktu widzenia hodlerów czy użytkowników ETH?
Kto i na jakiej podstawie uznaje, że zmiany zawarte w aktualizacji programu są dobre dla całej społeczności wykorzystującej czy hodlującej ETH?
Cały zespół Vitalika umiera, co dzieje się wtedy z projektem, kto go kontynuuje, kto uzyskuje możliwość aktualizacji kodu programu?
Pozdrawiam serdecznie
Cześć Rafale,
Bardzo ciekawe, jak najbardziej uzasadnione pytania.
Zacznijmy od tego, że tych grup pracujących nad rozwojem Ethereum jest kilka. Nie jest to tylko Vitalik i przyjaciele. Istnieje kilka różnych klientów sieci Ethereum. Są to programy, które umożliwiają połączenie się do sieci Ethereum i korzystanie z niej.
Jeśli pojawiają się zmiany w protokole, czyli samych zasadach działania sieci, to nie ma nikogo, kto decyduje za społeczność i mówi czy to jest dobre czy nie. To społeczność decyduje za siebie. Każdy za siebie. Po pierwsze różni twórcy klientów mogą stwierdzić że nie popierają zmian i nie implementują jej w swoich klientach (programach). Następnie użytkownicy, hodlerzy deydują o tym, z którą siecią, na jakich zasadach są podłaczeni. Musimy być świadomi, że domyślnie wszyscy korzystają z obecnej wersji. Jeśli ktoś chce wprowadzić jakieś powazne zmiany, to musi przekonać większość, aby ta chciała z nich korzystać. W przeciwnym wypadku tworzy tzw. forka. Odrębny łańcuch który wyodrębnia się z głównej sieci i od teraz ma swoje własne zasady.
Mam nadzieję, że to wyjaśnienie jest dla Ciebie pomocne
Dziękuje Piotrze w ramach utrwalenia wiedzy , czytam po raz drugi.
Trafiłem tutaj przypadkiem, a już wiem, że zostanę na dłużej. Bardzo cenię obrazowe i “łopatologiczne” przedstawienie tematu. Szanuję bardzo i trzymam kciuki za rozwijanie bloga, z przyjemnością czyta się takie artykuły.