Friday, December 6, 2024

Building a Blockchain with Coding Part 3


Kali ini saya akan membahas tentang lanjutan case pembuatan cryptocurrency yang sebelumnya sudah membuat coding berbasis python yang kemudian dilanjutkan menggunakan postman, sekarang saya mencoba untuk melanjutkan pembuatan case lebih dalam.

Teknologi blockchain telah merevolusi cara kita mengelola transaksi digital. Salah satu aplikasinya yang paling populer adalah cryptocurrency, seperti Bitcoin, yang memungkinkan transaksi aman tanpa perantara. Dalam tutorial ini, Anda akan belajar bagaimana membuat blockchain sederhana menggunakan Python dan Flask untuk membangun dasar dari cryptocurrency.

1. Dasar-Dasar Blockchain

Blockchain adalah rangkaian data yang tersimpan dalam blok-blok yang saling terhubung secara kronologis. Setiap blok memuat data tertentu, termasuk jejak dari blok sebelumnya, sehingga menciptakan rantai yang tidak dapat diubah tanpa persetujuan jaringan. Teknologi ini dikenal karena keandalannya dalam mencatat transaksi dan mencegah perubahan yang tidak sah.

Proyek ini bertujuan membuat blockchain yang mendukung pencatatan transaksi, penambahan blok baru, dan validasi struktur blockchain.

2. Alat yang Dibutuhkan

Python: Bahasa pemrograman yang digunakan untuk logika utama.

Flask: Framework web Python untuk mengembangkan API sederhana yang memungkinkan interaksi dengan blockchain.

Pastikan Python dan Flask telah terinstal di perangkat Anda.

3. Komponen Inti Blockchain

Blockchain terdiri dari:

  • Blok: Unit penyimpanan data yang berisi transaksi, waktu pencatatan, bukti kerja (proof), dan referensi hash dari blok sebelumnya.
  • Transaksi: Data yang mencatat aktivitas, misalnya pengirim, penerima, dan jumlah yang dikirim.
  • Proof of Work: Mekanisme yang memastikan setiap blok baru membutuhkan komputasi tertentu, sehingga sulit dimanipulasi.
  • Rantai (Chain): Sekumpulan blok yang disusun secara berurutan untuk membentuk blockchain.

4. Implementasi Blockchain

Berikut adalah contoh case lain dari struktur dasar blockchain:

Buatkan masing masing file dengan nama seperti gambar diatas, lalu setiap file itu diisi dengan code yang sudah kita bahas di part 2, jika belum mengetahui silahkan bisa melihat didalam blog saya " Building a Blockchain with Coding Part 2". Jika sudah, isi setiap file tersebut dengan code lalu yang membedakan antara mereka adalah tata letak port pada barisan terakhir



Maka, akan terlihat seperti ini;


Lalu buka Postman dan jalankan fungsi get_chain dengan GET request untuk membuat genesis block pada masing-masing node
http://127.0.0.1:5001/get_chain (Hadelin Node)


  • URL: http://127.0.0.1:5001/get_chain
  • Method: GET
  • Klik "Send" untuk mendapatkan genesis block pada Hadelin Node.

http://127.0.0.1:5002/get_chain (Kirill Node)


  • URL: http://127.0.0.1:5002/get_chain
  • Method: GET
  • Klik "Send" untuk mendapatkan genesis block pada Kirill Node.

http://127.0.0.1:5003/get_chain (Your Node)



  • URL: http://127.0.0.1:5003/get_chain
  • Method: GET
  • Klik "Send" untuk mendapatkan genesis block pada Your Node.
Catatan: Pastikan semua node memiliki genesis block yang sama.

Selanjutnya, kita perlu menghubungkan node-node satu sama lain. Jalankan fungsi connect_node dengan menggunakan POST request pada Postman untuk setiap node dengan parameter JSON seperti berikut:

Hadelin Node (5001):

  • URL: http://127.0.0.1:5001/connect_node
  • Method: POST
  • Body (JSON):



Klik "Send" untuk menghubungkan node lainnya. Lakukan hal yang sama dengan node yang lain

Sekarang, kita akan melakukan mining untuk menambahkan blok baru pada jaringan. Lakukan langkah berikut untuk masing-masing node:

  • Hadelin Node (5001):
  • URL: http://127.0.0.1:5001/mine_block
  • Method: GET
  • Klik "Send" untuk menambahkan blok baru pada Hadelin Node.

Setelah mining, cek apakah blok baru sudah ditambahkan dengan menggunakan fungsi get_chain pada node yang lain:

Kirill Node (5002):

  • URL: http://127.0.0.1:5002/get_chain
  • Method: GET
  • Klik "Send" untuk memeriksa apakah Kirill Node mendapatkan blok yang sama.



hasilnya adalah belum sama, hal ini dikarenakan belum membuat request replace_chain yang berfungsi menjalankan konsensus agar semua node memiliki block yang sama.

Untuk memastikan bahwa semua node memiliki blockchain yang sama, jalankan fungsi replace_chain pada setiap node:

Kirill Node (5002):
  • URL: http://127.0.0.1:5002/replace_chain
  • Method: GET
  • Klik "Send" untuk memastikan blockchain di Kirill Node sudah diperbarui sesuai dengan konsensus.


Your Node (5003):
  • URL: http://127.0.0.1:5003/replace_chain
  • Method: GET
  • Klik "Send" untuk memastikan blockchain di Your Node sudah diperbarui sesuai dengan konsensus.

Setelah itu, lakukan pengecekan menggunakan fungsi get_chain pada setiap node:

Hadelin Node (5001): Cek apakah blockchain sudah sama pada semua node.




Kirill Node (5002): Cek apakah blockchain sudah sama pada semua node.




Kirill Node (5003): Cek apakah blockchain sudah sama pada semua node.


Menambahkan Transaksi Lagi

Tambahkan transaksi lagi dari Hadelin ke Anda (1.000.000 coin):

Hadelin Node (5001):
URL: http://127.0.0.1:5001/add_transaction
Method: POST
Body (JSON):

Klik "Send" untuk menambahkan transaksi. Lalu cek menggunakan mine_block 


Lakukan hal yang sama untuk memastikan konsensus pada semua node dengan mining dan replace_chain.


Transaksi dari Kirill ke Your

Tambahkan transaksi dari Kirill ke Anda (5000 coin):

Kirill Node (5002):
URL: http://127.0.0.1:5002/add_transaction
Method: POST
Body (JSON):


Klik "Send" untuk menambahkan transaksi.

Lakukan mining dan konsensus untuk memastikan semua node memiliki blockchain yang sama.





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