Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Instalujemy Node LPoS Waves - decentralizacja Neutrino Protocol

Spis Treści
  1. Wybór VPS / self hosting
  2. Wstępna konfiguracja serwera
  3. Instalacja i konfiguracja Waves Node
  4. Chain bootstrap
  5. Aplikowanie o udział w decentralizacji Neutrino
  6. Automatyzacja wypłaty

Wybór VPS / self hosting

DigitalOcean Referral Badge

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

blockchain.wavesnodes.com

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

Smart Contract dapp interface

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: