Skip to main content

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:

  1. Registrasi produk.
  2. Registrasi tracking.
  3. Memberikan akses tracker.

Tracker adalah entitas/individu yang bisa melakukan update status tracking atas ijin akses dari organisasi melalui DIDs.

Nuchain Supply Chain

(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 Kerja#

  1. Mendaftarkan 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.
  2. 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.
  3. 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).

Verifikasi#

Untuk 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).

Notifikasi#

Nuchain 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.

Demo#

Contoh kode demo penggunannya bisa ditemukan di Github supplychain-sample-py.