Dummies uchun Hyperledger mato

Korxona uchun blokcheyn platformasi

Dummies uchun Hyperledger mato

Xayrli kun, aziz o'quvchilar, mening ismim Nikolay Nefedov, men IBM kompaniyasining texnik mutaxassisiman, ushbu maqolada men sizni blokcheyn platformasi - Hyperledger Fabric bilan tanishtirmoqchiman. Platforma korporativ toifadagi biznes ilovalarini yaratish uchun mo'ljallangan. Maqolaning darajasi IT texnologiyalari bo'yicha asosiy bilimlarga ega bo'lgan tayyor bo'lmagan o'quvchilar uchun.

Hyperledger Fabric ochiq kodli loyiha bo‘lib, Linux Foundation konsorsiumi bo‘lgan ochiq kodli Hyperledger loyihasining tarmoqlaridan biri hisoblanadi. Hyperledger Fabric dastlab Digital Assets va IBM tomonidan boshlangan. Hyperledger Fabric platformasining asosiy xususiyati uning korporativ foydalanishga qaratilganligidir. Shuning uchun platforma tranzaktsiyalarning yuqori tezligi va ularning arzonligi, shuningdek, barcha ishtirokchilarni aniqlashni hisobga olgan holda ishlab chiqilgan. Ushbu afzalliklarga tranzaktsiyalarni tekshirish xizmatini ajratish va tarqatilgan reestrning yangi bloklarini shakllantirish, shuningdek sertifikatlashtirish markazidan foydalanish va ishtirokchilarni avtorizatsiya qilish orqali erishiladi.

Mening maqolam Hyperledger Fabric haqidagi maqolalar turkumining bir qismi bo'lib, unda biz universitetga kirayotgan talabalarni ro'yxatga olish tizimi loyihasini tasvirlaymiz.

Hyperledger Fabricning umumiy arxitekturasi

Hyperledger Fabric - tarmoq tugunlariga o'rnatilgan turli funktsional komponentlardan tashkil topgan taqsimlangan blokcheyn tarmog'i. Hyperledger Fabric komponentlari DockerHub-dan bepul yuklab olinadigan Docker konteynerlaridir. Hyperledger Fabric Kubernetes muhitida ham ishga tushirilishi mumkin.

Aqlli kontraktlarni (Hyperledger Fabric kontekstidagi zanjir kodini) yozish uchun biz Golangdan foydalandik (garchi Hyperledger Fabric boshqa tillardan foydalanishga imkon beradi). Shaxsiy dasturni ishlab chiqish uchun, bizning holatlarimizda, mos keladigan Hyperledger Fabric SDK bilan Node.js dan foydalandik.

Tugunlar biznes mantig'ini (aqlli kontrakt) - zanjir kodini bajaradi, taqsimlangan reestr holatini (buxgalteriya ma'lumotlari) saqlaydi va platformaning boshqa tizim xizmatlarini bajaradi. Tugun faqat mantiqiy birlikdir; bir xil jismoniy serverda turli tugunlar mavjud bo'lishi mumkin. Tugunlar qanday guruhlanganligi (Ishonchli domen) va ular blokcheyn tarmog'ining qaysi funktsiyalari bilan bog'liqligi muhimroqdir.

Umumiy arxitektura quyidagicha ko'rinadi:

Dummies uchun Hyperledger mato

Rasm 1. Hyperledger Fabricning umumiy arxitekturasi

Foydalanuvchi ilovasi (Submitting Client) - bu foydalanuvchilar blokcheyn tarmog'i bilan ishlaydigan dastur. Ishlash uchun siz avtorizatsiyaga ega bo'lishingiz va tarmoqdagi turli xil harakatlar uchun tegishli huquqlarga ega bo'lishingiz kerak.

Tengdoshlar bir nechta rollarda bo'lishadi:

  • Endorsing Peer - tranzaktsiyaning bajarilishini taqlid qiluvchi tugun (aqlli shartnoma kodini bajaradi). Aqlli shartnomani tekshirish va bajarishdan so'ng, tugun imzosi bilan birga bajarish natijalarini mijoz ilovasiga qaytaradi.
  • Buyurtma xizmati - bu taqsimlangan registrning yangi bloklarini yaratish va tranzaktsiyalarni bajarish uchun navbat yaratish uchun ishlatiladigan bir nechta tugunlarda taqsimlangan xizmat. Buyurtma xizmati ro'yxatga olish kitobiga yangi bloklar qo'shmaydi (Ushbu xususiyat unumdorlikni oshirish uchun "Committing Peers" ga ko'chirildi).
  • Committing Peer - bu taqsimlangan registrni o'z ichiga olgan va registrga yangi bloklarni qo'shadigan tugun (ular Buyurtma xizmati tomonidan yaratilgan). Barcha Committing Peers tarqatilgan daftarning mahalliy nusxasini o'z ichiga oladi. Committing Peer mahalliy ravishda yangi blok qo'shishdan oldin blok ichidagi barcha tranzaktsiyalarni haqiqiyligini tekshiradi.

Tasdiqlash siyosati - tranzaktsiyaning haqiqiyligini tekshirish siyosati. Ushbu siyosatlar tranzaksiya haqiqiy deb tan olinishi uchun aqlli shartnoma bajarilishi kerak bo'lgan kerakli tugunlar to'plamini belgilaydi.

Tarqalgan registr - Lerger - ikki qismdan iborat: WolrldState (Shuningdek, Davlat DataBase deb ataladi) va BlockChain.

BlockChain - bu taqsimlangan ro'yxatga olish ob'ektlarida sodir bo'lgan barcha o'zgarishlarning yozuvlarini saqlaydigan bloklar zanjiri.

WolrldState - bu taqsimlangan daftarning barcha ob'ektlari joriy (eng zamonaviy) qiymatlarini saqlaydigan taqsimlangan daftar komponenti.

WorldState представляет собой базу данных, в базовом варианте — LevelDB или более сложная – CouchDB, которая содержит пары ключ — значение, например: Имя – Иван, Фамилия — Иванов, дата регистрации в системе – 12.12.21, дата рождения — 17.12.1961, va hokazo. WorldState va tarqatilgan registr ma'lum bir kanaldagi barcha ishtirokchilar o'rtasida mos kelishi kerak.

Hyperledger Fabric barcha ishtirokchilar ma'lum va autentifikatsiya qilingan tarmoq bo'lgani uchun u maxsus sertifikatlash organidan - CA (Sertifikatlash Authority) foydalanadi. CA X.509 standarti va ochiq kalitlar infratuzilmasi - PKI asosida ishlaydi.

A'zolik xizmati - a'zolar ob'ektning ma'lum bir tashkilot yoki kanalga tegishli ekanligini tasdiqlaydigan xizmatdir.

Tranzaktsiya - ko'p hollarda tarqatilgan registrga yangi ma'lumotlarni yozish.
Bundan tashqari, kanallar yoki aqlli shartnomalar yaratish uchun tranzaktsiyalar mavjud. Tranzaktsiya foydalanuvchi ilovasi tomonidan boshlanadi va taqsimlangan daftarda yozuv bilan tugaydi.

Kanal ikki yoki undan ortiq blokcheyn tarmog‘i ishtirokchilaridan iborat yopiq kichik tarmoq bo‘lib, cheklangan, ammo ma’lum ishtirokchilar doirasi doirasida maxfiy operatsiyalarni amalga oshirish uchun mo‘ljallangan. Kanal ishtirokchilar tomonidan belgilanadi, uning taqsimlangan reestri, aqlli shartnomalar, Buyurtma xizmati, WorldState. Har bir kanal ishtirokchisi kanalga kirish huquqiga ega bo'lishi va har xil turdagi operatsiyalarni amalga oshirish huquqiga ega bo'lishi kerak. Avtorizatsiya aʼzolik xizmati yordamida amalga oshiriladi.

Tranzaktsiyani amalga oshirishning odatiy stsenariysi

Keyinchalik, misol sifatida loyihamizdan foydalangan holda tranzaktsiyalarni bajarishning odatiy stsenariysi haqida gapirmoqchiman.

Ichki loyihamiz doirasida biz Hyperledger Fabric tarmog‘ini yaratdik, u universitetlarga kiruvchi talabalarni ro‘yxatdan o‘tkazish va hisobga olish uchun mo‘ljallangan. Tarmog'imiz A va B universitetlariga qarashli ikkita tashkilotdan iborat. Har bir tashkilotda mijoz ilovasi, shuningdek, o'z Committing and Endorsing Peer mavjud. Biz, shuningdek, buyurtma berish xizmati, aʼzolik xizmati va sertifikatlashtirish idorasining umumiy xizmatlaridan foydalanamiz.

1) Bitimning boshlanishi

Foydalanuvchi ilovasi Hyperledger Fabric SDK-dan foydalanib, tranzaksiya so'rovini boshlaydi va so'rovni aqlli shartnomalar bilan tugunlarga yuboradi. So'rov taqsimlangan registrdan (Ledger) o'zgartirish yoki o'qish bo'lishi mumkin. Universitet talabalari uchun buxgalteriya hisobi bo'yicha test tizimimizning konfiguratsiyasi misolini ko'rib chiqsak, mijoz ilovasi chaqirilgan smart-kontraktni tasdiqlash siyosatiga kiritilgan A va B universitetlarining tugunlariga tranzaksiya so'rovini yuboradi. A tugun - kiruvchi talabani ro'yxatdan o'tkazadigan universitetda joylashgan tugun va B tugun - boshqa universitetda joylashgan tugun. Tranzaktsiyani taqsimlangan reestrga saqlash uchun biznes mantig'iga ko'ra tranzaktsiyani tasdiqlashi kerak bo'lgan barcha tugunlar bir xil natija bilan aqlli shartnomalarni muvaffaqiyatli bajarishi kerak. Tugun Foydalanuvchi ilovasi Hyperledger Fabric SDK vositalaridan foydalanib, Ma'qullash siyosatini oladi va qaysi tugunlarga tranzaksiya so'rovini yuborishni o'rganadi. Bu tarqatilgan registrga ma'lum ma'lumotlarni o'qish yoki yozish uchun ma'lum bir aqlli shartnomani (zanjir kod funktsiyasi) chaqirish so'rovidir. Texnik jihatdan, mijoz SDK tegishli funksiyadan foydalanadi, uning API-si tranzaksiya parametrlari bilan ma'lum bir ob'ektga uzatiladi, shuningdek, mijoz imzosini qo'shadi va ushbu ma'lumotlarni protokol buferi orqali gRPC orqali tegishli tugunlarga (dosting tengdoshlariga) yuboradi.

Dummies uchun Hyperledger mato
Rasm 2. Bitimni boshlash

2) aqlli shartnomani bajarish

Tugunlar (tasdiqlovchi tengdoshlar) tranzaktsiyani amalga oshirish uchun so'rovni qabul qilib, mijoz imzosini tekshiradilar va agar hamma narsa tartibda bo'lsa, ular so'rov ma'lumotlari bilan ob'ektni oladilar va aqlli shartnomani (zanjirli kod funktsiyasi) bajarish simulyatsiyasini amalga oshiradilar. bu ma'lumotlar. Aqlli shartnoma - bu tranzaktsiyaning biznes mantig'i, ma'lum shartlar va ko'rsatmalar to'plami (bizning holimizda bu talabani tekshirish, bu yangi talabami yoki u allaqachon ro'yxatdan o'tganmi, yoshni tekshirish va hokazo). Aqlli shartnomani bajarish uchun sizga WorldState ma'lumotlari ham kerak bo'ladi. Indorsing peer-da aqlli shartnomani simulyatsiya qilish natijasida ikkita ma'lumotlar to'plami olinadi - o'qish to'plami va yozish to'plami. Read Set va Write Set asl va yangi WorldState qiymatlaridir. (yangi - aqlli shartnomani simulyatsiya qilish paytida olingan ma'noda).

Dummies uchun Hyperledger mato
Rasm 3. Aqlli shartnomaning bajarilishi

3) Mijoz ilovasiga ma'lumotlarni qaytarish

Aqlli kontrakt simulyatsiyasini o'tkazgandan so'ng, Endorsing Peers asl ma'lumotlarni va simulyatsiya natijasini, shuningdek, sertifikat bilan imzolangan RW to'plamini mijoz ilovasiga qaytaradi. Ushbu bosqichda tarqatilgan registrda hech qanday o'zgarishlar yuz bermaydi. Mijoz ilovasi Indorsing Peer imzosini tekshiradi, shuningdek yuborilgan tranzaksiya ma'lumotlari va qaytarilgan ma'lumotlarni solishtiradi (ya'ni, tranzaksiya taqlid qilingan asl ma'lumotlar buzilgan yoki buzilganligini tekshiradi). Agar tranzaktsiya faqat registrdagi ma'lumotlarni o'qish uchun qilingan bo'lsa, mijoz ilovasi mos ravishda kerakli o'qish to'plamini oladi va bu odatda tarqatilgan registrni o'zgartirmasdan operatsiyani muvaffaqiyatli yakunlaydi. Ro'yxatga olish kitobidagi ma'lumotlarni o'zgartirishi kerak bo'lgan operatsiya bo'lsa, mijoz ilovasi qo'shimcha ravishda Indorsing siyosatining bajarilishini tekshiradi. Mijoz ilovasi tasdiqlash siyosatini bajarish natijasini tekshirmasligi mumkin, ammo Hyperledger Fabric platformasi bu holda registrga tranzaktsiyani qo'shish bosqichida tugunlar (Committing Peers) siyosatlarini tekshirishni ta'minlaydi.

Dummies uchun Hyperledger mato
Rasm 4. Mijoz ilovasiga ma'lumotlarni qaytarish

4) RW to'plamlarini Buyurtma Tengdoshlariga yuborish

Mijoz ilovasi tranzaktsiyani qo'shimcha ma'lumotlar bilan birga Buyurtma xizmatiga yuboradi. Bunga RW to'plami, tengdoshlar imzolarini tasdiqlash va Kanal identifikatori kiradi.

Buyurtma xizmati - nomidan kelib chiqqan holda, ushbu xizmatning asosiy vazifasi kiruvchi operatsiyalarni to'g'ri tartibda tartibga solishdir. Shuningdek, tarqatilgan registrning yangi blokini shakllantirish va yangi yaratilgan bloklarni barcha Commiting tugunlariga kafolatlangan etkazib berish, shu bilan taqsimlangan registrni o'z ichiga olgan barcha tugunlar bo'yicha ma'lumotlarning izchilligini ta'minlash (Committing peers). Shu bilan birga, Buyurtma xizmatining o'zi reestrni hech qanday tarzda o'zgartirmaydi. Buyurtma xizmati tizimning muhim tarkibiy qismidir, shuning uchun u bir nechta tugunlardan iborat klasterdir. Buyurtma xizmati tranzaksiyaning haqiqiyligini tekshirmaydi, shunchaki ma'lum bir kanal identifikatori bilan tranzaktsiyani qabul qiladi, kiruvchi tranzaktsiyalarni ma'lum tartibda tartibga soladi va ulardan taqsimlangan reestrning yangi bloklarini shakllantiradi. Bitta buyurtma xizmati bir vaqtning o'zida bir nechta kanallarga xizmat ko'rsatishi mumkin. Buyurtma xizmati Kafka klasterini o'z ichiga oladi, u to'g'ri (o'zgarmas) tranzaksiya navbatini saqlaydi (7-bandga qarang).

Dummies uchun Hyperledger mato
Rasm 5. RW to'plamlarini Buyurtma Tengdoshlariga yuborish

5) Yaratilgan bloklarni Committing Peer-ga yuborish

Buyurtma xizmatida yaratilgan bloklar barcha tarmoq tugunlariga uzatiladi (efirga uzatiladi). Har bir tugun yangi blok olgandan so'ng, uni tasdiqlash siyosatiga muvofiqligini tekshiradi, aqlli shartnoma simulyatsiyasi natijasida barcha ma'qullovchi tengdoshlar bir xil natijani (Yozish to'plami) olganligini tekshiradi, shuningdek, asl qiymatlarning mavjudligini tekshiradi. tranzaktsiya boshlangan paytdan boshlab o'zgartirildi (ya'ni, Read Set - WorldState'dan aqlli shartnoma tomonidan o'qiladigan ma'lumotlar). Agar barcha shartlar bajarilsa, tranzaktsiya haqiqiy deb belgilanadi, aks holda tranzaktsiya haqiqiy emas maqomini oladi.

Dummies uchun Hyperledger mato
Rasm 6. Yaratilgan bloklarni Committing Peerga yuborish

6) Ro'yxatga olish kitobiga blok qo'shish

Har bir tugun tarqatilgan registrning mahalliy nusxasiga tranzaktsiyani qo'shadi va agar tranzaktsiya haqiqiy bo'lsa, Write Set WorldState (joriy holat) ga qo'llaniladi va shunga mos ravishda, ta'sirlangan ob'ektlarning yangi qiymatlari. bitim yoziladi. Agar tranzaktsiya haqiqiy bo'lmagan tokenni olgan bo'lsa (masalan, bitta blokda bir xil ob'ektlar bilan ikkita tranzaktsiya amalga oshirilgan bo'lsa, tranzaktsiyalardan biri haqiqiy emas bo'lib chiqadi, chunki asl qiymatlar boshqasi tomonidan o'zgartirilgan. tranzaksiya). Ushbu tranzaktsiya, shuningdek, noto'g'ri token bilan taqsimlangan daftarga qo'shiladi, ammo ushbu tranzaksiyaning Write Set joriy WorldState uchun qo'llanilmaydi va shunga mos ravishda tranzaktsiyada ishtirok etuvchi ob'ektlarni o'zgartirmaydi. Shundan so'ng, foydalanuvchi ilovasiga tranzaksiyaning taqsimlangan reestrga doimiy ravishda qo'shilganligi, shuningdek, tranzaksiya holati, ya'ni uning haqiqiy yoki haqiqiy emasligi haqida bildirishnoma yuboriladi...

Dummies uchun Hyperledger mato
Rasm 7. Ro'yxatga olish kitobiga blok qo'shish

Buyurtma berish xizmati

Buyurtma xizmati tegishli ZooKeeper tugunlariga ega Kafka klasteridan va Buyurtma xizmati mijozlari va Kafka klasteri o'rtasida joylashgan Buyurtma xizmati tugunlaridan (OSN) iborat. Kafka klasteri taqsimlangan, nosozliklarga chidamli oqimlarni (xabarlarni) boshqarish platformasidir. Kafkadagi har bir kanal (mavzu) faqat yangi yozuv qo'shishni qo'llab-quvvatlaydigan o'zgarmas yozuvlar ketma-ketligidir (mavjudni o'chirish mumkin emas). Mavzu tuzilishining rasmi quyida ko'rsatilgan. Aynan Kafkaning ushbu mulki blokcheyn platformasini qurish uchun ishlatiladi.

Dummies uchun Hyperledger mato
kafka.apache.org dan olingan

  • Rasm 8. Buyurtma xizmati mavzusining tuzilishi*

Foydali havolalar

Youtube - Hyperledger loyihasi bilan biznes uchun blokcheyn yaratish
Hyperledger Fabric hujjatlari
Hyperledger mato: ruxsat etilgan blokcheynlar uchun taqsimlangan operatsion tizim

Rahmatlar

Ushbu maqolani tayyorlashda yordam bergan hamkasblarimga chuqur minnatdorchiligimni bildirmoqchiman:
Nikolay Marin
Igor Xapov
Dmitriy Gorbachev
Aleksandr Zemtsov
Ekaterina Guseva

Manba: www.habr.com

a Izoh qo'shish