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.
0 Comments Leave a comment