Instalujemy Node LPoS Waves - decentralizacja Neutrino Protocol
Spis Treści
Wybór VPS / self hosting
Wstępna konfiguracja serwera
Oficjalna strona dokumentacji Waves
Połącz się ze swoim serwerem:
ssh root@your-vps-public-ip
Zaktualizuj system Ubuntu:
sudo apt update && sudo apt upgrade -y
Zainstaluj środowisko Java:
sudo apt install openjdk-11-jre
Instalacja i konfiguracja Waves Node
Oprogramowanie Walidatora Waves Node, Wersja 1.4.7 (Mainnet):
Stan na 2022-06-24
UWAGA: Zawsze zwracaj uwagę na to, aby instalować najnowszą wersję node’a
github.com/wavesplatform/Waves/releases
Pobierz oprogramowanie walidatora:
wget https://github.com/wavesplatform/Waves/releases/download/v1.4.7/waves_1.4.7_all.deb
Zainstaluj oprogramowanie walidatora:
sudo apt install ./waves_1.4.7_all.deb
Sprawdź status serwisu:
sudo systemctl status waves
Wyedytuj plik konfiguracyjny:
sudo nano /etc/waves/waves.conf
Przykładowy szablon pliku konfiguracyjnego:
waves {
wallet {
# Password to protect wallet file
password = "BTC!4ndMayB3W4veS2"
# Wallet seed as BASE58 string
seed = "neverGonanGive7iyupNeverGonnalet*HYoudownDon354CryB4b444333"
}
blockchain {
# Blockchain type: TESTNET | MAINNET | STAGENET | CUSTOM
type = MAINNET
}
rest-api {
# Enable/disable REST API
enable = yes
# Network address to bind to
bind-address = "0.0.0.0"
# Port to listen to REST API requests
port = 6869
# Hash of API key string
api-key-hash = "2y49rehwf9485yr"
}
network {
node-name = "your-waves-node"
declared-address = "123.456.789.101:6868"
bind-address = "192.168.3.234"
port = 6868
}
features {
auto-shutdown-on-unsupported-feature = no
supported = [17]
}
rewards {
desired = 700000000
}
# Uncomment to enable the gRPC extension
# extensions += com.wavesplatform.api.grpc.GRPCServerExtension
}
Uruchom walidator Waves po raz pierwszy:
sudo systemctl enable --now waves
Sprawdź status procesu walidatora:
journalctl -u waves.service -f
Chain bootstrap
Zainstaluj tmux:
sudo apt install tmux
Uruchom nową konsolę:
tmux new -s blockchain
Pobierz blockchain:
wget http://blockchain.wavesnodes.com/blockchain_last.tar
Wyjdź z powłoki tmux, poprzez kombinację klawiszy ctrl+B
a następnie naciśnięcie klawisza D
.
Zatrzymaj proces walidatora Waves:
sudo systemctl stop waves
Usuń niekompletne dane łańcucha:
sudo rm -rdf /var/lib/waves/data.
Po pobraniu pełnego archiwum łańcucha. Zdekompresuj baze danych:
tar -xvf blockchain_last.tar -C /var/lib/waves/
Uruchom proces walidatora:
sudo systemctl start waves
Node łańcucha Waves został zainstalowany, skonfigurowany oraz zaktualizowany. Gratulacje!
Aplikowanie o udział w decentralizacji Neutrino
Adres Smart Kontraktu do obsługi node’ów Neutrino
Automatyzacja wypłaty
Zainstaluj środowisko Python:
sudo apt install build-essential python3-dev python3-pip python3-testresources -y
Zainstaluj Pywaves do obsługi skryptu:
pip install pywaves
pobierz gotowy skrypt:
wget https://raw.githubusercontent.com/waves-exchange/neutrino-utilities/main/neutrino_nodes/payment.py
Dostosuj skrypt do swoich potrzeb:
nano payment.py
Przykład wyedytowanego skryptu:
import pywaves as pw
import datetime as dt
pw.setNode('https://node.heraclitus.space', chain='mainnet')
myAddress = pw.Address(privateKey='your_node_private_key') # klucz prywatny Twojego node'a
dappAddress = '3P9vKqQKjUdmpXAfiWau8krREYAY1Xr69pE'
beneficiaryAddress = '3P_your_beneficiary_address' # adres na który chcesz otrzymać wypłatę 5% z mintingu
fee = pw.DEFAULT_INVOKE_SCRIPT_FEE
amount = myAddress.balance() - fee
result = myAddress.invokeScript(dappAddress, 'distributeMinerReward', params=[{"type": "string", "value": beneficiaryAddress}], payments=[{"assetId": None, "amount": amount}], feeAsset = None, txFee=fee)
now = dt.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(result)
Skrypt jest gotowy do egzekwowania kodu. Możesz spróbować czy działa odpalając go ręcznie:
python3 payment.py
Automatyzacja procesu
Aby zautomatyzować egzekwowanie skryptu wykorzystamy cron job
. Proponuję aby automatyzację wykonywać co 12h.
Otwórz cron tab:
crontab -e
W ostatniej lini podaj cron job pod automatyzację:
0 */12 * * * /usr/bin/python3 /path-to-your-script/payment.py > /root/payment.log
Zamień /path-to-your-script/payment.py
na lokalizację, w której znajduje się payment.py
. Jeśli jesteś root’em to skrypt prawdopodobnie znajduje się tu: /root/payment.py
/root/payment.log
zapisuje output ze skryptu. Stwórzmy teraz ten plik:
touch /root/payment.log
lokalizacja może być dowolna. Sam zdecyduj.
Jeśli chcesz zautomatyzować proces wypłaty w inny sposób, pomocny może okazać się Crontab.guru, szybki oraz prosty edytor kodów pod cron jobs.
Wszystko gotowe.
Monitoruj czy zadania cron są wykonywane poprawnie, bez błędów. Przydatna może okazać się usługa Cronitor.
Gratuluję! Jesteś operatorem Node’a Neutrino!
Przytatne linki: