Avalanche Test Ağ üzerinde Subnet(Alt Ağ) Oluşturma

Muhammet Selim Ferah
2 min readAug 24, 2020

--

Subnet bir grup validatördür. Bir subnet bir dizi blok zincirini doğrular. Her blok zinciri, blok zinciri oluştururken belirtilen bir subnet tarafından doğrulanır. Subnet’ler blok zincirlerinin özel validatör gruplarına sahip olmasına izin verir. Bu avalanche üzerinde permissioned blockchain’ler oluşturulabileceği anlamına gelir.

Bir Subnet oluşturulduğunda, bir eşik(threshold) ve bir anahtar seti belirlenir.(Aslında anahtarların kendileri değil anahtarların adresleri belirlenir.) Bu subnet’e bir doğrulayıcı eklemek için, bu anahtarlardan threshold imzaları gereklidir. Bunlara subnet’in kontrol anahtarları diyoruz ve bir subnet’e bir doğrulayıcı ekleyen bir işlemde bir kontrol anahtarının imzasını bir kontrol imzası olarak adlandırıyoruz. Sonuç olarak, bir Alt Ağın üyeliği üzerinde kontrol sahibi olması.

Bu rehberde 2 kontrol anahtarı ve 2 eşiği olan yeni bir subnet oluşturacağız.

Kontrol Anahtarlarını Oluşturma

İlk önce 2 kontrol anahtarı oluşturalım. Bunu yapmak için platform.createAddress komutunu kullanıyoruz. Bu, yeni bir private key oluşturur ve onu bir kullanıcı için saklar.

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

Bu komut ilk kontrol anahtarını verir (Aslında ilk kontrol anahtarının adresini verir). Anahtar, az önce belirttiğimiz kullanıcı tarafından tutulur.

{
"jsonrpc": "2.0",
"result": {
"address": "P-avax1spnextuw2kfzeucj0haf0e4e08jd4499gn0zwg"
},
"id": 1
}

İkinci anahtarı oluşturalım:

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

Yanıt, az önce belirttiğimiz kullanıcı tarafından kontrol edilen ikinci kontrol anahtarını içerir:

{
"jsonrpc": "2.0",
"result": {
"address": "P-avax1zg5uhuwfrf5tv852zazmvm9cqratre588qm24z"
},
"id": 1
}

Subnet Oluşturma

Subnet oluşturmak için platform.createSubnet komutunu kullanıyoruz. Önemli bir nokta P-Chain hesabınızda en az 1000000 AVAX bulunmalı. Bunun için öncelikle X-Chain cüzdanımıza faucet üzerinden token almamız gerekiyor. Daha sonras aşağıdaki komutu kullanarak elimizdeki AVAX’ı P-chain’e göndermeliyiz.

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.exportAVAX",
"params" :{
"to":"YOUR P-CHAIN ADDRESS",
"amount": 2000000,
"username":"Username",
"password":"Password"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

Bu komut bir txID döndürecektir. Saklamanız gerekmez.

Şimdi aşağıdaki komut ile P-chain’e gönderdiğimiz AVAX’ları kabul edelim.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.importAVAX",
"params": {
"to":"P-avax1apzq2zt0uaaatum3wdz83u4z7dv4st7l5m5n2a",
"sourceChain":"X",
"username":"Username",
"password":"Password"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Bu komutta bir txID döndürecektir. Saklamanız gerekmez.

Bu işlemi kontrol anahtarı olmasını istediğimiz bütün cüzdanlara yapmalıyız.(Biz bu makalede 2 cüzdanı kontrol anahtarı olarak seçtik.)

Evet şimdi aşağıdaki komut ile subnet oluşturabiliriz.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.createSubnet",
"params": {
"controlKeys":[
"P-avax1spnextuw2kfzeucj0haf0e4e08jd4499gn0zwg",
"P-avax1zg5uhuwfrf5tv852zazmvm9cqratre588qm24z"
],
"threshold":2,
"username":"USERNAME GOES HERE",
"password":"PASSWORD GOES HERE"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Yanıt olarak bize TXID verir. Bu aynı zamanda yeni oluşturulan subnet’in kimliği(ID) olur.

{
"jsonrpc": "2.0",
"result": {
"txID": "3fbrm3z38NoDB4yMC3hg5pRvc72XqnAGiu7NgaEp1dwZ8AD9g"
},
"id": 1
}

İşlemi Doğrulamak

Mevcut tüm subnet’leri görmek için platform.getSubnets’i kullanabiliriz. Bu listede görünmesi birkaç dakika alabilir. Explorer’dan da kontrol edebilirsiniz.

{
"jsonrpc": "2.0",
"result": {
"subnets": [
{
"id": "3fbrm3z38NoDB4yMC3hg5pRvc72XqnAGiu7NgaEp1dwZ8AD9g",
"controlKeys": [
"KNjXsaA1sZsaKCD1cd85YXauDuxshTes2",
"Aiz4eEt5xv9t4NCnAWaQJFNz5ABqLtJkR"
],
"threshold": "2"
}
]
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

İşte bu kadar. Bir sonraki makalede subnet’imize validatörler ekleyeceğiz.

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

Sorularınız için Avalanche Türkçe telegram kanalına katılabilirsiniz.

Beni Twiterdan takip edebilirsiniz.

--

--