BAĞ Hyperledger Indy Ağına Katılım

Hyperledger Indy Node Kurulumu

Docker image olarak kolayca Indy Node ayağa kaldımak mümkün. Bu şekilde kurulum için indy-sdk ve indy-dev git repository’lerine bakılabilir.

Ancak bu sayfada anlatılan yöntemde, bir makinaya Indy Node yazılımlarının manuel olarak adım adım kurulumu yapılmaktadır.

Ön koşullar

  • Bu ağa katılabilmek için bir Ubuntu 18.04 makina tahsis edilmesi gerekir.
  • Kurum dışından (Internet üzerinden) Bu makinanın 9701-9702 port aralığına erişimine izin verilmelidir
  • Bu makinadan, Internet üzerindeki makinaların 9701-9708 ve 11371 portlarına erişime izin verilmelidir
  • Portlarınızın dışarıdan erişilebilirliğini test etmek için bu siteyi kullanabilirsiniz

Kurulum

Indy Node yazılımı kurulum adımları aşağıda açıklanmıştır

  1. sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 68DB5E88
    • Timeout hatası alıyorsanız, 11371 portu izinli olmadığı için firewall sorununuz vardır. Bunun yerine aşağıdaki komutu çalıştırablirsiniz
    • sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys 68DB5E88
  2. sudo bash -c ‘echo “deb https://repo.sovrin.org/deb xenial stable ” >> /etc/apt/sources.list’
  3. sudo bash -c ‘echo “deb https://repo.sovrin.org/sdk/deb xenial stable ” >> /etc/apt/sources.list’
  4. sudo apt-get update
  5. sudo apt install python3-pip
  6. sudo apt-get install build-essential libsnappy-dev zlib1g-dev libbz2-dev libgflags-dev liblz4-dev
  7. git clone https://github.com/facebook/rocksdb.git
  8. cd rocksdb
  9. mkdir build && cd build
  10. sudo apt install cmake
  11. cmake ..
  12. make
  13. sudo make install INSTALL_PATH=/usr
  14. cd ..
  15. export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}${CPLUS_INCLUDE_PATH:+:}`pwd`/include/
  16. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}`pwd`/build/
  17. export LIBRARY_PATH=${LIBRARY_PATH}${LIBRARY_PATH:+:}`pwd`/build/
  18. sudo apt-get install python-virtualenv python-dev
  19. virtualenv pyrocks_test
  20. cd pyrocks_test
  21. . bin/activate
  22. sudo apt-get install liblz4-dev
  23. pip3 install python-rocksdb  
  24. sudo pip3 install indy-node
  25. sudo apt-get install libindy-crypto=0.4.5 (!!! Bir bugdan dolayı bu versiyonu kullanmanız gerekiyor)
  26. sudo -H pip3 install sha3 (Bu adım gerekmeyebilir)
  27. sudo –H pip3 install pysha3 (Bu adım gerekmeyebilir)
  28. sudo apt-get install indy-cli

Şimdi, konfigürasyon işlemlerine geçiyoruz

  1. Dizinler oluşturulur. createdirs.sh script çalıştırılır
    • Sayfanın sonundaki script çalıştırılır (. createdirs.sh)
    • (Not: Bu adım sadece pip ile yapılan kurulumlarda gereklidir.)
  2. cd /var/lib/indy/BLCIDN
  3. wget http://176.235.209.126/pool_transactions_genesis
  4. wget http://176.235.209.126/domain_transactions_genesis
  5. init_indy_keys –name NODE-ADINIZ –seed BELIRLEDİĞİNİZ-SEED-DEĞERİ –force
    • Bu adımda ekrana yazılan değerleri not edin (bls key ve diğerlerini)
  6. indy-cli
    • Komut çalıştırıldıktan sonra imleç indy komut satırı arayüzüne düşecektir
  7. İlgili poola bağlanmak için:
    • pool create BLCIDN gen_txn_file=/var/lib/indy/BLCIDN/pool_transactions_genesis
  8. Artık ağa bağlanılabilir
    • pool connect BLCIDN
  9. Ağa dahil olabilmek için DID oluşturulması gerekir. Önce bir cüzdan oluşturulur;
    • wallet create [CÜZDAN ADI] key=[CÜZDAN ICIN BELİRLENEN ANAHTAR DEĞERİ]
    • Anahtar değeri güvenli bir şekilde saklanmalıdır. Cüzdan üzerindeki verilerin güvenliği bu anahtar değeri ile sağlanmaktadır.
  10. Cüzdan açılır
    • wallet open [CÜZDAN ADI] key=[CÜZDAN ICIN BELIRLENEN KEY DEĞERİ] DID oluşturma işleminin gerçekleştirilebilmesi için cüzdan açılır.
  11. Cüzdan içinde DID oluşturulur,
    • did new seed=[ILGILI ROLÜN (STEWARD, TRUST_ANCHOR vs) VERİLECEĞİ DID İÇİN BELİRLENEN SEED DEĞERİ]
    • Ekrana yazılan DID ve VERKEY değerleri (~ile başlayan) not edilir
  12. DID ve VERKEY değerleri bag.yonetici@gmail.com adresine mail atılarak düğüm ekleme işleminin gerçekleştirilmesi talep edilir. Maile cevap beklenir.
    • Ledger’da sizin DID değerinizi için Rol atama transaction çalıştırılır ve size sonuç bildirilir.
  13. Oluşturulan did ve verkey ledger’a yazıldıktan sonra maile dönüş yapılacaktır.
  14. Eğer mailinize cevap gelene kadar beklemeyip kapattısysanız indy-cli programını tekrar çalıştırılarak ağ havuzu (pool connect) ve cüzdan açılır (wallet open). Daha sonra son oluşturulan did, aşağıdaki komut ile o an açık olan konsolda kullanılan aktif did olarak belirlenir.
    • did use [DID-DEĞERİ
  15. Düğüm ağ havuzu ledgerına kayıt edilir (Bu örnek Steward tipinde node için yazılmıştır ama Endorser olarak da eklenebilir);
    • ledger node target=[init indy keys adımındaki çıktıda yazan verification key değeri] client_port=[istemci port değeri] client_ip=[dışarıdan erişime açık düğümün çalıştığı makinanın Internetten görülecek gerçek ip değeri] alias=[ init_indy_keys adımında kullanılan isim] node_ip=[ dışarıdan erişime açık düğümün çalıştığı makinanın Internetten görülecek gerçek ip değeri] node_port=[ düğüm port değeri] services=VALIDATOR blskey=[init_indy_keys adımında oluşan blskey değeri] blskey_pop= [init_indy_keys adımında oluşan Proof of posession for BLS key değeri]
    • !!! Bu komut içinde Gerçek IP değerleri kullanılmalı. Normal durumda client_ip ve node_ip değerleri birbirinin aynısıdır.
    • Örneğin: Düğüm port için 9701 ve client port için 9702 kullanabiliriz
  16. Bu komut başarılı bir şekilde çalıştırıldıktan sonra düğüm LEDGER’a kayıt edilmiş demektir. Artık indy-cli ortamından çıkış yapılır ve indy-node çalıştırılır:
    1. start_indy_node [ init_indy_keys adımında verilen isim] [ init_indy_keys adımındaki node_ip değeri] 9701 [ init indy keys adımındaki client_ip değeri] 9702
      Son komutu da çalıştırdıktan sonra düğüm artık BLCIDN’e dahil olmuş olarak çalışmaya başlar. Son komut system servis olarak çalıştırılmalıdır.
    2. Not: Bu adımda SHA3 modülünde hata çıkarsa, python eski sürümleri ile çakışma olduğu içindir. Aşağıdaki komutlarla bu durumu düzeltebilirsiniz
      • sudo apt purge python2.7
      • pip3 install pysha3
      • [pip3 install sha3]

Çalışan herhangi bir Hyperledger Indy sisteminin kayıt defterlerini görüntülemek için gerekli kurulum bilgilerine bu linkten ulaşabilirsiniz.

BAĞ Hyperledger Indy test ağını görüntülemek için bu linki kullanabilirsiniz.


Dizinleri oluşturma script’i (Konfigurasyon 1. Adımı için kullanılır)

#!/usr/bin/env bash

# dirs to be created
# en sondaki network adi neyse onunla uyumlu olmali
node_dirs="/etc/indy /var/lib/indy /var/log/indy /var/lib/indy/BLCIDN"

# create dirs
echo "creating dirs"
for dr in $node_dirs
do
    sudo mkdir -p $dr
done

# generate base config if not exists
if [ ! -f /etc/indy/indy_config.py ]; then
    echo "NETWORK_NAME = 'BLCIDN'" | sudo tee -a /etc/indy/indy_config.py
    echo "LEDGER_DIR = '/var/lib/indy'" | sudo tee -a /etc/indy/indy_config.py
    echo "LOG_DIR = '/var/log/indy'"  | sudo tee -a /etc/indy/indy_config.py
    echo "KEYS_DIR = '/var/lib/indy'"  | sudo tee -a /etc/indy/indy_config.py
    echo "GENESIS_DIR = '/var/lib/indy'" | sudo tee -a /etc/indy/indy_config.py
    echo "BACKUP_DIR = '/var/lib/indy/backup'" | sudo tee -a /etc/indy/indy_config.py
    echo "PLUGINS_DIR = '/var/lib/indy/plugins'" | sudo tee -a /etc/indy/indy_config.py
    echo "NODE_INFO_DIR = '/var/lib/indy'" | sudo tee -a /etc/indy/indy_config.py
fi

# grant permissions
for dr in $node_dirs
do
    sudo chown -R ${USER}:${USER} $dr
    sudo chmod -R ug+rwx $dr
done

 

Teşekkür

Bu kılavuzun hazırlanmasında, Indy Proje Dokümanları ve Turkcell‘den Sayın Recep YILDIZ’ın çok değerli katkılarından faydalanılmıştır.

1 Comment

  1. #!/usr/bin/env bash

    # dirs to be created
    # en sondaki network adi neyse onunla uyumlu olmali
    node_dirs=”/etc/indy /var/lib/indy /var/log/indy /var/lib/indy/BLCIDN”

    # create dirs
    echo “creating dirs”
    for dr in $node_dirs
    do
    sudo mkdir -p $dr
    done

    # generate base config if not exists
    if [ ! -f /etc/indy/indy_config.py ]; then
    echo “NETWORK_NAME = ‘BLCIDN'” | sudo tee -a /etc/indy/indy_config.py

    echo “LEDGER_DIR = ‘/var/lib/indy'” | sudo tee -a /etc/indy/indy_config.py
    echo “LOG_DIR = ‘/var/log/indy'” | sudo tee -a /etc/indy/indy_config.py
    echo “KEYS_DIR = ‘/var/lib/indy'” | sudo tee -a /etc/indy/indy_config.py
    echo “GENESIS_DIR = ‘/var/lib/indy'” | sudo tee -a /etc/indy/indy_config.py
    echo “BACKUP_DIR = ‘/var/lib/indy/backup'” | sudo tee -a /etc/indy/indy_config.py
    echo “PLUGINS_DIR = ‘/var/lib/indy/plugins'” | sudo tee -a /etc/indy/indy_config.py
    echo “NODE_INFO_DIR = ‘/var/lib/indy'” | sudo tee -a /etc/indy/indy_config.py
    fi

    # grant permissions
    for dr in $node_dirs
    do
    sudo chown -R ${USER}:${USER} $dr
    sudo chmod -R ug+rwx $dr
    done

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir