Kain Hyperledger untuk Dummies

Platform Blockchain untuk Perusahaan

Kain Hyperledger untuk Dummies

Selamat petang, pembaca yang dikasihi, nama saya Nikolay Nefedov, saya pakar teknikal di IBM, dalam artikel ini saya ingin memperkenalkan anda kepada platform blockchain - Hyperledger Fabric. Platform ini direka untuk membina aplikasi perniagaan kelas perusahaan. Tahap artikel adalah untuk pembaca yang tidak bersedia dengan pengetahuan asas teknologi IT.

Hyperledger Fabric ialah projek sumber terbuka, salah satu cabang projek Hyperledger sumber terbuka, sebuah konsortium Yayasan Linux. Hyperledger Fabric pada asalnya dimulakan oleh Digital Assets dan IBM. Ciri utama platform Hyperledger Fabric ialah tumpuannya pada penggunaan perusahaan. Oleh itu, platform itu dibangunkan dengan mengambil kira kelajuan tinggi transaksi dan kos rendah mereka, serta pengenalan semua peserta. Kelebihan ini dicapai melalui pemisahan perkhidmatan pengesahan transaksi dan pembentukan blok baharu pendaftaran yang diedarkan, serta penggunaan pusat pensijilan dan kebenaran peserta.

Artikel saya ialah sebahagian daripada siri artikel tentang Hyperledger Fabric, yang mana kami menerangkan projek sistem untuk merekod pelajar yang memasuki universiti.

Seni bina umum Fabrik Hyperledger

Hyperledger Fabric ialah rangkaian blockchain yang diedarkan yang terdiri daripada pelbagai komponen berfungsi yang dipasang pada nod rangkaian. Komponen Hyperledger Fabric ialah bekas Docker yang boleh dimuat turun secara percuma daripada DockerHub. Hyperledger Fabric juga boleh dijalankan dalam persekitaran Kubernetes.

Untuk menulis kontrak pintar (chaincode dalam konteks Hyperledger Fabric), kami menggunakan Golang (walaupun Hyperledger Fabric membenarkan penggunaan bahasa lain). Untuk membangunkan aplikasi tersuai, dalam kes kami, kami menggunakan Node.js dengan Hyperledger Fabric SDK yang sepadan.

Nod melaksanakan logik perniagaan (kontrak pintar) - kod rantai, menyimpan keadaan pendaftaran yang diedarkan (data lejar) dan melaksanakan perkhidmatan sistem lain platform. Nod hanyalah unit logik; nod yang berbeza boleh wujud pada pelayan fizikal yang sama. Lebih penting ialah cara nod dikumpulkan (Domain dipercayai) dan apakah fungsi rangkaian blockchain yang dikaitkan dengannya.

Seni bina umum kelihatan seperti ini:

Kain Hyperledger untuk Dummies

Gambar 1. Seni Bina Umum Fabrik Hyperledger

Aplikasi pengguna (Submitting Client) ialah aplikasi yang digunakan oleh pengguna dengan rangkaian blockchain. Untuk bekerja, anda mesti diberi kuasa dan mempunyai hak yang sesuai untuk pelbagai jenis tindakan pada rangkaian.

Rakan sebaya datang dalam beberapa peranan:

  • Mengesahkan Peer ialah nod yang mensimulasikan pelaksanaan transaksi (melaksanakan kod kontrak pintar). Selepas pengesahan dan pelaksanaan kontrak pintar, nod mengembalikan keputusan pelaksanaan kepada aplikasi klien bersama-sama dengan tandatangannya.
  • Perkhidmatan Pesanan ialah perkhidmatan yang diedarkan pada beberapa nod, digunakan untuk menjana blok baharu pendaftaran yang diedarkan dan membuat baris gilir untuk pelaksanaan urus niaga. Perkhidmatan Pemesanan tidak menambah blok baharu pada registri (Ciri ini telah dialihkan ke Committing Peers untuk meningkatkan prestasi).
  • Committing Peer ialah nod yang mengandungi pendaftaran yang diedarkan dan menambah blok baharu pada pendaftaran (yang dijana oleh Perkhidmatan Pemesanan). Semua Rakan Komitmen mengandungi salinan tempatan lejar yang diedarkan. Committing Peer menyemak semua transaksi dalam blok untuk kesahihan sebelum menambah blok baharu secara setempat.

Polisi Pengendorsan ialah dasar untuk menyemak kesahihan transaksi. Dasar ini mentakrifkan set nod yang diperlukan di mana kontrak pintar mesti dilaksanakan agar transaksi itu diiktiraf sebagai sah.

Pendaftaran yang diedarkan - Lerger - terdiri daripada dua bahagian: WolrldState (juga dipanggil State DataBase) dan BlockChain.

BlockChain ialah rantaian blok yang menyimpan rekod semua perubahan yang telah berlaku pada objek pendaftaran yang diedarkan.

WolrldState ialah komponen lejar yang diedarkan yang menyimpan nilai semasa (kelebihan) semua objek lejar yang diedarkan.

WorldState ialah pangkalan data, dalam versi asas - LevelDB atau yang lebih kompleks - CouchDB, yang mengandungi pasangan nilai kunci, sebagai contoh: Nama pertama - Ivan, Nama keluarga - Ivanov, tarikh pendaftaran dalam sistem - 12.12.21/17.12.1961/XNUMX , tarikh lahir - XNUMX/XNUMX/XNUMX, dsb. WorldState dan pendaftaran yang diedarkan mestilah konsisten antara semua peserta dalam saluran tertentu.

Memandangkan Hyperledger Fabric ialah rangkaian di mana semua peserta dikenali dan disahkan, ia menggunakan pihak berkuasa pensijilan khusus - CA (Certification Authority). CA beroperasi berdasarkan standard X.509 dan infrastruktur kunci awam - PKI.

Perkhidmatan Keahlian ialah perkhidmatan yang melaluinya ahli mengesahkan bahawa objek adalah milik organisasi atau saluran tertentu.

Transaksi – dalam kebanyakan kes, sedang menulis data baharu ke pendaftaran yang diedarkan.
Terdapat juga transaksi untuk penciptaan saluran atau kontrak pintar. Urus niaga dimulakan oleh aplikasi pengguna dan berakhir dengan rekod dalam lejar yang diedarkan.

Saluran ialah subrangkaian tertutup yang terdiri daripada dua atau lebih peserta rangkaian blockchain, yang direka untuk menjalankan transaksi sulit dalam kalangan peserta yang terhad tetapi diketahui. Saluran ditentukan oleh peserta, pendaftaran yang diedarkan, kontrak pintar, Perkhidmatan Pesanan, WorldState. Setiap peserta saluran mesti diberi kuasa untuk mengakses saluran dan mempunyai hak untuk melakukan pelbagai jenis transaksi. Keizinan dilakukan menggunakan Perkhidmatan Keahlian.

Senario pelaksanaan transaksi biasa

Seterusnya, saya ingin bercakap tentang senario pelaksanaan transaksi biasa menggunakan projek kami sebagai contoh.

Sebagai sebahagian daripada projek dalaman kami, kami mencipta rangkaian Hyperledger Fabric, yang direka untuk mendaftar dan mengambil kira pelajar yang memasuki universiti. Rangkaian kami terdiri daripada dua organisasi milik Universiti A dan Universiti B. Setiap organisasi mengandungi aplikasi pelanggan, serta Rakan Sebaya yang Berkomitmen dan Mengesahkan. Kami juga menggunakan perkhidmatan biasa Perkhidmatan Pesanan, Perkhidmatan Keahlian dan Pihak Berkuasa Pensijilan.

1) Permulaan Transaksi

Aplikasi pengguna, menggunakan Hyperledger Fabric SDK, memulakan permintaan transaksi dan menghantar permintaan ke nod dengan kontrak pintar. Permintaan boleh untuk menukar atau membaca daripada pendaftaran yang diedarkan (Lejar). Jika kami mempertimbangkan contoh konfigurasi sistem ujian kami untuk perakaunan pelajar universiti, aplikasi pelanggan menghantar permintaan urus niaga ke nod universiti A dan B, yang disertakan dalam dasar Pengendorsan kontrak pintar yang dipanggil. Nod A ialah nod yang terletak di universiti yang mendaftarkan pelajar masuk, dan nod B ialah nod yang terletak di universiti lain. Untuk urus niaga disimpan ke pendaftaran yang diedarkan, adalah perlu bahawa semua nod yang, mengikut logik perniagaan, mesti meluluskan transaksi, berjaya melaksanakan kontrak pintar dengan hasil yang sama. Aplikasi pengguna nod A, menggunakan alat Hyperledger Fabric SDK, memperoleh dasar Pengendorsan dan mempelajari nod untuk menghantar permintaan transaksi. Ini ialah permintaan untuk menggunakan kontrak pintar tertentu (fungsi kod rantai) untuk membaca atau menulis data tertentu ke pendaftaran yang diedarkan. Secara teknikal, SDK pelanggan menggunakan fungsi yang sepadan, API yang menghantar objek tertentu dengan parameter transaksi, dan juga menambah tandatangan pelanggan dan menghantar data ini melalui penimbal protokol melalui gRPC ke nod yang sesuai (menyokong rakan sebaya).

Kain Hyperledger untuk Dummies
Gambar 2. Memulakan Transaksi

2) Pelaksanaan kontrak pintar

Nod (Menyokong Rakan Sebaya), setelah menerima permintaan untuk menjalankan transaksi, semak tandatangan pelanggan dan jika semuanya teratur, mereka mengambil objek dengan data permintaan dan menjalankan simulasi pelaksanaan kontrak pintar (fungsi kod rantai) dengan data ini. Kontrak pintar ialah logik perniagaan sesuatu transaksi, set syarat dan arahan tertentu (dalam kes kami, ini adalah pengesahan pelajar, adakah ini pelajar baharu, atau adakah dia sudah berdaftar, pengesahan umur, dll.). Untuk melaksanakan kontrak pintar, anda juga memerlukan data daripada WorldState. Hasil daripada mensimulasikan kontrak pintar pada rakan yang Mengesahkan, dua set data diperoleh - Set Baca dan Set Tulis. Set Baca dan Set Tulis ialah nilai WorldState asal dan baharu. (baru – dalam erti kata yang diperoleh semasa simulasi kontrak pintar).

Kain Hyperledger untuk Dummies
Gambar 3. Pelaksanaan kontrak pintar

3) Mengembalikan data kepada aplikasi pelanggan

Selepas menjalankan simulasi kontrak pintar, Endorsing Peers mengembalikan data asal dan hasil simulasi, serta Set RW, yang ditandatangani oleh sijil mereka, kepada aplikasi klien. Pada peringkat ini, tiada perubahan berlaku dalam pendaftaran yang diedarkan. Aplikasi klien menyemak tandatangan Rakan Pengesahan, dan juga membandingkan data transaksi asal yang dihantar dan data yang dikembalikan (iaitu, ia menyemak sama ada data asal yang disimulasikan transaksi telah diherotkan). Jika urus niaga itu hanya untuk membaca data daripada pendaftaran, maka aplikasi pelanggan dengan sewajarnya menerima Set Baca yang diperlukan dan ini biasanya melengkapkan transaksi dengan jayanya tanpa mengubah pendaftaran yang diedarkan. Dalam kes transaksi yang mesti menukar data dalam pendaftaran, aplikasi pelanggan juga menyemak pelaksanaan dasar Mengesahkan. Ada kemungkinan bahawa aplikasi pelanggan tidak menyemak hasil pelaksanaan Dasar Pengendorsan, tetapi platform Hyperledger Fabric dalam kes ini menyediakan untuk menyemak dasar pada nod (Melakukan Rakan Sebaya) pada peringkat menambah transaksi ke pendaftaran.

Kain Hyperledger untuk Dummies
Gambar 4. Mengembalikan data kepada aplikasi klien

4) Menghantar set RW kepada Memesan Rakan Sebaya

Aplikasi pelanggan menghantar transaksi bersama-sama dengan data yang disertakan ke perkhidmatan Pesanan. Ini termasuk Set RW, Mengesahkan tandatangan rakan sebaya dan ID Saluran.

Perkhidmatan pesanan – berdasarkan nama, fungsi utama perkhidmatan ini adalah untuk mengatur transaksi masuk dalam susunan yang betul. Serta pembentukan blok baharu pendaftaran yang diedarkan dan penyampaian terjamin bagi blok terjana baharu kepada semua nod Commiting, sekali gus memastikan konsistensi data pada semua nod yang mengandungi pendaftaran yang diedarkan (Committing peer). Pada masa yang sama, perkhidmatan Pesanan itu sendiri tidak mengubah pendaftaran dalam apa jua cara. Perkhidmatan Pemesanan ialah komponen penting sistem, jadi ia adalah sekumpulan beberapa nod. Perkhidmatan Pesanan tidak menyemak urus niaga untuk kesahihan, ia hanya menerima transaksi dengan pengecam saluran tertentu, mengatur transaksi masuk dalam pesanan tertentu dan membentuk blok baru pendaftaran yang diedarkan daripada mereka. Satu Perkhidmatan Pesanan boleh menyampaikan beberapa saluran serentak. Perkhidmatan Pemesanan termasuk kelompok Kafka, yang mengekalkan baris gilir transaksi yang betul (tidak berubah) (lihat Perkara 7).

Kain Hyperledger untuk Dummies
Gambar 5. Menghantar set RW kepada Memesan Rakan Sebaya

5) Menghantar blok yang dijana kepada Committing Peer

Blok yang dijana dalam Perkhidmatan Pesanan dihantar (siaran) ke semua nod rangkaian. Setiap nod, setelah menerima blok baharu, menyemaknya untuk pematuhan dengan Dasar Pengesanan, menyemak bahawa semua Rakan Pengendorsan menerima hasil yang sama (Set Tulis) hasil daripada simulasi kontrak pintar, dan juga menyemak sama ada nilai asal mempunyai berubah (iaitu, Set Baca - data yang dibaca oleh kontrak pintar daripada WorldState) dari saat transaksi dimulakan. Jika semua syarat dipenuhi, urus niaga ditandakan sebagai sah, jika tidak, urus niaga menerima status tidak sah.

Kain Hyperledger untuk Dummies
Gambar 6. Menghantar blok yang dijana kepada Committing Peer

6) Menambah blok pada pendaftaran

Setiap nod menambah transaksi pada salinan tempatan pendaftaran yang diedarkan, dan jika transaksi itu sah, Set Tulis digunakan pada WorldState (keadaan semasa), dan dengan itu, nilai baharu objek yang terjejas oleh transaksi ditulis. Jika transaksi menerima token yang tidak sah (contohnya, dua transaksi berlaku dengan objek yang sama dalam blok yang sama, maka salah satu transaksi akan menjadi tidak sah, kerana nilai asal telah diubah oleh yang lain transaksi). Urus niaga ini juga ditambahkan pada lejar yang diedarkan dengan token yang tidak sah, tetapi Set Tulis transaksi ini tidak digunakan pada WorldState semasa dan, dengan itu, tidak mengubah objek yang mengambil bahagian dalam transaksi. Selepas ini, pemberitahuan dihantar kepada aplikasi pengguna bahawa transaksi telah ditambahkan secara kekal pada pendaftaran yang diedarkan, serta status transaksi, iaitu, sama ada ia sah atau tidak...

Kain Hyperledger untuk Dummies
Gambar 7. Menambah blok pada pendaftaran

PERKHIDMATAN TEMPAHAN

Perkhidmatan Pemesanan terdiri daripada gugusan Kafka dengan nod ZooKeeper yang sepadan dan Nod Perkhidmatan Pemesanan (OSN), yang terletak di antara pelanggan perkhidmatan Pemesanan dan Kluster Kafka. Kelompok Kafka ialah platform pengurusan aliran (mesej) yang diedarkan. Setiap saluran (topik) dalam Kafka ialah urutan rekod tidak berubah yang hanya menyokong penambahan rekod baharu (memadamkan rekod sedia ada tidak mungkin). Ilustrasi struktur topik ditunjukkan di bawah. Sifat Kafka inilah yang digunakan untuk membina platform blockchain.

Kain Hyperledger untuk Dummies
diambil dari kafka.apache.org

  • Gambar 8. Struktur Topik Perkhidmatan Memesan*

Pautan yang berguna

Youtube – Membina rantaian blok untuk perniagaan dengan Projek Hyperledger
Dokumen Fabrik Hyperledger
Fabrik Hyperledger: sistem pengendalian yang diedarkan untuk blok yang dibenarkan

Ucapan terima kasih

Saya ingin merakamkan ucapan terima kasih yang tidak terhingga kepada rakan sekerja saya atas bantuan mereka dalam menyediakan artikel ini:
Nikolay Marin
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Sumber: www.habr.com

Tambah komen