Mainnet öncesi yapılan en kapsamlı, katılımın üst seviye de olduğu Denali test ağına hoşgeldiniz.
Önceki günlerde Denali testnet çalışmalarıma katılım için teşvik programı başlatıldı ve yoğun ilgi nedeniyle maalesef belirli kişilere katılım için onay e-maili gönderildi. Eğer bekleme listesine kayıt olmak isterseniz yine bu sayfadan kayıt olabilirsiniz.
01.06.2020 tarihi itibariyle 3 aşamadan oluşan 15 günlük test çalışmalarına başlandı ve testnet üzerindeki validator sayısını buradan görebilirsiniz.
Denali sürümü, Google Cloud Sanal Makine üzerinde kurulu Ubuntu 18.04 LTS ve 20.04 LTS üzerinde ayrı ayrı test edilmiştir.
Cascade sürümünde olduğu gibi ubuntu sistem güncellemesi ve golang kurulumu yapmadan direkt gecko’nun güncel sürümünü yükleyerek işe başlayacağız. İnanın herşey çok daha sade ve kolay. Karıştırılacak hiçbirşey şok.
Şimdi aşağıdaki komut ile işe başlayalım.
1 2 3 |
wget https://github.com/ava-labs/gecko/releases/download/v0.5.0/gecko-linux-0.5.0.tar.gz tar -xvf gecko-linux-0.5.0.tar.gz cd gecko-0.5.0 |
Sıra geldi node çalıştırmaya. Öncelikle node’u çalıştırıp sorun olup olmadığına bakacağız.
1 |
./ava |
Çok kısa bir bekleme sonrası ekranda çok fazla mesajın yer aldığını görebilirsiniz. Endişe etmeyin. Doğru yerde olduğunuzdan emin olmak için sayfayı yukarı kaydırıp bakarsanız GECKO mesajını görürsünüz.
Ön yükleme işleminin tamamlanması yaklaşık 10-15 dk sürebiliyor. İsterseniz bu süreyi bekleyebilirsiniz. Ama ben çok fazla beklemedim ve cntr+c ile node ‘u kill ettim.
Şimdi node’u arka planda çalıştırmak için aşağıdaki komutu çalıştırın.
1 |
nohup ./ava & |
Komutu yazdıktan sonra aşağıdaki mesaj görüntülenecektir. Node arka planda çalışmaya başlamıştır.
nohup: ignoring input and appending output to 'nohup.out'
Kullanıcı ve Adres Oluşturma
Kullanıcı oluşturma
Validator olabilmek için öncelikle bir kullanıcı oluşturmamız gerekiyor.
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc": "2.0", "id": 1, "method": "keystore.createUser", "params": { "username": "Kullanıcı Adı", "password": "Şifre" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/keystore |
Yanıt aşağıdaki şekilde olmalıdır.
{
"jsonrpc":"2.0",
"result":{"success":true},
"id":1
}
X-Chain Adres Oluşturma
Şimdi de yukarıda belirlediğimiz kullanıcı adı ve şifre ile X-Chain adresi oluşturacağız. Faucet üzerinden AVA token alabilmek için bu adrese ihtiyacımız var.
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :2, "method" :"avm.createAddress", "params" :{ "username": "Kullanıcı Adı", "password": "Şifre" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
“404 page not found” hatası alırsanız node’un önyüklemesi tamamlanmamış demektir. Lütfen 1-2 dk bekleyip aynı komutu tekrar çalıştırın. Eğer sorun yok ise aşağıdaki şekilde bir yanıt almış olmalısınız. Lütfen X-Chain adresinizi not edin.
{
"jsonrpc": "2.0",
"result": {
"address": "X-95bYUJndgiWqxc6UA2kcZb8jLv5AbpapM"
},
"id": 1
}
P-Chain Adres Oluşturma
Şimdi de, yukarıda belirlediğimiz kullanıcı adı ve şifresi ile P-Chain adresi oluşturacağız.
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.createAccount", "params": { "username": "Kullanıcı Adı", "password": "Şifre" }, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P |
Yanıt aşağıdaki şekilde olmalıdır. Lütfen P-Chain adresinizi not edin.
{
"jsonrpc": "2.0",
"result": {
"address": "ZY5xaJWKgFN1RzMNzDxEWX8Tif2xR6F4"
},
"id": 1
}
AVA Testnet Faucet ile X-Chain Adresine AVA Gönderme
AVA Testnet Faucet linkinde açılan sayfaya X-Chain adresimizi yazarak AVA gönderimi yapalım ve sonra da adresin bakiyesini kontrol edelim.
X-Chain Bakiye Kontrolü
1 2 3 4 5 6 7 8 9 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :7, "method" :"avm.getBalance", "params" :{ "address":"X-Chain Adresi", "assetID" :"AVA" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
Aldığınız yanıt aşağıdaki şekilde olmalıdır. Eğer birden fazla gönderim yaptıysanız bakiyenizi daha fazla görmelisiniz.
{
"jsonrpc":"2.0",
"id" :2,
"result" :{
"balance":20000
}
}
P-Chain Adresine AVA Gönderme
1 2 3 4 5 6 7 8 9 10 11 |
curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"avm.exportAVA", "params" :{ "username": "Kullanıcı Adı", "password": "Şifre", "to":"P-Chain Adresi", "amount": 10000 } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X |
Yanıtta TxID göreceksiniz. Denali’de bunu kullanmamız gerekmiyor. Diğer komut ile devam edelim.
Şimdi P-Chain adresine yapılan bu aktarımı kabul edeceğiz.
1 2 3 4 5 6 7 8 9 10 11 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.importAVA", "params": { "username": "Kullanıcı Adı", "password": "Şifre", "to":"P-Chain Adresi", "payerNonce":1 }, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P |
Yanıt aşağıdaki şekilde olmalıdır.
{
"jsonrpc": "2.0",
"result": {
"tx": "1117xBwcr8byBg35Kgzt2qa3QcyunGhtTpH3XMZ3thcSX8e23KFgfkTzWnpMGddhZxtUVrfNg82bjgG17rMVw4aDCNVb1sfzyHe7zNFk9KSFGU7g45sxGJdUfB7FHwHdagsdwRywQeaRSb2esMvaQeQC1uoPUaZUBhg6MFgFsTJW3bYuLySYy84tLBh5Bbpw1VaDFKyh4ZuD2aVZnP35a1FcitnA6UbKeeF3HtCCavMFX9mt87uUXrfU1MKs6sYiR68HhWdFw7xpYwBk3Us9YankoFBbDKkmhFcKJ2xax9PerQfDd8bhAsLFoZzsruiurXTqhHqVNSnKX84pQtQGPcVJjNVNkvMYbRAycytStT4VmYXjsPqq3"
},
"id": 1
}
Şimdi yukarıda yer alan tx’i kopyalayıp aşağıdaki komuta ekleyerek P-Chaine gönderimi tamamlayacağız.
1 2 3 4 5 6 7 8 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.issueTx", "params": { "tx":"tx buraya yazılmalıdır" }, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P |
Bu işlem sonrasında P-Chain adres bakiyesini kontrol etmemiz gerekiyor. Çünkü Validator olmak için P-Chain adresinde enaz 10000 AVA olmalıdır.
P-Chain Bakiye Kontrolü
1 2 3 4 5 6 7 8 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.getAccount", "params":{ "address":"P-Chain Adres" }, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P |
Aldığımız yanıtta 10000 ve üzeri bir miktar görüyor isek sorun yok.
{
"jsonrpc": "2.0",
"result": {
"address": "Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",
"nonce": "1",
"balance": "10000"
},
"id": 1
}
Node ID Almak
Ağ üzerinde her node benzersiz bir kimliğe sahiptir. Bu da nodeID ile mümkün olur.
1 2 3 4 5 6 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "admin.getNodeID", "params":{}, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/admin |
Yanıt aşağıdaki şekilde olmalıdır. Node ID’nizi not almalısınız.
{
"jsonrpc": "2.0",
"result": {
"nodeID": "QJk2BUtLpqc3GnDHaMEcmVj6SY5PQgpYw"
},
"id": 1
}
Node’un Başlangıç ve Bitiş Süresini Belirlemek
Bildiğiniz gibi testnet çalışmaları sırasında node’un 15 Haziran 2020 (dahil) tarihine kadar aktif kalması gerekiyor. Bu nedenle de başlangıç ve bitiş süresini bu tarihe göre ayarlıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.addDefaultSubnetValidator", "params": { "id":"Buraya nodeID Yazılmalıdır", "payerNonce":2, "destination":"Buraya P-Chain Adresi Yazılmalıdır", "startTime":'$(date --date="15 minutes" +%s)', "endTime":1592265599, "stakeAmount":10000 }, "id": 1 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P |
Yanıt aşağıdaki şekilde olmalıdır.
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"unsignedTx": "1112UK2GNhSpu7VB21N2cRQRDtCWxZ8gp84x1nQqnFhQQLrdsAtAay4PcQGF73kHWN49CxCmfiCvgBgtSsYEAuRny3xwxT2UPKr6jcTNeEe6k5V1HCbu6xjL8tLZq4FUw2cSCYTapt8MeGnJFjfJQPzJziMBfe9ZHGSoXKRP5QcGzVHJAWQqKtc7qrc6Cf54isCbuRt7gQmNnuRf"
}
}
Gördüğünüz gibi imzasız bir işlem döndürdü. Şimdi bu işlemi, imzalı işleme döndüreceğiz. unsignedTx kısmını aşağıdaki ilgili alana ekleyin.
1 2 3 4 5 6 7 8 9 10 11 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.sign", "params": { "username": "Kullanıcı Adı", "password": "Şifre", "tx":"unsignedTx Buraya Yazılmalıdır", "signer":"P-Chain Adresi" }, "id": 2 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P |
Yanıt aşağıdaki şekilde olmalıdır.
{
"jsonrpc": "2.0",
"result": {
"Tx": "1112UK2GNhSpu7VB21N2cRQRDtCWxZ8gp84x1nQqnFhQQLrdsAtAay4PcQGF73kHWN49CxCmfiCvgBgtSsYEAuRny3xwxT2UPKr6jcTNeEe6k5V1HEtQANRhePqYFbZQm2emnLbGZDWsK3RJ5sTDfkZsouFNLsourSrVmFkED9GLf8xyhixLWAd8Cg1PfBrk5hVb8EFywSeFStu4"
},
"id": 1
}
Denali testnet ağında validator olmak için, imzalanmış olan bu işlemi alıp P-Chain’e göndereceğiz.
1 2 3 4 5 6 7 8 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.issueTx", "params": { "tx":"1112UK2GNhSpu7VB21N2cRQRDtCWxZ8gp84x1nQqnFhQQLrdsAtAay4PcQGF73kHWN49CxCmfiCvgBgtSsYEAuRny3xwxT2UPKr6jcTNeEe6k5V1HEtQANRhePqYFbZQm2emnLbGZDWsK3RJ5sTDfkZsouFNLsourSrVmFkED9GLf8xyhixLWAd8Cg1PfBrk5hVb8EFywSeFStu4" }, "id": 3 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P |
Bekleyen Validador Listelesi
Şimdi son olarak bekleyen validator listesini kontrol edeceğiz.
1 2 3 4 5 6 |
curl -X POST --data '{ "jsonrpc": "2.0", "method": "platform.getPendingValidators", "params": {}, "id": 4 }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P |
Uzun bir liste çıkması halinde isterseniz https://explorer.ava.network/validators sayfasındaki Pending alanını kontrol ederek de node id nizi görebilirsiniz.
Çoğu arkadaşımızın kafasında “node’un çalışma sürelerini acaba yanlış mı yazdım”, ya da “node çalışmasını sonlanma zamanı nedir” gibi sorular var ise https://explorer.ava.network/subnets bağlantısındaki Validator sekmesini seçerek node’uzun hangi tarihte çalışmaya başlayıp ne zaman sonlanacağını kontrol edebilirsiniz.
Cascade Sürümünden Denali Sürümüne Geçiş
Daha önceki Cascade sürümünü güncelleyerek Denali sürümünü test etmek isteyenler için, Telegram grubumuzdan Erkan Efe hocamdan destek aldım. Ben bu komutları kullanarak eski kurulumlarımda güncelleme yaptım ve sorunsuz bir şekilde validator oldum. Hocama desteğinden dolayı yeniden teşekkür ederim.
1 2 3 4 5 6 |
cd src/github.com/ava-labs cd gecko git checkout -- keys/rootCA.srl; git merge --abort; git pull source ~/.profile ./scripts/build.sh nohup ./ava & |
Yukarıda da belirttiğim gibi herhangi bir soru ve sorununuz olduğunda Telegram Grubumuzda ve Discord kanalında sorabilirsiniz.
Gerek duyulabileğiniz diğer komutlar
- SSH ekranında NODE’un ne kadar süredir çalıştığını kontrol etmek için
ps -eo etime,args | grep ava
komutunu kullanabilirsiniz.
Makalemi sonuna kadar okuduğunuz için teşekkür ederim.