Einstellung einer Near Shardnet Validator und Monitoring davon

Erzeugung des Wallets

Near hat eine web-bassierte Wallet. Wir müssen ein neues Wallet für Shardnet erzeugen:

Near client installieren

Diese sind die Schritte die wir durchführen müssen:

# NodeJS installieren als Voraussetzung: 
sudo apt update -ycurl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install build-essential nodejs
PATH="$PATH"
# Jetzt müssen wir checken dass wir beides, NODE und NPM haben:
node -v
npm -v
# Und jetzt kommt das Near client:
sudo npm install -g near-cli
# Stakewars braucht bestimmte environment variables:export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
# Und jetzt checken dass alles richtig installiert ist:
near proposals
#oder mit
near validators current

Near node Einstellung und Konfigurierung

Jetzt kommen für auf die Tatsächliche Einstellung des Nodes:

# Zuerst müssen wir prüfen ob unser CPU unterstützt ist:
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \
&& echo "Supported" \
|| echo "Not supported"
# Sämtliche Software das fürs Compilen notwendig ist installieren:sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python docker.io protobuf-compiler libssl-dev pkg-config clang llvm cargosudo apt install python3-pipUSER_BASE_BIN=$(python3 -m site --user-base)/binexport PATH="$USER_BASE_BIN:$PATH"sudo apt install clang build-essential make# Jetzt rust installieren:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource $HOME/.cargo/env
# Also jetzt Near herunterziehen und installieren/kompilieren:
git clone https://github.com/near/nearcore
cd nearcore
git fetch
git checkout mastercargo build -p neard --release --features shardnet
# Jetzt, nur ein Mal, muss man das Node "initieren" und Genesis von Shardnet herunterziehen:
./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis# und jetzt config.json herunterziehen, sonst haben wir keine Bootnodes:rm ~/.near/config.json
wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json
# Optional können wir ein Snapshot vom Blockchain herunterziehen, dann werden wir schneller unser Node aufsyncen:sudo apt-get install awscli -y
cd ~/.near
aws s3 --no-sign-request cp s3://build.openshards.io/stakewars/shardnet_noarchive/data.tar.gz .
tar -xzvf data.tar.gz

# Und, tada, jetzt near starten:
cd ~/nearcore
./target/release/neard --home ~/.near run

Node als Validator aktivieren

Diese Shcritte können wir nur tun, wenn wir 100% gesynct sind, sonst wird nichts tun.

near login
# Validator key erzeugen:
near generate-key bloclick
cp ~/.near-credentials/shardnet/bloclick.json ~/.near/validator_key.json# Dann mit vi oder nano oder vim die Inhalte von validator_key.json modifizieren. Anstatt private_key soll es secret_key lauten:{
"account_id": "bloclick.factory.shardnet.near",
"public_key": "ed25519:-----a-b-c-d-------------",
"secret_key": "ed25519:****"
}
# Und jetzt near neustarten:target/release/neard run
#<USER> ist der Name des Users womit wir alles bisher gemacht habensudo nano /etc/systemd/system/neard.service[Unit]
Description=NEAR Shardnet Service
[Service]
Type=simple
User=<USER>
#Group=near
WorkingDirectory=/home/<USER>/.near
ExecStart=/home/<USER>/nearcore/target/release/neard run
Restart=on-failure
RestartSec=30
KillSignal=SIGINT
TimeoutStopSec=45
KillMode=mixed
[Install]WantedBy=multi-user.target
sudo systemctl enable neard
sudo systemctl start neard
# Die logs vom Service kann man sich damit anschauen:
journalctl -n 100 -f -u neard

Erzeugung des Staking Pool

Wir müssen jetzt ein Staking Pool für unseren Validator erzeugen. zB in Mainnet können dann die Users mit uns Ihre Near Tokens staken:

near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "bloclick", "owner_id": "blockscope.shardnet.near", "stake_public_key": "ed25519:5M8boq4XsjgNoFiZ1digEfnJihsTaMLMyP61WbwCMcUu", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="bloclick.shardnet.near" --amount=30 --gas=300000000000000
near call bloclick.factory.shardnet.near deposit_and_stake --amount 2300 --accountId bloclick.shardnet.near --gas=300000000000000

Ping für unser Pool

Wir müssen periodisch unser Pool ‘pingen’. Das heisst, sie am Leben zu halten.


crontab -e
@daily NEAR_ENV=shardnet && near call bloclick.factory.shardnet.near ping '{}' --accountId bloclick.shardnet.near --gas=300000000000000

Monitoring vom Validator

Es gibt also viele Möglichkeiten ein Near Node zu monitoren. Ich werde mal eine ganz einfache Möglichkeit darstellen, und zwar mit einem Discord Webhook:

#!/bin/bash ALERTS_CHANNEL=”https://discord.com/api/webhooks/858067427781771294/En7ToSuR6gkkQ-Zl-qLhOz7N......................DQLyGzIMN26DX_LGpiavfFKbHM"while true; do 
MESSAGE2=$(near validators current | grep bloclick)
MESSAGE=$(near validators current | head -n 4) curl -d “content=$MESSAGE” -X POST $ALERTS_CHANNEL curl -d “content=$MESSAGE2” -X POST $ALERTS_CHANNEL
sleep 60m
done

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store