Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

β˜• Chaincode Supply Chain Ekspor Kopi Indonesia

Hyperledger Fabric Go Node.js License

Sistem blockchain berbasis Hyperledger Fabric untuk traceability dan transparansi rantai pasok ekspor kopi Indonesia. Sistem ini melibatkan 5 organisasi yang berperan dalam proses dari panen hingga ekspor ke importir internasional.

πŸ“‹ Daftar Isi


πŸš€ Fitur Utama

  • βœ… Full Traceability - Lacak perjalanan kopi dari kebun petani hingga gudang importir
  • βœ… Multi-Organization - 5 organisasi dengan peran dan akses berbeda
  • βœ… Smart Contract - Otomatisasi proses bisnis dengan chaincode Go
  • βœ… Digital Wallet - Sistem pembayaran terintegrasi di blockchain
  • βœ… Quality Control - Pencatatan skor cupping dan tes residu
  • βœ… Geo-Tracking - Checkpoint dengan koordinat GPS
  • βœ… Endorsement Policy - Minimal 3 dari 5 organisasi untuk validasi
  • βœ… Event-Driven - Notifikasi real-time untuk transfer bank
  • βœ… Penalty System - Denda otomatis untuk pelanggaran suhu dan kualitas
  • βœ… Commission Split - Pembagian hasil 80% petani, 20% koperasi

πŸ— Arsitektur Sistem

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           Frontend / Client App                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         REST API Server (Express.js)                     β”‚
β”‚                              Port: 3001                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Hyperledger Fabric Network                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚ Petani  β”‚  β”‚Logistik β”‚  β”‚Koperasi β”‚  β”‚Regulatorβ”‚  β”‚Importir β”‚        β”‚
β”‚  β”‚  Peer0  β”‚  β”‚  Peer0  β”‚  β”‚  Peer0  β”‚  β”‚  Peer0  β”‚  β”‚  Peer0  β”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜        β”‚
β”‚       β”‚            β”‚            β”‚            β”‚            β”‚              β”‚
β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β”‚                              mychannel                                   β”‚
β”‚                                  β”‚                                       β”‚
β”‚                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚                      β”‚   Chaincode: "kopi"   β”‚                          β”‚
β”‚                      β”‚       (Golang)        β”‚                          β”‚
β”‚                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ‘₯ Organisasi & Peran

No Organisasi MSP ID Domain Peran
1 Petani PetaniMSP petani.co.id Mendaftarkan panen baru, menerima pembayaran
2 Logistik LogistikMSP logistik.co.id Transportasi lokal & ekspor internasional
3 Koperasi KoperasiMSP koperasi.co.id Gudang, QC, pascapanen, menanggung risiko
4 Regulator RegulatorMSP regulator.co.id Inspeksi & persetujuan dokumen ekspor
5 Importir ImportirMSP importir.co.id Pembeli akhir, verifikasi kualitas tiba

πŸ“Š Alur Proses (Supply Chain Flow)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   PETANI     β”‚     β”‚   LOGISTIK   β”‚     β”‚   KOPERASI   β”‚     β”‚   LOGISTIK   β”‚
β”‚              β”‚     β”‚    LOKAL     β”‚     β”‚   (GUDANG)   β”‚     β”‚   EKSPOR     β”‚
β”‚  CreateBatch │────▢│  Transport   │────▢│  Receive +   │────▢│  Start       β”‚
β”‚   (Panen)    β”‚     β”‚  ToWarehouse β”‚     β”‚  ProcessQC   β”‚     β”‚  Shipment    β”‚
β”‚              β”‚     β”‚              β”‚     β”‚              β”‚     β”‚              β”‚
β”‚ DP 5% Cair   β”‚     β”‚ Checkpoint   β”‚     β”‚ Skor Cupping β”‚     β”‚ Loading      β”‚
β”‚              β”‚     β”‚ GPS Track    β”‚     β”‚ Tes Residu   β”‚     β”‚ Kontainer    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚                      β”‚
                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚                      β”‚
                     β”‚  REGULATOR   β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
                     β”‚              β”‚                                  β”‚
                     β”‚ Approve/     β”‚                                  β”‚
                     β”‚ Reject       β”‚                                  β”‚
                     β”‚ Export       β”‚                                  β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
                                                                       β–Ό
                                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                          β”‚          IMPORTIR                β”‚
                                          β”‚                                  β”‚
                                          β”‚  ConfirmImport                   β”‚
                                          β”‚  (QC Final + Settlement)         β”‚
                                          β”‚                                  β”‚
                                          β”‚  βœ“ Diterima β†’ Pelunasan 95%     β”‚
                                          β”‚  βœ— Ditolak  β†’ Refund DP         β”‚
                                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Status Batch

Status Deskripsi
PANEN_PETANI Batch baru didaftarkan petani
MENUJU_GUDANG Dalam transportasi ke gudang koperasi
DITERIMA_GUDANG_KOPERASI Tiba di gudang
GAGAL_QC Kualitas tidak memenuhi standar
SIAP_EKSPOR Lolos QC, siap diajukan ke regulator
LOLOS_INSPEKSI_REGULATOR Dokumen ekspor disetujui
DITOLAK_REGULATOR Ditolak regulator
DALAM_PERJALANAN_EKSPOR Dalam pengiriman ke importir
DITERIMA_IMPORTIR Diterima dengan baik di tujuan
DITOLAK_IMPORTIR Ditolak karena kualitas menurun

πŸ“¦ Struktur Data

KopiBatch (Struktur Utama)

type KopiBatch struct {
    BatchID            string       // ID unik batch
    Status             string       // Status saat ini
    Petani             string       // Nama petani
    KebunGeo           string       // Koordinat GPS kebun
    NamaLokasi         string       // Nama lokasi/desa
    JenisKopi          string       // Arabica/Robusta
    TanggalPanen       string       // Timestamp panen
    
    // Logistik Lokal
    SupirTruk          string       // Nama supir
    PlatNomor          string       // Plat kendaraan
    SuhuTrukLokal      float64      // Suhu saat transportasi (Β°C)
    BiayaLogistikLokal float64      // Biaya transportasi
    
    // Organisasi/Koperasi
    LokasiGudang       string       // Nama & kota gudang
    MetodePascapanen   string       // Honey/Washed/Natural
    TglTibaGudang      string       // Timestamp tiba
    SkorCupping        int          // Skor QC awal (0-100)
    SkorCuppingFinal   int          // Skor QC di importir
    TesResidu          string       // BERSIH/TERKONTAMINASI
    BeratBersih        float64      // Berat setelah sortir (kg)
    TglProsesQC        string       // Timestamp QC
    
    // Ekspor
    DokumenEkspor      string       // Nomor dokumen
    StatusIzin         string       // APPROVED/REJECTED
    TglIzinEkspor      string       // Timestamp izin
    NamaKapal          string       // Nama kapal/vessel
    NoKontainer        string       // Nomor kontainer
    SuhuKontainer      float64      // Suhu kontainer (Β°C)
    TglBerangkat       string       // Timestamp keberangkatan
    TglTerima          string       // Timestamp diterima importir
    Importir           string       // Nama perusahaan importir
    
    // Keuangan
    NilaiKontrakEkspor float64      // Total nilai kontrak (IDR)
    UangMuka           float64      // DP 5%
    PotonganDenda      float64      // Total denda
    BonusKualitas      float64      // Bonus skor > 85
    SisaTagihan        float64      // Sisa yang harus dibayar
    TotalDibayar       float64      // Total yang sudah dibayar
    FinalPayout        float64      // Transfer terakhir
    StatusPembayaran   string       // Status pembayaran
    CatatanMasalah     string       // Catatan denda/masalah

    JourneyHistory     []Checkpoint // Riwayat perjalanan
}

Checkpoint (Tracking Perjalanan)

type Checkpoint struct {
    Timestamp   string  // Waktu checkpoint
    Location    string  // Nama lokasi
    Coordinates string  // Koordinat GPS
    Activity    string  // Aktivitas yang dilakukan
    Actor       string  // Pelaku/organisasi
}

Wallet (Dompet Digital)

type Wallet struct {
    MSPID   string  // ID organisasi
    Balance float64 // Saldo (IDR)
}

βš™οΈ Prasyarat

Pastikan sistem Anda sudah terinstall:

  • Docker & Docker Compose (untuk Fabric network)
  • Node.js v14+ (untuk REST API)
  • Go 1.16+ (untuk chaincode development)
  • Fablo (Hyperledger Fabric deployment tool)
# Install Fablo
npm install -g fablo

# Verifikasi instalasi
fablo version

πŸ”§ Instalasi

1. Clone Repository

git clone <repository-url>
cd chaincode-supplychain-coffee-export

2. Install Dependencies

npm install

3. Konfigurasi Fablo

File fablo-config.json sudah dikonfigurasi dengan 5 organisasi. Review jika perlu.


πŸš€ Menjalankan Jaringan

1. Generate & Start Network

# Generate konfigurasi jaringan
fablo generate

# Start jaringan Fabric
fablo up

2. Enroll User untuk Setiap Organisasi

node enrollUp.js

Output yang diharapkan:

--- Processing Organization: Petani (PetaniMSP) ---
   βœ… Sukses Enroll Admin: admin-petani
   βœ… Sukses Enroll User (Registered): PetaniUser

--- Processing Organization: Logistik (LogistikMSP) ---
   βœ… Sukses Enroll Admin: admin-logistik
   βœ… Sukses Enroll User (Registered): LogistikUser
   
... (dan seterusnya untuk 5 organisasi)

 SELESAI. Semua 5 Organisasi Siap!

3. Jalankan REST API Server

npm start
# atau
node server.js

Server berjalan di http://localhost:3001

4. Inisialisasi Wallet Blockchain

curl -X POST http://localhost:3001/api/init-wallet

Ini akan membuat:

  • Wallet Importir: IDR 10.000.000.000
  • Wallet Koperasi: IDR 5.000.000.000
  • Wallet Petani: IDR 0

πŸ”Œ API Endpoints

Supply Chain Operations

Method Endpoint Organisasi Deskripsi
POST /api/create Petani Buat batch baru (panen)
POST /api/transport-lokal Logistik Mulai transportasi ke gudang
POST /api/add-checkpoint Logistik Tambah checkpoint perjalanan
POST /api/receive-warehouse Koperasi Terima barang di gudang
POST /api/process-qc Koperasi Proses QC & pascapanen
POST /api/approve-export Regulator Approve/reject dokumen ekspor
POST /api/start-shipment Logistik Mulai pengiriman ekspor
POST /api/confirm-import Importir Konfirmasi penerimaan & QC final

Wallet Operations

Method Endpoint Deskripsi
POST /api/init-wallet Inisialisasi saldo awal
GET /api/wallet/:mspId Cek saldo organisasi

Query Operations

Method Endpoint Deskripsi
GET /api/all-batches Ambil semua batch
GET /api/batch/:id Ambil detail batch

πŸ“œ Fungsi Smart Contract

Fungsi Utama

Fungsi MSP Required Deskripsi
InitWallet() Any Inisialisasi wallet semua organisasi
CreateBatch() PetaniMSP Daftarkan panen baru + DP 5%
TransportToWarehouse() LogistikMSP Transportasi lokal
AddCheckpoint() LogistikMSP Tambah titik tracking
ReceiveAtWarehouse() KoperasiMSP Terima di gudang
ProcessAndQC() KoperasiMSP Quality control
ApproveExport() RegulatorMSP Approve/reject ekspor
StartExportShipment() LogistikMSP Mulai shipping
ConfirmImport() ImportirMSP Konfirmasi & settlement

Fungsi Helper

Fungsi Deskripsi
ReadBatch() Baca detail batch
BatchExists() Cek keberadaan batch
GetAllBatches() Ambil semua batch
GetWalletBalance() Cek saldo wallet

πŸ’° Mekanisme Keuangan

Alur Pembayaran

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      ALUR PEMBAYARAN                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  1. CREATE BATCH                                                β”‚
β”‚     └── Importir β†’ Petani: DP 5% dari nilai kontrak            β”‚
β”‚                                                                 β”‚
β”‚  2. CONFIRM IMPORT (Sukses)                                     β”‚
β”‚     └── Importir β†’ Koperasi: 20% dari sisa (95%)               β”‚
β”‚     └── Importir β†’ Petani: 80% dari sisa (95%)                 β”‚
β”‚                                                                 β”‚
β”‚  3. GAGAL QC / DITOLAK REGULATOR / DITOLAK IMPORTIR            β”‚
β”‚     └── Koperasi β†’ Importir: Refund DP 5%                      β”‚
β”‚         (Koperasi menanggung risiko)                           β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Sistem Denda

Kondisi Denda
Suhu truk lokal > 30Β°C IDR 500.000
Suhu kontainer ekspor > 25Β°C 5% dari nilai kontrak
Penurunan skor cupping 1% per poin penurunan

Bonus Kualitas

Kondisi Bonus
Skor cupping > 85 10% dari nilai kontrak

πŸ“ Contoh Penggunaan

1. Petani Mendaftarkan Panen

curl -X POST http://localhost:3001/api/create \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "petani": "Pak Budi",
    "geo": "-6.914744, 107.609810",
    "namaLokasi": "Desa Pangalengan, Bandung",
    "jenis": "Arabica",
    "harga": 50000000
  }'

2. Logistik Mengangkut ke Gudang

curl -X POST http://localhost:3001/api/transport-lokal \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "supir": "Ahmad",
    "plat": "D 1234 ABC",
    "suhu": 28.5,
    "currentGeo": "-6.914744, 107.609810"
  }'

3. Koperasi Menerima di Gudang

curl -X POST http://localhost:3001/api/receive-warehouse \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "nama": "Gudang Koperasi Maju",
    "kota": "Bandung",
    "geo": "-6.905977, 107.613144"
  }'

4. Koperasi Melakukan QC

curl -X POST http://localhost:3001/api/process-qc \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "metode": "Honey Process",
    "skor": 87,
    "residu": "BERSIH",
    "berat": 950
  }'

5. Regulator Menyetujui Ekspor

curl -X POST http://localhost:3001/api/approve-export \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "dokumen": "EXP/2024/001234",
    "keputusan": "APPROVED"
  }'

6. Logistik Memulai Pengiriman Ekspor

curl -X POST http://localhost:3001/api/start-shipment \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "kapal": "MV Pacific Star",
    "kontainer": "MSKU1234567",
    "suhu": 22.0,
    "originGeo": "-6.102, 106.880"
  }'

7. Importir Konfirmasi Penerimaan

curl -X POST http://localhost:3001/api/confirm-import \
  -H "Content-Type: application/json" \
  -d '{
    "id": "BATCH001",
    "importir": "Tokyo Coffee Co.",
    "destGeo": "35.689, 139.691",
    "skorAkhir": 85
  }'

8. Cek Detail Batch

curl http://localhost:3001/api/batch/BATCH001

9. Cek Saldo Wallet

# Cek saldo petani
curl http://localhost:3001/api/wallet/PetaniMSP

# Cek saldo importir
curl http://localhost:3001/api/wallet/ImportirMSP

# Cek saldo koperasi
curl http://localhost:3001/api/wallet/KoperasiMSP

πŸ›  Troubleshooting

Network Issues

# Restart jaringan
fablo down
fablo up

# Prune jaringan & buat ulang
fablo prune
fablo up

Identity Not Found

# Hapus wallet & enroll ulang
rm -rf wallet/
node enrollUp.js

Chaincode Error

# Upgrade chaincode
fablo chaincode upgrade kopi 1.1

Connection Profile Not Found

Pastikan folder fablo-target sudah ada setelah menjalankan fablo up.

Reset Wallet Blockchain

Jika ingin reset saldo wallet:

curl -X POST http://localhost:3001/api/init-wallet

πŸ“ Struktur Folder

chaincode-supplychain-coffee-export/
β”œβ”€β”€ enrollUp.js           # Script enroll user 5 organisasi
β”œβ”€β”€ server.js             # REST API server
β”œβ”€β”€ package.json          # Dependencies Node.js
β”œβ”€β”€ fablo-config.json     # Konfigurasi Fablo (5 org)
β”œβ”€β”€ fablo                 # Fablo executable
β”œβ”€β”€ kopi/                 # Chaincode folder
β”‚   β”œβ”€β”€ kopi.go           # Smart contract (Go)
β”‚   β”œβ”€β”€ go.mod            # Go module
β”‚   └── vendor/           # Go dependencies
β”œβ”€β”€ wallet/               # Identitas user (generated)
└── fablo-target/         # Network config (generated)

πŸ“„ License

MIT License - Silakan gunakan dan modifikasi sesuai kebutuhan.


🀝 Kontribusi

  1. Fork repository
  2. Buat branch fitur (git checkout -b feature/AmazingFeature)
  3. Commit perubahan (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

πŸ“§ Kontak

Untuk pertanyaan atau dukungan, silakan buat issue di repository ini.


Made with ❀️ for Indonesian Coffee Supply Chain

About

chaincode hyperledger fabric in golang for supply chain management system (coffee export case)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages