Rantai Pasok
Nuchain mendukung fungsi-fungsi untuk membangun sistem rantai pasok (supply chain).
Kode untuk kebutuhan tersebut bisa ditemukan di dua modul berikut:
info
Untuk bisa mengikuti materi ini pastikan Anda telah membaca bagian Getting Started dan Build.
Sistem rantai pasok membutuhkan organisasi sebagai holder produk. Tentang organisasi dan bagaimana cara membuatnya bisa baca di bagian Organisasi.
Secara gambaran besar sistem rantai pasok di Nuchain dikontrol oleh organisasi. Organisasi bisa digunakan untuk melakukan:
- Registrasi produk.
- Registrasi tracking.
- Memberikan akses tracker.
Tracker adalah entitas/individu yang bisa melakukan update status tracking atas ijin akses dari organisasi melalui DIDs.
(gambar: skema supply chain di Nuchain)
Setiap update yang dilakukan oleh tracker akan memunculkan event dan event akan diproses oleh off-chain worker untuk dibuatkan notifikasi kemudian notifikasi akan di-push melalui webhook.
#
Alur KerjaMendaftarkan produk, produk perlu didaftarkan terlebih dahulu dengan cara mengirim transaksi menggunakan fungsi ekstrinsik
productRegistry.register
dengan parameter:id
- sebagai id produk, ini bebas bisa berupa numeric atau alpha-numeric, bisa juga GS1 GTIN (Global Trade Item Number) atau ASIN (Amazon Standard Identification Number).org_id
- merupakan ID akun organisasi/instansi yang merepresentasikan kepemilikan atas produk.props
- list data yang berisi key value untuk menjelaskan produknya. Biasanya berisi setidaknya SKU atau deskripsi dari produk. Bisa juga berisi informasi seperti kandungan, masa kadaluarsa, berat, asal pertanian, waktu panen, dll.
Mendaftarkan tracking, produk yang akan di-track perlu didaftarkan terlebih dahulu menggunakan fungsi ekstrinsik
productTracking.register
dengan parameter:id
- id tracking-nya.org_id
- merupakan ID dari organisasi/instansi yang merepresentasikan kepemilikan atas produk.year
- tahun inisiasi tracking, contoh "2021".products
- list/array ID dari produk yang akan didaftarkan.
Melakukan update status, memperbaharui (update) status setiap proses yang dilalui oleh produk dengan cara mengirimkan transaksi menggunakan fungsi ekstrinsik
productTracking.updateStatus
dengan parameter:id
- ID kode tracking.status
- (string) status yang akan diberikan.timestamp
- timestamp dalam bentuk miliseconds.location
- lokasi di mana tracking dilakukan.readings
- informasi tambahan yang akan dimasukkan berkaitan dengan produknya.
Untuk bisa melakukan update status maka caller harus terlebih dahulu memiliki akses sebagai
tracker yang diberikan oleh organisasi kepada akun yang ditunjuk. Cara memberikan akses bisa
menggunakan fungsi ekstrinsik did.createDelegate
dengan tipe ProductTracker
yang berada di modul
did
. Akses ini bisa diberikan secara terbatas (dengan expritaion time) atau secara bebas (tanpa
expiration time).
#
VerifikasiUntuk memverifikasi kita bisa melakukan query menggunakan fungsi query
productTracking.tracking(ID)
. Fungsi tersebut bisa digunakan untuk mendapatkan detail data
tracking yang berisi metadata dan list ID produk yang disertakan.
Sementara untuk mendapatkan event-event yang terjadi pada objek tracking bisa menggunakan fungsi
query productTracking.eventsOfTracking(ID)
. Fungsi tersebut hanya mengembalikan ID dari event.
Untuk mendapatkan detail event-nya bisa melakukan query menggunakan fungsi
productTracking.eventByIdx(IDX)
.
#
NotifikasiNuchain dapat mengirimkan notifikasi secara real-time ke luar jaringan (off-chain) menggunakan Web hook untuk setiap event yang terjadi pada tracking di jaringan blockchain.
Nuchain menggunakan Off-chain Worker untuk keperluan ini.
#
DemoContoh kode demo penggunannya bisa ditemukan di Github supplychain-sample-py.