Aptallar için Hyperledger Kumaş

İşletmeler için Blockchain Platformu

Aptallar için Hyperledger Kumaş

İyi günler sevgili okuyucular, adım Nikolay Nefedov, IBM'de teknik uzmanım, bu yazıda sizi blockchain platformu Hyperledger Fabric'le tanıştırmak istiyorum. Platform, kurumsal sınıf iş uygulamaları oluşturmak için tasarlanmıştır. Makalenin düzeyi, BT teknolojileri hakkında temel bilgiye sahip hazırlıksız okuyucular içindir.

Hyperledger Fabric, Linux Vakfı'nın bir konsorsiyumu olan açık kaynaklı Hyperledger projesinin dallarından biri olan açık kaynaklı bir projedir. Hyperledger Fabric, ilk olarak Digital Assets ve IBM tarafından başlatıldı. Hyperledger Fabric platformunun ana özelliği kurumsal kullanıma odaklanmasıdır. Bu nedenle platform, işlemlerin yüksek hızı ve düşük maliyeti ve tüm katılımcıların tanımlanması dikkate alınarak geliştirildi. Bu avantajlar, işlem doğrulama hizmetinin ayrılması ve dağıtılmış kayıt defterinin yeni bloklarının oluşturulmasının yanı sıra bir sertifika merkezinin kullanılması ve katılımcıların yetkilendirilmesi yoluyla elde edilir.

Makalem, üniversiteye giren öğrencilerin kayıt altına alınmasına yönelik bir sistem projesini anlattığımız Hyperledger Fabric ile ilgili bir dizi makalenin parçasıdır.

Hyperledger Fabric'in genel mimarisi

Hyperledger Fabric, ağ düğümlerine kurulu çeşitli işlevsel bileşenlerden oluşan dağıtılmış bir blockchain ağıdır. Hyperledger Fabric bileşenleri, DockerHub'dan ücretsiz olarak indirilebilen Docker konteynerleridir. Hyperledger Fabric ayrıca Kubernetes ortamında da çalıştırılabilir.

Akıllı sözleşmeler (Hyperledger Fabric bağlamında zincir kodu) yazmak için Golang'ı kullandık (Hyperledger Fabric diğer dillerin kullanımına izin vermesine rağmen). Özel bir uygulama geliştirmek için bizim durumumuzda Node.js'yi karşılık gelen Hyperledger Fabric SDK ile birlikte kullandık.

Düğümler iş mantığını (akıllı sözleşme) - zincir kodunu yürütür, dağıtılmış kayıt defterinin durumunu (defter verileri) saklar ve platformun diğer sistem hizmetlerini yürütür. Bir düğüm yalnızca mantıksal bir birimdir; aynı fiziksel sunucuda farklı düğümler bulunabilir. Çok daha önemli olan, düğümlerin nasıl gruplandırıldığı (Güvenilir alan adı) ve blockchain ağının hangi işlevleriyle ilişkilendirildikleridir.

Genel mimari şuna benzer:

Aptallar için Hyperledger Kumaş

Resim 1. Hyperledger Fabric’in Genel Mimarisi

Kullanıcı uygulaması (Submitting Client), kullanıcıların blockchain ağı ile çalıştığı bir uygulamadır. Çalışmak için yetkili olmanız ve ağdaki çeşitli eylem türleri için uygun haklara sahip olmanız gerekir.

Akranlar çeşitli rollere sahiptir:

  • Onaylayan Eş, bir işlemin yürütülmesini simüle eden (akıllı sözleşme kodunu çalıştıran) bir düğümdür. Akıllı sözleşmenin doğrulanması ve yürütülmesinden sonra düğüm, yürütme sonuçlarını imzasıyla birlikte istemci uygulamasına gönderir.
  • Sipariş Hizmeti, dağıtılmış kayıt defterinin yeni bloklarını oluşturmak ve işlemlerin yürütülmesi için bir kuyruk oluşturmak için kullanılan, birkaç düğümde dağıtılmış bir hizmettir. Sipariş Hizmeti, kayıt defterine yeni bloklar eklemez (Bu özellik, performansı artırmak için Eşlerin Taahhüt Edilmesi bölümüne taşınmıştır).
  • Committing Peer, dağıtılmış bir kayıt defteri içeren ve kayıt defterine (Sipariş Hizmeti tarafından oluşturulan) yeni bloklar ekleyen bir düğümdür. Tüm Taahhüt Eden Eşler, dağıtılmış defterin yerel bir kopyasını içerir. Committing Peer, yerel olarak yeni bir blok eklemeden önce blok içindeki tüm işlemlerin geçerliliğini kontrol eder.

Onay Politikası, bir işlemin geçerliliğini kontrol etmeye yönelik politikadır. Bu politikalar, işlemin geçerli olarak tanınması için akıllı sözleşmenin yürütülmesi gereken gerekli düğüm kümesini tanımlar.

Dağıtılmış kayıt defteri - Lerger - iki bölümden oluşur: WolrldState (State DataBase olarak da bilinir) ve BlockChain.

BlockChain, dağıtılmış kayıt defteri nesnelerinde meydana gelen tüm değişikliklerin kayıtlarını saklayan bir blok zinciridir.

WolrldState, tüm dağıtılmış defter nesnelerinin mevcut (son teknoloji) değerlerini saklayan dağıtılmış bir defter bileşenidir.

WorldState, temel sürümde - LevelDB veya daha karmaşık bir - CouchDB olan, anahtar-değer çiftlerini içeren bir veritabanıdır, örneğin: Ad - Ivan, Soyadı - Ivanov, sisteme kayıt tarihi - 12.12.21/17.12.1961/XNUMX , doğum tarihi - XNUMX/XNUMX/XNUMX, vb. WorldState ve dağıtılan kayıt, belirli bir kanaldaki tüm katılımcılar arasında tutarlı olmalıdır.

Hyperledger Fabric, tüm katılımcıların bilindiği ve kimlik doğrulamasının yapıldığı bir ağ olduğundan, özel bir sertifika yetkilisi olan CA (Sertifika Yetkilisi) kullanır. CA, X.509 standardına ve genel anahtar altyapısına (PKI) dayalı olarak çalışır.

Üyelik Hizmeti, üyelerin bir nesnenin belirli bir kuruluşa veya kanala ait olduğunu doğruladığı bir hizmettir.

Çoğu durumda bir işlem, dağıtılmış bir kayıt defterine yeni verilerin yazılmasıdır.
Kanalların veya akıllı sözleşmelerin oluşturulmasına yönelik işlemler de vardır. İşlem, kullanıcı uygulaması tarafından başlatılır ve dağıtılmış defterdeki bir kayıtla sona erer.

Kanal, sınırlı ancak bilinen bir katılımcı çevresi içinde gizli işlemleri yürütmek üzere tasarlanmış, iki veya daha fazla blockchain ağı katılımcısından oluşan kapalı bir alt ağdır. Kanal katılımcılar, dağıtılmış kayıt defteri, akıllı sözleşmeler, Sipariş Hizmeti, WorldState tarafından belirlenir. Her kanal katılımcısının kanala erişim yetkisine sahip olması ve çeşitli işlem türlerini gerçekleştirme hakkına sahip olması gerekir. Yetkilendirme Üyelik Hizmeti kullanılarak gerçekleştirilir.

Tipik işlem yürütme senaryosu

Daha sonra projemizi örnek alarak tipik bir işlem yürütme senaryosundan bahsetmek istiyorum.

Şirket içi projemizin bir parçası olarak, üniversitelere giren öğrencilerin kayıt ve muhasebeleştirilmesi için tasarlanan Hyperledger Fabric ağını oluşturduk. Ağımız, A Üniversitesi ve B Üniversitesine ait iki kuruluştan oluşur. Her kuruluş, kendi Taahhüt Eden ve Onaylayan Eşinin yanı sıra bir müşteri uygulaması içerir. Ayrıca Sipariş Hizmeti, Üyelik Hizmeti ve Sertifika Yetkilisi gibi ortak hizmetleri de kullanıyoruz.

1) İşlemin Başlatılması

Hyperledger Fabric SDK'yı kullanan bir kullanıcı uygulaması, bir işlem isteği başlatır ve isteği akıllı sözleşmelerle düğümlere gönderir. Talep, dağıtılmış bir kayıt defterinden (Defter) değişiklik yapmak veya okumak olabilir. Üniversite öğrencileri için muhasebeye yönelik test sistemi konfigürasyonumuza bir örnek verecek olursak, istemci uygulaması, akıllı sözleşme adı verilen Onay politikasında yer alan A ve B üniversitelerinin düğümlerine bir işlem talebi göndermektedir. A düğümü, gelen öğrenciyi kaydeden üniversitede bulunan düğüm, B düğümü ise başka bir üniversitede bulunan düğümdür. Bir işlemin dağıtılmış bir kayıt defterine kaydedilmesi için iş mantığına göre işlemi onaylaması gereken tüm düğümlerin aynı sonuçla akıllı sözleşmeleri başarıyla yürütmesi gerekir. A düğümü kullanıcı uygulaması, Hyperledger Fabric SDK araçlarını kullanarak Onay politikasını alır ve hangi düğümlere işlem isteği gönderileceğini öğrenir. Bu, belirli verileri dağıtılmış bir kayıt defterine okumak veya yazmak için belirli bir akıllı sözleşmeyi (zincir kodu işlevi) çağırma isteğidir. Teknik olarak, istemci SDK'sı, API'sinin işlem parametreleriyle birlikte belirli bir nesneye iletildiği ilgili işlevi kullanır ve ayrıca bir istemci imzası ekler ve bu verileri gRPC üzerinden protokol arabelleği aracılığıyla uygun düğümlere (eşleri onaylayan) gönderir.

Aptallar için Hyperledger Kumaş
Resim 2. İşlem Başlatma

2) Akıllı sözleşmenin yürütülmesi

Bir işlemi gerçekleştirmek için bir talep alan düğümler (Onaylayan Eşler), müşteri imzasını kontrol eder ve her şey yolundaysa, istek verilerini içeren bir nesne alırlar ve akıllı bir sözleşmenin (zincir kodu işlevi) yürütülmesine ilişkin bir simülasyon çalıştırırlar. bu veri. Akıllı sözleşme, bir işlemin iş mantığıdır, belirli bir dizi koşul ve talimattır (bizim durumumuzda bu, bir öğrencinin doğrulanmasıdır, bu yeni bir öğrenci mi, yoksa zaten kayıtlı mı, yaş doğrulaması vb.). Akıllı sözleşmeyi yürütmek için WorldState'ten gelen verilere de ihtiyacınız olacak. Onaylayan eş üzerinde bir akıllı sözleşmenin simüle edilmesinin bir sonucu olarak iki veri seti elde edilir – Okuma Seti ve Yazma Seti. Okuma Seti ve Yazma Seti orijinal ve yeni WorldState değerleridir. (yeni – akıllı sözleşmenin simülasyonu sırasında elde edilen anlamda).

Aptallar için Hyperledger Kumaş
Resim 3. Akıllı sözleşmenin yürütülmesi

3) Verileri istemci uygulamasına döndürme

Onaylayan Eşler, akıllı sözleşmenin bir simülasyonunu gerçekleştirdikten sonra orijinal verileri ve simülasyon sonucunun yanı sıra sertifikalarıyla imzalanmış RW Setini istemci uygulamasına döndürür. Bu aşamada dağıtılan kayıt defterinde herhangi bir değişiklik meydana gelmez. İstemci uygulaması Onaylayan Eş imzasını kontrol eder ve ayrıca gönderilen orijinal işlem verilerini ve döndürülen verileri karşılaştırır (yani, işlemin simüle edildiği orijinal verilerin bozuk olup olmadığını kontrol eder). İşlem yalnızca kayıt defterindeki verileri okumak içinse, istemci uygulaması buna göre gerekli Okuma Kümesini alır ve bu genellikle dağıtılmış kayıt defterini değiştirmeden işlemi başarıyla tamamlar. Kayıt defterindeki verileri değiştirmesi gereken bir işlem olması durumunda, istemci uygulaması ayrıca Onaylama politikasının uygulanmasını da kontrol eder. Bir istemci uygulamasının Onay Politikasının yürütülmesinin sonucunu kontrol etmemesi mümkündür, ancak bu durumda Hyperledger Fabric platformu, kayıt defterine bir işlem ekleme aşamasında düğümlere ilişkin politikaların (Eşleri Kabul Etme) kontrol edilmesini sağlar.

Aptallar için Hyperledger Kumaş
Resim 4. Verilerin istemci uygulamasına döndürülmesi

4) RW setlerinin Sipariş Eşlerine gönderilmesi

İstemci uygulaması, işlemi beraberindeki verilerle birlikte Sipariş hizmetine gönderir. Buna RW Seti, Onaylayan eş imzaları ve Kanal Kimliği dahildir.

Sipariş hizmeti – ismine göre bu hizmetin ana işlevi, gelen işlemleri doğru sıraya göre düzenlemektir. Dağıtılmış kayıt defterinin yeni bir bloğunun oluşturulması ve yeni oluşturulan blokların tüm Commiting düğümlerine garantili teslimatı, böylece dağıtılmış kayıt defterini içeren tüm düğümlerde (Committing eşleri) veri tutarlılığı sağlanır. Aynı zamanda Sipariş hizmetinin kendisi de kayıt defterini hiçbir şekilde değiştirmez. Sipariş Hizmeti sistemin hayati bir bileşenidir, dolayısıyla birkaç düğümden oluşan bir kümedir. Sipariş Hizmeti, işlemin geçerliliğini kontrol etmez, yalnızca belirli bir kanal tanımlayıcısına sahip bir işlemi kabul eder, gelen işlemleri belirli bir sıraya göre düzenler ve bunlardan dağıtılmış kayıt defterinin yeni bloklarını oluşturur. Bir Sipariş Hizmeti aynı anda birden fazla kanala hizmet verebilir. Sipariş Hizmeti, doğru (değişmez) işlem kuyruğunu koruyan bir Kafka kümesi içerir (bkz. Madde 7).

Aptallar için Hyperledger Kumaş
Resim 5. RW setlerinin Sipariş Eşlerine gönderilmesi

5) Oluşturulan blokların Committing Peer'a gönderilmesi

Sipariş Hizmetinde oluşturulan bloklar tüm ağ düğümlerine iletilir (yayınlanır). Yeni bir blok alan her düğüm, bunun Onay Politikasına uygunluğunu kontrol eder, akıllı sözleşme simülasyonu sonucunda tüm Onaylayan Eşlerin aynı sonucu (Yazma Seti) aldığını kontrol eder ve ayrıca orijinal değerlerin olup olmadığını kontrol eder. işlem başlatıldığı andan itibaren değiştirildi (yani Okuma Seti - WorldState'ten akıllı sözleşme tarafından okunan veriler). Tüm koşullar karşılanırsa işlem geçerli olarak işaretlenir, aksi takdirde işlem geçersiz statüsünü alır.

Aptallar için Hyperledger Kumaş
Resim 6. Oluşturulan blokların Committing Peer'a gönderilmesi

6) Kayıt defterine blok ekleme

Her düğüm, dağıtılmış kayıt defterinin yerel kopyasına bir işlem ekler ve işlem geçerliyse, WorldState'e (mevcut durum) Yazma Seti ve buna göre etkilenen nesnelerin yeni değerleri uygulanır. işlem yazılır. Bir işlem geçerli olmayan bir jeton aldıysa (örneğin, aynı blok içindeki aynı nesnelerle iki işlem meydana geldiyse), orijinal değerler zaten bir başkası tarafından değiştirildiği için işlemlerden biri geçersiz olacaktır. işlem). Bu işlem de dağıtılmış deftere geçersiz bir token ile eklenir, ancak bu işlemin Yazma Seti mevcut WorldState'e uygulanmaz ve dolayısıyla işleme katılan nesneleri değiştirmez. Bundan sonra kullanıcı uygulamasına, işlemin dağıtılmış kayıt defterine kalıcı olarak eklendiğine ve işlemin durumuna, yani geçerli olup olmadığına dair bir bildirim gönderilir...

Aptallar için Hyperledger Kumaş
Resim 7. Kayıt defterine blok ekleme

HİZMET SİPARİŞİ

Sipariş Hizmeti, Sipariş hizmeti istemcileri ile Kafka Kümesi arasında duran, karşılık gelen ZooKeeper düğümleri ve Sipariş Hizmeti Düğümleri (OSN) içeren bir Kafka kümesinden oluşur. Kafka kümesi, dağıtılmış, hataya dayanıklı bir akış (mesaj) yönetim platformudur. Kafka'daki her kanal (konu), yalnızca yeni bir kayıt eklemeyi destekleyen değişmez bir kayıt dizisidir (mevcut olanı silmek mümkün değildir). Konu yapısının bir örneği aşağıda gösterilmiştir. Bir blockchain platformu oluşturmak için kullanılan Kafka'nın bu özelliğidir.

Aptallar için Hyperledger Kumaş
kafka.apache.org'dan alınmıştır

  • Resim 8. Sipariş Hizmeti Konu Yapısı*

Kullanışlı bağlantılar

Youtube – Hyperledger Projesi ile iş için bir blockchain oluşturmak
Hyperledger Yapı Belgeleri
Hyperledger yapısı: izin verilen blok zincirleri için dağıtılmış bir işletim sistemi

Teşekkür

Bu makalenin hazırlanmasındaki yardımlarından dolayı meslektaşlarıma derin şükranlarımı sunmak isterim:
Nikolay Marin
İgor Khapov
Dmitri Gorbaçov
Alexander Zemtsov
Ekaterina Guseva

Kaynak: habr.com

Yorum ekle