Stake Wars 3 là gì?

Stake Wars giúp NEAR phi tập trung hơn, nâng số lượng active validator từ 100 lên 300, 400, giảm rào cản phần cứng làm validator xuống, qua đó làm mạng lưới phi tập trung và an toàn hơn!

Tham gia Stakewars 3, trở thành chunk-only producers, bạn sẽ có cơ hội nhận incentive với hơn 4 triệu token NEAR làm phần thưởng stake cho những validator tham gia hoàn thành thử thách, mỗi validator sẽ được NEAR stake tối đa 50 nghìn NEAR vào trong vòng ít nhất 1 năm!

Tìm hiểu thêm: Stake Wars 3 trên NEAR – Phi tập trung mạng lưới

Trong bài viết ngày hôm nay, cùng GFS Blockchain Insights cấu hình và vận hành một validator node cho NEAR và cơ hội trở thành chunk-only producer validator!

Cấu hình máy chủ

Cấu hình node tham gia Stake Wars khá nhẹ:

Hardware

Chunk-Only Producer Specifications

CPU

4-Core CPU with AVX support

RAM

8GB DDR4

Storage

500GB SSD

bạn có thể thuê ở bất kỳ nhà cung cấp nào, ví dụ như Vultr / Amazon Service hay Google Cloud hoặc Contabo …

Đối với Contabo thì gói 6.99$ là vừa đủ, nhưng để tối ưu nhất hãy chọn gói 11.99$

Chi phí sử thuê VPS sẽ vào khoảng 15$ -> 40$ tùy nhà cung cấp, bạn cần có thẻ thanh toán để đăng ký, ngoài ra bạn có thể sử dụng các dịch vụ VPS tại Việt Nam, một số nhà cung cấp như ViettelCloud / FPT …

Đăng ký ở Contabo
Đăng ký validator NEAR ở Contabo

Hệ điều hành yêu cầu là Ubuntu, toàn bộ hướng dẫn này sẽ chạy trên Ubuntu!

Hệ điều hành yêu cầu là Ubuntu
Hệ điều hành yêu cầu là Ubuntu

Quá trình đăng ký rất dễ dàng, sau khi đăng ký bạn hãy lưu lại password login vào vps của mình và địa chỉ IP được cung cấp.

Sau khi có thông tin login, bạn cần sử dụng SSH để login vào máy chủ, nếu sử dụng Windows thì có thể dùng Putty, còn Mac hoặc Linux thì ssh đã có sẵn trong Terminal.

*Thao tác sử dụng SSH trên Windows có thể tra trên mạng hoặc theo hướng dẫn này

Tạo thành khoản NEAR trên Shardnet

Truy cập link: https://wallet.shardnet.near.org/

Đăng ký một tài khoản shardnet của bạn, mỗi tài khoản nhận được 50 NEAR test để tham gia mạng lưới. 

Đăng ký ví NEAR shardnet
Đăng ký ví NEAR shardnet

Chạy node stakewars 3

Setup

Login vào VPS, check nếu CPU hỗ trợ AVX qua câu lệnh

lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \
  && echo "Supported" \
  || echo "Not supported"

Check CPU support AVX

Check CPU support AVX

Hiện Supported tức là VPS hỗ trợ AVX, nếu không thì bạn cần đăng ký bên nhà cung cấp khác!

Update máy chủ

sudo apt update && sudo apt upgrade -y

Cài đặt tools, python, Rust, cargo, copy mỗi dòng một lệnh …  

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

sudo apt install -y python3-pip

USER_BASE_BIN=$(python3 -m site --user-base)/bin

export PATH="$USER_BASE_BIN:$PATH"

sudo apt install -y clang build-essential make

apt install -y build-essential nodejs npm 

sudo npm install -g n

sudo n stable

PATH="$PATH"

sudo npm install -g near-cli

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Cài đặt Rust
Cài đặt Rust

Thấy màn hình này thì ấn enter là được

Cài xong thì source lại env:  

source $HOME/.cargo/env

echo 'export NEAR_ENV=shardnet' >> ~/.bashrc

source ~/.bashrc

Xem validator hiện tại trên shardnet để check lại xem cấu hình đúng chưa:

near validators current
danh sách các node shardnet
danh sách các node shardnet

Hiện 1 danh sách các node shardnet(có đuôi .factory.shardnet.near) như này là được!

Cài đặt NEARCore

cd ~

git clone https://github.com/near/nearcore

cd nearcore

git fetch

git commit -m <COMMIT HASH>

COMMIT HASH copy ở đây vì mã hash này sẽ thay đổi khi có cập nhật mới: https://github.com/near/stakewars-iii/blob/main/commit.md

Ví dụ: Câu lệnh commit trên sẽ thành git commit -m 0f81dca95a55f975b6e54fe6f311a71792e21698

Sau đó build NEARCore:

cargo build -p neard --release --features shardnet

Đợi  lúc tầm 10 phút là build xong.

Build xong chạy lệnh này

cd ~/nearcore

./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis

rm ~/.near/config.json

wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json

cd ~/.near

aws s3 --no-sign-request cp s3://build.openshards.io/stakewars/shardnet_noarchive/data.tar.gz .  

tar -xzvf data.tar.gz

cd ~/nearcore

./target/release/neard --home ~/.near run

Tới bước này thì đợi node sync, trong khi chờ đợi chúng ta có thể tiến hành bước login ví.

Login NEAR

Mở thêm một terminal nữa login vào server, vd: ssh root@<server ip>

Ở terminal, chạy lệnh này:

near login
Login NEAR
Login NEAR

Bấm vào link url ở trên, chọn tài khoản shardnet của bạn, sẽ có yêu cầu nhập lại Id tài khoản của bạn, nhập vào rồi ấn Confirm.

Grant access tới ví shardnet
Grant access tới ví shardnet

Trình duyệt sẽ hiện lỗi web không thể truy cập, không sao, quay lại terminal và nhập địa chỉ ví shardnet của bạn và ấn enter.

Confirm tài khoản
Confirm tài khoản

Tiếp đó cấu hình validator key:

near generate-key <account_id>

cp ~/.near-credentials/shardnet/<account_id> ~/.near/validator_key.json
  • <account_id> chính là địa chỉ ví shardnet của bạn, vd như kent_near.shardnet.near

Sau đó chỉnh sửa lại file validator_key.json:

nano ~/.near/validator_key.json

màn hình sẽ hiện kiểu này:

{"account_id":"<account_id>.factory.shardnet.near","public_key":"ed25519:**************************************","private_key":"ed25519:*************************************"}
  • Sửa private_key thành secret_key
  • Đổi <account_id> thành địa chỉ ví, vd kent_near

Sau đó save file bằng phím Ctrl + O, Enter và Ctrl + X để thoát khỏi nano

Tạo file service để giữ cho near node luôn chạy

nano /etc/systemd/system/neard.service

Rồi paste cái này vào:

[Unit]

Description=NEARd Daemon Service

[Service]

Type=simple

User=root

#Group=near

WorkingDirectory=/root/.near

ExecStart=/root/nearcore/target/release/neard run

Restart=on-failure

RestartSec=30

KillSignal=SIGINT

TimeoutStopSec=45

KillMode=mixed

[Install]

WantedBy=multi-user.target
Ví dụ khi paste
Ví dụ khi paste

Sau đó lưu lại và thoát: Ctrl + O, Enter và Ctrl + X

Bật service:

systemctl enable neard

systemctl start neard

Xem neard đang chạy hay không bằng lệnh này:

journalctl -n 100 -f -u neard | ccze -A
Validator node đang chạy!
Validator node đang chạy!

Hiện như này thì tức là đang chạy

Cài đặt Staking Pool contract

Nhập lệnh này:

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
  • <pool id> là tên của pool, vd: kentnearvn
  • <accountId> tên ví mạng shardnet, vd kent_near.shardnet.near
  • <public key> copy public_key ở file validator_key.json
  • numerator là 5 nghĩa là pool của bạn sẽ lấy phí 5% trên số lãi staking

Việc call contract này sẽ tốn 30 NEAR

Yêu cầu team stake NEAR vào validator

Do có quá nhiều account cheat số NEAR mạng test này nên team đã thay đổi quy trình, giờ đây bạn cần vào Discord của NEAR #stake-war phần #stake-wars-tokens_delegation. Gửi địa chỉ ví shardnet cùng pool id của bạn ở channel, team sẽ gửi đủ số NEAR vào validator của bạn.

Stake NEAR vào pool, số NEAR stake cần phải bằng hoặc lớn hơn seat price, xem seat price qua lệnh này:

near validators next | grep "seat price"

Kết quả trả về dạng:

Next validators (total: 300, seat price: 400)

Cần đảm bảo lượng NEAR stake vào validator > Seat Price.

Chạy lệnh gửi 450 NEAR vào:

near call <staking_pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000
  • <staking_pool_id> tên đầy đủ của pool cần stake vào, vd: kentnearvn.factory.shardnet.near
  • <amount> số lượng NEAR, nhập 450
  • <accountId> tên ví mạng shardnet, vd kent_near.shardnet.near
Stake NEAR vào validator thông qua lệnh
Stake NEAR vào validator thông qua lệnh

Sau khi làm xong thì bạn có thể xem validator của mình trên explorer: https://explorer.shardnet.near.org/nodes/validators

Xem Validator của mình trên Explorer
Xem Validator của mình trên Explorer

Tự động ping để giữ validator trong list

Gõ lệnh:

crontab -e

Nhập lệnh sau để ping mỗi 2 tiếng (đây là yêu cầu của Stake Wars, bạn cần phải làm theo chính xác là 2 tiếng), giúp validator tự động tạo yêu cầu được vào trong danh sách xác thực khối:

0 */2 * * * export NEAR_ENV=shardnet && near call <staking_pool_id>  ping '{}' --accountId <accountId> --gas=300000000000000
  • <staking_pool_id> tên đầy đủ của pool cần stake vào, vd: kentnearvn.factory.shardnet.near
  • <accountId> tên ví mạng shardnet, vd kent_near.shardnet.near
Cấu hình cron chạy mỗi 2 tiếng
Cấu hình cron chạy mỗi 2 tiếng

Lệnh trên sẽ ping mạng lưới mỗi 2 tiếng, bạn có thể kiểm tra tại explorer của shardnet: https://explorer.shardnet.near.org/, nhập ví NEAR shardnet vào và sẽ thấy lệnh ping chạy mỗi 2 tiếng!

Kiểm tra lại lệnh ping
Kiểm tra lại lệnh ping
hàm ping chạy mỗi 5 phút
hàm ping chạy

Cấu hình để theo dõi node status

Đây là thử thách số 4 trong Stake Wars.  

Ở đây chúng ta sẽ sử dụng script của Klesh, setup bot Telegram sẽ báo mỗi khi node của bạn có sự thay đổi như khi node ONLINE / KICKED OUT / Đang Validator … tất cả sẽ thông báo về Telegram của bạn.

 https://github.com/Klesh-/near-protocol-node-telegram-notifications

Đầu tiên bạn cần tạo bot telgeram tại https://t.me/BotFather 

Cấu hình chat bot
Cấu hình chat bot

 

Sau khi tạo xong, copy HTTP API của bạn.

Tìm bot vừa tạo rồi bấm Start để cho bot có quyền nhắn tin cho bạn.

Tìm ChatID Telegram của bạn tại  https://t.me/cid_bot, gõ /chatid, copy ChatID

Cấu hình chat bot
Cấu hình chat bot

Ở màn hình terminal, gõ lệnh sau:

cd ~

git clone https://github.com/Klesh-/near-protocol-node-telegram-notifications.git

cd near-protocol-node-telegram-notifications

cp .env.example .env

chmod +x ./report_node_status.sh

nano .env

FIlSOw4CDzQI t5B KzWBXw0XC 3dfHr0ZR8enqTOjgvIHLNnhu4eOgXw4cmxNlpWVbMyqNWO7L7WfHAZE3O xSQokjuXv5gFoN6Pa BX034nDUvfIihFRVBdj8qhz5nNSteyvL Uri7RT9s 

  • TG_API_KEY  là HTTP API vừa copy
  • TG_CHAT_ID là ChatId vừa copy
  • POOL_ID sửa thành id của pool của bạn, vd kentnearvn

Kết quả sẽ như sau

Env
Env

Cấu hình xong thì chạy thử xem:

./report_node_status.sh

Sẽ nhận được thông báo từ telegram về tình trạng node!

telegram về tình trạng
telegram về tình trạng

Tạo crontab để check mỗi 1 phút

 crontab -e

Paste cái này vào crontab

* * * * * cd "/root/near-protocol-node-telegram-notifications"  && sudo bash report_node_status.sh

O1Dv9sDDKHHV dveXc3z5c8UNkJs46daAwlHhyWe1AWlXG8Bzdq7I

Vậy là khi có các biến động liên quan tới validator bạn sẽ nhận được thông báo Telegram.

thông báo Telegram
thông báo Telegram

Cấu hình Dashboard để monitor network theo hướng dẫn của Klesh: https://github.com/Klesh-/near-protocol-node-monitoring

Bước này là tùy chọn, không bắt buộc.

Dashboard để monitor network
Dashboard để monitor network

Cập nhật phiên bản mới

Team NEAR sẽ thông báo có bản cập nhật mới tại channel stake-wars Discord NEAR

Khi có bản cập nhật mới, chạy các lệnh sau:

sudo systemctl stop neard

cd ~/nearcore

git pull

git checkout <COMMIT HASH>

cargo build -p neard --release --features shardnet

sudo systemctl start neard

sudo journalctl -n 1000 -f -u neard | ccze -A
commit hash
commit hash

Gỡ lỗi

Trong trường hợp bạn gặp các vấn đề, có thể đã có hướng giải quyết ở đây: https://github.com/near/stakewars-iii/blob/main/challenges/troubleshooting.md

Phần Kết

Tạm thời chúng ta đã làm xong các bước cơ bản để có thể khởi chạy một node validator cho NEAR, hướng dẫn này tương ứng tới các challenge 1 tới 7 của NEAR trong StakeWars.

Trong thời gian tới mình sẽ tiếp tục cập nhật bài viết này để hướng dẫn thêm các thử thách tiếp theo!

Nếu bạn có bất kỳ vấn đề gì, hãy thảo luận tại nhóm NEAR Việt Nam Telegram tại đây: https://t.me/nearvietnamofficial hoặc nhóm Discord Stake Wars 3 của NEAR: https://discord.gg/kAqsVEU7dn

Bài hướng dẫn chạy node NEAR cho stake wars này theo sát những thử thách của NEAR tại đây:

https://github.com/near/stakewars-iii/tree/main/challenges

Đừng quên để lại comment hoặc câu hỏi ở dưới bài viết này hoặc tại NEAR Việt Nam!

Cộng đồng Hệ sinh thái NEAR tại Việt Nam

0 0 đánh giá
Article Rating