kamer.dev

Hyperledger Composer ile Uygulama Geliştirme — 1. Temel Kavramlar

- #blockchain - #hyperledger

İçerik

Bu yazı serisi, Hyperledger Composer’da proje yapmak isteyenlere yönelik olarak hazırlanmıştır. Temel konseptlerde ısınma yapıp sonra örnek bir uygulamayı adım adım beraber geliştireceğiz. Yazımda temel kaynağım Hyperledger Composer’ın resmi dokümanlarıdır.

Gereklilikler

Temel kavramlardan bahsettiğim bu kısımda herhangi bir gereklilik bulunmamaktadır. Sadece daha iyi anlamak açısından Hyperledger’ın ve blokzincir teknolojisinin ne olduğunu bilmek artı olacaktır.

Temel Kavramlar

Hyperledger Composer ile geliştirme yaparken bazı kavramlarla karşılaşacaksınız. Yabancılık çekmemeniz açısından kavramların bir kısmını bu başlık altında topladım. Daha önce blokzincir hakkında okumalar yaptıysanız bir kısmına aşina olabilirsiniz.

Varlıklar(Assets): Varlıklar, ağda kayıtlarda bulunan mülkleri, servisleri ve eşyaları ifade eder. Varlık tanımı kurumsal ağda birçok şeyi ifade edebilir. Örneğin tapu, satılık bir ev, oy verme sisteminde verilen bir oy, sertifika olabilir. Varlıklar eşsizdir.

Katımcılar(Participants): Katılımcılar, tüm işlemleri gerçekleştiren ve varlıklara sahip olan ağ üyeleridir. Bir kişi veya organizasyon katılımcı olabilir. Katılımcılar da varlıklar gibi eşsizdir.

İşlemler(Transactions): Katılımcıların ağ üzerinde yaptığı her faaliyet işlem(transaction) olarak değer kazanır ve ağa kaydedilir. Transactionlar silinemezler ve değiştirilemezler. Dolayısıyla geçmişe yönelik olarak tarama yapabilirsiniz.

ID Kartları(ID Cards): Katılımcıların sahip olduğu eşsiz kimliktir. Hem katılımcıları tanımlamaya hem de ağa daha kolay bir şekilde bağlanmalarını sağlamaya yarar.

Bu dört kavramı pekiştirmek için bir örnek yeterli olacaktır. Hyperledger Composer ile yapacağınız bir oy verme uygulamasında seçmenler katılımcı, oy verdikleri partiler varlık, verdikleri oylar ise işlem olacaktır. Seçmenleri ağda tanımlanmak için ise kimlik bilgilerini de barındıran bir ID kart kullanılacaktır.

Kurumsal Ağ Tanımı (Business Network Definition)

Kurumsal ağ tanımı dört şeyden oluşur:

  • Model Dosyası (.cto)
  • Script Dosyası (.js)
  • Erişim Kontrol Dosyası (Access Control File - .acl)
  • Sorgu Dosyası (Query File - .qry)

Model Dosyası(.cto)

Model dosyası, Hyperledger Composer Modelleme Dilini kullanan ve ağ katılımcılarını(participants), varlıkları(assets) ve işlemleri(transactions) tanımlamamıza yarayan dosyadır. Kendine ait nesne yönelimli bir söz dizimi ve formatı vardır. Bir sonraki yazıda ayrıntılı olarak değineceğim.

Script Dosyası(.js)

Script dosyaları, daha önce de belirttiğim üzere, projemizin logic kısmını üstleniyor. Varlıkların transferini script dosyaları ile yapıyoruz. Örneğin katılımcıların herhangi bireyler, varlıkların ise satılık evler olduğu senaryoda bireylerin evi satın alması işlemini js dosyaları ile sağlıyoruz.

Erişim Kontrol Dosyası (Access Control File - .acl)

Adından tahmin edebileceğiniz üzere kullanıcıların veya grupların ağdaki yetkilerini tanımladığımız dosyadır. Hyperledger, permissioned bir blokzincirdir ve bu özelliğini uyguladığımız yer bu dosyadır. Ağda herkesin yetki kapsamı aynı olmayabilir. Örneğin araba satış ilanları eklediğimiz bir zincirde fiyatları herkes görebilirken fiyat indirimini yalnızca bir kişi yapabilir. Aynı şekilde eğer ilanda uygun olmayan bir yazı girildiyse bunu herkes görebilirken yalnızca ilan sahibi ve bir grup editör düzeltebilir. Bunu yetki kontrolünü .acl dosyası içinde namespace’ler ile yapıyoruz.

Sorgu Dosyası (Query File - .qry)

Blokzincirde bulunan veriler üzerinde sorgu yapmak için kullandığımız dosyadır. Kendine ait bir formatı vardır fakat daha önceden SQL kullandıysanız yabancılık çekmeyeceğiniz bir formattır. Yazılım dünyasında “named query” olarak geçen terimin Hyperledger karşılığı olduğunu söyleyebiliriz. İsim verdiğimiz bazı hazır sorguları .qry dosyası içine koyarız ve bunu Business Network Definition içinde Fabric’e veririz. Sonra bu sorgulara Rest API ile ulaşabiliriz.

Kurumsal Ağ Tanımı Ne İşe Yarar?

Yukarıda kurumsal ağ tanımının bileşenlerinden bahsettik. Dört temel bileşen ile ağımızı tanımladıktan sonra ağ tanımını .bna uzantılı bir arşiv dosyası olarak alıyoruz. Artık bu .bna dosyasını kullanarak uygulamamızı deploy edebiliriz. İşte tam bu noktada Hyperledger Composer’ın bize sunduğu avantajı hissedebilirsiniz. Hyperledger Composer, resmi dokümanda da yazdığı üzere, blokzincir uygulamalarımızı daha hızlı ve pratik bir şekilde hazırlamamız için bize bir takım araçlar sunan bir proje. Örneğin bu dört bileşeni hazırladıktan sonra oluşturduğumuz .bna dosyası bize doğrudan projemizi deploy edecek yeteneği sağlıyor. Bunu da Hyperledger Fabric ile yapıyoruz. Sonraki yazılarda buna da değineceğim.

Yukarıda anlattığım şeylerin özetini aşağıdaki diyagramda bulabilirsiniz.

Kaynak: https://hyperledger.github.io/composer/latest/introduction/introduction.html