AVA–Denali Testnet Kurulum Rehberi

Muhammet Selim Ferah
7 min readJun 2, 2020

--

Kısaca Ne Yapacağız?

Ava-Denali testnet için önce bir node kuracağız. Bu node’u kurmak için bir sunucuya ihtiyacımız var. Bir süre ücretsiz kullanım hakkı vermesi dolayısıyla bu rehberde Google Cloud üzerinden sunucu alacağız. Node’umuzu kurduktan sonra ağ üzerinde Validator olmak için Ava Faucet’den X-Chain Cüzdan adresimize nAVA (nano-AVA) alacağız. Bu aldığımız nAVA’yı stake edebilmek için oluşturacağımız P-Chain adresimize göndereceğiz. Ve sonrasında Ağ’da validator olacağız.

Peki Nedir Bu X-Chain ve P-Chain?

Ava Üzerinde default 3 adet blockchain var. Bunlar X-Chain(eXchange Chain), P-Chain(Platform Chain) ve C-Chain(Contract Chain).

X-Chain

X-Chain, akıllı dijital varlıklar oluşturmak ve işlem yapmak için merkezi olmayan bir platform görevi görür. X-Zincirinde işlem gören varlıklardan bir tanesi AVA.

P-Chain

AVA ağı hakkındaki meta verileri yöneten zincirdir. P-Chain API’sı istemcilerin alt ağlar oluşturmasına, alt ağlara validatorler eklemesine ve blok zincirleri oluşturmasına olanak tanır.(Biz de Ava Faucet’den X-Chain cüzdan adresimize talep edeceğimiz nAVA’larımızı validator olabilmek için P-Chain üzerinde oluşturacağımız cüzdanımıza yollayacağız.)

C-Chain

C-Chain, Avalanche tarafından desteklenen Ethereum Sanal Makinesinin bir örneğidir. C-Chain üzerinde akıllı sözleşmeler yapılabilir ve C-Chain’in API’sını kullanarak Ethereum üzerinde yapılabilen her şey burda yapılabilir.

Kurulum İçin Gereksinimler

  • Ubuntu 18.04 veya 20.04
  • OSX Catalina veya daha üst sürümler

Minimum Donanım Gereksinimleri

  • CPU: 2 GHz
  • RAM: 3 GB
  • Storage: 250 MB boş alan

Önerilen Donanım Gereksinimleri

  • CPU: > 2 GHz
  • RAM: > 3 GB
  • Storage: > 5 GB SSD’de boş alan

Kurulum

Öncekikle buradan Google Cloud üzerinde VM (sanal makine) kurulumunu yapabilirsiniz. Boot disk bölümünü Ubuntu 18.4 LTS olarak seçmeyi unutmayın.

Sanal makinemizi kurduktan sonra Sanal makine örnekleri sayfasına gidin ve bağlanmak istediğiniz sanal makine örneğinin bulunduğu satırdaki SSH’ye tıklayın.

Artık Sanal makine örneğimizle etkileşim kurmak için bir terminal penceremiz var. Bütün işimiz bu terminal penceresi ile olacak.

SSH’e Tıkladıktan sonra aşağıdaki gibi bir terminal açılmış olmalı.

Şimdi Komutlarımızı Girmeye Başlayalım

Komutları sırasıyla ve tek tek yapıştırıyoruz ve enter’a basıyoruz.

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

./ava

Üsteki komutlar ile En son Denali versiyonunu indirdik ve gecko-0.5.0 isimli bir klasörde indirdiğimiz dosyayı açtık. cd ile başlayan komutla klasörün içine girdik.(cd: Change Drictory. Bu komutla klasörler arasında geçiş yapabiliriz.) ./ava komutu ile node’umuzu başlattık. Evet Node’umuz çalışıyor şuan. Aşağıda ki gibi bir görüntü olmalı.

Validator Olmak

AVA ağında doğrulayıcı olmak için öncelikle AVA’yı platforma yatırmak(P-Chain) gerekiyor. Denali için minimum stake miktarı 10.000 nAVA’dır (nano-AVA). Bu miktar Mainnet’tekiyle aynı olamayacak.

Adım 1 — Kullanıcı ve Adresler Oluşturma

Öncelikle Node’u calıştırdığımız pencereyi kapatmadan(Kapatırsak node’da kapanır. Makalenin sonunda bunun için bir komut vereceğim) sanal makine örneklerim kısmından SSH’e tıklayarak yeni bir terminal penceresi açıyoruz ve komutları yapıştırmaya başlıyoruz.

Burdan sonra kullanacağımız komutları bir text editor’e yapıştırıp düzenlemelisiniz. Dikkat etmeniz gereken nokta text editor’ler bazen saçma sapan boşluklar bırakabiliyor ve alacağınız hataların büyük bölümü gözden kaçan bu boşluklardan dolayı. Microsoft Word kullanmanızı tavsiye ediyorum. Çünkü Aşağıda ki resimde gördüğümüz “Tümünü Göster” butonu boşlukları görmemize yarayan sekme işaretlerini gösterme veya gizleme işlevini gerçekleştiriyor.

Doğrulayıcı olabilmek için bir kullanıcı oluşturacağız. Aşağıdaki komut, belirlediğimiz kullanıcı adı ve şifreyi içeren bir kullanıcı oluşturur.

curl -X POST --data '{
"jsonrpc": "2.0",
"id": 1,
"method": "keystore.createUser",
"params": {
"username": "YOUR USERNAME",
"password": "YOUR PASSWORD"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/keystore

Artık bir hesabımız olduğuna göre, X-Chain üzerinde bir adres oluşturmamız gerekiyor. Bu adres Faucet’den AVA alacak. Aşağıdaki avm.createAddress komutu ile X-Chain üzerinde cüzdan oluşturuyoruz.

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :2,
"method" :"avm.createAddress",
"params" :{
"username": "YOUR USERNAME",
"password": "YOUR PASSWORD"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

aşağıda ki gibi bir sonuç döndürecektir. Verilen adresi bir kenara not almayı unutmayın. birazdan faucet’den bu X-Chain adresine nAVA talep edeceğiz

{
"jsonrpc": "2.0",
"result": {
"address": "YOUR X-CHAIN ADDRESS"
},
"id": 1
}

Şimdi aşağıda ki platform.createAccount komutu ile P-Chain üzerinde hesap oluşturalım.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.createAccount",
"params": {
"username": "YOUR USERNAME",
"password": "YOUR PASSWORD"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Bu komut aşağıda gördüğünüz gibi P-Chain adresimizi döndürür. Daha sonraki adımlarda kullanacağımız için bunu da not etmeliyiz.

{
"jsonrpc": "2.0",
"result": {
"address": "YOUR P-CHAIN ADDRESS"
},
"id": 1
}

Artık X-Chain üzerinde nAVA talep edeceğimiz bir cüzdana ve onları gönderip stake edeceğimiz P-Chain üzerinde bir cüzdana sahibiz. Şimdi sıra nAVA almak.

Faucet’den nAVA Almak

AVA Testnet Faucet Adresine gidiyoruz. Aşağıda gördüğünüz gibi Adres kısmına kendi X-Chain adresimizi yazıyoruz ve insan olduğumuzu onayladıktan sonra 20 bin nAVA istiyoruz.

Birkaç saniye içerisinde nAVa’lar hesabımıza geçmiş olmalı. Aşağıda ki komut ile hesabımızı kontrol ediyoruz. YOUR X-CHAIN ADDRESS HERE Kısmına X-Chain adresinizi yazmayı unutmayın.

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :7,
"method" :"avm.getBalance",
"params" :{
"address":"YOUR X-CHAIN ADDRESS HERE",
"assetID" :"AVA"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

nAVA’mızı aldığımızı doğrulayan aşağıdaki yanıtı göreceğiz.

{
"jsonrpc":"2.0",
"id" :2,
"result" :{
"balance":20000
}
}

P-Chain’e gönderme

Evet artık 20 bin nAVA sahibiyiz. Şimdi Stake etmek için bu avaları P-Chain adresimize göndermeliyiz. En az 10 bin nAVA gerek stake işlemi için. Aşağıda ki avm.exportAVA komutu ile 10 bin nAVA’yı P-Chain adresimize göndereceğiz. YOUR ile başlayan kısımlara kendi bilgilerinizi girmeyi unutmayın.

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.exportAVA",
"params" :{
"username": "YOUR USERNAME",
"password": "YOUR PASSWORD",
"to":"YOUR PLATFORM ADDRESS HERE",
"amount": 10000
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

Bu komut bir TxID döndürür. Bu TxID’yi saklamamız gerekmiyor.

Bir sonraki adım, P-Chain’de bu gönderimi kabul etmek. Bunu yapmak için aşağıda ki platform.importAVA komutunu kullanacağız.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.importAVA",
"params": {
"username": "YOUR USERNAME",
"password": "YOUR PASSWORD",
"to":"YOUR PLATFORM ADDRESS HERE",
"payerNonce":1
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

Bu komut aşağıda kine benzer bir işlemi temsil eden string döndürür.

{
"jsonrpc": "2.0",
"result": {
"tx": "1117xBwcr5fo1Ch4umyzjYgnuoFhSwBHdMCam2wRe8SxcJJvQRKSmufXM8aSqKaDmX4TjvzPaUbSn33TAQsbZDhzcHEGviuthncY5VQfUJogyMoFGXUtu3M8NbwNhrYtmSRkFdmN4w933janKvJYKNnsDMvMkmasxrFj8fQxE6Ej8eyU2Jqj2gnTxU2WD3NusFNKmPfgJs8DRCWgYyJVodnGvT43hovggVaWHHD8yYi9WJ64pLCvtCcEYkQeEeA5NE8eTxPtWJrwSMTciHHVdHMpxdVAY6Ptr2rMcYSacr8TZzw59XJfbQT4R6DCsHYQAPJAUfDNeX2JuiBk9xonfKmGcJcGXwdJZ3QrvHHHfHCeuxqS13AfU"
},
"id": 1
}

Bu tx’i alıp aşağıda ki platform.issueTx komutunun THE ISSUE TRANSFER TX HERE kısmına yapıştırıp gönderiyoruz.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.issueTx",
"params": {
"tx":"THE ISSUE TRANSFER TX HERE"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

P-Chain, Denali test ağında validator olarak pay almak ve katılmak için yeterli nAVA’ya(10 bin) sahip olunmalıdır. Bunu doğrulamak için aşağıdaki platform.getAccount komutu ile bakiyeyi doğruluyoruz. YOUR PLATFORM ADDRESS HERE kısmına kendi P-Chain adresinizi yazmayı unutmayın.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getAccount",
"params":{
"address":"YOUR PLATFORM ADDRESS HERE"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

Validation

Artık P-Chain’de fonlarımız olduğuna göre, ağda onaylayıcı(Validator) olmak için kaydolmaya hazırız. Her node’un, ağdaki node’u benzersiz olarak tanımlamak için kullanılan bir node id’si vardır. Doğrulayıcı olabilmek için, bu node id’yi işi yapan node olarak taahhüt etmemiz gerekir. Şimdi nodeID’imizi alalım. Node Id’yi bir kenara not almayı unutmayın.

Aşağıda ki admin.getNodeID komutunu çalıştırıyoruz.

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

Bir sonraki adım platform.addDefaultSubnetValidator komutu ile node’umuzu ağa ekleyen bir işlem oluşturmaktır. Aşağıdaki örnekte, 15 dakikalık bir başlangıç ​​zamanı koyuyoruz ve 15 Haziran’da 23:59 (GMT) itibarıyla sona erdiyoruz.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.addDefaultSubnetValidator",
"params": {
"id":"YOUR NODEID HERE",
"payerNonce":2,
"destination":"YOUR PLATFORM ADDRESS HERE",
"startTime":'$(date --date="15 minutes" +%s)',
"endTime":1592265599,
"stakeAmount":10000
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Bu komut aşağıda gördüğünüz gibi node’umuzu Denali ağı için doğrulayıcılar listesine ekleyen imzasız bir tx döndürür.

"jsonrpc":"2.0",
"id" :1,
"result" :{
"unsignedTx": "1115K3jV5Yxr145wi6kEYpN1nPz3GEBkzG8mpF2s2959VsR54YGenLJrgdg3UEE7vFPNDE5n3Cq9Vs71HEjUUoVSyrt9Z3X7M5sKLCX5WScTcQocxjnXfFowZxFe4uH8iJU7jnCZgeKK5bWsfnWy2b9PbCQMN2uNLvwyKRp4ZxcgRptkuXRMCKHfhbHVKBYmr5e2VbBBht19be57uFUP5yVdMxKnxecs"
}
}

Bu unsigned transaction’ı kopyalıyoruz ve aşağıdaki platform.sign komutunda yerine yazıyoruz. YOUR ile başlayan yerleri kendi bilgilerinizle doldurmayı unutmayın.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.sign",
"params": {
"username": "YOUR USERNAME HERE",
"password": "YOUR PASSWORD HERE",
"tx":"THE VALIDATION UNSIGNED TX HERE",
"signer":"YOUR PLATFORM ADDRESS HERE"
},
"id": 2
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Aşağıda ki gibi bir yanıt göreceksiniz.

{
"jsonrpc": "2.0",
"result": {
"Tx": "111Bit5JNASbJyTLrd2kWkYRoc96swEWoWdmEhuGAFK3rCAyTnTzomuFwgx1SCUdUE71KbtXPnqj93KGr3CeftpPN37kVyqBaAQ5xaDjr7wVBTUYi9iV7kYJnHF61yovViJF74mJJy7WWQKeRMDRTiPuii5gsd11gtNahCCsKbm9seJtk2h1wAPZn9M1eL84CGVPnLUiLP"
},
"id": 1
}

Şimdi bu imzalanmış işlemi alıp platform.issueTx komutu ile Denali ağında doğrulayıcı olmak için P-Chain’e gönderceğiz.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.issueTx",
"params": {
"tx":"YOUR VALIDATION SIGNED TX HERE"
},
"id": 3
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

İşte bu kadar. Kendimizi şimdi bekleyen doğrulayıcılar listesinde görmeliyiz ve 15 dakika içinde geçerli doğrulayıcılar listesinde olacağız. Aşağıda ki komut ile doğrulayıcıları görebiliriz.

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
curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getCurrentValidators",
"params": {},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

https://explorer.ava.network adresinden, validator kısmından node id’miz ile kontrol edebiliriz.

Node’u Arka Planda Çalıştırma

Şimdi Makalenin başında bahsettiğim Node’u arka planda çalıştırma komutuna gelelim. Bu konuda birden çok yol var. Ben bir komut vereceğim. Daha farklı ve sağlıklı yöntemler içinde aşağıya kaynak bırakacağım.

ilk açtığımız(./ava ile node’u çalıştırdığımız) pencereye geçiyor ve ctrl+c tuş kombinasyonu ile node’u durduruyoruz. Daha sonra nohup ./ava & komutu ile node’u başlatıyoruz. Bu komut “nohup: ignoring input and appending output to ‘nohup.out’” şeklinde bir çıktı veriyor. Artık terminal pencerelerini kapatabilirsiniz.

Diğer arka planda çalıştırma yöntemleri için bu makaleye göz atabilirsiniz.

Okuduğunuz için teşekkürler!

Ava-Türkçe telegram kanalına katılabilir, sorularınızı sorabilirsiniz.

Beni twiter’dan takip edebilirsiniz.

Yararlandığım kaynaklar

https://medium.com/avalabs/how-to-join-avas-denali-test-network-9bbfb353207b

https://www.1kredi.net/ava-borealis-golang-1-13-ve-gecko-kurulumu-google-cloud-platform/

--

--