Dummies үчүн Hyperledger Fabric

Ишкана үчүн блокчейн платформасы

Dummies үчүн Hyperledger Fabric

Кутмандуу күн, урматтуу окурмандар, менин атым Николай Нефедов, мен IBMдин техникалык адисимин, бул макалада мен сизди блокчейн платформасы - Hyperledger Fabric менен тааныштыргым келет. Платформа ишкана-класстагы бизнес тиркемелерди куруу үчүн иштелип чыккан. Макаланын деңгээли IT технологиялар боюнча негизги билими бар даярдыгы жок окурмандар үчүн.

Hyperledger Fabric – бул ачык булактуу долбоор, ачык булактуу Hyperledger долбоорунун бутактарынын бири, Linux Фондунун консорциуму. Hyperledger Fabric алгач Digital Assets жана IBM тарабынан ачылган. Hyperledger Fabric платформасынын негизги өзгөчөлүгү - бул ишкана колдонууга багытталган. Ошондуктан, платформа бүтүмдөрдүн жогорку ылдамдыгын жана алардын арзан баасын, ошондой эле бардык катышуучулардын идентификациясын эске алуу менен иштелип чыккан. Бул артыкчылыктарга транзакцияларды текшерүү кызматын бөлүү жана бөлүштүрүлгөн реестрдин жаңы блокторун түзүү, ошондой эле күбөлөндүрүүчү борборду пайдалануу жана катышуучулардын авторизациясы аркылуу жетишилет.

Менин макалам Hyperledger Fabric жөнүндө макалалар сериясынын бир бөлүгү болуп саналат, анын алкагында биз университетке кирген студенттерди каттоо тутумунун долбоорун сүрөттөйбүз.

Hyperledger Fabricтин жалпы архитектурасы

Hyperledger Fabric - бул тармак түйүндөрүндө орнотулган ар кандай функционалдык компоненттерден турган бөлүштүрүлгөн блокчейн тармагы. Hyperledger Fabric компоненттери DockerHub'тан эркин жүктөлө турган Docker контейнерлери. Hyperledger Fabric да Kubernetes чөйрөсүндө иштетилиши мүмкүн.

Акылдуу контракттарды жазуу үчүн (Hyperledger Fabric контекстиндеги чынжыр код) биз Голанг колдондук (бирок Hyperledger Fabric башка тилдерди колдонууга мүмкүндүк берет). Ыңгайлаштырылган тиркемени иштеп чыгуу үчүн, биздин учурда, биз тиешелүү Hyperledger Fabric SDK менен Node.js колдондук.

Түйүндөр бизнес логикасын (акылдуу контракт) - чынжыр кодду аткарат, бөлүштүрүлгөн реестрдин абалын сактайт (китептин маалыматтары) жана платформанын башка системалык кызматтарын аткарат. Түйүн бул логикалык бирдик гана; бир эле физикалык серверде ар кандай түйүндөр болушу мүмкүн. Түйүндөр кандайча топтолгондугу (Ишенимдүү домен) жана алар блокчейн тармагынын кандай функциялары менен байланышкандыгы алда канча маанилүү.

Жалпы архитектура мындай көрүнөт:

Dummies үчүн Hyperledger Fabric

Сүрөт 1. Hyperledger Fabricтин жалпы архитектурасы

Колдонуучунун колдонмосу (Тапшырма Кардар) – бул колдонуучулар блокчейн тармагы менен иштеген тиркеме. Иштөө үчүн, сиз ыйгарым укуктуу болушуңуз керек жана тармактагы ар кандай иш-аракеттерге тиешелүү укуктарга ээ болушуңуз керек.

Курдаштар бир нече ролдордо болот:

  • Indorsing Peer – транзакциянын аткарылышын имитациялаган түйүн (акылдуу келишимдин кодун аткарат). Акылдуу келишимди текшерүүдөн жана аткаруудан кийин түйүн өзүнүн колтамгасы менен бирге аткаруунун натыйжаларын кардар тиркемесин кайтарып берет.
  • Заказ берүү кызматы – бул бөлүштүрүлгөн реестрдин жаңы блокторун түзүү жана транзакцияларды аткаруу үчүн кезекти түзүү үчүн колдонулган бир нече түйүндөр боюнча бөлүштүрүлгөн кызмат. Буйрутма кызматы реестрге жаңы блокторду кошпойт (Бул функция өндүрүмдүүлүктү жакшыртуу үчүн "Кеңештерди аткарууга" жылдырылды).
  • Committing Peer — бул бөлүштүрүлгөн реестрди камтыган түйүн жана реестрге жаңы блокторду кошот (булар Заказ берүү кызматы тарабынан түзүлгөн). Бардык Committing Peers бөлүштүрүлгөн китептин жергиликтүү көчүрмөсүн камтыйт. Committing Peer жергиликтүү жаңы блокту кошуудан мурун блоктун ичиндеги бардык транзакциялардын жарактуулугун текшерет.

Индоссамент саясаты - транзакциянын жарактуулугун текшерүү саясаты. Бул саясаттар транзакция жарактуу деп таанылышы үчүн акылдуу келишим аткарылышы керек болгон түйүндөрдүн талап кылынган топтомун аныктайт.

Бөлүштүрүлгөн реестр - Лергер - эки бөлүктөн турат: WolrldState (Ошондой эле Мамлекеттик DataBase деп аталат) жана BlockChain.

BlockChain - бөлүштүрүлгөн реестр объекттеринде болгон бардык өзгөрүүлөрдүн жазууларын сактаган блоктордун тизмеги.

WolrldState - бардык бөлүштүрүлгөн китеп объекттеринин учурдагы (эң акыркы) баалуулуктарын сактаган бөлүштүрүлгөн китеп компоненти.

WorldState представляет собой базу данных, в базовом варианте — LevelDB или более сложная – CouchDB, которая содержит пары ключ — значение, например: Имя – Иван, Фамилия — Иванов, дата регистрации в системе – 12.12.21, дата рождения — 17.12.1961, жана башкалар. WorldState жана бөлүштүрүлгөн реестр берилген каналдын бардык катышуучуларынын ортосунда ырааттуу болушу керек.

Hyperledger Fabric бардык катышуучулар белгилүү жана аутентификацияланган тармак болгондуктан, ал атайын сертификаттоо органын колдонот - CA (Certification Authority). CA X.509 стандартынын жана ачык ачкыч инфраструктурасынын - PKI негизинде иштейт.

Мүчөлүк кызматы - бул мүчөлөр объекттин белгилүү бир уюмга же каналга таандык экенин текшерген кызмат.

Бүтүм - көпчүлүк учурларда, бөлүштүрүлгөн реестрге жаңы маалыматтарды жазып жатат.
каналдарды же акылдуу келишимдерди түзүү үчүн бүтүмдөр да бар. Транзакция колдонуучу колдонмосу тарабынан башталат жана бөлүштүрүлгөн китепте жазуу менен аяктайт.

Канал - бул чектелген, бирок белгилүү катышуучулардын чөйрөсүндө жашыруун транзакцияларды жүргүзүү үчүн иштелип чыккан эки же андан көп блокчейн тармагынын катышуучуларынан турган жабык ички тармак. Канал катышуучулар тарабынан аныкталат, анын бөлүштүрүлгөн реестри, акылдуу келишимдер, Ordering Service, WorldState. Ар бир каналдын катышуучусу каналга кирүү укугуна ээ болушу керек жана транзакциялардын ар кандай түрлөрүн жасоого укуктуу. Авторизация Мүчөлүк кызматы аркылуу ишке ашырылат.

Транзакцияны аткаруунун типтүү сценарийи

Андан кийин, мен мисал катары биздин долбоор аркылуу транзакцияны аткаруунун типтүү сценарийи жөнүндө айткым келет.

Ички долбоордун бир бөлүгү катары биз Hyperledger Fabric тармагын түздүк, ал ЖОЖдорго кирген студенттерди каттоо жана эсепке алуу үчүн иштелип чыккан. Биздин тармагыбыз А жана В университетине тиешелүү эки уюмдан турат. Ар бир уюм кардар тиркемесин, ошондой эле өзүнүн Committing and Endorsing Peer-ди камтыйт. Биз ошондой эле жалпы кызматтарды колдонобуз Буйрутма кызматы, Мүчөлүк кызматы жана Тастыктоо органы.

1) бүтүмдүн башталышы

Колдонуучу тиркемеси Hyperledger Fabric SDK колдонуп, транзакция өтүнүчүн баштап, суроо-талапты акылдуу келишимдери бар түйүндөргө жөнөтөт. Өтүнүч бөлүштүрүлгөн реестрден (Ледгер) өзгөртүү же окуу болушу мүмкүн. Эгерде университеттин студенттери үчүн бухгалтердик эсепке алуу үчүн тесттик система конфигурациясынын мисалын карап чыга турган болсок, кардар тиркемеси транзакция өтүнүчүн А жана В университеттеринин түйүндөрүнө жөнөтөт, алар аталган акылдуу контракттын Индоссамент саясатына киргизилген. А түйүнү - келген студентти каттаган университетте жайгашкан түйүн, ал эми В түйүнү башка университетте жайгашкан түйүн. Транзакция бөлүштүрүлгөн реестрге сакталышы үчүн, бизнес логикасына ылайык, транзакцияны жактырышы керек болгон бардык түйүндөр бирдей натыйжа менен акылдуу келишимдерди ийгиликтүү аткарышы керек. Түйүн Колдонуучу тиркемеси Hyperledger Fabric SDK куралдарын колдонуп, Индоссамент саясатын алат жана транзакция өтүнүчүн кайсы түйүндөргө жөнөтүүнү үйрөнөт. Бул бөлүштүрүлгөн реестрге белгилүү бир маалыматтарды окуу же жазуу үчүн белгилүү бир акылдуу келишимди (чынжыр код функциясы) чакыруу өтүнүчү. Техникалык жактан алганда, кардар SDK тиешелүү функцияны колдонот, анын API'си транзакциянын параметрлери менен белгилүү объектке өтүп, ошондой эле кардар кол тамгасын кошот жана бул маалыматтарды gRPC аркылуу протокол буфери аркылуу тиешелүү түйүндөргө (индоссациялоочу теңдер) жөнөтөт.

Dummies үчүн Hyperledger Fabric
Сүрөт 2. Транзакцияны баштоо

2) акылдуу келишимди аткаруу

Түйүндөр (Индоссациялоочу курдаштар) транзакцияны жүргүзүү өтүнүчүн алып, кардардын кол тамгасын текшерип, эгер баары жайында болсо, алар суроо-талаптын маалыматтары менен объектти алып, смарт-контракттын аткарылышынын симуляциясын (чынжыр код функциясын) иштетишет. бул маалыматтар. Акылдуу контракт – бул транзакциянын бизнес логикасы, белгилүү бир шарттардын жана нускамалардын жыйындысы (биздин учурда бул студентти текшерүү, бул жаңы студентпи, же ал мурунтан эле катталганбы, жашын текшерүү ж.б.). Акылдуу келишимди аткаруу үчүн сизге WorldState маалыматы да керек болот. Индоссингдик теңдеште акылдуу келишимди имитациялоонун натыйжасында эки маалымат топтому алынат - Окуу топтому жана Жазуу топтому. Read Set жана Write Set - бул оригиналдуу жана жаңы WorldState баалуулуктары. (жаңы - акылдуу келишимди симуляциялоо учурунда алынган мааниде).

Dummies үчүн Hyperledger Fabric
Сүрөт 3. Акылдуу келишимдин аткарылышы

3) Кардар колдонмосуна маалыматтарды кайтаруу

Акылдуу келишимдин симуляциясын жүргүзгөндөн кийин, Indorsing Peers оригиналдуу маалыматтарды жана симуляциянын натыйжасын, ошондой эле алардын сертификаты менен кол коюлган RW топтомун кардар тиркемесине кайтарат. Бул этапта бөлүштүрүлгөн реестрде эч кандай өзгөрүүлөр болбойт. Кардар тиркемеси Indorsing Peer кол тамгасын текшерет, ошондой эле жөнөтүлгөн транзакциянын баштапкы маалыматтарын жана кайтарылган маалыматтарды салыштырат (башкача айтканда, транзакция симуляцияланган баштапкы маалыматтар бурмаланганын текшерет). Эгерде транзакция реестрден маалыматтарды окуу үчүн гана болгон болсо, анда кардар тиркемеси тиешелүү түрдө керектүү Окуу топтомун алат жана бул адатта бөлүштүрүлгөн реестрди өзгөртпөстөн транзакцияны ийгиликтүү аяктайт. Реестрдеги маалыматтарды өзгөртүүгө тийиш болгон транзакция болгон учурда, кардар тиркемеси Индоссинг саясатынын аткарылышын кошумча текшерет. Мүмкүн, кардар тиркемеси Индоссамент саясатын аткаруунун натыйжасын текшербейт, бирок Hyperledger Fabric платформасы бул учурда реестрге транзакцияны кошуу стадиясында түйүндөрдөгү саясаттарды (Committing Peers) текшерүүнү камсыз кылат.

Dummies үчүн Hyperledger Fabric
Сүрөт 4. Кардар тиркемесине маалыматтарды кайтаруу

4) RW топтомдорун Заказ берүүчүгө жөнөтүү

Кардардын тиркемеси транзакцияны коштомо маалыматтар менен бирге Заказ берүү кызматына жөнөтөт. Бул RW топтомун, жактыргыч кол тамгаларды жана Канал ID'син камтыйт.

Буйрутма берүү кызматы – атына жараша, бул кызматтын негизги функциясы туура тартипте кирүүчү транзакцияларды уюштуруу болуп саналат. Ошондой эле бөлүштүрүлгөн реестрдин жаңы блогун түзүү жана жаңы генерацияланган блокторду бардык Commiting түйүндөрүнө жеткирүү кепилденген, ошону менен бөлүштүрүлгөн реестрди (Committing peers) камтыган бардык түйүндөр боюнча маалыматтардын ырааттуулугун камсыз кылуу. Ошол эле учурда Заказ берүү кызматы реестрди эч кандай өзгөртө албайт. Заказ берүү кызматы системанын маанилүү компоненти болуп саналат, ошондуктан ал бир нече түйүндөрдөн турган кластер. Буйрутма берүү кызматы транзакциянын жарактуулугун текшербейт, ал жөн гана белгилүү бир канал идентификатору менен транзакцияны кабыл алат, белгилүү бир тартипте кирген транзакцияларды уюштурат жана алардан бөлүштүрүлгөн реестрдин жаңы блокторун түзөт. Бир буйрутма кызматы бир эле учурда бир нече каналды тейлей алат. Буйрутма берүү кызматы туура (өзгөрбөс) транзакция кезегин сактаган Кафка кластерин камтыйт (7-пунктту караңыз).

Dummies үчүн Hyperledger Fabric
Сүрөт 5. RW топтомдорун Заказ берүүчүгө жөнөтүү

5) Түзүлгөн блокторду Committing Peerге жөнөтүү

Буйрутма Кызматында түзүлгөн блоктор бардык тармак түйүндөрүнө берилет (берилет). Ар бир түйүн жаңы блокту алгандан кийин, анын Индоссациялоо саясатына шайкештигин текшерет, акылдуу келишимди симуляциялоонун натыйжасында бардык Индоссациялоочу теңдештер бирдей жыйынтыкты (Write Set) алганын текшерет, ошондой эле баштапкы маанилердин бар-жоктугун текшерет транзакция башталган учурдан тартып өзгөргөн (башкача айтканда, Read Set - WorldState компаниясынан акылдуу келишим тарабынан окулган маалыматтар). Эгерде бардык шарттар аткарылса, транзакция жарактуу деп белгиленет, антпесе, транзакция жараксыз статусун алат.

Dummies үчүн Hyperledger Fabric
Сүрөт 6. Түзүлгөн блокторду Committing Peerге жөнөтүү

6) Реестрге блок кошуу

Ар бир түйүн бөлүштүрүлгөн реестрдин локалдык көчүрмөсүнө транзакцияны кошот жана эгерде транзакция жарактуу болсо, анда Write Set WorldState (учурдагы абал) үчүн колдонулат жана ошого жараша объекттердин жаңы маанилери таасир эткен. транзакция жазылат. Эгерде транзакция жараксыз белгини алса (мисалы, бир блоктун ичинде бир эле объект менен эки транзакция жасалган болсо, анда транзакциялардын бири жараксыз болуп калат, анткени баштапкы маанилер башка тарабынан өзгөртүлгөн. транзакция). Бул транзакция ошондой эле жараксыз белги менен бөлүштүрүлгөн китепке кошулат, бирок бул транзакциянын Жазуу топтому учурдагы WorldState үчүн колдонулбайт жана, демек, транзакцияга катышкан объекттерди өзгөртпөйт. Андан кийин, колдонуучунун тиркемесинде транзакция бөлүштүрүлгөн реестрге биротоло кошулгандыгы, ошондой эле транзакциянын статусу, башкача айтканда, анын жарактуу же жарактуу эместиги жөнүндө билдирүү жөнөтүлөт...

Dummies үчүн Hyperledger Fabric
Сүрөт 7. Реестрге блок кошуу

БУЙРУК БЕРҮҮ КЫЗМАТЫ

Буйрутма берүү кызматы тиешелүү ZooKeeper түйүндөрү жана Заказ берүү кызматынын кардарлары менен Кафка кластеринин ортосунда турган Кафка кластеринен турат. Кафка кластери бөлүштүрүлгөн, катага чыдамдуу агымды (билдирүүлөрдү) башкаруу платформасы. Кафкадагы ар бир канал (тема) жаңы жазууну кошууну гана колдогон жазуулардын өзгөрүлгүс ырааттуулугу (бар болгонду жок кылуу мүмкүн эмес). Теманын структурасынын иллюстрациясы төмөндө көрсөтүлгөн. Дал ушул Кафканын менчиги блокчейн платформасын куруу үчүн колдонулат.

Dummies үчүн Hyperledger Fabric
kafka.apache.org сайтынан алынган

  • Сүрөт 8. Буйрутма берүү кызматынын темасынын структурасы*

Пайдалуу шилтемелер

Youtube - Hyperledger долбоору менен бизнес үчүн блокчейн куруу
Hyperledger Fabric Docs
Hyperledger ткани: уруксат берилген блокчейндер үчүн бөлүштүрүлгөн операциялык тутум

Ыракматтар

Бул макаланы даярдоого жардам берген кесиптештериме терең ыраазычылык билдирем:
Николай Марин
Игорь Хапов
Дмитрий Горбачев
Александр Земцов
Екатерина Гусева

Source: www.habr.com

Комментарий кошуу