Blockchain adalah teknologi yang menyimpan data secara terdesentralisasi dengan menggunakan blok-blok yang saling terhubung melalui hash. Dalam artikel ini, kita akan membahas proses pembuatan blockchain sederhana menggunakan Python, lengkap dengan penjelasan fungsi-fungsinya. Proses ini menggunakan beberapa library Python dan framework Flask untuk membangun API sederhana yang dapat diuji menggunakan Postman.
1. Instalasi dan Persiapan
Sebelum mulai coding, kita perlu melakukan beberapa instalasi:
- Instal Flask dengan perintah:
pip install Flask==0.12.2 - Unduh dan install Postman dari sini.
Selanjutnya, import beberapa library yang dibutuhkan:
datetimeuntuk mencatat waktu.hashlibuntuk membuat hash.jsonuntuk format data JSON.flaskuntuk membuat web server API.
2. Pembuatan Class dan Init Function
Pada tahap ini kita membuat class Blockchain untuk menyimpan data blockchain. Saat pertama kali dibuat, kita juga langsung membuat blok pertama atau genesis block.
Perintah:
- Buat class
Blockchaindengan atributself.chainsebagai list kosong. - Panggil fungsi
create_block()saat inisialisasi untuk membuat blok pertama dengan nilaiproof=1danprevious_hash='0'.
3. Fungsi Create Block
Fungsi ini digunakan untuk membuat blok baru dan menambahkannya ke dalam chain.
Perintah:
- Buat dictionary
blockdengan atribut:index: nomor urut bloktimestamp: waktu saat blok dibuatproof: hasil proof of workprevious_hash: hash blok sebelumnya
- Tambahkan blok tersebut ke dalam
self.chain. - Kembalikan blok tersebut.
4. Fungsi Get Previous Block
Fungsi ini digunakan untuk mendapatkan blok terakhir dalam chain.
Perintah:
- Kembalikan
self.chain[-1], yaitu elemen terakhir dalam chain.
5. Fungsi Proof of Work
Proof of Work adalah proses mencari nilai angka yang dapat menghasilkan hash tertentu sebagai bukti kerja. Di sini hash harus diawali dengan 0000.
Perintah:
- Buat variabel
new_proofdimulai dari 1 dancheck_proofbernilai False. - Lakukan loop hingga didapatkan hash yang awalan 4 digitnya adalah 0000.
- Gunakan operasi
hashlib.sha256(str(new_proof**2 - previous_proof**2).encode()).hexdigest() - Kembalikan nilai
new_proofjika syarat hash terpenuhi.
6. Fungsi Hash
Fungsi ini digunakan untuk menghasilkan hash SHA256 dari sebuah blok.
Perintah:
- Ubah blok ke format JSON dengan
json.dumps()dansort_keys=True. - Encode hasil JSON ke byte string.
- Lakukan hashing menggunakan
hashlib.sha256(). - Kembalikan hasil hash dalam format hexdigest.
7. Fungsi Is Chain Valid
Fungsi ini digunakan untuk memeriksa apakah rantai blok valid, dengan cara membandingkan hash blok sebelumnya dan validasi proof of work di setiap blok.
Perintah:
- Ambil blok pertama sebagai
previous_blockdan mulai pengecekan dari blok kedua. - Loop setiap blok dalam chain:
- Periksa apakah
previous_hashdi blok saat ini sesuai dengan hasilhash()blok sebelumnya. - Periksa apakah hasil hash dari proof of work blok sesuai syarat (awalan 0000).
- Periksa apakah
- Jika salah satu syarat tidak terpenuhi, kembalikan
False. Jika semua valid, kembalikanTrue.
Penutup
Dengan mengikuti langkah-langkah di atas, kita dapat membangun sebuah blockchain sederhana yang memiliki fitur pembuatan blok, proof of work, hashing, validasi chain, dan pembuatan API menggunakan Flask. Fungsi-fungsi seperti create_block, proof_of_work, hash, dan is_chain_valid menjadi kunci utama dalam menjaga integritas dan keamanan sistem blockchain ini. Semoga artikel ini bisa jadi referensi dasar untuk memahami cara kerja blockchain secara praktis menggunakan Python.