Kain Hyperledger pikeun Dummies

Platform Blockchain pikeun Perusahaan

Kain Hyperledger pikeun Dummies

Wilujeng siang, pamiarsa anu dipikacinta, nami abdi Nikolay Nefedov, abdi spesialis téknis di IBM, dina tulisan ieu abdi hoyong ngenalkeun anjeun kana platform blockchain - Hyperledger Fabric. Platformna dirancang pikeun ngawangun aplikasi bisnis kelas perusahaan. Tingkat tulisan kanggo pamiarsa anu teu siap sareng pangaweruh dasar téknologi IT.

Hyperledger Fabric mangrupikeun proyék open-source, salah sahiji cabang tina proyék Hyperledger open source, konsorsium Yayasan Linux. Hyperledger Fabric asalna dimimitian ku Digital Assets sareng IBM. Fitur utama platform Hyperledger Fabric nyaéta fokus kana panggunaan perusahaan. Ku alatan éta, platform ieu dimekarkeun nyokot kana akun laju luhur transaksi jeung béaya rendah maranéhanana, kitu ogé idéntifikasi sadaya pamilon. Kaunggulan ieu kahontal ngaliwatan separation sahiji layanan verifikasi urus jeung formasi blok anyar tina pendaptaran disebarkeun, kitu ogé pamakéan puseur sertifikasi jeung otorisasina pamilon.

Tulisan abdi mangrupikeun bagian tina séri tulisan ngeunaan Hyperledger Fabric, dimana kami ngajelaskeun proyék sistem pikeun ngarékam mahasiswa anu asup ka universitas.

Arsitéktur umum tina Hyperledger Fabric

Hyperledger Fabric mangrupikeun jaringan blockchain anu disebarkeun anu diwangun ku sababaraha komponén fungsional anu dipasang dina titik jaringan. Komponén Fabric Hyperledger mangrupikeun wadah Docker anu tiasa diunduh gratis tina DockerHub. Hyperledger Fabric ogé tiasa dijalankeun dina lingkungan Kubernetes.

Pikeun nyerat kontrak pinter (chaincode dina konteks Hyperledger Fabric), kami nganggo Golang (sanaos Hyperledger Fabric ngamungkinkeun ngagunakeun basa sanés). Pikeun ngamekarkeun aplikasi custom, dina hal urang, urang dipaké Node.js kalawan Hyperledger lawon SDK pakait.

Titik ngaéksekusi logika bisnis (kontrak pinter) - chaincode, nyimpen kaayaan pendaptaran anu disebarkeun (data ledger) sareng ngalaksanakeun jasa sistem platform anu sanés. Titik ngan ukur unit logis; titik anu béda tiasa aya dina server fisik anu sami. Anu langkung penting nyaéta kumaha titik-titik dikelompokkeun (Domain dipercaya) sareng naon fungsi jaringan blockchain anu aya hubunganana.

Arsitéktur umum kasampak kawas kieu:

Kain Hyperledger pikeun Dummies

Gambar 1. Arsitéktur umum tina Hyperledger lawon

Aplikasi pamaké (Ngintunkeun Klién) nyaéta aplikasi anu dianggo ku pangguna sareng jaringan blockchain. Pikeun damel, anjeun kedah otorisasi sareng gaduh hak anu pas pikeun sababaraha jinis tindakan dina jaringan.

Peers datangna dina sababaraha kalungguhan:

  • Endorsing Peer mangrupakeun titik nu simulates palaksanaan transaksi (executes kode kontrak pinter). Saatos verifikasi sareng palaksanaan kontrak pinter, node mulihkeun hasil palaksanaan ka aplikasi klien sareng tandatanganana.
  • Pesenan Service nyaéta layanan disebarkeun dina sababaraha titik, dipaké pikeun ngahasilkeun blok anyar tina pendaptaran disebarkeun sarta nyieun antrian pikeun palaksanaan transaksi. Mesen Service henteu nambahkeun blok anyar kana pendaptaran (Fitur ieu geus dipindahkeun ka Committing Peers pikeun ngaronjatkeun kinerja).
  • Committing Peer mangrupikeun titik anu ngandung pendaptaran anu disebarkeun sareng nambihan blok énggal kana pendaptaran (anu dihasilkeun ku Pesenan Service). Kabéh Committing Peers ngandung salinan lokal tina ledger disebarkeun. Committing Peer mariksa sadaya transaksi dina blok pikeun validitas sateuacan nambahkeun blok anyar sacara lokal.

Kawijakan Endorsement nyaéta kawijakan pikeun mariksa validitas transaksi. Kabijakan ieu netepkeun set titik anu diperyogikeun dimana kontrak pinter kedah dieksekusi supados urus diakui sah.

Pendaptaran anu disebarkeun - Lerger - diwangun ku dua bagian: WolrldState (disebut ogé State DataBase) sareng BlockChain.

BlockChain mangrupikeun ranté blok anu nyimpen rékaman sadaya parobihan anu lumangsung dina objék pendaptaran anu disebarkeun.

WolrldState mangrupakeun komponén ledger disebarkeun nu nyimpen nilai ayeuna (cutting edge) sadaya objék ledger disebarkeun.

WorldState mangrupikeun pangkalan data, dina versi dasar - LevelDB atanapi anu langkung kompleks - CouchDB, anu ngandung pasangan konci-nilai, contona: Ngaran hareup - Ivan, Ngaran tukang - Ivanov, tanggal pendaptaran dina sistem - 12.12.21/17.12.1961/XNUMX , tanggal lahir - XNUMX/XNUMX/XNUMX, jsb. WorldState sareng pendaptaran anu disebarkeun kedah konsisten diantara sadaya pamilon dina saluran anu ditangtukeun.

Kusabab Hyperledger Fabric mangrupikeun jaringan dimana sadaya pamilon dipikanyaho sareng dioténtikasi, éta ngagunakeun otoritas sertifikasi khusus - CA (Otoritas Sertifikasi). CA beroperasi dumasar kana standar X.509 jeung infrastruktur konci publik - PKI.

Ladenan Kaanggotaan mangrupikeun jasa dimana anggota marios yén hiji obyék milik organisasi atanapi saluran khusus.

Transaksi - dina kalolobaan kasus, nyerat data anyar kana pendaptaran anu disebarkeun.
Aya ogé transaksi pikeun nyiptakeun saluran atanapi kontrak pinter. Transaksi diprakarsai ku aplikasi pangguna sareng ditungtungan ku catetan dina ledger anu disebarkeun.

Saluran mangrupikeun subjaringan katutup anu diwangun ku dua atanapi langkung pamilon jaringan blockchain, dirancang pikeun ngalaksanakeun transaksi rahasia dina bunderan pamilon anu kawates tapi dipikanyaho. Saluran ditangtukeun ku pamilon, pendaptaran anu disebarkeun, kontrak pinter, Pesenan Service, WorldState. Masing-masing pamilon saluran kedah otorisasi pikeun ngaksés saluran sareng gaduh hak pikeun ngalakukeun sababaraha jinis transaksi. Otorisasina dilaksanakeun nganggo Layanan Kaanggotaan.

Skenario palaksanaan transaksi has

Salajengna, abdi hoyong ngobrol ngeunaan skenario palaksanaan urus has ngagunakeun proyék urang salaku conto.

Salaku bagian tina proyék internal urang, urang nyieun jaringan Hyperledger Fabric, nu dirancang pikeun ngadaptar sarta akun pikeun siswa asup universitas. Jaringan kami diwangun ku dua organisasi milik Universitas A jeung Universitas B. Unggal organisasi ngandung hiji aplikasi klien, kitu ogé committing na Endorsing peer sorangan. Kami ogé nganggo jasa umum Jasa Pemesanan, Layanan Kaanggotaan sareng Otoritas Sertifikasi.

1) Inisiasi Transaksi

Hiji aplikasi pamaké, ngagunakeun Hyperledger Fabric SDK, initiates pamundut transaksi sarta ngirimkeun pamundut ka titik kalawan kontrak pinter. Paménta tiasa ngarobih atanapi maca tina pendaptaran anu disebarkeun (Ledger). Upami urang nganggap conto konfigurasi sistem uji kami pikeun akuntansi pikeun mahasiswa universitas, aplikasi klien ngirimkeun pamundut transaksi ka titik universitas A sareng B, anu kalebet kana kawijakan Endorsement tina kontrak pinter anu disebut. Titik A nyaéta titik anu aya di universitas anu ngadaptarkeun murid anu asup, sareng titik B nyaéta titik anu aya di universitas sanés. Supados urus disimpen ka pendaptaran disebarkeun, perlu yén sakabéh titik nu, nurutkeun logika bisnis, kudu approve urus, suksés ngaéksekusi kontrak pinter jeung hasil anu sarua. Aplikasi pangguna titik A, nganggo alat Hyperledger Fabric SDK, kéngingkeun kawijakan Endorsement sareng diajar titik mana pikeun ngirim pamundut transaksi. Ieu mangrupikeun pamenta pikeun ngalamar kontrak pinter khusus (fungsi chaincode) pikeun maca atanapi nyerat data anu tangtu kana pendaptaran anu disebarkeun. Téhnisna, klien SDK ngagunakeun fungsi nu saluyu, API nu disalurkeun hiji obyék tangtu kalawan parameter urus, sarta ogé nambahkeun signature klien tur ngirimkeun data ieu ngaliwatan panyangga protokol ngaliwatan gRPC ka titik luyu (endorsing peers).

Kain Hyperledger pikeun Dummies
Gambar 2. Ngamimitian Transaksi

2) Palaksanaan kontrak pinter

Nodes (Endorsing Peers), nampi pamundut pikeun ngalaksanakeun transaksi, pariksa tandatangan klien sareng upami sadayana aya dina urutan, aranjeunna nyandak hiji obyék kalayan data pamundut sareng ngajalankeun simulasi palaksanaan kontrak pinter (fungsi chaincode) sareng data ieu. Kontrak pinter mangrupikeun logika bisnis transaksi, sakumpulan kaayaan sareng petunjuk anu tangtu (dina hal urang, ieu mangrupikeun verifikasi murid, naha ieu murid anyar, atanapi anjeunna parantos didaptarkeun, verifikasi umur, jsb.). Pikeun ngalaksanakeun kontrak pinter, anjeun ogé peryogi data ti WorldState. Salaku hasil tina simulating kontrak pinter dina peer Endorsing, dua sét data dicandak - Read Set and Write Set. Read Set and Write Set mangrupikeun nilai WorldState asli sareng énggal. (anyar - dina rasa diala salila simulasi kontrak pinter).

Kain Hyperledger pikeun Dummies
Gambar 3. Palaksanaan kontrak pinter

3) Ngabalikeun data kana aplikasi klien

Saatos ngalaksanakeun simulasi kontrak pinter, Endorsing Peers ngabalikeun data asli sareng hasil simulasi, ogé RW Set, ditandatanganan ku sertipikatna ka aplikasi klien. Dina tahap ieu, euweuh parobahan lumangsung dina pendaptaran disebarkeun. Aplikasi klien mariksa tanda tangan Endorsing Peer, sareng ogé ngabandingkeun data transaksi asli anu dikirim sareng data anu dipulangkeun (nyaéta, éta pariksa naha data asli anu disimulasikeun transaksina parantos menyimpang). Upami transaksi éta ngan ukur pikeun maca data tina pendaptaran, maka aplikasi klien sasuai nampi Read Set anu diperyogikeun sareng ieu biasana ngarengsekeun transaksi anu suksés tanpa ngarobih pendaptaran anu disebarkeun. Dina kasus transaksi anu kedah ngarobih data dina pendaptaran, aplikasi klien ogé pariksa palaksanaan kawijakan Endorsing. Ieu mungkin nu hiji aplikasi klien teu pariksa hasil tina executing Kawijakan Endorsement, tapi dina hal ieu platform Hyperledger Fabric nyadiakeun keur mariksa kawijakan on titik (Committing Peers) dina tahap nambahkeun hiji transaksi ka pendaptaran.

Kain Hyperledger pikeun Dummies
Gambar 4. Ngabalikeun data ka aplikasi klien

4) Ngirim susunan RW ka Peers Mesen

Aplikasi klien ngirimkeun transaksi sareng data anu dibarengan ka jasa Mesen. Ieu kalebet RW Set, Endorsing peers signatures, sareng ID Channel.

Jasa pesenan - dumasar kana nami, fungsi utama jasa ieu nyaéta pikeun ngatur transaksi anu asup dina urutan anu leres. Kitu ogé formasi blok anyar tina pendaptaran disebarkeun sarta dijamin pangiriman blok dihasilkeun anyar ka sadaya titik Commiting, sahingga mastikeun konsistensi data dina sakabéh titik ngandung pendaptaran disebarkeun (Committing peers). Dina waktos anu sami, jasa Pemesanan nyalira henteu ngarobih pendaptaran ku cara naon waé. Pesenan Service mangrupikeun komponén anu penting dina sistem, janten éta mangrupikeun gugusan sababaraha titik. Pesenan Service henteu pariksa urus pikeun validitas, éta ngan ukur nampi transaksi sareng identifier saluran anu tangtu, ngatur transaksi anu asup dina urutan anu tangtu sareng ngabentuk blok énggal tina pendaptaran anu disebarkeun ti aranjeunna. Hiji Layanan Pesenan tiasa ngalayanan sababaraha saluran sakaligus. Pesenan Service kalebet klaster Kafka, anu ngajaga antrian transaksi anu leres (teu tiasa dirobih) (tingali Titik 7).

Kain Hyperledger pikeun Dummies
Gambar 5. Ngirim susunan RW ka Peers Mesen

5) Ngirim blok anu dihasilkeun ka Committing Peer

Blok anu dihasilkeun dina Service Ordering dikirimkeun (broadcast) ka sadaya titik jaringan. Masing-masing titik, saatos nampi blok énggal, pariksa éta pikeun patuh kana Kabijakan Endorsing, pariksa yén sadaya Endorsing Peers nampi hasil anu sami (Tulis Set) salaku hasil tina simulasi kontrak pinter, sareng ogé pariksa naha nilai aslina gaduh robah (nyaeta, Baca Siapkeun - data dibaca ku kontrak pinter ti WorldState) ti momen urus ieu ngagagas. Lamun kabeh kaayaan anu patepung, urus ditandaan salaku valid, disebutkeun, urus narima statusna teu valid.

Kain Hyperledger pikeun Dummies
Gambar 6. Ngirim blok dihasilkeun ka Committing Peer

6) Nambahkeun blok kana pendaptaran

Unggal titik nambihan transaksi kana salinan lokalna tina pendaptaran anu disebarkeun, sareng upami urus sah, maka Set Tulis diterapkeun kana WorldState (kaayaan ayeuna), sareng sasuai, nilai-nilai anyar tina objék anu kapangaruhan ku transaksi ditulis. Upami transaksi nampi token anu henteu sah (contona, dua transaksi lumangsung sareng objék anu sami dina blok anu sami, maka salah sahiji transaksi bakal janten teu sah, sabab nilai aslina parantos dirobih ku anu sanés. transaksi). urus ieu ogé ditambahkeun kana ledger disebarkeun kalawan token teu valid, tapi Tulis Atur urus ieu teu dilarapkeun ka WorldState ayeuna jeung, sasuai, teu ngarobah objék milu dina urus. Saatos ieu, béwara dikirim ka aplikasi pangguna yén urus parantos parantos ditambah permanén kana pendaptaran anu disebarkeun, ogé status transaksi, nyaéta, naha éta sah atanapi henteu ...

Kain Hyperledger pikeun Dummies
Gambar 7. Nambahkeun blok kana pendaptaran

LAYANAN ORDER

The Ordering Service diwangun ku hiji klaster Kafka kalawan ZooKeeper node pakait jeung Ordering Service Nodes (OSN), nu nangtung antara klien jasa Ordering jeung Kafka Cluster. Kluster Kafka mangrupikeun platform manajemén aliran (pesen) anu disebarkeun sareng toleran. Tiap saluran (topik) dina Kafka mangrupakeun runtuyan immutable rékaman nu ngan ngarojong nambahkeun rékaman anyar (ngahapus nu geus aya teu mungkin). Ilustrasi struktur topik dipidangkeun di handap. Ieu mangrupikeun sipat Kafka anu dianggo pikeun ngawangun platform blockchain.

Kain Hyperledger pikeun Dummies
dicokot tina kafka.apache.org

  • Gambar 8. Struktur Topik Jasa Pemesanan*

Tumbu mangpaat

Youtube - Ngawangun blockchain pikeun bisnis sareng Proyék Hyperledger
Hyperledger Lawon Docs
Kain Hyperledger: sistem operasi anu disebarkeun pikeun blockchain anu diidinan

Ngahaturkeun

Abdi hoyong nganyatakeun hatur nuhun pisan ka rekan-rekan kuring pikeun bantosanana dina nyiapkeun tulisan ieu:
Nikolay Marin
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

sumber: www.habr.com

Tambahkeun komentar