Ethereum dla web developerów

Dariusz Ciesielski • 11/11/2017

Blockchain dla wielu z Was zapewne wydaje się magią, ponieważ jest to temat dość świeży, a zarazem innowacyjny. Z tego właśnie powodu mamy niewielu specjalistów w Polsce. Ja sam na razie raczkuję w tym temacie, ale już na tym etapie chciałbym podzielić się z Wami pewnymi spostrzeżeniami w stosunku do “normalnej” (dla Nas programistów) architektury.


Blockchain to nic innego jak baza danych bez możliwości kasowania, czy aktualizacji danych w niej zawartych. Zapewnia nam to kryptologia po przez wykorzystanie algorytmów hashowania i szyfrowania.

Jeżeli miałbym przyrównać blockchain Ethereum do jakiejkolwiek z baz danych, przyrównałbym ją do Firebase. Ponieważ posiada on swój storage, jak i możliwość wysyłania “wiadomości”.

Firebase - pub-sub

Ethereum (Smart Contract) - Events

Smart Contract - Kod pisany w języku Solidity (lecz nie tylko), odpowiedzialny za logikę danych przetwarzanych w blockchain

W Smart Contract za pomocą Eventów można przesyłać tylko dane proste (string, int, address). Nie można natomiast przesyłać danych złożonych (struct).

Sam Smart Contract można przyrównać do obiektu (takiego jak w PHP), wypisujemy tam pola, metody oraz eventy.

Można wywoływać jeden Smart Contract w drugim, to tak jakbyśmy tworzyli instancje obiekty w klasie (w PHP).

web3.js - Biblioteka javascript pozwalająca na wywoływanie po stronie front-endu metod stworzonych w Smart Contract

Aby korzystać w web3.js należy podać skompilowany kod Smart Contract (a dokładnie część ABI) - jest to nic innego jak plik JSON. Należy także podać zdeployowany hash tego kontraktu. To tak jakbyśmy w standardowych bazach podawali nazwę bazy.

Truffle - Framework ułatwiający tworzenie, testowanie i deployment Smart Contract na platformie Ethereum Remix - Narzędzie online ułatwiające tworzenie i debugowanie Smart Contract na platformie Ethereum

Do pisania Smart Contract najlepiej użyć frameworka Truffle albo narzędzia Remix

MetaMask - “Łącznik” pomiędzy blockchainem Ethereum, a naszą web aplikacją. Jest to zarazem narzędzie służące do obsługi portfeli Ethereum.

Kompilacja i wrzucanie kontraktu do blockchaina ethereum może odbyć się po przez kompilacje za pomocą biblioteki JS (web.js)i MetaMask, albo za pomocą Truffle, który automatyzuje ten proces.

Aby debugować Smart Cotract w Truffle należy pisać testy jednostkowe (na tym etapie nie znam lepszego sposobu debugowania SC).

Jeżeli ma się zainstalowany plugin MetaMask, to w web aplikacji nie trzeba dołączać biblioteki web3.js. MetaMask wstrzykuje ją automatycznie.

TestRPC - Lokalny blockchain Ethereum wspomagający proces dewelopmentu aplikacji

W Ethereum nie istnieje pojęcie środowiska developerskiego, testowego, produkcyjnego, lecz istnieją blockchainy lokalne (TestRPC), developerskie (sieć deweloperska w MetaMask), produkcyjny (sieć Ethereum).

Truffle należy używać tylko do testowania, debugowania i deploymentu Smart Contract, nie używajmy go do tworzenia web aplikacji, tak jak sugeruje załączony przykład w repozytorium Truffle.

Aby korzystać w portfeli MetaMask z TestRPC należy dodać flagę -m wraz ze słowami klucz dostarczonymi przez MetaMask.

Tworząc web aplikację można pominąć krok tworzenia portfeli. Do tego służy MetaMask albo Mist.

Kiedy stworzymy token, który implementuje standard ERC20 można go wrzucić do dowolnego portfela Ethereum obsługującego waluty tego typu (MyEtherWallet, Mist, MetaMask, etc.).


Są to porozrzucane punkty, które dotyczą częściowo ideii blockchaina jak i technicznych aspektów platformy Ethereum. Mam nadzieję, że dzięki temu chociaż trochę przybliżyłem Wam, czym jest blockchain Ethereum i jak na niego spojrzeć mając doświadczenie w web technologiach.

Poniżej zamieszczam kilka przydatnych linków: