Skip to content

Laporan Pembaruan Proyek Blockchain (Edisi Linux)

Laporan ini merangkum seluruh langkah implementasi yang telah dilakukan untuk menyelesaikan Praktikum Blockchain, mulai dari perbaikan dasar hingga sistem jaringan terdesentralisasi.

1. Perbaikan Dokumentasi & Fondasi Dasar

  • Pembaruan Panduan (docs/Praktikum-Blockchain.md):
    • Mengganti panduan pengujian dari Thunder Client ke Postman.
    • Menambahkan tips manajemen port di Linux (lsof & kill).
  • Standarisasi Kode:
    • Memperbaiki typo fungsional creatNewBlock menjadi createNewBlock di seluruh file.
    • Memastikan konsistensi penamaan variabel antara core logic dan API.
  • Penambahan Tes Manual: Membuat file test/blockchain.js untuk memverifikasi algoritma Proof of Work dan hashing tanpa melalui jalur API.

2. Implementasi Desentralisasi (Bab 2.5 PDF)

  • Manajemen Dependensi:
    • Menginstal modul uuid untuk identitas unik transaksi dan node.
    • Menginstal request dan request-promise untuk komunikasi antar-node (P2P).
  • Otomasi Multi-Node (package.json):
    • Menambahkan script node1 hingga node5 untuk menjalankan simulasi 5 node sekaligus dengan satu perintah npm run nodeX.
  • Pembaruan Core Blockchain (src/blockchain.js):
    • Menambahkan properti nodeUrl dan networkNodes di constructor.
    • Implementasi id unik pada setiap transaksi menggunakan UUID.
    • Memisahkan logika makeNewTransaction (pembuatan) dengan addTransactionToPendingTransactions (penyimpanan) untuk mendukung sinkronisasi jaringan.

3. Pembangunan API Jaringan Terdesentralisasi (src/api.js)

  • Dinamis Port: Mengatur agar server berjalan di port sesuai argumen terminal (process.argv[2]).
  • Endpoint Jaringan:
    • POST /register-and-broadcast-node: Pintu masuk utama untuk node baru agar dikenal oleh seluruh jaringan.
    • POST /register-node: Mendaftarkan node secara individual.
    • POST /register-bulk-nodes: Sinkronisasi massal daftar node saat ada anggota baru.
  • Fitur Broadcast & Sinkronisasi:
    • POST /transaction/broadcast: Memastikan setiap transaksi di satu node otomatis terkirim ke node lainnya.
    • POST /add-block: Validasi dan sinkronisasi blok hasil mining agar seluruh node memiliki salinan blockchain yang identik.
    • GET /mine (Updated): Ditambahkan logika untuk menyebarkan blok baru ke seluruh jaringan setelah penambangan berhasil.

4. Hasil Verifikasi Akhir

Simulasi dilakukan dengan menjalankan 2 node di Linux (Port 3001 & 3002):

  1. Konektivitas: Node 1 dan Node 2 berhasil saling terhubung melalui endpoint registrasi.
  2. Sinkronisasi Transaksi: Transaksi yang dikirim ke Node 1 otomatis muncul di daftar pending Node 2.
  3. Sinkronisasi Blok: Setelah mining di Node 1, blok index 2 muncul di Node 2 dengan data hash dan transaksi yang identik.
  4. Reward: Sistem reward miner berhasil disebarkan ke seluruh jaringan.

Status Proyek: Selesai (Fungsional & Terdesentralisasi)