Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



26.05.2020

Cloud Native Universe

Jako patron medialny zapraszamy programistów wdrażających lub integrujących się z dowolną...
26.03.2020

Koniec certyfikatów...

MCSA, MCSD i MCSA
26.03.2020

Odświeżony OS

FortiOS 6.4
26.03.2020

Bezpieczeństwo w chmurze

Cisco SecureX
26.03.2020

Modernizacja IT

Nowości w VMware Tanzu
26.03.2020

Krytyczne zagrożenie dla...

Nowa groźna podatność
26.03.2020

Laptopy dla wymagających

Nowe ThinkPady T, X i L
26.03.2020

Serwerowe ARM-y

Ampere Altra
26.03.2020

Energooszczędny monitor

Philips 243B1

Smart kontrakty w sieci Ethereum

Data publikacji: 26-03-2020 Autor: Grzegorz Adamowicz
Pusty plik kontraktu...

O Bitcoinie, technologii Blockchain i kryptowalutach słyszymy od dawna, nierzadko w kontekście negatywnym. Blockchain można traktować jako bazę danych, w której każdy nowy element wiąże się z poprzednim. Co za tym idzie – każda zmiana struktury zostaje zapisana w historii łańcucha. A próba modyfikacji tych zapisów natychmiast zostaje wykryta.

 

Bitcoin oraz Ethereum są sieciami publicznymi, w których każdy może sprawdzić konsystencję ciągu zmian. Istnieje też możliwość tworzenia swoich prywatnych sieci – kod obu projektów jest otwarty i darmowy, więc nie musimy go implementować od zera. Daje to możliwość śledzenia zmian i historii sieci. Przykładowo możemy sprawić, że pozycja danego pojazdu będzie śledzona przez sieć i przez nią potwierdzana. Dzięki temu dowiemy się, gdzie i o której godzinie znajdował się nasz samochód.


Powstało również mnóstwo projektów do śledzenia produktów żywnościowych i nie tylko. Poniżej parę wybranych przykładów zastosowania omawianych technologii:

 

  • sieć Carrefour, we współpracy z IBM, zaadaptowała Blockchain do śledzenia jajek (tinyurl.com/vsdq6ly),
  • powstały projekty BeefChain i Beef­Ledger, dzięki któremu możemy dowiedzieć się, skąd pochodzi mięso, które otrzymaliśmy właśnie w hamburgerze (beefchain.com, beefledger.io),
  • Chiny wykorzystują technologię Blockchain, aby śledzić i koordynować obligacje (tinyurl.com/qtvlw38),
  • powstała zdecentralizowana chmura, służąca głównie do zapisywania plików – Storj (storj.io),
  • sklep Origin jest zdecentralizowanym projektem e-commerce, opartym na sieci Ethereum (shoporigin.com),
  • polski produkt o nazwie Golem publicznie udostępnia moc obliczeniową, porównywalną z superkomputerami.

 

 > ZAŻYŁOŚĆ ETHEREUM Z BLOCKCHAINEM


Ethereum to platforma, która umożliwia tworzenie zdecentralizowanych aplikacji (Dapps) przy użyciu technologii Blockchain. Dapp, zamiast służyć jako platforma sprzedaży lub serwis, jest narzędziem do przeprowadzania transakcji, bez angażowania strony trzeciej czy scentralizowanego bytu. Ethereum możemy inaczej opisać jako Blockchain, z wbudowanym językiem programowania albo jako maszynę wirtualną, wykonywaną globalnie, działającą na bazie konsensusu całej sieci. Część, która odpowiada za stan i obliczenia w sieci, jest określana właśnie jako Ethereum Virtual Machine (EVM). Zawiera ona miliony obiektów (kont), pełniących rolę wewnętrznej bazy danych, tworzących kod, a nawet rozmawiających z innymi obiektami.
Ze względu na tę specyfikację możemy wyróżnić dwa rodzaje kont:

 

  1.  konto zewnętrzne (Externally owned account, EOA) – konto, z którego możemy wysyłać wiadomości i tokeny (ether), jeśli posiadamy klucz prywatny do tego konta,
  2. kontrakt – konto, które posiada swój kod i jest przez niego kontrolowane.

 

W EVM nic nie dzieje się samo z siebie. Dopiero po wysłaniu wiadomości lub etheru zmienia się stan sieci. Jeśli z naszego konta wyślemy ether na inne konto, zostanie przetransferowana taka wartość z naszego konta. Natomiast jeśli wyślemy coś do konta kontraktu, natychmiast zostanie wykonany jego kod. Kontrakt może również uruchamiać inne kontrakty, które są wykonywane już asynchronicznie.


Ogólnie kontrakty spełniają trzy funkcje:

 

  1. utrzymują dane,
  2. spełniają funkcję konta zewnętrznego, które może realizować bardziej skomplikowane funkcje. Jest to tak zwany forwarding contract i zwykle wysyła ponownie odebrane wiadomości. Najpopularniejszym tego typu kontraktem jest tzw. multisig, czekający na dwa z trzech EOA, by potwierdzić dokonanie transakcji. Zarządzają umową lub relacją między użytkownikami – możemy na przykład utworzyć kontrakt, który będzie wypłacał określoną sumę każdej osobie, która spełni jakieś warunki. Na przykład odpowie poprawnie na zadane pytanie,
  3. dostarczają funkcje dla innych kontraktów – są biblioteką, z której korzystają inne kontrakty.

 

Kolejnym ważnym elementem sieci Ethereum jest Gaz (Gas). To opłata za operacje w EVM. Zależy ona od skomplikowania naszego kontraktu (płacimy za każdy krok obliczeniowy) i od cen na rynku, ale jest to zwykle mała opłata. Można ją sprawdzić na stronie ethgasstation.info. Ponadto im więcej jesteśmy w stanie zapłacić (można to ustalić w trakcie wywoływania kontraktu), tym szybciej będzie wykonana nasza transakcja.


Każda z transakcji, poza innymi danymi, musi określać dwie wartości: GASPRICE i STARTGAS. Pierwsza z nich to wartość, którą transakcja będzie płacić za jednostkę Gazu, druga natomiast określa, ile Gazu przeznaczamy na tę transakcję. Kiedy uruchamiamy transakcję, pierwsza rzecz, jaka jest wykonywana, to odjęcie kwoty transakcji plus GASPRICE, pomnożonej przez STARTGAS. Kwotę tę podaje się w Wei (tabela Jednostki Wei. I tu przechodzimy do jednostek. Spotkać możemy dwa rodzaje: Wei i Gwei. Wei to najmniejsza jednostka etheru i jeden ETH to 1018 Wei. Podobnie Gwei: 1 ETH to 109 GWei.

 

[...]

 

Autor jest doświadczonym inżynierem systemów. Specjalizuje się w automatyzacji procesów i monitoringu aplikacji rozproszonych. Propagator ruchu open source. Organizator wydarzeń związanych z IT. Freelancer. W wolnych chwilach twórca fantastyki i fantastyki naukowej.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

prenumerata Numer niedostępny Spis treści

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"