Zróbmy sobie łańcuch bloków cz. 2

  • October 20th, 2019
  • Test&train
  • 0 Comments
  • Robert Pardela

This page is available in English

Uruchamianie kolejnego węzła Ethereum

Ten post jest kontynuacją posta dotyczącego uruchamiania prywatnego łańcucha bloków Zróbmy sobie łańcuch bloków 

Poprzednio zainstalowaliśmy, skonfigurowaliśmy i uruchomiliśmy węzeł sieci Ethereum w wersji prywatnej, czyli takiej która nie pozwala na połączenie się z węzłami publicznego Ethereum. Dzięki temu możemy „bezkosztowo” wykonywać testy oraz instalować własne inteligentne kontrakty.

Teraz skupimy się na uruchomieniu drugiego węzła i podłączeniu go do utworzonego wcześniej. Na koniec będziemy mieli dwu węzłowy blockchain do prywatnego użytku.

 

Węzły możemy instalować na kilka sposobów: lokalnie, na innej maszynie, z wykorzystaniem dockera.

Ja opiszę tu dwa pierwsze sposoby czyli drugi węzeł lokalny oraz węzeł uruchomiony na innej maszynie niż ten pierwszy.

 
Uruchamianie nowego węzła lokalnie

 

  • na centosie w katalogu domowym twojego użytkownika utwórz katalog eth-node2:

cd /home/yourusername
mkdir eth-node2

  • przejdź do katalogu eth-node2:

cd eth-node2

  • skopiuj do niego plik eth-node/localGenesis.json

sudo cp ./etc-node/localGenesis.json

  • zaincjuj katalog lokalnego węzła:

sudo /opt/go-ethereum/build/bin/geth –datadir ./eth-node2 init ./localGenesis.json

  •  uruchom pierwszy lokalny węzeł ethereum:

sudo /opt/go-ethereum/build/bin/geth –identity “Main” –datadir ./eth-node –networkid 1114 -verbosity 4 –port 30303 –nodiscover console 2>>./eth.log

  • uruchom drugi węzeł:

sudo /opt/go-ethereum/build/bin/geth –identity “Second” –datadir ./eth-node2 –networkid 1114 –port 30304 -verbosity 4 –nodiscover console 2>>./eth.log

  
To wykonujemy w konsoli geth:
 

  • sprawdź adres w konsoli pierwszego węzła (eth-mode):

admin.nodeInfo.enode

    • w wyniku możesz dostać coś podobnego: enode://62d005dab9099c7852d6e8b21c0a1578609faf1541af55eeb3cf0a8da37be5f1d37bbb3102fe56e34d036c78f1a62eaa5b8d7420977772fa7cfc4752bde40ebd@0.0.0.0:30303?discport=65099″

 

  • w konsoli drugiego węzła dodaj go do sieci w następujący sposób:

admin.addPeer( “enode://62d005dab9099c7852d6e8b21c0a1578609faf1541af55eeb3cf0a8da37be5f1d37bbb3102fe56e34d036c78f1a62eaa5b8d7420977772fa7cfc4752bde40ebd@127.0.0.1:30303” )

    • oczywiście musisz tu wpisać adres, który otrzymałeś powyżej
    • jeśli dostałeś błąd to usuń i wprowadź ręcznie znaki cudzysłowia

 

  • w konsoli drugiego węzła sprawdź czy prawidłowo podłączył się node:

admin.peers

    • wynik powinien być taki remoteAddress: “127.0.0.1:30303”

 
 
 

Uruchamianie nowego węzła na innej maszynie

 
Ta wersja jest trochę bardziej skomplikowana i pracochłonna.

Przede wszystkim zainstaluj na nowej maszynie nowy węzeł zgodnie z postem Zróbmy sobie łańcuch bloków 

 

Uwaga:

  • pamiętaj żeby plik localGenesis.json był identyczny jak na pierwszej maszynie. To ten plik identyfikuje naszą prywatną sieć Blockchain.
  • pamiętaj o zapewnieniu komunikacji sieciowej pomiędzy maszynami na odpowiednich portach, tu: 30303, 30304, 8545:

 

sudo firewall-cmd –list-ports

sudo firewall-cmd –permanent –add-port=30303/tcp

sudo firewall-cmd –reload

 

  • Na pierwszej maszynie uruchom węzeł Ethereum:

sudo /opt/go-ethereum/build/bin/geth –identity “Main” –datadir ./eth-node –networkid 1114 -verbosity 4 –port 30303 –rpc –rpcaddr your.ip.on.machine1 –rpcport „8545″ –nodiscover console 2>>./eth.log
 
 

  • Na drugiej maszynie uruchom nowy węzeł Ethereum

sudo /opt/go-ethereum/build/bin/geth –identity “Second” –datadir ./eth-node –networkid 1114  –port 30304 –rpc –rpcaddr your.ip.on.machine2 –rpcport „8545” -verbosity 4 –nodiscover console 2>>./eth.log

 
  
To wykonujemy w konsoli geth:
 

  • sprawdź adres w konsoli pierwszego węzła:

admin.nodeInfo.enode

    • w wyniku możesz dostać coś podobnego: enode://62d005dab9099c7852d6e8b21c0a1578609faf1541af55eeb3cf0a8da37be5f1d37bbb3102fe56e34d036c78f1a62eaa5b8d7420977772fa7cfc4752bde40ebd@192.168.0.200:30304″

 

  • w konsoli drugiego węzła dodaj go do sieci w następujący sposób:

admin.addPeer( “enode://62d005dab9099c7852d6e8b21c0a1578609faf1541af55eeb3cf0a8da37be5f1d37bbb3102fe56e34d036c78f1a62eaa5b8d7420977772fa7cfc4752bde40ebd@192.168.0.200:30303”)

    • oczywiście musisz tu wpisać adres, który otrzymałeś powyżej
    • jeśli dostałeś błąd to usuń i wprowadź ręcznie znaki cudzysłowia

 

  • w konsoli drugiego węzła sprawdź czy prawidłowo podłączył się node:

admin.peers

    • wynik powinien być taki remoteAddress: „your.ip.on.machine1:30303″

 

  • Możesz teraz na drugim węźle sprawdzić stan konta

eth.getBalance(eth.coinbase)

    • Raczej coś poszło nie tak po wykonaniu tej komendy 🙂 Sprawdź w poprzednim poście jak sprawdzić stan swojego konta

 

Podsumowanie

Masz już prawdziwy łańcuch bloków w wersji prywatnej. Węzły powinny się synchronizować bez twojego udziału. Możesz teraz wykonać kilka testów np. uruchomić kopanie na jednym węźle, a na drugim sprawdzać stan konta. Możesz też zasymulować sytuacje awaryjne, „zabijając” jeden z węzłów.

W kolejnych wpisach podłączymy zewnętrzne konto użytkownika, a potem stworzymy swój pierwszy inteligentny kontrakt.

 

Jak zwykle zachęcam do kontaktu.

Robert Pardela

Leave a Comment

Your email address will not be published. Required fields are marked *

five × 3 =