Ethereum 69: jak skonfigurować w pełni zsynchronizowany węzeł blockchain w 10 minut

Witamy w pierwszym artykule z naszej nowej serii go-ethereum!

W ciągu następnych 10 minut będziesz:

  • Naucz się pierwszego słownika blockchain bez jakiejkolwiek niezbędnej wiedzy o ekosystemie
  • Skonfiguruj w pełni zsynchronizowany węzeł testowy („klient / serwer”) w mniej niż 10 minut
  • Utwórz konto i otrzymaj transakcję 8ETH od fundacji Ethereum ZA DARMO

Nasze motto brzmi: ćwicz przed teorią - przejdźmy więc prosto do instalacji w pełni zsynchronizowanego węzła testowego Ethereum podłączonego do sieci testowej Rinkeby!

Geth

Geth to interfejs wiersza poleceń (CLI), skompilowany plik binarny, program i klient do uruchamiania pełnego węzła Ethereum zaimplementowanego w Go.

Wykorzystamy Geth do:

  • uruchom w pełni zsynchronizowany węzeł Ethereum, aby połączyć się z siecią testową o nazwie Rinkeby
  • utwórz nowe konto, aby móc wysyłać i odbierać transakcje
  • do odczytu stanu EVM, np. sprawdzanie salda dowolnego konta (chcesz wiedzieć, jakie saldo ma twoja dziewczyna, chłopak, żona, sąsiad? Słodka przejrzystość!)

Instalowanie Getha

Możemy zainstalować go bezpośrednio z repozytoriów:

Prochowiec

zaparzanie ethereum / ethereum
napar zainstalować ethereum

Linux

sudo apt-get install oprogramowanie-właściwości-wspólne
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

Windows

Powodzenia :)

Sprawdź instalację:

które geth
> / usr / local / bin / geth
wersja geth
> Geth
> Wersja: stabilna 1.8.20

Upewnij się, że korzystasz z tej samej wersji, aby móc przeprowadzić pełną synchronizację sieci Rinkeby, jak opisano w kolejnych krokach, ponieważ Rinkeby działał jako stały program wspierany przez Geth 1.8.20. Ten szczegółowy post na blogu wyjaśnia więcej szczegółów, jeśli jesteś zaintrygowany!

Uruchamianie węzła blockchain

Cóż, diabeł tkwi w szczegółach… ale rozpoczęcie jest tak naprawdę proste. Wyrazy uznania dla twórców Ethereum.

Skonfigurujmy nowy w pełni zsynchronizowany węzeł Rinkeby (sieć testowa Ethereum z wykorzystaniem protokołu Clique PoA).

Implementacja Poink Rinkeby jest znacznie szybsza, ale znacznie mniej bezpieczna. Jest bardziej scentralizowany z poziomu koncentracji PoW sieci głównej, co jest w porządku, będąc siecią testową. Rinkeby udaje się zatwierdzać nowy blok z kilkoma transakcjami co 15 sekund.

Ok, ok, ok ... Co tak naprawdę oznaczają te słowa?

  • Rinkeby: nazwa sieci testowej Proof of Authority
  • Węzeł: w zasadzie tradycyjny serwer wykonujący klient / serwer Ethereum
  • Concensus: algorytm określający sposób sprawdzania, dołączania i utrwalania transakcji w bazie danych na każdym węźle
  • Blok: kilka transakcji w skomplikowanej tablicy wysyłanej wokół drutu między wszystkimi węzłami sieci co 15 sekund
  • Transakcja: nie myśl o transakcji bankowej. Transakcja blockchain to zmiana stanu. Zmieniasz nazwę właściciela inteligentnej umowy z Alice na Boba? Zmieniasz saldo swojego konta z 1ETH na 5ETH? Ustawienie zmiennej „foo” na „foo_value_123” w inteligentnej umowie? To jest transakcja.

Możesz przeczytać więcej na temat propozycji Rinkeby PoA tutaj: https://github.com/ethereum/EIPs/issues/225

geth --rinkeby --datadir = ~ / .gophersland_ethereum_r1 --port = 30304 - cache = 2048 --rpc --rpcport = 8546 --rpcapi = eth, web3, net, personal --syncmode = szybki

Powyższe polecenie:

  • zainicjuj nowy katalog, w którym wszystkie dane będą przechowywane w ~ / .gophersland_ethereum_r1. Domyślny katalog to: ~ / .ethereum
  • zacznij pobierać historię Ethereum, aby stać się nowym, w pełni poprawnym, zsynchronizowanym Węzłem sieci
  • komunikacja nastąpi przez port 30304
  • pamięć podręczna, rodzaj bufora, zostanie ustawiona na 2 GB, aby przyspieszyć proces synchronizacji
  • uruchomi się dodatkowe API RPC, abyśmy mogli później komunikować się z naszym węzłem za pośrednictwem konsol, ładne GUI na porcie 8546

Poczekaj kilka godzin, aż blockchain zostanie w pełni zsynchronizowany.

Aktualny numer bloku na dzień 24 września to: 3039786. Na moim AMD Ryzen 5 2600, 3,4 Ghz proces synchronizacji trwał 3 godziny. O tak, mam nowy komputer do gier!

Tymczasem możesz śledzić GophersLand na Twitterze lub przygotować kolację, prawdopodobnie również śniadanie, pójść na siłownię… powiedzmy, blockchain nie jest najszybszą bazą danych :)

Ostatecznie wydrukowana wiadomość będzie:

  • INFO [] Importowana liczba nowych segmentów łańcucha = 1
  • INFO [] Importowana liczba nowych segmentów łańcucha = 1
  • INFO [] Liczba zaimportowanych nowych segmentów łańcucha = 1
  • INFO [] Importowana liczba nowych segmentów łańcucha = 1

Gratulacje, jesteś teraz częścią rewolucji blockchain w mniej niż 10 minut !!!

Tworzenie pierwszego konta blockchain

Magazyn kluczy

Wszystkie konta Ethereum i ich klucze są przechowywane w katalogu o nazwie „keystore”. Katalog jest domyślnie pusty, ponieważ nie stworzyliśmy jeszcze własnego konta!

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 wrz 24 15:26.
drwxr-xr-x 18 zaklinacz zaklinacz 4096 wrz 24 11:51 ..
drwx ------ 4 zaklinacz zaklinacz 4096 wrz 24 15:26 geth
srw ------- 1 enchanter enchanter 0 wrz 24 15:26 geth.ipc
drwx ------ 2 enchanter enchanter 4096 wrzesień 23 09:54 magazyn kluczy
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 wrz 23 09:54.
drwx ------ 4 enchanter enchanter 4096 wrz 24 15:26 ..

Konto

Aby utworzyć nowe konto, wykonaj następujące, już znane, geth cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 konto nowe

Zostaniesz poproszony o podanie hasła (jest to twoje SUPER TAJNE HASŁO). Jest to wymagane do odszyfrowania nowo wygenerowanego klucza prywatnego powiązanego z nowym adresem Ethereum, ponieważ umożliwia późniejsze użycie go do podpisywania transakcji w łańcuchu bloków. Zanotuj to gdzieś, bo będziemy go później potrzebować. Ale nie martw się, jeśli o tym zapomnisz, to i tak tylko sieć testowa.

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 wrz 23 09:54.
drwx ------ 4 enchanter enchanter 4096 wrz 24 15:26 ..
enchanter @ lukas-gaming: ~ $ geth --datadir = ~ / .gophersland_ethereum_r1 konto nowe
INFO [09-24 | 15: 36: 33.566] Maksymalna liczba rówieśników ETH = 25 LES = 0 ogółem = 25
Twoje nowe konto jest zablokowane hasłem. Proszę podać hasło Nie zapomnij tego hasła.
Hasło:
Powtórz hasło:
Adres: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 wrz 24 15:36.
drwx ------ 4 enchanter enchanter 4096 wrz 24 15:26 ..
-rw ------- 1 enchanter enchanter 491 wrz 24 15:36
UTC - 2018-09-24T13-36-43.069452577Z - ceee57f2b700c2f37d1476a7974965e149fce2d4

Łał! Mój nowy adres Ethereum żyje: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Zazwyczaj ten adres jest poprzedzony „0x”, co oznacza kodowanie adresu, HEX.

Najnowszy format plików kluczy to: UTC - - . Kolejność kont na liście jest leksykograficzna, ale w wyniku formatu znacznika czasu jest tak naprawdę w kolejności tworzenia.

Jeśli jesteś ciekawy, co znajduje się w pliku, możesz go otworzyć! Zobaczysz:

  • Adres: twój nowy adres heksadecymalny
  • Crypto: wiązka zmiennych matematycznych odpowiedzialnych za reprezentowanie twojego klucza prywatnego w postaci zaszyfrowanej, na razie nie martw się o tę magię

Ciekawa uwaga: generowanie konta odbywa się w trybie offline i nie wymaga zsynchronizowanego węzła blockchain. Ciekawe, jak z technicznego punktu widzenia można wygenerować unikalny adres w trybie offline? Sprawdzimy kod źródłowy go-ethereum w następnym artykule.

Spoiler: to dlatego, że adres jest skrótem twojego klucza publicznego, który jest oparty na twoim unikalnym, prywatnym kluczu.

OK, mam nowe konto Shinny Ethereum, jaki jest mój stan i jak mogę zdeponować testowy Ether?

Mówiąc o Ether… co to właściwie jest?

Eter

Ether jest kryptowalutą zasilającą sieć Ethereum. Jest stosowany jako jednostka wartości i do płacenia górnikom za sprawdzanie, dołączanie i utrwalanie transakcji w zbiorowej bazie danych. Ale przede wszystkim jest to technika zapobiegania spamowi, ponieważ górnicy są nagradzani 5 (od ostatniego miesiąca „tylko” 3) ETH za każdy skutecznie wydobywany blok. Tak, to 600 USD według aktualnej ceny 24 września, co 15 sekund. Niezły interes.

Jak otrzymać transakcję 8ETH od fundacji Ethereum ZA DARMO

Sprawdzanie salda konta

Upewnijmy się, że saldo naszego konta wynosi najpierw 0, chyba że komuś udało się wysłać Eter z dobroci serca.

Geth udostępnia konsolę JavaScript, którą można podłączyć do wykonywalnego pliku binarnego w celu wygodnej interakcji z blockchainem. Możemy się z nim połączyć, określając plik gniazda, który jest ujawniany po uruchomieniu Geth. Pliki gniazd są bardzo przydatne do „komunikacji między procesami na tym samym komputerze”, zwanej także IPC.

Możesz zlokalizować ten plik w domyślnym katalogu danych podczas działania programu Geth:

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24 września 15:44.
drwxr-xr-x 18 enchanter enchanter 4096 24 września 15:47 ..
drwx ------ 4 enchanter enchanter 4096 24 września 15:44 geth
srw ------- 1 zaklinacz zaklinacz 0 września 24 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 24 września 15:47 magazyn kluczy

Wejdźmy w interakcję z siecią Rinkeby za pomocą polecenia cmd „geth attach” w innym terminalu, gdy węzeł blockchain nadal działa. Pamiętaj, aby podać bezwzględną ścieżkę do pliku IPC, w przeciwnym razie pojawi się błąd.

enchanter @ lukas-gaming: ~ $ geth attach ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Witamy w konsoli Geth JavaScript!
instancja: Geth / v1.8.15-stable-89451f7c / linux-amd64 / go1.10.1
baza monet: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
na bloku: 3044891 (Pon, 24 września 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
moduły: admin: 1.0 klik: 1.0 debugowanie: 1.0 et: 1.0 górnik: 1.0 netto: 1.0 osobisty: 1.0 rpc: 1.0 txpool: 1.0 web3: 1.0
> rachunki et
[„0xceee57f2b700c2f37d1476a7974965e149fce2d4”]
> eth.syncing
fałszywe
> eth.getBalance („0xceee57f2b700c2f37d1476a7974965e149fce2d4”)
0

Zapytanie blockchain:

eth.accounts: aby sprawdzić aktualnie dostępne konta

eth.syncing: aby upewnić się, że nasz stan, DB jest w pełni aktualny z resztą sieci, aby upewnić się, że odpowiedź getBalance będzie oparta na najnowszym stanie

eth.getBalance („”): zapytanie do bazy danych.

Otrzymanie transakcji 8ETH od fundacji Ethereum ZA DARMO

Fundacja Ethereum ma bardzo fajny program o nazwie „Kran” dostępny online do przypisywania Etheru do kont żądających go w czasie rzeczywistym.

Żądający eteru:

  1. Opublikuj adres swojego konta w jednej z publicznych sieci społecznościowych
  2. Np. Opublikuj tweet zawierający Twój adres Ethereum w dowolnym miejscu w tweecie, takim jak ten https://twitter.com/EnchanterIO/status/1044238559224483841, upewnij się, że otagowałeś @BlocksByLukas i @freeCodeCamp i daj nam znać, jeśli podoba ci się samouczek!
  3. Otwórz https://www.rinkeby.io/#faucet i wklej adres URL tweeta
  4. Kliknij „Daj mi eter”, wybierz pomiędzy 3, 7,5 lub 18,75 Ether
  5. Poczekaj kilka sekund
  6. Zapytaj ponownie o saldo konta
Rinkeby Faucet

Voilà

Jesteś bogaty… w sieci testowej. Gratulacje za dotarcie do tej pory. Więcej treści już wkrótce!

Kontynuuj kurs: Ethereum 101

https://www.lukaslukac.io/courses/ethereum-101-glossary-smart-contracts-tests-frameworks