Манекендерге арналған Hyperledger матасы

Кәсіпорынға арналған блокчейн платформасы

Манекендерге арналған Hyperledger матасы

Қайырлы күн, құрметті оқырмандар, менің атым Николай Нефедов, мен IBM техникалық маманымын, осы мақалада мен сізді блокчейн платформасымен - Hyperledger Fabric-пен таныстырғым келеді. Платформа кәсіпорын деңгейіндегі бизнес қолданбаларын құруға арналған (Кәсіпорын класы). Мақаланың деңгейі IT-технологиялар бойынша базалық білімі бар дайын емес оқырмандарға арналған.

Hyperledger Fabric – ашық бастапқы жоба, Hyperledger ашық бастапқы жобасының филиалдарының бірі, Linux Foundation консорциумы. Hyperledger Fabric бастапқыда Digital Assets және IBM компанияларымен іске қосылды. Hyperledger Fabric платформасының басты ерекшелігі - оның корпоративтік қосымшаларға бағытталғандығы. Сондықтан платформа транзакциялардың жоғары жылдамдығын және олардың төмен құнын, сондай-ақ барлық қатысушыларды анықтауды ескере отырып әзірленді. Бұл артықшылықтарға транзакцияны тексеру қызметін бөлу және таратылған тізілімнің жаңа блоктарын қалыптастыру, сондай-ақ сертификаттау орталығын пайдалану және қатысушыларды рұқсат ету арқылы қол жеткізіледі.

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

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

Hyperledger Fabric – желі түйіндерінде орнатылған әртүрлі функционалдық құрамдастардан тұратын бөлінген блокчейн желісі. Hyperledger Fabric құрамдастары - DockerHub сайтынан еркін жүктеп алуға болатын Docker контейнерлері. Hyperledger Fabric сонымен қатар Kubernetes ортасында іске қосылуы мүмкін.

Смарт келісімшарттарды (Hyperledger Fabric контекстіндегі тізбекті код) жазу үшін біз Голангты қолдандық (бірақ Hyperledger Fabric басқа тілдерді пайдалануға мүмкіндік береді). Теңшелетін қолданбаны әзірлеу үшін біздің жағдайда Node.js сәйкес Hyperledger Fabric SDK қолданылды.

Түйіндер іскерлік логиканы (ақылды келісім-шарт) – тізбекті кодты басқарады, бөлінген тізілімнің күйін сақтайды (бухгалтерлік кітап деректері) және басқа платформалық жүйе қызметтерін орындайды. Түйін тек логикалық бірлік, әр түрлі түйіндер бір физикалық серверде болуы мүмкін. Түйіндердің қалай топтастырылғаны (Сенімді домен) және олар блокчейн желісінің қандай функцияларымен байланысты екендігі әлдеқайда маңызды.

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

Манекендерге арналған Hyperledger матасы

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

Пайдаланушы қолданбасы (жіберу клиенті) — пайдаланушылар блокчейн желісімен жұмыс істейтін қолданба. Жұмыс істеу үшін сізге авторизациядан өтіп, желідегі әртүрлі әрекеттерге тиісті құқықтарға ие болу керек.

Құрдастардың (түйіндер) бірнеше рөлдері бар:

  • Endorsing Peer – транзакцияның орындалуын имитациялайтын түйін (смарт келісімшарт кодын орындайды). Смарт келісім-шартты тексеріп, орындағаннан кейін түйін қолтаңбасымен бірге орындау нәтижелерін клиенттік қолданбаға қайтарады.
  • Тапсырыс беру қызметі – бұл бірнеше түйіндерге бөлінген қызмет, ол таратылған кітаптың жаңа блоктарын қалыптастыру және транзакцияларды орындау ретін құру үшін қолданылады. Тапсырыс беру қызметі тізілімге жаңа блоктарды қоспайды (жақсы өнімділік үшін Committing Pers бағдарламасына ауыстырылды).
  • Committing Peer - таратылған тізілімді қамтитын және тізілімге жаңа блоктарды қосатын түйін (оларды тапсырыс беру қызметі қалыптастырған). Барлық Committing Peers құрамында таратылған кітаптың жергілікті көшірмесі бар. Жаңа блокты жергілікті түрде қоспас бұрын, Committing Peer блоктағы барлық транзакциялардың жарамдылығын тексереді.

Индоссамент саясаты – транзакцияның жарамдылығын тексеруге арналған саясат. Бұл саясаттар транзакция жарамды деп танылуы үшін смарт келісім-шарт орындалуы керек түйіндердің қажетті жинағын анықтайды.

Бөлінген тізілім – Lerger – екі бөліктен тұрады: WolrldState (сонымен бірге State DataBase деп аталады) және BlockChain.

BlockChain - таратылған кітап нысандарында болған барлық өзгерістердің жазбаларын сақтайтын блоктар тізбегі.

WolrldState - барлық таратылған тізілім нысандарының ағымдағы (төтенше) мәндерін сақтайтын бөлінген тізілім құрамдас бөлігі.

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

Hyperledger Fabric - барлық қатысушылар белгілі және аутентификацияланған желі болғандықтан, мұнда арнайы сертификаттау орталығы пайдаланылады - CA (Сертификаттау орталығы). CA X.509 стандарты және ашық кілт инфрақұрылымы - PKI негізінде жұмыс істейді.

Мүшелік қызметі – мүшелер нысанның белгілі бір ұйымға немесе арнаға тиесілі екенін тексеретін қызмет.

Транзакция көп жағдайда таратылған кітаптағы жаңа деректердің жазбасы болып табылады.
Сондай-ақ арналар немесе смарт келісім-шарттар жасау үшін транзакциялар бар. Транзакция пайдаланушы қолданбасымен басталады және таратылған кітапқа жазумен аяқталады.

Арна (арна) – шектеулі, бірақ белгілі қатысушылар шеңбері шегінде құпия транзакцияларды жүргізуге арналған блокчейн желісінің екі немесе одан да көп қатысушыларынан тұратын жабық ішкі желі. Арнаны қатысушылар, оның таратылған кітапшасы, смарт келісім-шарттары, тапсырыс беру қызметі, WorldState анықтайды. Әрбір арна мүшесі арнаға кіруге және әртүрлі транзакцияларды орындауға құқылы болуы керек. Авторизация Мүшелік қызметі арқылы жүзеге асырылады.

Транзакцияны орындаудың әдеттегі сценарийі

Әрі қарай, мен жобамыздың мысалын қолдана отырып, транзакцияны орындаудың әдеттегі сценарийі туралы айтқым келеді.

Ішкі жобамыздың бір бөлігі ретінде біз Hyperledger Fabric желісін жасадық, ол университетке түсетін студенттерді тіркеуге және тіркеуге арналған. Біздің желіміз А университеті мен В университетіне тиесілі екі ұйымнан тұрады. Әрбір ұйымда клиенттік қосымша, сонымен қатар өзінің Committing and Indosing Peer бар. Біз сондай-ақ ортақ Тапсырыс беру қызметін, мүшелік қызметі және сертификаттау орталығының қызметтерін пайдаланамыз.

1) транзакцияны бастау

Пайдаланушы қолданбасы Hyperledger Fabric SDK көмегімен транзакция сұрауын бастайды және сұрауды смарт келісімшарттары бар түйіндерге жібереді. Сұраныс үлестірілген кітаптан (Леджер) өзгерту немесе оқу болуы мүмкін. Егер университет студенттерін есепке алу жүйесінің сынақ конфигурациясының мысалын қарастыратын болсақ, онда клиенттік қосымша аталған смарт-келісімшарттың Индоссамент саясатына енгізілген А және В университеттерінің түйіндеріне транзакция сұрауын жібереді. А түйіні – келген студентті тіркейтін университетте орналасқан түйін, ал В түйіні – басқа университетте орналасқан түйін. Транзакцияны бөлінген кітапқа сақтау үшін бизнес логикасына сәйкес транзакцияны мақұлдауы керек барлық түйіндер бірдей нәтижемен смарт келісімшарттарды сәтті орындауы керек. А түйінінің пайдаланушы қолданбасы Hyperledger Fabric SDK құралдарын пайдалана отырып, мақұлдау саясатын (бекіту саясаты) алады және транзакция сұрауын қай түйіндерге жіберу керектігін анықтайды. Бұл бөлінген кітапқа белгілі бір деректерді оқу немесе жазу үшін белгілі бір смарт келісімшартты (тізбектік код функциясы) шақыру (шақыру) сұрауы. Техникалық тұрғыдан, клиент SDK сәйкес функцияны пайдаланады, оның API интерфейсі транзакция параметрлері бар нысанды береді, сонымен қатар клиент қолтаңбасын қосады және бұл деректерді gRPC арқылы протокол буфері арқылы сәйкес түйіндерге (индоссациялық теңдестіру) жібереді.

Манекендерге арналған Hyperledger матасы
Сурет 2. Транзакцияны бастау

2) Келісімшарттың ақылды орындалуы

Түйіндер (индоссингтік әріптестер) транзакцияны жүргізуге сұранысты алып, клиенттің қолтаңбасын тексереді және егер бәрі тәртіпте болса, олар сұрау деректері бар нысанды алып, смарт келісімшартты орындаудың симуляциясын іске қосады (тізбекті код функциясы) осы деректермен. Ақылды келісім-шарт - бұл транзакцияның іскерлік логикасы, белгілі бір шарттар мен нұсқаулар жиынтығы (біздің жағдайда бұл студенттік тексеру, ол жаңа студент пе, әлде ол бұрыннан тіркелген ба, жасты тексеру және т.б.). Смарт келісімшартты орындау үшін сізге WorldState деректері де қажет болады. Индоссинг теңдесіндегі смарт келісім-шартты модельдеу нәтижесінде екі деректер жинағы алынады - оқу жинағы және жазу жинағы. Оқу жинағы және жазу жиыны бастапқы және жаңа WorldState мәндері болып табылады. (жаңа – смарт келісімшартты имитациялау арқылы алынған мағынада).

Манекендерге арналған Hyperledger матасы
Сурет 3. Ақылды келісім-шартты орындау

3) Клиент қолданбасына деректерді қайтару

Смарт келісім-шартты модельдеуден кейін Endorsing Peers клиенттік қолданбаға бастапқы деректерді және модельдеу нәтижесін, сондай-ақ олардың сертификатымен қол қойылған RW жинағын қайтарады. Бұл кезеңде бөлінген кітапта ешқандай өзгерістер жоқ. Клиент қолданбасы индоссанттың қолтаңбасын тексереді, сондай-ақ жіберілген бастапқы транзакция деректерін және қайтарылған деректерді салыстырады (яғни, транзакция имитацияланған бастапқы деректердің бүлінгенін тексереді). Егер транзакция тек тізілімнен деректерді оқуға арналған болса, онда клиент қолданбасы сәйкесінше қажетті оқу жинағын алады және осыған байланысты транзакция әдетте таратылған тізілімді өзгертпей сәтті аяқталады. Тізілімдегі деректерді өзгертуге тиісті транзакция жағдайында, клиент қолданбасы Индоссинг саясатының орындалғанын қосымша тексереді. Клиент қолданбасы мақұлдау саясатының орындалу нәтижесін тексермейтін болуы мүмкін, бірақ Hyperledger Fabric платформасы бұл жағдайда тізілімге транзакцияны қосу сатысында түйіндердегі (Comitting Peers) саясаттарды тексеруді қамтамасыз етеді.

Манекендерге арналған Hyperledger матасы
Сурет 4. Клиенттік қолданбаға деректерді қайтару

4) RW жиындарын Тапсырыс берушілерге жіберу

Клиент қолданбасы транзакцияны қатысты деректермен бірге Тапсырыс беру қызметіне жібереді. Бұған RW жинағы, мақұлдаушылардың қолтаңбалары және арна идентификаторы кіреді.

Тапсырыс беру қызметі - Атау негізінде бұл қызметтің негізгі қызметі кіріс транзакцияларын дұрыс ретпен құру болып табылады. Сондай-ақ таратылған тізілімнің жаңа блогын қалыптастыру және жаңадан жасалған блоктарды барлық Commiting түйіндеріне кепілді жеткізу, осылайша таратылған тізілімді қамтитын барлық түйіндердегі деректердің сәйкестігін қамтамасыз ету (Committing peers). Сонымен қатар, Тапсырыс беру қызметінің өзі тізілімді ешбір жолмен өзгертпейді. Тапсырыс беру қызметі жүйенің маңызды құрамдас бөлігі болып табылады, сондықтан ол бірнеше түйіндердің кластері болып табылады. Тапсырыс беру қызметі транзакцияның жарамдылығын тексермейді, ол жай ғана белгілі бір арна идентификаторы бар транзакцияны қабылдайды, кіріс транзакцияларын белгілі бір ретпен реттейді және олардан бөлінген кітаптың жаңа блоктарын қалыптастырады. Бір тапсырыс беру қызметі бір уақытта бірнеше арнаға қызмет көрсете алады. Тапсырыс беру қызметі дұрыс (өзгеріссіз) транзакция кезегін сақтайтын Кафка кластерін қамтиды (7-тармақты қараңыз).

Манекендерге арналған Hyperledger матасы
Сурет 5. RW жиындарын тапсырыс берушілерге жіберу

5) Жасалған блоктарды Committing Per-ге жіберу

Тапсырыс беру қызметінде қалыптасқан блоктар барлық желі түйіндеріне таратылады. Әрбір түйін жаңа блокты алған соң, оны мақұлдау саясатына сәйкестігін тексереді, ақылды келісім-шартты модельдеу нәтижесінде барлық мақұлдаушылардың бірдей нәтиже (Жазу жинағы) алғанын тексереді, сондай-ақ бастапқы мәндердің бар-жоғын тексереді. транзакция басталғаннан бері өзгертілді (яғни, - Read Set - WorldState смарт келісім-шарт арқылы оқылатын деректер). Егер барлық шарттар орындалса, транзакция жарамды деп белгіленеді, әйтпесе транзакция жарамсыз мәртебесін алады.

Манекендерге арналған Hyperledger матасы
Сурет 6. Жасалған блоктарды Committing Pier жүйесіне жіберу

6) Тізілімге блок қосу

Әрбір түйін транзакцияны таратылған кітаптың жергілікті көшірмесіне қосады және егер транзакция жарамды болса, Write Set WorldState (ағымдағы күй) үшін қолданылады, сәйкесінше транзакция әсер еткен нысандардың жаңа мәндері жазылады. . Егер транзакция жарамсыз белгіні алса (мысалы, бір блок ішінде бірдей объектілермен екі транзакция болған болса, онда транзакциялардың бірі жарамсыз болады, өйткені бастапқы мәндер басқа транзакция арқылы өзгертілген. ). Бұл транзакция жарамсыз маркері бар таратылған кітапқа да қосылады, бірақ бұл транзакцияның Жазу жинағы WorldState ағымдағы күйіне қолданылмайды және сәйкесінше транзакцияға қатысатын нысандарды өзгертпейді. Осыдан кейін пайдаланушы қолданбасына транзакцияның таратылған кітапқа мәңгілікке қосылғаны туралы, сондай-ақ транзакцияның күйі, яғни оның жарамды немесе жарамсыз екендігі туралы хабарлама жіберіледі ...

Манекендерге арналған Hyperledger матасы
Сурет 7. Тізілімге блок қосу

ТАПСЫРЫС БЕРУ ҚЫЗМЕТІ

Тапсырыс беру қызметі сәйкес ZooKeeper түйіндері бар Кафка кластерінен және Тапсырыс беру қызметінің клиенттері мен Кафка кластерінің арасында орналасқан Тапсырыс беру қызметі түйіндерінен (OSN) тұрады. Кафка кластері – таратылған, қатеге төзімді ағынды (хабарламаны) басқару платформасы. Кафкадағы әрбір арна (тақырып) тек жаңа жазба қосуды қолдайтын жазбалардың өзгермейтін тізбегі (барын жою мүмкін емес). Төменде тақырып құрылымының суреті берілген. Дәл осы Кафка қасиеті блокчейн платформасын құру үшін қолданылады.

Манекендерге арналған Hyperledger матасы
kafka.apache.org сайтынан алынды

  • Сурет 8. Тапсырыс беру қызметі тақырыбының құрылымы*

Пайдалы сілтемелер

Youtube - Hyperledger жобасымен бизнеске арналған блокчейн құру
Hyperledger Fabric құжаттары
Hyperledger матасы: рұқсат етілген блокчейндерге арналған таратылған операциялық жүйе

Алғыс

Мақаланы дайындауға көмектескен әріптестеріме үлкен алғыс айтамын:
Николай Марина
Игорь Хапов
Дмитрий Горбачев
Александр Земцов
Екатерина Гусева

Ақпарат көзі: www.habr.com

пікір қалдыру