Near Stake Wars III için validator oluşturma işlemi adım adım anlatılmıştır. Yapılan görevler sonucunda 1 yıl kilitli olmak şartı ile 50000 adet Near token kazanma şansınız olacak.
Öncelikle şu adrese gidiyoruz https://wallet.shardnet.near.org daha sonradan görsellerdeki gibi cüzdan oluşturuyoruz.
Copy e basarak kelimeleri bir not defterine yapıştırıp kaydediyoruz. Bu bizim cüzdan adresimiz kelimeleri ve bunlar olmadan cüzdanımıza ulaşamayız. Kaybetmeyecek şekilde saklayın.
En son sağ üst tarafa tıklayarak ismimizin olduğu cüzdanı seçiyoruz ve cüzdan da test nearlarını görüyoruz. Cüzdan oluşturma işlemi bu kadardı.
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"
node -v
v18.x.x
npm -v
8.x.x
sudo npm install -g near-cli
Doğru ağı seçmek için her yeni kabuk başlatıldığında ortamın ayarlanması gerekir.
Ağlar:
-GuildNet -TestNet -Mainnet -Shardnet (Bu, Stake Wars için kullanacağımız ağdır)
export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
İlk kodla sıralamaya girmiş validatorleri ve durumlarını görebiliriz.
near proposals
İkinci kodla üretilen blok sayıları gibi ayrıntıları görebiliriz.
near validators current
Üçüncü kodla doğrulayıcılar arasına girecek olan nodeları görebiliriz.
near validators next
Kodu girdiğimizde ss'de ki gibi bir çıktı almalıyız.
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \
&& echo "Supported" \
|| echo "Not supported"
Güncelleme kodunu giriyoruz
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 cargo
Python pip yüklüyoruz
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
Alttaki kodu girdikten sonra
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Eğer ss'de ki gibi bir ekranla karşılaşırsanız y yapıp enterlayın
Daha sonra bu ekranda bir şeye basmadan enterlayın sonra yükleme işlemi başlayacak bitiğinde 2. ssde ki gibi ekran görünmeli.
Sırasıyla kodları girmeye devam ediyoruz.
source $HOME/.cargo/env
git clone https://github.com/near/nearcore
cd nearcore
git fetch
git checkout 0d7f272afabc00f4a076b1c89a70ffc62466efe9
cargo build -p neard --release --features shardnet
Yukarıda girdiğimiz son kodla birlikte yükleme işlemi biraz vakit alıyor. Bittikten sonra alttaki kod ile dizini yüklüyoruz ve görüntü ss'de ki gibi olmalı.nearcore kılasörünün içinde olduğunuzdan emin olun.
./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis
Kodlara devam ediyoruz.
wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json
Node çalıştırıyoruz.
cd ~/nearcore
./target/release/neard --home ~/.near run
Kırmızıyla işraretli olan yerin %100 olmasını bekliyorsunuz olduktan sonra Ctrl+c yapıp durduruyoruz logları.
near login
y yapınca alttaki ekranın gelmesi gerekiyor.
Link kopyalayıp cüzdanın açtığımız yere yapıştırıyoruz.
Yapıştırdığımızda ss'de ki gibi bir ekran gelmesi lazım ve sonraki butonuna basarak ilerliyoruz.
Onayla yapıp devam ediyoruz.
Şu şekilde bir ekranın gelmesi lazım.
Daha sonra node ekranına cüzdan adresinizi ss'deki gibi girip enterlamalısınız.
Pool oluşturma adımına geçiyoruz aşağıdaki kodla pool oluşturuyoruz. nakoturk0.factory.shardnet.near gibi. Burada nakoturk0 sizin vereceğiniz bir isim olmalı ve gerisi olduğpu gibi kalacak
near generate-key <pool_id>
Oluşturduktan sonra aşağıdaki kodu ss'deki gibi kendi verdiğiniz isme göre düzenleyip enter'a basıyorsunuz
cp ~/.near-credentials/shardnet/YOUR_WALLET.json ~/.near/validator_key.json
Terminale gidip aşağıdaki kodu giriyoruz.
target/release/neard run
İkinci ss'de Downloading bölümü %100 olana kadar bekliyoruz sonra Ctrl+C yapıp durduruyoruz.
Service oluşturuyoruz.
sudo nano /etc/systemd/system/neard.service
Bu kodla oluşturdukttan sonra aşağıdaki kodları olduğu gibi o ekrana yapıştırıp. Ctrl+x sonra y ye basıp enter'a basıyoru.
[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
Node Başlatmak
sudo systemctl enable neard
sudo systemctl start neard
Service de değişiklik yaparsanız aşaıdaki kode kullandıktan sonra startlayın.
systemctl daemon-reload
Kodu örneği ile birlikte yazdım. Kendinize göre düzenleme yaptıktan sonra kodu girince ss'de ki gibi bir sonuçla karşılaşmalısınız.
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
Örnek
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "nakoturk0", "owner_id": "nakoturk0.shardnet.near", "stake_public_key": "ed25519:9XhXJhLx7JKYsWemkteaNED7FwZRudxYM", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="nakoturk0.shardnet.near" --amount=250 --gas=300000000000000
Oluşturma işlemi bittikten sonra aşağıdaki linkte hesabınızı bulup yaptığınız işlemleri ve havuza yaptığınız stake miktarını görebilirsiniz -https://explorer.shardnet.near.org/accounts
Ek stake yapmak istersek aşağıdaki kodu kullanıyoruz
near call <staking_pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000
Unstake için aşağıdaki kodu kullanabilirsiniz.
near call <staking_pool_id> unstake '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000
Bütün coinleri unstake etmek için kullandığımız kod.
near call <staking_pool_id> unstake_all --accountId <accountId> --gas=300000000000000
Unstake yaptıktan 2-3 epoch sonra birinci kodla istediğimiz miktarı cüzdana 2. kodlada bütün coinleri cüzdana çekebiliriz.
near call <staking_pool_id> withdraw '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000
near call <staking_pool_id> withdraw_all --accountId <accountId> --gas=300000000000000
Staked Miktarı
near view <staking_pool_id> get_account_staked_balance '{"account_id": "<accountId>"}'
Unstaked Miktarı
near view <staking_pool_id> get_account_unstaked_balance '{"account_id": "<accountId>"}'
Cüzdana çekilebilir miktarın uygunluğunu görmek için aşağıdaki kodu kullanırız ve sonucun true çıkarmasını bekleriz.
near view <staking_pool_id> is_account_unstaked_balance_available '{"account_id": "<accountId>"}'
Loglar için
journalctl -n 100 -f -u neard | ccze -A
Düğüm sürümünüzü kontrol etmek
curl -s http://127.0.0.1:3030/status | jq .version
Delegeleri ve Stake'i Kontrol Etmek
near view <your pool>.factory.shardnet.near get_accounts '{"from_index": 0, "limit": 10}' --accountId <accountId>.shardnet.near
Doğrulayıcının atılıp atılmadığını görmek
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
Üretilen Blokları Kontrol Etmek
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.current_validators[] | select(.account_id | contains ("POOL_ID"))'
