BAĞ Sistemindeki Özel Ethereum Test Ağına Katılım Süreci

Mining’e dayanan Proof of Work (PoW) veya kullanıcıların coinlerini bir cüzdan içinde tuttukları Proof of Stake (PoS) algoritmalarına göre, Proof of Authority (PoA) çok az blokzincir projesinde bulunan ve diğerlerinden farklı bir algoritmadır. Hızlı transaction işleme sağlar.

PoA tabanlı özel ethereum kurulum adımları aşağıda anlatılmaktadır.

Adım-0 Linux (Ubuntu 18.04 LTS) Geth yüklenmesi

Öncelikle, test ağının başarılı bir şekilde aktive edilmesi için ilk adım olarak makinenize geth kurulumu yapmanız gerekmektedir. Aşağıdaki komutları sırasıyla çalıştırarak Linux makinenize geth‘i başarılı bir şekilde yükleyebilirsiniz. Geth’i resmi olarak desteklendiği için Ubuntu üzerine yüklemenizi tavsiye ederiz.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum

Adım-1 Katılım Talebi ve Konfigürasyon dosyalarının BİLGEM’den temin edilmesi

Yeni node hesabınız, şifreniz ve genesis dosyası, TÜBİTAK tarafından oluşturulup size mail yoluyla iletilecektir. Bu bilgileri almak için katılım isteğinizi, bag.yonetici@gmail.com veya nevzat.ozcandan@tubitak.gov.tr adresine mail yoluyla gönderiniz.

Adım-2 Node Home dizini oluşturun

mkdir YOUR-NODE-HOME

Adım-3 Hesabınızı oluşturun

$ geth –datadir YOUR-NODE-HOME/ accountnew

Bu komut sizden, account dosyasını korumak için gerekli bir parola ister. Sonuç olarak sizin düğümün adresini ekrana yazar.

Bu parolayı, sonraki adımları pratikleştirmek için YOUR-NODE-HOME/password.txt isimli bir dosyanın içine de kaydedin.

Adım-4 Genesis dosyasını indirin

BAĞ DEPO sunucunda bulunan genesis dosyasını https://bag.org.tr/dosya/index.php/f/5100 adresinden indirin (login olarak)

Adım-5 Verilen genesis dosyası (genesis.json ) ile blokzincir ağını kurmak

Nodelar arasında senkronizsyonu sağlamak için tüm kullanıcıların aynı genesis dosyasını başlatması gerekmektedir. Node’u ilklendirmeniz gerekmektedir.

geth –datadir YOUR-NODE-HOME init baggenesis.json

Adım-6 Node’u başlatmak

Aşağıdaki örnek komutu çalıştırmadan önce lütfen parametreleri kontrol ediniz ve node’unuzu aktive etmek için gerekli değişiklikleri sağlayınız. (Node dosyanız, account adresiniz, şifre dosyanız vb.)

geth –datadir YOUR-NODE-HOME/ –syncmode ‘full’ -port 30311 –rpc –rpcaddr ‘localhost’ –rpcport 8501 –rpcapi ‘personal,db,eth,net,web3,txpool,miner’ –networkid 2254 –gasprice ‘1’ -unlock ‘YOUR-ACCOUNT-ADDRESS‘ –password YOUR-NODE-HOME/password.txt –mine

  • Not:üstteki komutta, unlock önünde tek çizgi, diğerleri çift çizgi olacak şekilde kullanılmalıdır.

Adım-7 Node’unuzu sistemdeki başka node’larla peer olarak bağlamak

Geth javascript console’a geçmek için aşağıdaki örnek komutu kullanabiliriz.

geth attach YOUR-NODE-HOME/geth.ipc

Başarılı bir şekilde console’a geçiş yaptıktan sonra, aşağıdaki komutu çalıştırıp networke dahil olabilirsiniz. Aşağıdaki komutta BİLGEM Ethereum Node’larından birisinin adresi bulunuyor. Bu adresi veya BAĞ portal’de ilan edilmiş herhangi bir veya daha çok başka node adresini de kullanabilirsiniz.

admin.addPeer("enode://4dbd77a6ace676e59021e373322e9ddc233d8d35204f7010a4f455bea326c0d55877679b934c3ab3ff36bda1998f353d1b39bb192fa2e87e50a8b3001480bb25@193.140.88.23:30311")

Daha sonra, izleyen bölümdeki komutlarla, console üzerinden, admin.peers komutu ile eklenmiş olan peer’ları kontrol etmeyi unutmayınız.

Kurulmuş Node’u yönetmek

Node ile etkileşmek için yöntemlerden birisi olan Geth javascript consoluna geçmek için aşağıdaki örnek komutu kullanabiliriz.

geth attach YOUR-NODE-HOME/geth.ipc

Geth javascript consoluna geçtikten sonra aşağıdaki örnek işlemleri deneyebilirsiniz.

> eth.coinbase

“0x9e5f0fd4c406ae41a14090328ac307100e39d6e6”

Eğer yeni bir account oluşturmak ve kullanmak isterseniz, bu accaount’u unlock etmek gerekebilir. Bu noktada dikkatli olmak gerekmektedir. Yeni account oluşturmak ve unlock etmek için aşağıdaki örnek komutları kullanabilirsiniz.

> personal.newAccount(“yourpassword”)

“0x7c02465168012418dd44589e76325a9126cb8516”
> personal.unlockAccount(eth.accounts[1],”yourpassword”,9999999)

true

Hesabınızdaki balansı kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

> eth.getBalance(eth.coinbase)

9.04625697166532776746648320380374280103671755200316906558262375061821325312e+74

Veya yeni accountunuzun balansını görmek isterseniz:

> eth.getBalance(eth.accounts[1])

0

Aynı node üzerindeki hesaplarınız arasında ether transferi yapmak için aşağıdaki komutu deneyebilirsiniz.

>web3.eth.sendTransaction({from:eth.coinbase,to:eth.accounts[1],value:web3.toWei(300,"ether")})

"0x8e1919f22e87b59c6937868c7a17fc9556b9de2a85f33bd90a61b9113c9d1ab3"
En son blok numarasını görmek için:
>eth.blockNumber

183