Basit bir Hyperledger Fabric ağının ayağa kaldırılması

Ali Orhun Akkirman - May 25 '22 - - Dev Community

Basit bir Hyperledger Fabric ağının ayağa kalkması için birkaç yol bulunmaktadır. Bu kapsamda ilk olarak docker ve docker compose kullanılarak bir Hyperledger Fabric ağının ayağa kaldırılmasından bahsedeceğim.

Docker yöntemi için ön gereksinim

Öncelikli olarak sistemimizde git, docker ve docker compose'un kurulu olduğunu varsayıyorum. Herhangi bir linux dağıtıma göre kurulum süreci değişebildiği için bu adımda bu konuda bir açıklama yapmıyorum.

Örneğin Pardus 19.x üzerinde ilgili yazıyı kullanarak docker kurulumu yapabilir ve sonrasında aynı depo üzerinden docker-compose kurulumu yapabilirsiniz

Fabric ağının hazırlanması

Hyperledger Fabric ağını oluşturmadan önce Hyperledger Fabric'in hangi sürümünün kullanılacağı belirlenmelidir. Bu kapsamda 25 Mayıs 2022 tarihi itibariyle mevcut durumda 2.2 ve 2.4 sürümlerinin kullanılmasını önermekteyim.

Bunun için 2.4 sürümüne yönelik aşağıdaki komut çağırılarak kurulum betiği indirilip çalıştırılabilir.

wget https://raw.githubusercontent.com/hyperledger/fabric/release-2.4/scripts/bootstrap.sh
bash bootstrap.sh
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra arkaplanda Hyperledger Fabric ağının hazırlanma süreci tamamlanmış oluyor.

Fabric örneklerini kullanmak ve test ağı

Github üzerinde Hyperledger organizasyonunun hazırladığı bir fabric-samples isimli fabric örnek reposu bulunmaktadır. Bu reponun içerisinde örnek chaincode (akıllı kontrat), api kullanım, ağ altyapısı gibi çeşitli örnekler bulunmaktadır.

İlgili repoyu kullanmak için öncelikle git ile sistemimize çekiyoruz. Bu adımı yapmak yerine zip olarak da indirebilirsiniz.

git clone https://github.com/hyperledger/fabric-samples
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra fabric-samples klasörü içerisinde test-network isminde örnek bir ağın bulunduğu içerikler bulunmaktadır. Başka bir yazıda detaylarına girmeyi düşündüğüm test ağı parametrelerinde ilgili klasöre girip aşağıdaki şekilde temel düzeyde bir ağ ayağa kaldırabilmektesiniz.

cd fabric-samples/test-network
./network.sh up
Enter fullscreen mode Exit fullscreen mode

Bu şekilde ağ ayağa kaldırıldıktan sonra ağı kapatmak için aşağıdaki komut kullanılması gerekmektedir.

./network.sh down
Enter fullscreen mode Exit fullscreen mode

Ağda sertifika otoritesi ayağa kaldırmak

Bu şekilde test ağı ayağa kaldırdığınızda kendi içerisinde bir CA sertifika otoritesi için bir container oluşturulmamış oluyor. Bu adımda fabric-ca-server servisini de oluşturmak isterseniz aşağıdaki adımdaki gibi ağ ayağa kaldırılmalı.

./network.sh up -ca
Enter fullscreen mode Exit fullscreen mode

Tabi ki daha önce bir ağ ayağa kaldırdıysanız bunu kapatmanız gerekmektedir.

Ağ üzerinde Fabric kanalı oluşturma

Var olan bir ağ üzerinde aşağıdaki şekilde "kanalAdi" adında bir kanal oluşturulabilmektedir.

./network.sh createChannel -c kanalAdi
Enter fullscreen mode Exit fullscreen mode

Ağ üzerinde akıllı kontrat ekleme

Hyperledger Fabric üzerinde bildiğimiz gibi akıllı kontrat kavramı yerine chaincode geçmekte. Ve chaincode'lar golang, nodejs ve java dilleriyle geliştirilebilmekte. Golang diliyle yazılmış bir chaincode'u aşağıdaki şekilde ağ üzerine ekleyebilmekteyiz.

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
Enter fullscreen mode Exit fullscreen mode

Test ağımız hazır!

Bu adımdan sonra içerisinde "kanalAdi" isimli bir kanalın bulunduğu, 2 örnek organizasyonun yer aldığı, bu yapı içerisinde 2 eş(peer) servis, 1 sıralama servisi (orderer service) bulunan ve asset-transfer-basic içerisinde tanımlanmış chaincode-go isimli bir akıllı sözleşmenin bulunduğu bir ortam hazırlanmış oluyor.

Image description

Aşağıdaki komut ile sisteminizdeki ayakta olan ağ bileşenlerini inceleyebilrisiniz.

docker ps -a
Enter fullscreen mode Exit fullscreen mode

Bu komut çıktısında docker üzerinde hangi konteynırların yer aldığı izlenebilmektedir.

CONTAINER ID   IMAGE                               COMMAND             CREATED         STATUS                  PORTS                                            NAMES
3247543b5634   hyperledger/fabric-tools:latest     "/bin/bash"         1 second ago    Up Less than a second                                                    cli
r3t117c81c7f   hyperledger/fabric-peer:latest      "peer node start"   2 seconds ago   Up 1 second             0.0.0.0:7051->7051/tcp                           peer0.org1.example.com
421ead770e05   hyperledger/fabric-orderer:latest   "orderer"           2 seconds ago   Up Less than a second   0.0.0.0:7050->7050/tcp, 0.0.0.0:7053->7053/tcp   orderer.example.com
421d43f5f312   hyperledger/fabric-peer:latest      "peer node start"   2 seconds ago   Up 1 second             7051/tcp, 0.0.0.0:9051->9051/tcp                 peer0.org2.example.com
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra chaincode'un geliştirilmesi ve çalıştırılması, API servislerinin detayları ve tabi ki uygulama geliştirilmesi gibi konularla işin detayına girilebilmektedir.


timeo hominem unius libri

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .