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 …
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!
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.
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
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
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
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
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.
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.
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ànhsecret_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
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
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
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
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
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!
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
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
Ở 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
- 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
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!
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
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.
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.
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> bạn lấy commit hash mới nhất tại: https://github.com/near/stakewars-iii/blob/main/commit.md
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
- Telegram Aurora Việt Nam
- Telegram NEAR Việt Nam
- Telegram DeFi NEAR Việt Nam
- Telegram NFT và Gaming NEAR Việt Nam
- Telegram Octopus Network Việt Nam
- Facebook Fanpage
- Facebook Group