August 11, 2022

Stake Wars Challenges

Übung 1

sudo apt update && sudo apt upgrade -y

curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install build-essential nodejs PATH="$PATH"

sudo npm install -g near-cli

echo 'export NEAR_ENV=shardnet' >> ~/.bashrc echo 'export NEAR_ENV=shardnet' >> ~/.bash_profile source $HOME/.bash_profile

Befehle für den Client

Das Angebot des Validierers gibt an, dass er in das Set des Validierers aufgenommen werden möchte, damit das Angebot akzeptiert wird, muss es den Mindestplatzpreis erfüllen.
near proposals

Dies zeigt die Liste der aktiven Validatoren in der aktuellen Epoche, die Anzahl der produzierten Blöcke, die Anzahl der ausstehenden Blöcke und die Online-Geschwindigkeit. Wird verwendet, um zu überwachen, ob der Validator Probleme hat.
near validators current

Hier sind die Prüfer gezeigt, deren Vorschlag vor einer Epoche akzeptiert wurde und die in der nächsten Epoche in den Satz von Prüfern aufgenommen werden.
near validators next

Übung 2

sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python docker protobuf-compiler libssl-dev pkg-config clang llvm cargo

Wenn Sie Probleme haben, python oder docker.io auf Ubuntu zu installieren, versuchen Sie diesen Befehl:
sudo apt install python3 sudo apt install docker-ce

Wenn nicht, dann gehen Sie direkt hierher.
sudo apt install python3-pip USER_BASE_BIN=$(python3 -m site --user-base)/bin export PATH="$USER_BASE_BIN:$PATH"

sudo apt install clang build-essential make

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env

git clone https://github.com/near/nearcore cd nearcore git fetch git checkout 68bfa84ed1455f891032434d37ccad696e91e4f5

cargo build -p neard --release --features shardnet cd $HOME

sudo apt-get install awscli -y ~/nearcore/target/release/neard --home ~/.near init --chain-id shardnet --download-genesis rm ~/.near/config.json ~/.near/genesis.json wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json wget -O ~/.near/genesis.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/genesis.json

Gehen Sie im Browser zum Wallet und erstellen Sie eine Test-Wallet-Adresse
https://wallet.shardnet.near.org/

Wir erhalten einen Login-Link im Terminal, folgen Sie ihm im Browser
in der Nähe von Login

Wir warten auf das Fehlen einer Verbindung im Browser und geben den vollständigen Namen Ihrer Brieftasche im Terminal ein
Wenn die validator_key.json im Ordner $HOME/.near nicht automatisch generiert wurde, erstellen wir sie selbst
cp ~/.near-credentials/shardnet/!YOUR_WALLET!.json ~/.near/validator_key.json

Ändern Sie „account_id“ => xx.factory.shardnet.near, wobei xx der PoolName ist
Ändern Sie private_key in secret_key
Warnung: account_id muss mit dem Vertragsnamen des Staking-Pools identisch sein, sonst signieren Sie keine Blöcke
Der Inhalt von validator_key.json sollte wie folgt aussehen:`
{
"account_id": "xx.factory.shardnet.near",
"public_key": "ed25519:HeaBJ3xLgvZacQWmEctTeUqyfSU4SDEnEwckWxd92W2G",
"secret_key": "ed25519:****"
}

sudo tee /etc/systemd/system/neard.service > /dev/null <<EOF [Unit] Description=NEARd Daemon Service [Service] Type=simple User=$USER Group=near WorkingDirectory=$HOME/.near ExecStart=$HOME/nearcore/target/release/neard run Restart=on-failure RestartSec=30 KillSignal=SIGINT TimeoutStopSec=45 KillMode=mixed [Install] WantedBy=multi-user.target EOF

sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl start neard && journalctl -f -u neard

Übung 3


Erweiterung unseres Staking-Pool-Vertrags
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "<pool id>", "owner_id": "<accountId>", "stake_public_key": "<public key>", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="<accountId>" --amount=30 --gas=300000000000000

Beispiel
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "example", "owner_id": "example.shardnet.near", "stake_public_key": "ed25519:your key", "reward_fee_fraction": {"Zähler": 5, "Nenner": 100}, "code_hash": "DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="example.shardnet.near" --amount=30 --gas=300000000000000

Transaktionsleitfaden

Einzahlung und Wette
near call <pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000

Wette stornieren
near call <pool_id> unstake '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000

Um die gesamte Wette zu stornieren, gehen Sie wie folgt vor:
near call <pool_id> unstake_all --accountId <accountId> --gas=300000000000000

Das Aufheben des Einsatzes dauert 2-3 Epochen, danach können Sie alles aus dem Pool zurückziehen.
near call <pool_id> withdraw '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000

Alle Befehle anzeigen
near call <pool_id> withdraw_all --accountId <accountId> --gas=300000000000000

Ping (Es ist besser, es zu automatisieren, da Sie jede Stunde pingen müssen)
Ping erstellt ein neues Angebot und aktualisiert die Gebotssalden für Ihre Delegierten. Ein Ping sollte jede Epoche gesendet werden, um die Belohnungen auf dem neuesten Stand zu halten.
near call <pool_id> ping '{}' --accountId <accountId> --gas=300000000000000

Balances
near view <pool_id> get_account_total_balance '{"account_id": "<accountId>"}'

Balance-Rate
near view <pool_id> get_account_staked_balance '{"account_id": "<accountId>"}'

Неразмещенный баланс
near view <pool_id> get_account_unstaked_balance '{"account_id": "<accountId>"}'

Unplatzierter Saldo
near view <pool_id> is_account_unstaked_balance_available '{"account_id": "<accountId>"}'

Wetten pausieren/fortsetzen

Pause
near call <pool_id> pause_staking '{}' --accountId <accountId>

Fortfahren
near call <pool_id> resume_staking '{}' --accountId <accountId>

Übung 4

sudo apt install ccze
journalctl -f -u neard | ccze -A

INFO-Statistiken: 85079829 H1GUabkB7TW2K2yhZqZ7G47gnpS7ESqicDMNyb9EE6tf Validator 73 Validatoren 30 Peers ⬇ 506,1 kiB/s ⬆ 428,3 kiB/s 1,20 bps 62,08 Tgas/s CPU: 23 %, Arbeitsspeicher: 7,4 GiB
Validator: „Validator“ zeigt an, dass Sie ein aktiver Validator sind.
73 Validatoren: Es gibt insgesamt 73 Validatoren im Netzwerk.
30 Peers: Sie haben derzeit 30 Peers. Sie benötigen mindestens 3 Peers, um einen Konsens zu erzielen und mit der Validierung zu beginnen
46199418 : block - beobachten Sie, wie sich die Blöcke bewegen

sudo apt install curl jq

Allgemeine Befehle:
Проверьте версию вашего узла: Команда:
curl -s http://127.0.0.1:3030/status | jq .version

Überprüfung der Delegierenden und Bewertungsteams:
near view <your pool>.factory.shardnet.near get_accounts '{"from_index": 0, "limit": 10}' --accountId <accountId>.shardnet.near

Überprüfen Sie die Fehlerursache des Validators Befehl:
curl -s -d '{"jsonrpc": "2.0", "method": "validators", "id": "dontcare", "params": [null]}' -H 'Content-Type: application/json' 127.0.0.1:3030 | jq -c '.result.prev_epoch_kickout[] | select(.account_id | contains ("<POOL_ID>"))' | jq .reason

Befehl „Erstellte/ausstehende Blöcke prüfen“:
curl -r -s -d '{"jsonrpc": "2.0", "method": "validators", "id": "dontcare", "params": [null]}' -H 'Content-Type: application/json' 127.0.0.1:3030 | jq -c '.result.current_validators[] | select(.account_id | contains ("POOL_ID"))'