Дамми нарт зориулсан Hyperledger даавуу

Аж ахуйн нэгжид зориулсан блокчейн платформ

Дамми нарт зориулсан Hyperledger даавуу

Өдрийн мэнд, эрхэм уншигчид, намайг Николай Нефедов гэдэг, би IBM-ийн техникийн мэргэжилтэн, энэ нийтлэлд би та бүхэнд блокчейн платформ болох Hyperledger Fabric-ийг танилцуулахыг хүсч байна. Энэхүү платформ нь аж ахуйн нэгжийн түвшний бизнесийн програмуудыг бий болгоход зориулагдсан. Өгүүллийн түвшин нь мэдээллийн технологийн үндсэн мэдлэгтэй, бэлтгэлгүй уншигчдад зориулагдсан болно.

Hyperledger Fabric нь нээлттэй эхийн төсөл бөгөөд Линуксийн сангийн консорциум болох нээлттэй эхийн Hyperledger төслийн салбаруудын нэг юм. 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-ийн ерөнхий архитектур

Хэрэглэгчийн програм (Submitting Client) нь хэрэглэгчид блокчейн сүлжээгээр ажилладаг програм юм. Ажиллахын тулд та эрх мэдэлтэй байх ёстой бөгөөд сүлжээнд янз бүрийн төрлийн үйлдлүүдийг хийх зохих эрхтэй байх ёстой.

Үе тэнгийнхэн хэд хэдэн үүрэг гүйцэтгэдэг:

  • Endorsing Peer нь гүйлгээний гүйцэтгэлийг дуурайдаг (ухаалаг гэрээний кодыг гүйцэтгэдэг) зангилаа юм. Ухаалаг гэрээг шалгаж, гүйцэтгэсний дараа зангилаа нь гүйцэтгэлийн үр дүнг гарын үсгийн хамт үйлчлүүлэгчийн програм руу буцаана.
  • Захиалга өгөх үйлчилгээ нь тархсан бүртгэлийн шинэ блокуудыг үүсгэх, гүйлгээг гүйцэтгэх дараалал үүсгэхэд ашигладаг хэд хэдэн цэг дээр түгээсэн үйлчилгээ юм. Захиалга өгөх үйлчилгээ нь бүртгэлд шинэ блок нэмдэггүй (Гүйцэтгэлийг сайжруулахын тулд энэ функцийг Committing Peers руу шилжүүлсэн).
  • Committing Peer нь хуваарилагдсан бүртгэлийг агуулсан зангилаа бөгөөд бүртгэлд шинэ блокуудыг нэмдэг (Захиалгын үйлчилгээнээс үүсгэсэн). Бүх Committing Peers нь тараасан дэвтэрийн орон нутгийн хуулбарыг агуулна. Committing Peer нь шинэ блок нэмэхийн өмнө блок доторх бүх гүйлгээг хүчинтэй эсэхийг шалгадаг.

Баталгаажуулах бодлого нь гүйлгээний хүчинтэй эсэхийг шалгах бодлого юм. Эдгээр бодлого нь гүйлгээг хүчинтэй гэж хүлээн зөвшөөрөхийн тулд ухаалаг гэрээг гүйцэтгэх шаардлагатай зангилааны багцыг тодорхойлдог.

Түгээмэл бүртгэл - Lerger - WolrldState (мөн Төрийн мэдээллийн сан гэж нэрлэдэг) болон BlockChain гэсэн хоёр хэсгээс бүрдэнэ.

BlockChain нь тархсан бүртгэлийн объектод гарсан бүх өөрчлөлтийн бүртгэлийг хадгалдаг блокуудын сүлжээ юм.

WolrldState нь бүх тархсан бүртгэлийн объектуудын одоогийн (хамгийн сүүлийн үеийн) утгыг хадгалдаг тархсан дэвтэрийн бүрэлдэхүүн хэсэг юм.

WorldState нь мэдээллийн сан бөгөөд үндсэн хувилбарт - LevelDB эсвэл илүү төвөгтэй - CouchDB, түлхүүр-утга хосуудыг агуулсан, жишээлбэл: Нэр - Иван, Овог - Иванов, системд бүртгүүлсэн огноо - 12.12.21/17.12.1961/XNUMX , төрсөн он сар өдөр - XNUMX/XNUMX/XNUMX гэх мэт. WorldState болон тархсан бүртгэл нь тухайн сувгийн бүх оролцогчдын дунд нийцэж байх ёстой.

Hyperledger Fabric нь бүх оролцогчийг мэддэг, баталгаажуулсан сүлжээ учраас тусгай гэрчилгээжүүлэх байгууллага - CA (Баталгаажуулалтын газар) ашигладаг. CA нь X.509 стандарт болон нийтийн түлхүүрийн дэд бүтэц - PKI дээр тулгуурлан ажилладаг.

Гишүүнчлэлийн үйлчилгээ нь тухайн объектыг тухайн байгууллага эсвэл сувагт харьяалагддаг гэдгийг гишүүдээр баталгаажуулдаг үйлчилгээ юм.

Гүйлгээ нь ихэнх тохиолдолд тархсан бүртгэлд шинэ өгөгдөл бичих явдал юм.
Мөн суваг үүсгэх эсвэл ухаалаг гэрээ байгуулах гүйлгээнүүд байдаг. Гүйлгээг хэрэглэгчийн програм эхлүүлж, тараасан дэвтэрт тэмдэглэснээр дуусдаг.

Суваг нь хязгаарлагдмал боловч мэдэгдэж буй оролцогчдын хүрээнд нууц гүйлгээ хийх зориулалттай хоёр буюу түүнээс дээш блокчейн сүлжээний оролцогчдоос бүрдсэн хаалттай дэд сүлжээ юм. Сувгийг оролцогчид, түүний тархсан бүртгэл, ухаалаг гэрээ, Захиалгын үйлчилгээ, WorldState тодорхойлдог. Сувгийн оролцогч бүр сувагт хандах эрхтэй бөгөөд янз бүрийн төрлийн гүйлгээ хийх эрхтэй байх ёстой. Зөвшөөрөл нь гишүүнчлэлийн үйлчилгээг ашиглан хийгддэг.

Гүйлгээний гүйцэтгэлийн ердийн хувилбар

Дараа нь би манай төслийг жишээ болгон ашиглан гүйлгээний гүйцэтгэлийн ердийн хувилбарын талаар ярихыг хүсч байна.

Бид дотоод төслийнхөө хүрээнд их дээд сургуульд элсэн суралцаж буй оюутнуудыг бүртгэх, бүртгэх зорилготой Hyperledger Fabric сүлжээг бий болгосон. Манай сүлжээ нь А болон Б их сургуулийн харьяа хоёр байгууллагаас бүрддэг. Байгууллага бүр үйлчлүүлэгчийн програм, мөн өөрийн гэсэн Committing and Endorsing Peer-г агуулдаг. Бид мөн захиалгын үйлчилгээ, гишүүнчлэлийн үйлчилгээ, гэрчилгээжүүлэх үйлчилгээний нийтлэг үйлчилгээг ашигладаг.

1) Гүйлгээ эхлүүлэх

Hyperledger Fabric SDK ашиглан хэрэглэгчийн програм нь гүйлгээний хүсэлтийг эхлүүлж, ухаалаг гэрээ бүхий зангилаа руу хүсэлтийг илгээдэг. Хүсэлт нь тархсан бүртгэлээс (Ledger) өөрчлөх эсвэл унших боломжтой. Хэрэв бид их сургуулийн оюутнуудад зориулсан нягтлан бодох бүртгэлийн тестийн системийн тохиргооны жишээг авч үзвэл үйлчлүүлэгч програм нь ухаалаг гэрээний Баталгаажуулах бодлогод багтсан А, В их сургуулийн зангилаа руу гүйлгээний хүсэлт илгээдэг. А зангилаа нь ирж буй оюутныг бүртгэдэг их сургуульд байрладаг зангилаа, В зангилаа нь өөр их сургуульд байрладаг зангилаа юм. Гүйлгээг тархсан бүртгэлд хадгалахын тулд бизнесийн логикийн дагуу гүйлгээг батлах ёстой бүх зангилаа ижил үр дүнтэй ухаалаг гэрээг амжилттай гүйцэтгэх шаардлагатай. Зангилаа Хэрэглэгчийн програм нь Hyperledger Fabric SDK хэрэгслийг ашиглан Баталгаажуулах бодлогыг авч, аль зангилаа руу гүйлгээний хүсэлт илгээхийг сурдаг. Энэ нь тархсан бүртгэлд тодорхой өгөгдлийг унших, бичихийн тулд тодорхой ухаалаг гэрээг (гинжин код функц) дуудах хүсэлт юм. Техникийн хувьд үйлчлүүлэгч SDK нь тохирох функцийг ашигладаг бөгөөд API нь гүйлгээний параметр бүхий тодорхой объектыг дамжуулж, мөн үйлчлүүлэгчийн гарын үсгийг нэмж, энэ өгөгдлийг gRPC-ээр протоколын буферээр дамжуулан зохих зангилаанууд руу илгээдэг.

Дамми нарт зориулсан Hyperledger даавуу
Зураг 2. Гүйлгээг эхлүүлэх

2) Ухаалаг гэрээг гүйцэтгэх

Зангилаанууд (Үе тэнгийнхэн) гүйлгээ хийх хүсэлтийг хүлээн авсны дараа үйлчлүүлэгчийн гарын үсгийг шалгаж, бүх зүйл эмх цэгцтэй байгаа бол хүсэлтийн өгөгдөл бүхий объектыг авч, ухаалаг гэрээний гүйцэтгэлийн симуляцийг (гинжин кодын функц) ажиллуулдаг. энэ өгөгдөл. Ухаалаг гэрээ гэдэг нь гүйлгээний бизнесийн логик, тодорхой нөхцөл, зааварчилгаа (манай тохиолдолд энэ нь оюутны баталгаажуулалт, энэ нь шинэ оюутан эсвэл аль хэдийн бүртгүүлсэн эсэх, насны баталгаажуулалт гэх мэт) юм. Ухаалаг гэрээг хэрэгжүүлэхийн тулд танд WorldState-ийн өгөгдөл хэрэгтэй болно. Баталгаажуулагч дээр ухаалаг гэрээг дуурайсны үр дүнд унших багц ба бичих багц гэсэн хоёр багц өгөгдлийг олж авна. Read Set, Write Set нь анхны болон шинэ WorldState утгууд юм. (шинэ - ухаалаг гэрээг загварчлах явцад олж авсан утгаараа).

Дамми нарт зориулсан Hyperledger даавуу
Зураг 3. Ухаалаг гэрээний гүйцэтгэл

3) Үйлчлүүлэгчийн програм руу өгөгдлийг буцаах

Ухаалаг гэрээний симуляцийг хийсний дараа Endorsing Peers нь анхны өгөгдөл, симуляцийн үр дүнг, мөн гэрчилгээгээр нь гарын үсэг зурсан RW багцыг үйлчлүүлэгчийн програмд ​​буцааж өгдөг. Энэ үе шатанд тархсан бүртгэлд ямар ч өөрчлөлт гарахгүй. Үйлчлүүлэгчийн програм нь Endorsing Peer гарын үсгийг шалгаж, илгээсэн гүйлгээний анхны өгөгдөл болон буцаж ирсэн өгөгдлийг харьцуулдаг (өөрөөр хэлбэл гүйлгээг дуурайлган хийсэн анхны өгөгдөл гажуудсан эсэхийг шалгадаг). Хэрэв гүйлгээ нь зөвхөн бүртгэлээс өгөгдлийг уншихад зориулагдсан байсан бол үйлчлүүлэгчийн програм шаардлагатай Унших багцыг хүлээн авдаг бөгөөд энэ нь ихэвчлэн тархсан бүртгэлийг өөрчлөхгүйгээр гүйлгээг амжилттай гүйцэтгэдэг. Бүртгэлд байгаа өгөгдлийг өөрчлөх шаардлагатай гүйлгээний хувьд үйлчлүүлэгчийн програм нь Баталгаажуулах бодлогын хэрэгжилтийг нэмэлтээр шалгадаг. Үйлчлүүлэгчийн програм нь Баталгаажуулах бодлогыг хэрэгжүүлсний үр дүнг шалгаагүй байж болох ч Hyperledger Fabric платформ нь энэ тохиолдолд бүртгэлд гүйлгээ нэмэх үе шатанд зангилаа (Committing Peers) дээрх бодлогыг шалгах боломжийг олгодог.

Дамми нарт зориулсан Hyperledger даавуу
Зураг 4. Үйлчлүүлэгчийн програм руу өгөгдөл буцаах

4) RW багцуудыг захиалах үе тэнгийнхэн рүү илгээх

Үйлчлүүлэгчийн програм нь гүйлгээг дагалдах өгөгдлийн хамт Захиалгын үйлчилгээ рүү илгээдэг. Үүнд RW Set, Endorsing peers signature, and Channel ID орно.

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

Дамми нарт зориулсан Hyperledger даавуу
Зураг 5. Захиалга өгөхдөө RW багц илгээж байна

5) Үүсгэсэн блокуудыг Committing Peer руу илгээх

Захиалгын үйлчилгээнд үүсгэсэн блокууд нь сүлжээний бүх зангилаа руу дамждаг. Зангилаа бүр шинэ блок хүлээн авсны дараа үүнийг Баталгаажуулах бодлогод нийцэж байгаа эсэхийг шалгаж, ухаалаг гэрээний симуляцийн үр дүнд бүх Баталгаажуулагч ижил үр дүнг (бичих багц) авсан эсэхийг шалгаж, мөн анхны утгууд байгаа эсэхийг шалгадаг. гүйлгээг эхлүүлснээс хойш өөрчлөгдсөн (өөрөөр хэлбэл, WorldState-ийн ухаалаг гэрээгээр уншсан өгөгдлийг уншина уу). Хэрэв бүх нөхцөл хангагдсан бол гүйлгээг хүчинтэй гэж тэмдэглэнэ, эс тэгвээс гүйлгээ хүчингүй болно.

Дамми нарт зориулсан Hyperledger даавуу
Зураг 6. Үүсгэсэн блокуудыг Committing Peer руу илгээж байна

6) Бүртгэлд блок нэмэх

Зангилаа бүр тархсан бүртгэлийн локал хуулбар дээр гүйлгээг нэмж, хэрэв гүйлгээ хүчинтэй бол Write Set-ийг WorldState (одоогийн төлөв) -д хэрэглэнэ, үүний дагуу нөлөөлөлд өртсөн объектын шинэ утгууд болно. гүйлгээ бичигдсэн байна. Хэрэв гүйлгээ нь хүчин төгөлдөр бус жетон хүлээн авсан бол (жишээлбэл, нэг блок дотор ижил объекттой хоёр гүйлгээ хийгдсэн бол анхны утгыг өөр гүйлгээ аль хэдийн өөрчилсөн тул тэдгээрийн аль нэг нь хүчингүй болно. гүйлгээ). Энэ гүйлгээг мөн хүчингүй тэмдэг бүхий тараасан дэвтэрт нэмсэн боловч энэ гүйлгээний бичих багц нь одоогийн WorldState-д ашиглагдаагүй бөгөөд үүний дагуу гүйлгээнд оролцож буй объектуудыг өөрчлөхгүй. Үүний дараа хэрэглэгчийн аппликейшнд гүйлгээг тараасан бүртгэлд бүрмөсөн нэмсэн тухай мэдэгдэл, мөн гүйлгээний статус, өөрөөр хэлбэл хүчинтэй эсэх тухай мэдэгдэл илгээгдэнэ...

Дамми нарт зориулсан Hyperledger даавуу
Зураг 7. Бүртгэлд блок нэмэх

ЗАХИАЛАХ ҮЙЛЧИЛГЭЭ

Захиалгын үйлчилгээ нь Захиалгын үйлчилгээний үйлчлүүлэгч болон Кафка кластерын хооронд байрлах ZooKeeper-ийн холбогдох зангилаа ба Захиалгын үйлчилгээний зангилаа (OSN) бүхий Кафка кластераас бүрдэнэ. Кафка кластер нь тархсан, алдааг тэсвэрлэх чадвартай урсгалын (мессеж) удирдлагын платформ юм. Кафка дахь суваг (сэдэв) бүр нь зөвхөн шинэ бичлэг нэмэхийг дэмждэг (одоо байгаа бичлэгийг устгах боломжгүй) өөрчлөгддөггүй бичлэгийн дараалал юм. Сэдвийн бүтцийн зураглалыг доор үзүүлэв. Кафкагийн энэ өмч нь блокчэйн платформыг бүтээхэд ашиглагддаг.

Дамми нарт зориулсан Hyperledger даавуу
kafka.apache.org сайтаас авсан

  • Зураг 8. Захиалгын үйлчилгээний сэдвийн бүтэц*

Хэрэгтэй холбоосууд

Youtube – Hyperledger төслийн тусламжтайгаар бизнест зориулсан блокчейн бий болгох
Hyperledger Fabric Docs
Hyperledger даавуу: Зөвшөөрөгдсөн блокчейнүүдэд зориулсан тархсан үйлдлийн систем

Талархал

Энэхүү нийтлэлийг бэлтгэхэд тусалсан хамт олондоо гүнээ талархаж байгаагаа илэрхийлье.
Николай Марин
Игорь Хапов
Дмитрий Горбачев
Александр Земцов
Екатерина Гусева

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх