Avalanche Üzerinde Token Oluşturma Rehberi
Bu Rehberde Avalanche üzerinde nasıl sabit arzlı(Fixed Cap) bir token oluşturabileceğimizi göreceğiz. Sabit arzlı bir token oluştururken dikkat etmemiz gereken en önemli konu token adetidir. Token ilk üretimde üretildikten sonra tekrar üretilemez. Bir sonraki makalede İstenildiği zamanda token adetini artırabileceğimiz değişken arzlı token üretiminide ele alacağız.
Gereksinimler
Avalanche Ağına bağlı bir node’a ihtiyacımız var. Bunun için Avalanache Başlangıç Rehberinden yararlanabilirsiniz. Node’un validator olması gerekmez. Node üzerinde kullanıcı ve bu kullanıcının sahip olduğu bir X-Chain cüzdanına ihtiyacımız var. Eğer daha önce kullanıcı ve cüzdan oluşturduysanız bu adımları atlayabilirsiniz.
İşlemleri testnet’de yapmak istiyorsak nodu’umuzu Fuji testnet’e bağlayabiliriz. Bunun için node’u çalıştırırken aşağıdaki gibi parametre olarak network ID vermemiz yeterli olacaktır.
./avalanchego --network-id=fuji
veya nohup ile çalıştırmak için aşağıdaki komutu kullanabiliriz.
nohup ./avalanchego --network-id=fuji &
Kullanıcı Oluşturma
keystore.createUser metodu ile bir kullanıcı oluşturuyoruz. Kullanıcı adı ve şifre bölümünü değiştirmeyi unutmayın.
curl -X POST --data '{"jsonrpc":"2.0","id" :1,"method" :"keystore.createUser","params" :{"username":"selim","password":"lahmacun"}}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/keystore
username
vepassword
en fazla 1024 karakter içerebilir.password
çok zayıf olursa hata verecektir.password
en az 8 karakter içermelidir. İsteğe bağlı olarak büyük, küçük harf, sembol ve rakam içerebilir.
Aşağıdaki gibi bir cevap geldiyse işlem başarılıdır.
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"success":true
}
}
Adres Oluşturma
Şimdi bu kullanıcıya bir adet X-Chain cüzdan adresi oluşturmalıyız.
avm.createAddress metodunu kullanarak kullanıcımızın kontrol ettiği bir cüzdan oluşturacağız.
curl -X POST --data '{
"jsonrpc": "2.0",
"method": "avm.createAddress",
"params": {
"username": "selim",
"password": "lahmacun"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
Aşağıdaki gibi bize cevap olarak bir adres verilirse işlem başarılı demektir.
{"jsonrpc": "2.0","result": {"address": "X-avax12c6n252g5v3w6a6v69f0mnnzwr77jxzr3q3u7d"},"id": 1}
Artık Kullanıcı hesabımız ve cüzdan adresimiz olduğuna göre token oluşturma işlemine geçebiliriz.
Token Oluşturma
İşlem ücretini ödemek için bu cüzdan adresini fonlamamız gerek. Eğer testnetde bu işlemi yapıyorsanız Faucet üzerinden test tokenı talep edebilirsiniz.
Create Asset işlemi için 0.01 AVAX
Send işlemi için 0.001 AVAX İşlem ücreti ödenmelidir.
avm.createFixedCapAsset metodunu kullanacağız.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" : 1,
"method" :"avm.createFixedCapAsset",
"params" :{
"name": "Apricot",
"symbol":"APCT",
"denomination": 0,
"initialHolders": [
{
"address": "X-avax10pvk9anjqrjfv2xudkdptza654695uwc8ecyg5",
"amount": 10000000
}
],
"from":["X-avax1s65kep4smpr9cnf6uh9cuuud4ndm2z4jguj3gp"],
"changeAddr":"X-avax1turszjwn05lflpewurw96rfrd3h6x8flgs5uf8",
"username":"BURAYA USERNAME GELECEK",
"password":"BURAYA PASSWORD GELECEK"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
name
Oluşturacağımız token’ın ismidir. Benzersiz olması gerekmez.symbol
Oluşturacağımız token’ın sembolüdür. 0-4 karakter arasında olabilir. Benzersiz olması gerekmez.denomination
bu token’ın cüzdanda kullanıcı tarafından nasıl görüntüleneceğini belirler. Değer 0 ise, bu token’ın 100 birimi 100 olarak görüntülenir. Değer 1 ise, bu token’ın 100 birimi 10.0 olarak görüntülenir.- Bu işlem için Avalanche ağında bir işlem ücreti ödenmelidir.
username
vepassword
bilgileri girilen kullanıcı bu işlem ücretini öder. initialHolders
kısmında bulunan adresler token’ın oluşturulacağı Genesis adreslerdir.from
Bu işlem için kullanmak istediğiniz adres. Birden fazla adres varsa hangisini kullanmak istediğinizi seçebilirsiniz. Biz az önce oluşturduğumuz adresi kullanacağız.changeAddr
boş bırakılabilir. Bir değişiklik olursa token veya ödenen fee’nin geri ödeneceği adrestir. Boş bırakılırsa otomatik olarak işlemi yapan kullanıcının adresi kullanılır.
Aşağıdaki gibi bir cevap geldiyse işlem başarılı demektir.
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"assetID":"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1",
"changeAddr":"X-avax1turszjwn05lflpewurw96rfrd3h6x8flgs5uf8"
}
}
AssetID Oluşturduğumuz token’ın kimliğidir diyebiliriz. Göndermek istediğimiz zaman bu bilgiye ihtiyacımız olacağı için bir yere not etmekte fayda var.
Şimdi avm.getBalance metodunu kullanarak bakiyeyi kontrol edelim.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.getBalance",
"params" :{
"address":"X-avax10pvk9anjqrjfv2xudkdptza654695uwc8ecyg5",
"assetID":"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
Adress kısmına kullandığımız adresi yazıyoruz. AssetID kısmına’da az önce bize verilen AssetID’yi yazıyoruz.
Aşağıdaki gibi bir cevap geldiyse token başarıyla oluşturulmuş demektir.
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"balance":10000000
}
}
Tokenı Transfer Etme
avm.send metodunu kullanarak token gönderme işlemi yapabiliriz. Gerekli bölümleri doldurmayı unutmayın.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.send",
"params" :{
"username":"BURAYA USERNAME GELECEK",
"password":"BURAYA PASSWORD GELECEK",
"assetID" :"BURAYA ASSETID GELECEK",
"amount" :100,
"to" :"X-avax1t8sl0knfzly3t3sherctxwezy533ega3sxww2k"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
Amount kısmına göndermek istediğiniz tutarı girmelisiniz. To ise göndermek istediğiniz adres olmalı. Bu işlem başarılı olursa cevap olarak bir txID verecektir. Eğer istersek avm.getTxStatus metodu ile işlemin durumunu kontrol edebiliriz.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.getTxStatus",
"params" :{
"txID":"2EAgR1YbsaJrwFiU4DpwjUfTLkt97WrjQYYNQny13AheewnxSR"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
txID kısmına size verilen txID yazılmalıdır.
İşlem başarılıysa cevap aşağıdaki gibi olacaktır. İşlem bitmediyse Pending yazabilir.
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"status":"Accepted"
}
}
İşlemler bu kadar. Artık sizinde Avalanche ağında altcoin’iniz olmuş oldu.
Okuduğunuz için teşekkürler!
Beni Twiter’dan takip edebilir ve sorularınız için Avalanche Türkçe Telegram kanalına katılabilirsiniz.