Wednesday, November 6, 2024

Building a Blockchain with Coding Part 1


Blockchain adalah teknologi revolusioner yang mendasari cryptocurrency seperti Bitcoin. Dalam artikel ini, kita akan membahas cara membangun blockchain sederhana menggunakan Python, dengan penjelasan rinci tentang fungsi-fungsi utama dalam pembuatan blockchain tersebut.

Apa itu Blockchain?

Blockchain adalah struktur data yang terdiri dari blok-blok yang saling terhubung dan terenkripsi. Setiap blok berisi data, dan setiap blok baru yang ditambahkan ke blockchain mengandung hash dari blok sebelumnya, menciptakan sebuah rantai yang aman dan tidak bisa diubah (immutable). Blockchain memiliki berbagai aplikasi, mulai dari cryptocurrency, kontrak pintar, hingga sistem penyimpanan data yang aman.

Di dalam tutorial ini, kita akan membangun sebuah blockchain menggunakan Python. Kita akan membuat fungsi-fungsi penting yang diperlukan untuk menjalankan blockchain dan menjelaskan setiap bagian secara mendetail.

Menyiapkan Struktur Blockchain

Langkah pertama adalah mendefinisikan struktur dasar blockchain. Berikut adalah langkah-langkah dasar yang dilakukan oleh program kita.

Tools;

  • Vscode (Bebas menggunakan kode editor yang sesuai dengan kebutuhan
  • Download Python Library (pip install Flask==0.12.2)
  • Download Postman (https://www.postman.com/downloads)

1. Membuat Class Blockchain

Blockchain yang kita buat terdiri dari class Blockchain. Class ini akan menangani semua hal terkait dengan blockchain, termasuk penambahan blok baru, validasi rantai, dan proses Proof of Work (PoW).


Pada awalnya, class Blockchain akan memiliki sebuah chain yang kosong, dan kita akan membuat blok pertama dengan proof 1 dan hash sebelumnya yang bernilai '0'. Blok pertama ini disebut Genesis Block.

2. Membuat Blok Baru
Setelah class blockchain diinisialisasi, kita perlu membuat fungsi untuk membuat blok baru dan menambahkannya ke dalam blockchain. Fungsi ini disebut create_block:


Fungsi create_block menerima dua parameter: proof dan previous_hash. Fungsi ini akan membuat sebuah dictionary yang berisi informasi blok, seperti index (urutan blok), timestamp (waktu pembuatan blok), proof (nilai proof yang digunakan untuk PoW), dan previous_hash (hash dari blok sebelumnya). Blok ini kemudian ditambahkan ke dalam self.chain.

3. Mendapatkan Blok Sebelumnya
Fungsi get_previous_block digunakan untuk mengambil blok terakhir dalam rantai:


Dengan fungsi ini, kita dapat mengakses blok terakhir untuk melakukan verifikasi atau operasi lain yang melibatkan data blok sebelumnya.

4. Proof of Work (PoW)
Salah satu konsep penting dalam blockchain adalah Proof of Work (PoW), yang digunakan untuk mengamankan jaringan dan memastikan integritas data. Fungsi proof_of_work adalah implementasi dari algoritma PoW.


Dalam fungsi ini, kita mencoba menemukan nilai new_proof yang menghasilkan hash dengan 4 nol di depan (sebuah kondisi yang harus dipenuhi untuk validitas proof). Proses ini adalah inti dari PoW, di mana setiap calon proof diuji dengan menghitung hash dan memeriksa apakah hash tersebut memenuhi kondisi tertentu. Proses ini memastikan bahwa hanya perhitungan yang memadai yang dapat menambah blok ke dalam rantai.

5. Membuat Hash dari Blok
Setiap blok dalam blockchain memiliki hash yang unik. Fungsi hash digunakan untuk menghasilkan hash dari setiap blok:


Dalam fungsi ini, blok pertama diubah menjadi format JSON yang terurut, kemudian di-encode menjadi bytes, dan akhirnya dihitung hash-nya menggunakan algoritma SHA-256. Ini menghasilkan sebuah string hash yang mewakili data dalam blok.

6. Memvalidasi Rantai Blockchain
Blockchain perlu memverifikasi bahwa semua blok dalam rantai valid dan tidak ada yang diubah. Fungsi is_chain_valid bertanggung jawab untuk memeriksa apakah rantai blockchain yang ada valid:


Fungsi ini memeriksa dua hal untuk setiap blok dalam rantai:
  • Validasi Hash: Memastikan bahwa previous_hash dalam blok saat ini sesuai dengan hash dari blok sebelumnya.
  • Validasi Proof of Work: Memeriksa apakah hash dari proof saat ini dan proof sebelumnya memenuhi kondisi PoW yang ditentukan.
Jika salah satu dari dua pemeriksaan ini gagal, rantai dianggap tidak valid.



No comments:

Post a Comment

Coding: Create a Smart Contract

Smart Contract adalah program komputer yang berjalan di atas jaringan blockchain dan secara otomatis mengeksekusi perjanjian yang telah dipr...