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
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
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
Bu şekilde ağ ayağa kaldırıldıktan sonra ağı kapatmak için aşağıdaki komut kullanılması gerekmektedir.
./network.sh down
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
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
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
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.
Aşağıdaki komut ile sisteminizdeki ayakta olan ağ bileşenlerini inceleyebilrisiniz.
docker ps -a
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
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