Kain Hyperledger untuk Boneka

Platform Blockchain untuk Perusahaan

Kain Hyperledger untuk Boneka

Selamat siang, para pembaca yang budiman, nama saya Nikolay Nefedov, saya spesialis teknis di IBM, dalam artikel ini saya ingin memperkenalkan Anda pada platform blockchain - Hyperledger Fabric. Platform ini dirancang untuk membangun aplikasi bisnis kelas enterprise. Level artikel ini ditujukan untuk pembaca yang belum siap dengan pengetahuan dasar tentang teknologi IT.

Hyperledger Fabric adalah proyek sumber terbuka, salah satu cabang dari proyek sumber terbuka Hyperledger, sebuah konsorsium dari Linux Foundation. Hyperledger Fabric awalnya dimulai oleh Digital Assets dan IBM. Fitur utama platform Hyperledger Fabric adalah fokusnya pada penggunaan perusahaan. Oleh karena itu, platform ini dikembangkan dengan mempertimbangkan kecepatan transaksi yang tinggi dan biaya rendah, serta identifikasi seluruh peserta. Keuntungan ini dicapai melalui pemisahan layanan verifikasi transaksi dan pembentukan blok baru dari registri terdistribusi, serta penggunaan pusat sertifikasi dan otorisasi peserta.

Artikel saya adalah bagian dari serangkaian artikel tentang Hyperledger Fabric, yang di dalamnya kami menjelaskan proyek sistem untuk mencatat siswa yang memasuki universitas.

Arsitektur umum Hyperledger Fabric

Hyperledger Fabric adalah jaringan blockchain terdistribusi yang terdiri dari berbagai komponen fungsional yang dipasang pada node jaringan. Komponen Hyperledger Fabric adalah container Docker yang dapat diunduh secara bebas dari DockerHub. Hyperledger Fabric juga dapat dijalankan di lingkungan Kubernetes.

Untuk menulis kontrak pintar (kode rantai dalam konteks Hyperledger Fabric), kami menggunakan Golang (meskipun Hyperledger Fabric mengizinkan penggunaan bahasa lain). Untuk mengembangkan aplikasi khusus, dalam kasus kami, kami menggunakan Node.js dengan Hyperledger Fabric SDK yang sesuai.

Node menjalankan logika bisnis (kontrak pintar) - kode rantai, menyimpan status registri terdistribusi (data buku besar) dan menjalankan layanan sistem platform lainnya. Sebuah node hanyalah unit logis; node yang berbeda dapat berada di server fisik yang sama. Yang jauh lebih penting adalah bagaimana node-node tersebut dikelompokkan (Domain tepercaya) dan fungsi jaringan blockchain apa yang terkait dengannya.

Arsitektur umumnya terlihat seperti ini:

Kain Hyperledger untuk Boneka

Gambar 1. Arsitektur Umum Hyperledger Fabric

Aplikasi pengguna (Klien Pengirim) adalah aplikasi yang digunakan pengguna untuk bekerja dengan jaringan blockchain. Agar dapat berfungsi, Anda harus diberi wewenang dan memiliki hak yang sesuai untuk berbagai jenis tindakan di jaringan.

Rekan-rekan mempunyai beberapa peran:

  • Endorsing Peer adalah node yang mensimulasikan eksekusi transaksi (mengeksekusi kode kontrak pintar). Setelah verifikasi dan eksekusi kontrak pintar, node mengembalikan hasil eksekusi ke aplikasi klien beserta tanda tangannya.
  • Layanan Pemesanan adalah layanan terdistribusi pada beberapa node, digunakan untuk menghasilkan blok baru dari registri terdistribusi dan membuat antrian untuk eksekusi transaksi. Layanan Pemesanan tidak menambahkan blok baru ke registri (Fitur ini telah dipindahkan ke Committing Peers untuk meningkatkan kinerja).
  • Committing Peer adalah node yang berisi registri terdistribusi dan menambahkan blok baru ke registri (yang dihasilkan oleh Layanan Pemesanan). Semua Rekan yang Berkomitmen berisi salinan lokal dari buku besar yang didistribusikan. Committing Peer memeriksa validitas semua transaksi dalam blok sebelum menambahkan blok baru secara lokal.

Kebijakan Endorsement adalah kebijakan untuk memeriksa keabsahan suatu transaksi. Kebijakan ini menentukan kumpulan node yang diperlukan di mana kontrak pintar harus dijalankan agar transaksi diakui valid.

Registri terdistribusi - Lerger - terdiri dari dua bagian: WolrldState (juga disebut State DataBase) dan BlockChain.

BlockChain adalah rantai blok yang menyimpan catatan semua perubahan yang terjadi pada objek registri terdistribusi.

WolrldState adalah komponen buku besar terdistribusi yang menyimpan nilai saat ini (canggih) dari semua objek buku besar yang didistribusikan.

WorldState adalah database, dalam versi dasar - LevelDB atau yang lebih kompleks - CouchDB, yang berisi pasangan nilai kunci, misalnya: Nama depan - Ivan, Nama belakang - Ivanov, tanggal pendaftaran di sistem - 12.12.21/17.12.1961/XNUMX , tanggal lahir - XNUMX/XNUMX/XNUMX, dll. WorldState dan registri terdistribusi harus konsisten di antara semua peserta di saluran tertentu.

Karena Hyperledger Fabric adalah jaringan di mana semua peserta diketahui dan diautentikasi, Hyperledger Fabric menggunakan otoritas sertifikasi khusus - CA (Otoritas Sertifikasi). CA beroperasi berdasarkan standar X.509 dan infrastruktur kunci publik - PKI.

Layanan Keanggotaan adalah layanan yang melaluinya anggota memverifikasi bahwa suatu objek milik organisasi atau saluran tertentu.

Sebuah transaksi – dalam banyak kasus, adalah menulis data baru ke registri terdistribusi.
Ada juga transaksi untuk pembuatan saluran atau kontrak pintar. Transaksi dimulai oleh aplikasi pengguna dan diakhiri dengan pencatatan di buku besar yang didistribusikan.

Saluran adalah subjaringan tertutup yang terdiri dari dua atau lebih peserta jaringan blockchain, yang dirancang untuk melakukan transaksi rahasia dalam lingkaran peserta yang terbatas namun diketahui. Saluran ditentukan oleh peserta, registri terdistribusi, kontrak pintar, Layanan Pemesanan, WorldState. Setiap peserta saluran harus diberi wewenang untuk mengakses saluran tersebut dan berhak melakukan berbagai jenis transaksi. Otorisasi dilakukan menggunakan Layanan Keanggotaan.

Skenario eksekusi transaksi yang umum

Selanjutnya, saya ingin berbicara tentang skenario eksekusi transaksi yang umum menggunakan proyek kami sebagai contoh.

Sebagai bagian dari proyek internal kami, kami menciptakan jaringan Hyperledger Fabric, yang dirancang untuk mendaftarkan dan mempertanggungjawabkan siswa yang memasuki universitas. Jaringan kami terdiri dari dua organisasi milik Universitas A dan Universitas B. Setiap organisasi berisi aplikasi klien, serta Rekan Komitmen dan Pengesahannya sendiri. Kami juga menggunakan layanan umum Layanan Pemesanan, Layanan Keanggotaan, dan Otoritas Sertifikasi.

1) Inisiasi Transaksi

Aplikasi pengguna, menggunakan Hyperledger Fabric SDK, memulai permintaan transaksi dan mengirimkan permintaan tersebut ke node dengan kontrak pintar. Permintaannya bisa untuk mengubah atau membaca dari registri terdistribusi (Buku Besar). Jika kita mempertimbangkan contoh konfigurasi sistem pengujian kami untuk akuntansi mahasiswa, aplikasi klien mengirimkan permintaan transaksi ke node universitas A dan B, yang termasuk dalam kebijakan Pengesahan yang disebut kontrak pintar. Node A merupakan node yang terletak pada universitas yang mendaftarkan mahasiswa yang masuk, dan node B merupakan node yang terletak pada universitas lain. Agar transaksi dapat disimpan ke registri terdistribusi, semua node yang, menurut logika bisnis, harus menyetujui transaksi tersebut, harus berhasil menjalankan kontrak pintar dengan hasil yang sama. Aplikasi pengguna node A, menggunakan alat Hyperledger Fabric SDK, memperoleh kebijakan Pengesahan dan mempelajari node mana yang akan dikirimi permintaan transaksi. Ini adalah permintaan untuk menjalankan kontrak pintar tertentu (fungsi kode rantai) untuk membaca atau menulis data tertentu ke registri terdistribusi. Secara teknis, SDK klien menggunakan fungsi yang sesuai, API yang meneruskan objek tertentu dengan parameter transaksi, dan juga menambahkan tanda tangan klien dan mengirimkan data ini melalui buffer protokol melalui gRPC ke node yang sesuai (mendukung rekan).

Kain Hyperledger untuk Boneka
Gambar 2. Memulai Transaksi

2) Eksekusi kontrak pintar

Node (Endorsing Peers), setelah menerima permintaan untuk melakukan transaksi, memeriksa tanda tangan klien dan jika semuanya beres, mereka mengambil objek dengan data permintaan dan menjalankan simulasi pelaksanaan kontrak pintar (fungsi kode rantai) dengan data ini. Kontrak pintar adalah logika bisnis dari suatu transaksi, serangkaian kondisi dan instruksi tertentu (dalam kasus kami, ini adalah verifikasi siswa, apakah ini siswa baru, atau dia sudah terdaftar, verifikasi usia, dll.). Untuk menjalankan kontrak pintar, Anda juga memerlukan data dari WorldState. Sebagai hasil simulasi kontrak pintar pada rekan Endorsing, dua set data diperoleh – Set Baca dan Set Tulis. Read Set dan Write Set adalah nilai WorldState asli dan baru. (baru – dalam artian diperoleh selama simulasi kontrak pintar).

Kain Hyperledger untuk Boneka
Gambar 3. Eksekusi kontrak pintar

3) Mengembalikan data ke aplikasi klien

Setelah melakukan simulasi smart contract, Endorsing Peers mengembalikan data asli dan hasil simulasi, serta RW Set yang ditandatangani sertifikatnya ke aplikasi klien. Pada tahap ini, tidak ada perubahan yang terjadi pada registri terdistribusi. Aplikasi klien memeriksa tanda tangan Endorsing Peer, dan juga membandingkan data transaksi asli yang dikirim dan data yang dikembalikan (yaitu, memeriksa apakah data asli tempat simulasi transaksi telah terdistorsi). Jika transaksi hanya untuk membaca data dari registri, maka aplikasi klien menerima Set Baca yang diperlukan dan ini biasanya menyelesaikan transaksi dengan sukses tanpa mengubah registri terdistribusi. Dalam hal terjadi transaksi yang harus mengubah data dalam registri, aplikasi klien juga memeriksa penerapan kebijakan Endorsing. Ada kemungkinan bahwa aplikasi klien tidak memeriksa hasil pelaksanaan Kebijakan Pengesahan, tetapi platform Hyperledger Fabric dalam hal ini menyediakan pemeriksaan kebijakan pada node (Committing Peers) pada tahap menambahkan transaksi ke registri.

Kain Hyperledger untuk Boneka
Gambar 4. Mengembalikan data ke aplikasi klien

4) Mengirimkan set RW ke Rekan Pemesanan

Aplikasi klien mengirimkan transaksi beserta data penyertanya ke layanan Pemesanan. Ini termasuk Set RW, Tanda tangan rekan yang mendukung, dan ID Saluran.

Layanan Pemesanan – Sesuai dengan namanya, fungsi utama layanan ini adalah mengatur transaksi masuk dengan urutan yang benar. Serta pembentukan blok baru dari registry terdistribusi dan jaminan pengiriman blok baru yang dihasilkan ke seluruh node Commiting, sehingga menjamin konsistensi data pada semua node yang berisi registry terdistribusi (Committing peers). Pada saat yang sama, layanan Pemesanan itu sendiri tidak mengubah registri dengan cara apa pun. Layanan Pemesanan merupakan komponen penting dari sistem, sehingga merupakan cluster dari beberapa node. Layanan Pemesanan tidak memeriksa validitas transaksi, ia hanya menerima transaksi dengan pengidentifikasi saluran tertentu, mengatur transaksi masuk dalam urutan tertentu dan membentuk blok baru dari registri terdistribusi darinya. Satu Layanan Pemesanan dapat melayani beberapa channel secara bersamaan. Layanan Pemesanan mencakup cluster Kafka, yang memelihara antrian transaksi yang benar (tidak dapat diubah) (lihat Poin 7).

Kain Hyperledger untuk Boneka
Gambar 5. Mengirimkan set RW ke Ordering Peers

5) Mengirim blok yang dihasilkan ke Committing Peer

Blok yang dihasilkan dalam Layanan Pemesanan ditransmisikan (disiarkan) ke semua node jaringan. Setiap node, setelah menerima blok baru, memeriksa kepatuhannya terhadap Kebijakan Pengesahan, memeriksa apakah semua Rekan Pengesahan menerima hasil yang sama (Write Set) sebagai hasil dari simulasi kontrak pintar, dan juga memeriksa apakah nilai aslinya memiliki diubah (yaitu, Read Set - data yang dibaca oleh kontrak pintar dari WorldState) sejak transaksi dimulai. Jika semua kondisi terpenuhi maka transaksi dianggap valid, jika tidak, transaksi menerima status tidak valid.

Kain Hyperledger untuk Boneka
Gambar 6. Mengirim blok yang dihasilkan ke Committing Peer

6) Menambahkan blok ke registri

Setiap node menambahkan transaksi ke salinan lokal dari registri terdistribusi, dan jika transaksi tersebut valid, maka Write Set diterapkan ke WorldState (keadaan saat ini), dan karenanya, nilai baru dari objek yang terpengaruh oleh transaksi ditulis. Jika suatu transaksi menerima token yang tidak valid (misalnya, dua transaksi terjadi dengan objek yang sama dalam blok yang sama, maka salah satu transaksi menjadi tidak valid, karena nilai aslinya telah diubah oleh yang lain. transaksi). Transaksi ini juga ditambahkan ke buku besar terdistribusi dengan token yang tidak valid, tetapi Set Tulis transaksi ini tidak diterapkan ke WorldState saat ini dan, karenanya, tidak mengubah objek yang berpartisipasi dalam transaksi tersebut. Setelah itu, pemberitahuan dikirim ke aplikasi pengguna bahwa transaksi telah ditambahkan secara permanen ke registri terdistribusi, serta status transaksi, apakah valid atau tidak...

Kain Hyperledger untuk Boneka
Gambar 7. Menambahkan blok ke registri

LAYANAN PEMESANAN

Layanan Pemesanan terdiri dari cluster Kafka dengan node ZooKeeper yang sesuai dan Node Layanan Pemesanan (OSN), yang berdiri di antara klien layanan Pemesanan dan Cluster Kafka. Cluster Kafka adalah platform manajemen aliran (pesan) yang terdistribusi dan toleran terhadap kesalahan. Setiap saluran (topik) di Kafka merupakan rangkaian rekaman yang tidak dapat diubah dan hanya mendukung penambahan rekaman baru (tidak mungkin menghapus rekaman yang sudah ada). Ilustrasi struktur topik ditunjukkan di bawah ini. Properti Kafka inilah yang digunakan untuk membangun platform blockchain.

Kain Hyperledger untuk Boneka
diambil dari kafka.apache.org

  • Gambar 8. Struktur Topik Layanan Pemesanan*

Tautan yang bermanfaat

Youtube – Membangun blockchain untuk bisnis dengan Proyek Hyperledger
Dokumen Kain Hyperledger
Hyperledger fabric: sistem operasi terdistribusi untuk blockchain yang berizin

Ucapan Terima Kasih

Saya ingin mengucapkan terima kasih yang sebesar-besarnya kepada rekan-rekan saya atas bantuannya dalam mempersiapkan artikel ini:
Nikolay Marin
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Sumber: www.habr.com

Tambah komentar