Membuat CryptoCurrency( Mata Uang Kripto) menggunakan python
Membuat Cryptocurrency dengan Blockchain Menggunakan Python dan Flask
By: Muhamad Angga Ferdyan
Cryptocurrency merupakan aset digital yang menggunakan teknologi enkripsi untuk mengamankan transaksi dan mengontrol pembuatan unit baru. Bitcoin adalah salah satu contoh cryptocurrency yang paling terkenal dan menggunakan teknologi blockchain. Pada artikel ini, kita akan membahas langkah demi langkah bagaimana membuat sistem cryptocurrency sederhana dengan menggunakan Python dan Flask.
1. Apa itu Blockchain?
Blockchain merupakan struktur data terdistribusi yang terdiri dari blok-blok informasi yang saling terhubung dan diamankan dengan menggunakan kriptografi. Setiap blok berisi transaksi yang sudah divalidasi dan memiliki hash dari blok sebelumnya. Hal ini membuat blockchain menjadi teknologi yang sangat aman dan tahan terhadap manipulasi.
Pada tutorial ini, kita akan membangun sebuah blockchain sederhana yang dapat memvalidasi transaksi, melakukan proof of work, serta memeriksa keabsahan blockchain.
2. Persiapan dan Instalasi
Sebelum memulai tutorial, pastikan Anda telah menginstal Python dan Flask. Flask adalah framework Python untuk membuat aplikasi web, yang akan digunakan untuk mengakses blockchain melalui API.
3. Struktur Blockchain
Blockchain terdiri dari beberapa komponen utama:
- Blok: Setiap blok menyimpan informasi tentang transaksi yang terjadi, termasuk indeks, timestamp, proof, dan hash blok sebelumnya.
- Chain: Merupakan daftar yang menyimpan seluruh blok, di mana blok-blok tersebut saling terhubung satu sama lain.
- Proof of Work: Algoritma yang digunakan untuk memastikan bahwa transaksi yang dimasukkan ke dalam blockchain memerlukan sejumlah usaha (komputasi) yang signifikan, sehingga menghindari manipulasi.
- Transaksi: Data yang memuat informasi tentang pengirim, penerima, dan jumlah yang ditransfer dalam blockchain
4. Membuat Kelas Blockchain
Kelas Blockchain bertanggung jawab untuk mengelola seluruh operasi yang ada dalam blockchain. Ini termasuk menambahkan blok, memverifikasi keabsahan blockchain, serta menambahkan transaksi.
Berikut adalah kode Python untuk membuat kelas Blockchain:
5. Membuat API dengan Flask
Selanjutnya, kita akan membuat aplikasi Flask untuk mengakses blockchain melalui API. Aplikasi ini memungkinkan kita untuk melakukan mining blok baru, memeriksa kevalidan blockchain, menambahkan transaksi, dan menghubungkan node ke jaringan.
Berikut adalah kode untuk aplikasi Flask:
6. Menjalankan Aplikasi
Sekarang kita telah selesai menyiapkan kode blockchain dan API-nya, saatnya menjalankan aplikasi:
- Jalankan aplikasi Flask dengan perintah: Flask run --port=5001 atau misal tergantung dengan nodes yang dibutuhkan
7. Menghubungkan Beberapa Node
Untuk membuat jaringan terdesentralisasi, Anda dapat menghubungkan beberapa node dengan mengirimkan alamat node lain menggunakan endpoint /connect_node. Setiap node dapat berinteraksi dengan node lainnya, berbagi blockchain, dan menambahkan blok baru.
Membuat Node dan Menghubungkannya
Langkah 1: Menyiapkan Node
Buka dan jalankan 3 file berikut di Spyder pada masing-masing console:
- hadcoin_node_5001.py (Node Hadelin)
- hadcoin_node_5002.py (Node Kirill)
- hadcoin_node_5003.py (Node Anda)
Setiap file ini mewakili node yang berbeda dalam jaringan blockchain kita.
Langkah 2: Membuat Genesis Block
Setelah node dijalankan, kita perlu membuat genesis block (blok pertama) di setiap node. Untuk melakukannya, buka Postman dan lakukan langkah-langkah berikut:
Hadelin Node (5001):
- URL:
http://127.0.0.1:5001/get_chain - Method: GET
- Klik "Send" untuk mendapatkan genesis block pada Hadelin Node.
Kirill Node (5002):
- URL:
http://127.0.0.1:5002/get_chain - Method: GET
- Klik "Send" untuk mendapatkan genesis block pada Kirill Node.
Your Node (5003):
- 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.
Langkah 3: Koneksi Antar Node
Selanjutnya, kita perlu menghubungkan node-node satu sama lain. Jalankan fungsi connect_node dengan menggunakan request POST 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.
Langkah 4: Mining Block Baru
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.
Langkah 5:
Konsensus dengan Replace Chain
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.
- Your Node (5003): Cek apakah blockchain sudah sama pada
semua node.
Langkah 6:
Menambahkan Transaksi
Sekarang, kita akan
mengirim transaksi dari satu node ke node lainnya. Lakukan transaksi untuk
mengirimkan 10.000 coin dari Hadelin ke Kirill dengan request POST pada
Postman:
- Hadelin Node (5001):
- URL: http://127.0.0.1:5001/add_transaction
- Method: POST
- Body (JSON):
- Klik "Send" untuk menambahkan
transaksi.
Setelah transaksi
ditambahkan, lakukan mining untuk menyimpan transaksi dalam blok baru:
- Hadelin Node (5001):
- URL: http://127.0.0.1:5001/mine_block
- Method: GET
- Klik "Send" untuk menambang
blok baru.
Langkah 7:
Memastikan Semua Node Sama
Cek transaksi pada Kirill
Node (5002) dan Your Node (5003) menggunakan fungsi get_chain:
- Kirill Node (5002):
- URL: http://127.0.0.1:5002/get_chain
- Method: GET
- Klik "Send" untuk memastikan
transaksi Hadelin ke Kirill sudah ada.
- Your Node (5003):
- URL: http://127.0.0.1:5003/get_chain
- Method: GET
- Klik "Send" untuk memastikan
transaksi Hadelin ke Kirill sudah ada.
Jika transaksi sudah
ada di semua node, lakukan konsensus lagi dengan fungsi replace_chain pada
Kirill Node dan Your Node:
- Kirill Node (5002): URL: http://127.0.0.1:5002/replace_chain
- Your Node (5003): URL: http://127.0.0.1:5003/replace_chain
Cek kembali blockchain
dengan fungsi get_chain pada setiap node apakah sudah sama.
Langkah 8:
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.
Lakukan hal yang sama
untuk memastikan konsensus pada semua node dengan mining dan replace_chain.
Langkah 9:
Transaksi dari Kirill ke Anda
Tambahkan transaksi
dari Kirill ke Anda (50.000 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.
Komentar
Posting Komentar