88032023006 | ZICO

...

Building a Blockchain

Image

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:

  • datetime untuk mencatat waktu.
  • hashlib untuk membuat hash.
  • json untuk format data JSON.
  • flask untuk 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 Blockchain dengan atribut self.chain sebagai list kosong.
  • Panggil fungsi create_block() saat inisialisasi untuk membuat blok pertama dengan nilai proof=1 dan previous_hash='0'.

3. Fungsi Create Block

Fungsi ini digunakan untuk membuat blok baru dan menambahkannya ke dalam chain.

Perintah:

  • Buat dictionary block dengan atribut:
    • index: nomor urut blok
    • timestamp: waktu saat blok dibuat
    • proof: hasil proof of work
    • previous_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_proof dimulai dari 1 dan check_proof bernilai 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_proof jika 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() dan sort_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_block dan mulai pengecekan dari blok kedua.
  • Loop setiap blok dalam chain:
    • Periksa apakah previous_hash di blok saat ini sesuai dengan hasil hash() blok sebelumnya.
    • Periksa apakah hasil hash dari proof of work blok sesuai syarat (awalan 0000).
  • Jika salah satu syarat tidak terpenuhi, kembalikan False. Jika semua valid, kembalikan True.

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.