Thursday, November 14, 2024

Building a Blockchain with Coding Part 2

 1. Inisialisasi Flask dan Blockchain

Kode diawali dengan mengimpor modul yang diperlukan dan menginisialisasi aplikasi Flask:


Flask memungkinkan kita membuat aplikasi web untuk berinteraksi dengan blockchain.


2. Membuat Kelas Blockchain

Kelas Blockchain bertanggung jawab atas berbagai fungsi utama, seperti pembuatan blok baru, penentuan proof-of-work, dan validasi rantai. Berikut fungsi-fungsi di dalamnya:

A.  __init__: Inisialisasi Blockchain


Fungsi __init__ adalah konstruktor yang menginisialisasi chain sebagai list kosong. Blok pertama (genesis block) dibuat dengan nilai proof=1 dan previous_hash='0'.

B. create_block: Membuat Blok Baru


create_block digunakan untuk membuat blok baru, yang mencakup:
  • index: Nomor urutan blok.
  • timestamp: Waktu pembuatan blok.
  • proof: Bukti dari proof-of-work.
  • previous_hash: Hash dari blok sebelumnya.
Blok yang dihasilkan ditambahkan ke dalam rantai.

C. get_previous_block: Mendapatkan Blok Terakhir


Fungsi ini mengembalikan blok terakhir dalam rantai untuk digunakan dalam proof-of-work dan pembuatan blok baru.

D. proof_of_work: Proses Proof of Work


Fungsi ini menentukan proof-of-work dengan mencari angka (new_proof) yang, ketika digabungkan dengan previous_proof, menghasilkan hash yang diawali dengan empat angka nol (0000). Ini mengontrol kesulitan dalam menambang blok.


E. hash: Menghitung Hash dari Blok


Fungsi hash menghasilkan hash SHA-256 untuk setiap blok. Fungsi ini digunakan untuk memverifikasi keaslian blok di blockchain.


F. is_chain_valid: Validasi Rantai Blockchain


is_chain_valid memastikan bahwa blockchain tidak dimodifikasi. Fungsi ini melakukan dua pemeriksaan:
  1. Memastikan previous_hash setiap blok sesuai dengan hash blok sebelumnya.
  2. Memverifikasi bahwa bukti proof-of-work setiap blok valid.

3. Endpoint API untuk Interaksi dengan Blockchain

Berikut adalah endpoint Flask untuk mengakses fungsi-fungsi blockchain melalui HTTP:

A. mine_block: Menambang Blok Baru



Endpoint ini menambang blok baru dengan mengidentifikasi previous_proof, menjalankan proof_of_work, dan membuat blok baru melalui create_block. Hasilnya dikirimkan sebagai respons JSON.

B. get_chain: Mendapatkan Rantai Blockchain


Endpoint ini mengembalikan rantai blockchain lengkap beserta panjangnya dalam format JSON.

C. is_valid: Memeriksa Validitas Blockchain


Endpoint ini memvalidasi blockchain, mengembalikan pesan apakah rantai tersebut valid atau tidak.

4. Menjalankan Aplikasi Flask

Terakhir, aplikasi Flask diaktifkan untuk berfungsi di alamat 0.0.0.0 pada port 5000:


Lalu, running kodenya di code editor


Python akan menjalankan aplikasi Flask yang berisi implementasi blockchain sederhana. Berikut adalah penjelasan dari setiap output yang muncul:

Serving Flask app 'Blockchain'
Ini menunjukkan bahwa Flask berhasil menemukan aplikasi bernama 'Blockchain'. Nama ini didasarkan pada nama file yang Anda jalankan, yaitu Blockchain.py.

Debug mode: off
Menunjukkan bahwa Flask menjalankan aplikasi dalam mode produksi dan bukan mode debug. Mode debug biasanya digunakan dalam pengembangan untuk memudahkan debugging, tetapi untuk keamanan dan performa, ini dimatikan pada aplikasi siap produksi.

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
Ini adalah peringatan dari Flask bahwa server yang dijalankan sekarang adalah server pengembangan. Flask menyarankan untuk tidak menggunakan server ini dalam produksi karena server ini tidak cukup aman atau cepat untuk aplikasi yang melayani banyak pengguna. Untuk produksi, Anda disarankan menggunakan WSGI server seperti Gunicorn atau uWSGI.

Running on all addresses (0.0.0.0)
Output ini menunjukkan bahwa aplikasi Flask berjalan di semua alamat jaringan yang tersedia di perangkat Anda. Artinya, aplikasi dapat diakses melalui alamat IP lokal maupun IP jaringan.

Running on http://127.0.0.1:5000
Ini adalah alamat lokal yang dapat Anda gunakan untuk mengakses aplikasi dari komputer yang sama di mana server dijalankan. 127.0.0.1 adalah alamat loopback standar (localhost), dan 5000 adalah port default yang digunakan oleh Flask.

Running on http://192.168.18.54:5000
Ini adalah alamat IP jaringan lokal yang diberikan oleh router atau jaringan. Alamat ini memungkinkan Anda mengakses aplikasi dari perangkat lain yang terhubung ke jaringan yang sama, seperti komputer atau ponsel yang terhubung ke Wi-Fi.

Cara Menggunakan Aplikasi Blockchain



Mengakses Endpoint: Buka browser atau aplikasi seperti Postman, lalu akses salah satu dari alamat yang diberikan, misalnya http://127.0.0.1:5000.

Endpoint yang Tersedia:
  • /mine_block: Untuk menambang blok baru

  • /get_chain: Untuk melihat seluruh rantai blockchain.

                                           

  • /is_valid: Untuk memverifikasi apakah blockchain valid atau tidak.


Output ini menunjukkan bahwa aplikasi Flask berhasil berjalan dan siap menerima permintaan HTTP untuk berinteraksi dengan blockchain. Hal ini dapat menguji aplikasi blockchain ini dari perangkat yang sama atau dari perangkat lain di jaringan lokal, selama alamat IP yang disediakan digunakan.

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...