Konfiguracja węzła (node) i forging w Infinity Economics
Podstawowe pojęcia z dziedziny blockchain w kontekście platformy Infinity Economics.
Blockchain
Łańcuch bloków – łańcuch bloków informacji. Informacje o transakcjach grupowane są w bloki informacji, których spójność, powiązanie i bezpieczeństwo zapewnia kryptografia. Kolejne bloki są powiązane ze sobą poprzez kryptografię w taki sposób iż powstanie kolejnych bloków wymaga specjalnych informacji z poprzednich bloków wraz ze znacznikami czasu i dlatego stanowią nierozerwalny łańcuch bloków informacji.
Node
Węzeł sieci, w technologi blockchain – komputer z dostępem do Internetu z własnym stałym adresem IP i uruchomionym oprogramowaniem danego blockchain. Po zsynchronizowaniu z siecią i samym blockchain, stanowiący jeden z węzłów w rozproszonej sieci w danym blockchain.
Na nodach przechowywany jest blockchain, im większa liczba rozproszonych nodów tym bezpieczniejsza jest sieć i blockchain.
Account
Konto, numer konta, numer portfela w formacie XIN-XXXX-XXXX-XXXX-XXXXX
Wallet
Portfel elektroniczny, aplikacja, która umożliwia nam dostęp do naszego konta i operowanie na naszych zasobach (kryptowaluta, udziały, aliasy, wiadomości, itd.).
XIN
Jednostka kryptowaluty oparta na blockchain Infinity Economics.
PoS – Proof-of-Stake
Algorytm służący do osiągnięcia konsensusu w rozproszonej sieci z technologią blockchain. Twórca następnego bloku wyłaniany jest na podstawie kombinacji takich kryteriów jak zasobność, wiarygodność, wiek – czyli na podstawie dowodu stawki.
PoS jest nowoczesnym, ekologicznym algorytmem gdyż w przeciwieństwie do PoW (Proof-of-Work) nie wymaga współzawodnictwa w byciu pierwszym w znalezieniu rozwiązania zagadnienia matematycznego z użyciem ogromnej mocy obliczeniowej.
Forging
Geneza słowa – proces polegający na kształtowaniu metalu z użyciem sił ściskających – wydobywanie kształtu.
Pozyskiwanie waluty XIN.
Informacje i wymagania.
Oprogramowanie blockchain platformy Infinity Economics stworzone zostało w środowisku Java.
Takie rozwiązanie pozwala nam uruchomić oprogramowanie pod kontrolą dowolnego systemu operacyjnego dla którego istnieje środowisko Java Runtime (Linux, Windows, macOS, Solaris).
Uruchomienie własnego noda sprowadza się zatem do uruchomienia oprogramowania w środowisku Java na komputerze podłączonym do Internetu z własnym publicznym adresem IP.
Aby utrzymanie noda miało jakiś wymierny sens dla IE i dla nas (np. podnoszenie bezpieczeństwa czy wiarygodności i wydajności sieci IE) musi to być maszyna przystosowana do pracy ciągłej podłączona do Internetu z własnym publicznym i stałym adresem IP. Takie podejście umożliwi nam zajęcie wyższego miejsca w rankingu nodów http://www.infinity-economics.org/peer/#/peers
Po spełnieniu tych warunków możemy użyć naszego noda w celu skutecznego wydobywania XIN dla nas.
W praktyce dziś minimalna konfiguracja, na której możemy uruchomić node, to np. maszyna wirtualna z systemem Linux, 1 rdzeń, 1GB RAM, 16GB dysk czyli np. tzw. VPS (Virtaul Privat Server), którego ceny przy takiej konfiguracji zaczynaja się od kilkunastu zł/mc.
Wydajność maszyny ma jednak wpływ na miejsce w rankingu i przyszłe potrzeby związane z rosnącą liczbą transakcji w blockchain’ie IE. Dlatego taka konfiguracja może służyć tylko celom “poznawczo-badawczym”.
Aby efektywnie uczestniczyć w sieci IE i pozyskiwać XIN’y trzeba użyć maszyny z większą wydajnością i dopasowywać ją do aktualnych potrzeb.
Uruchomienie własnego węzła (node)
Przygotowanie komputera/serwera z systemem operacyjnym Debian i środowiskiem Java RE
Instalacja systemu operacyjnego Linux Debian na komputerze
Opis przeznaczony jest dla osób, które nie mają doświadczenia w instalacji systemu Debian ale posiadają podstawową wiedzę z zakresu Informatyki. Potrzebny będzie komputer (sprawny stabilny) z napędem optycznym, dyskiem twardym (dane zostaną utracone!), przeznaczony tylko do obsługi węzła, z dostępem do Internetu, ze stałym łączem i rzeczywistym stałym adresem IP. Skonfigurujemy go do pracy pod systemem Linux z dystrybucją Debian.
Potrzebujemy obraz płytki CD z instalacją systemu, najlepiej bieżący, stabilny, na moment tworzenia tego opisu np.:
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.2.1-amd64-netinst.iso
Obraz nagrywamy na CD, uruchamiamy komputer tak aby wystartował z naszej płyty CD.
Nasz node powinien mieć stały adres IP świadomie nadany więc aby uniknąć komplikacji z późniejszą konfiguracją adresu możemy odłączyć interfejs sieciowy od sieci z usługą DHCP.
Po udanym starcie powinniśmy zobaczyć listę opcji, wybieramy drugą
Install
czyli bez sytemu graficznego.
Następnie wybieramy język (w tym przykładzie użyjemy polskiego)
Polish - Polski
, kraj –
Polska,
układ klawiatury - polski
.
Jeśli w sieć, do której podłączony jest komputer, jest usługa DHCP to zostanie przydzielony adres IP.
W przeciwnym przypadku pojawi się komunikat:
Automatyczna konfiguracja sieci nie powiodła się
i możemy przejść
Dalej
aby wybrać
Konfiguruj sieć ręcznie
.
Wprowadzamy adres IP, maskę sieci, bramę sieciową, serwer nazw/DNS, nazwę hosta i nazwę domeny.
Jeśli wcześniej odłączyliśmy interfejs sieciowy teraz możemy go podłączyć.
Konfigurujemy hasło administratora (użytkownika root) oraz nazwę i hasło pierwszego użytkownika – nasze konto, np. podając imię w nazwie użytkownika.
Teraz dysk – Uwaga, przedstawiona tu procedura powoduje utratę danych na dysku!
Jeśli przeznaczamy cały dysk na ten system wybieramy opcję
Przewodnik - cały dysk
, wskazujemy dysk i wybieramy
Wszystko na jednej partycji
, następnie
Zakończ partycjonowanie i zapisz zmiany na dysku
.
Pojawi się pytanie
Zapisać zmiany na dyskach?
z domyślnym
Nie
– zmieniamy na
Tak
i potwierdzamy.
Przeskanować inną płytę CD lub DVD? - Nie
Kraj serwera lustrzanego - Polska
Serwer lustrzany z archiwum Debiana - pierwszy z listy - ftp.pl.debian.org
Dane serwera pośredniczącego - puste - Dalej
Chcesz wziąć udział w konkursie na najpopularniejszy pakiet? - Nie
Wybierz oprogramowanie do instalacji:
potrzebujemy tylko
Podstawowe narzędzia systemowe
i ewentualnie
Serwer SSH
jeśli chcemy łączyć się zdalnie z naszym komputerem. Resztę opcji wyłączamy i
Dalej
Zainstalować program rozruchowy GRUB w głównym rekordzie rozruchowym? - Tak
Wybieramy naszą partycję (najprawdopodobniej druga opcja) np.
/dev/sda Instalacja zakończona
– wyjmujemy CD i
Dalej
Komputer wykona restart i załadaju świeżo-zainstalowany system.
Gratulacje!
Wirtualna maszyna VPS
Drugą możliwością jest zakup usługi u operatorów świadczących usługę VPS (Virtual Private Server). W przeglądarce wystarczy wpisać VPS i ukaże się nam cała lista usługodawców.
W takim rozwiązaniu dostaniemy, w zależności od wyboru, maszynę z preinstalowanym systemem operacyjnym.
Przykład konfiguracji węzła (node)
Po uruchomieniu systemu logujemy się jako root i instalujemy niezbędne oprogramowanie.
Instalujemy oprogramowanie do rozpakowania archiwum
apt-get install unzip
Potrzebujemy dobrej synchronizacji czasu
apt-get install ntp
zgadzamy się na dodatkowe pakiety
T
Konfigurujemy swoją strefę czasową
dpkg-reconfigure tzdata
Teraz środowisko Java
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-get install dirmngr
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
zgadzamy się na dodatkowe pakiety
T
zgadzamy się na licencję i warunki Oracle
TAK
ściągamy oprogramowanie Infinity Economics, obecna wersja 0.1.1 (niedługo ukaże się upgrade)
cd /root
wget http://www.infinity-economics.org/download/core-build-0.1.1.zip
Weryfikujemy sumę kontrolną sha256
shasum -a 256 core-build-0.1.1.zip
porównujemy wynik polecenia z sumą kontrolną
f582ea6f30240cc605e212ab501f09be4953f8bea9cccdbaa2409635a08c1766
odpowiednią tylko dla tej wersji oprogramowania widoczną na stronie http://www.infinity-economics.org/download/#!/main
Jeśli się zgadza – rozpakowujemy nasze oprogramowanie
unzip core-build-0.1.1.zip
powinien zostać utworzony katalog core z oprogramowaniem, zmieniamy katalog
cd /root/core/bin
Edytujemy plik konfiguracyjny
pico conf/custom.properties
usuwamy # przed tymi linijkami i koniecznie tworzymy (dowolne) i wpisujemy hasło admina zamiast ciągu znaków *myPassword*
xin.allowedBotHosts=*; 127.0.0.1; localhost; [0:0:0:0:0:0:0:1];
xin.apiServerHost=0.0.0.0
xin.adminPassword=*myPassword*
Zapisujemy
Ctrl + X
i potwierdzamy
T
i Enter
Aby łatwiej operować w jednym oknie terminala użyjemy polecenia screen, które wcześniej zainstalujemy
apt-get install screen
zgadzamy się na dodatkowe pakiety
T
Teraz możemy uruchomić oprogramowanie i podłączyć nasz węzeł do sieci IE
screen
Enter
cd /root/core/bin
./core
Pojawi się sporo komunikatów i oprogramowanie zacznie ściągać i synchronizować blockchain co przy minimalnej konfiguracji w zależności też od szybkości łącza – może to potrwać nawet 2 godziny, m.in. dlatego do praktycznych zastosowań 4 rdzenie i 4GB RAM to rozsądna konfiguracja na dziś.
W tym czasie powinniśmy już zobaczyć naszego noda w explorerze, na ostatnich miejscach rankingu http://www.infinity-economics.org/peer/#/peers
Możemy podziwiać logi z pracy naszego noda lub wyjść do naszej konsoli ze screen (zostawiając procujący core) kombinacją klawiszy
Ctrl+A
Ctrl+D
Konfiguracja forgingu
Potrzebujemy nr konta (XIN-…) które będzie nośnikiem dowódu stawki. Na to konto również będziemy otrzymywali nasze XIN’y za forging. Ponieważ przy konfiguracji trzeba podać nasz klucz prywatny do tego konta, najbezpieczniej jest wydzierżawić środki z innego konta na konto podpięte do forgingu. Dzierżawy można dokonać na max. 45 dni. Aby środki z konta były uznane za ważne do dowodu stawki muszą znajdować się w dyspozycji konta min. 24 godziny.
Teraz przystąpimy do utworzenia tzw. Hallmark i uruchomimy forging z pomocą polecenia curl, które można wydać z innego komputera ale zostańmy przy naszej maszynie.
Jeśli nie opuściliśmy screen w poprzrdnim punkcie to robimy to teraz kombinacją klawiszy Ctrl+A Ctrl+D a następnie instalujemy curl
apt-get install curl
zgadzamy się na dodatkowe pakiety
T
Prosimy o wygerowanie Hallmark, podajemy naszą frazę do portfela, adres IP naszego noda i bieżącą datę
curl -d requestType=markHost -d secretPhrase="nasz klucz prywatny/fraza do konta/passphrase" -d host=adresIPnoda -d weight=1 -d date=rrrr-mm-dd http://adresIPnoda:23457/api
W odpowiedzi otrzymamy coś podobnego
{"hallmark":"15e66..długi ciąg znaków..8b56","requestProcessingTime":4}
wklejamy tylko ten długi ciąg znaków (to co jest między uszami) do naszego pliku configuracyjnego w linijce po znaku =
xin.myHallmark=
pico /root/core/bin/conf/custom.properties
Zapisujemy
Ctrl + X
i potwierdzamy
T
i Enter
Następnie restartujemy naszego noda aby pobrał plik konfiguracyjny
screen -r
Ctrl+C
czekamy na zakończenie procesu, komunikat w stylu
... INFO - Logger.logShutdownMessage: Server 0.1.1 stopped.
następnie dla pewności zmienimy ścieżkę i startujemy noda
cd /root/core/bin
./core
Po chwili node wystaruje a w wyświetlanych logach mignie nam m.in.
My peer info:
{"hallmark":"15e66...nasz_długi_ciąg_znaków...8b56","apiPort":23457,"application":"XIN","services":"5","version":"0.1.1","platform":"Linux amd64","shareAddress":true}
po ponownym zsynchronizowaniu z blockchain możemy uruchomić forging.
Wychodzimy ze screen kombinacją klawiszy
Ctrl+A Ctrl+D
Teraz uruchamiamy forging podając naszą frazę do portfela i adres IP naszego noda
curl -d requestType=startForging -d secretPhrase="nasz klucz prywatny/fraza do konta/passphrase" http://ADRES_IP_NODA:23457/api
W odpowiedzi otrzymamy coś w stylu
{"requestProcessingTime":5,"deadline":0,"hitTime":0}
O ile wcześniej tego nie zrobiliśmy, dzierżawimy na nasze konto XIN-… środki z innego konta aby stawka była możliwie największa. Operację taką możemy wykonać na min. 24h i max. 45 dni i nie możemy jej cofnąć.
Opisany tu proces jest możliwie najprostrzym przykładem uruchomienia noda i forgingu. Proces uruchamiania oprogramowania i forgingu np. po restartcie komputera można zautoamtyzować a konfigurację dopasować do własnych potrzeb i wymagań.
Udanego forging’u i góry XIN’ów !