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
creatNewBlockmenjadicreateNewBlockdi seluruh file. - Memastikan konsistensi penamaan variabel antara core logic dan API.
- Memperbaiki typo fungsional
- Penambahan Tes Manual: Membuat file
test/blockchain.jsuntuk memverifikasi algoritma Proof of Work dan hashing tanpa melalui jalur API.
2. Implementasi Desentralisasi (Bab 2.5 PDF)
- Manajemen Dependensi:
- Menginstal modul
uuiduntuk identitas unik transaksi dan node. - Menginstal
requestdanrequest-promiseuntuk komunikasi antar-node (P2P).
- Menginstal modul
- Otomasi Multi-Node (
package.json):- Menambahkan script
node1hingganode5untuk menjalankan simulasi 5 node sekaligus dengan satu perintahnpm run nodeX.
- Menambahkan script
- Pembaruan Core Blockchain (
src/blockchain.js):- Menambahkan properti
nodeUrldannetworkNodesdi constructor. - Implementasi
idunik pada setiap transaksi menggunakan UUID. - Memisahkan logika
makeNewTransaction(pembuatan) denganaddTransactionToPendingTransactions(penyimpanan) untuk mendukung sinkronisasi jaringan.
- Menambahkan properti
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):
- Konektivitas: Node 1 dan Node 2 berhasil saling terhubung melalui endpoint registrasi.
- Sinkronisasi Transaksi: Transaksi yang dikirim ke Node 1 otomatis muncul di daftar pending Node 2.
- Sinkronisasi Blok: Setelah mining di Node 1, blok index 2 muncul di Node 2 dengan data hash dan transaksi yang identik.
- Reward: Sistem reward miner berhasil disebarkan ke seluruh jaringan.
Status Proyek: Selesai (Fungsional & Terdesentralisasi)