Bagaimana cara membangun Blockchain dengan Python?

Jika Anda ingin mempelajari cara membuat blockchain, Anda telah datang ke tempat yang tepat. Mari selami lebih dalam untuk mempelajari cara membuat blockchain dengan python.

Ada banyak artikel di sekitar blockchain, tetapi tidak semuanya berbicara tentang membangun blockchain dari awal. Sebagai pengembang, teori itu penting, tetapi Anda juga perlu membuat blockchain untuk memahami konsep di baliknya sepenuhnya.

Ide inti di balik blockchain adalah sifatnya yang terdesentralisasi. Anda akan terpesona oleh fakta bagaimana semuanya bekerja di dalam. Blockchain mungkin terdengar sederhana, tetapi di dalamnya ada banyak protokol dan algoritme yang mewujudkannya. Kami akan menggunakan Python untuk membuat blockchain dari awal.

Anda juga dapat menyimpan artikel dan mem-bookmark-nya sebagai, “Cara membangun blockchain kami”. Percayalah padaku; artikel ini akan membantu Anda dalam jangka panjang.

Belum pernah mendengar tentang blockchain? Kemudian lihat kursus gratis 101Blockchain. Jika Anda ingin memajukan karier Anda, lihat Kursus Blockchain Perusahaan Bersertifikat di mana Anda mempelajari cara kerja blockchain perusahaan. Mari kita mulai.

Apakah Anda seorang pemula di Blockchain? Mendaftarlah di Kursus Gratis Blockchain dan mulai perjalanan Blockchain Anda sekarang.

Cara Membangun Blockchain

Cara terbaik untuk mempelajari sesuatu adalah belajar dengan melakukan. Untuk memastikan Anda berada di halaman yang sama dengan saya, mari kita lihat persyaratannya terlebih dahulu. Kami juga akan menjelaskan secara singkat blockchain sehingga kami berdua berada di halaman yang sama.

Kebutuhan

Persyaratan dasar untuk mengikuti panduan ini adalah mengetahui cara membuat kode. Jika Anda belum pernah membuat kode dalam hidup Anda, maka panduan ini bukan untuk Anda. Saya sarankan untuk memeriksa berbagai kursus tingkat pemula yang tersedia secara online. Saya merekomendasikan EdX, Udacity, dan Coursera untuk pengalaman belajar terbaik.

Anda sudah menjadi pembuat kode? Kemudian, Anda harus tahu tentang Python dasar. Selain itu, ini akan membantu Anda untuk mengikuti tutorial “Cara Membangun Blockchain”.

Baca Sekarang: Panduan Ultimate Blockchain Kuorum

Kami membuat tutorial agar siapa saja dapat mengikuti. Jadi, jika Anda tidak tahu dan ingin mempelajari cara membuat blockchain dari awal, Anda dipersilakan untuk melakukannya!

 Jika Anda tidak tahu Python, jangan khawatir karena mudah dipelajari. Lihat Dokumentasi Python untuk memulai.

Kami akan menggunakan Python 3.6+ untuk tutorialnya. Jika Anda memutuskan untuk menggunakan versi lain dari Python, maka Anda mungkin harus melakukan lebih banyak penelitian agar kodenya berfungsi. Untuk keperluan tutorial, saya sarankan menginstal versi yang saya gunakan.

Terakhir, Anda juga harus tahu tentang HTTP – protokol yang digunakan untuk berkomunikasi antara dua pihak di internet.

Menginstal Python menggunakan pip

Anda perlu menginstal Python menggunakan pip. Anda juga perlu menginstal pustaka Permintaan dan Flask yang luar biasa. Untuk melakukannya, cukup jalankan perintah di bawah ini.

$ pip install Flask == 0.12.2 permintaan == 2.18.4

Jika Anda menggunakan lingkungan Windows, Anda dapat langsung membuka python.org untuk mengunduh Python versi terbaru.

Sedangkan untuk saya, saya mengunduh Python 3.8.1 – versi terbaru pada saat menulis tutorial.

Untuk IDE, saya lebih suka menggunakan PyCharm. Saya menggunakan edisi Komunitas Python untuk tutorial. Anda bebas menggunakan IDE pilihan Anda. Alternatif hebat lainnya adalah Visual Studio Code – lingkungan pengembangan terintegrasi open-source gratis.

Alat terakhir yang Anda perlukan adalah Postman – klien HTTP. Alternatifnya, Anda juga bisa menggunakan cURL.

Saya juga merekomendasikan menginstal lingkungan virtual untuk membuat lingkungan yang sama sekali berbeda untuk pengembangan Anda. Anda bisa mengikuti panduan ini untuk mengaturnya dengan benar.

Blockchain Revisited

Sebelum kita pergi dan membangun blockchain, kita perlu menyegarkan kembali ide kita tentang blockchain. Ini akan membantu kami untuk tetap pada halaman yang sama.

Blockchain adalah teknologi buku besar terdistribusi di mana rekan kerja dapat berpartisipasi, berinteraksi, dan mengeksekusi transaksi tanpa memerlukan entitas terpusat. Setiap rekan memiliki salinan buku besar, yang membuat peretas tidak mungkin melakukan penipuan dalam sistem. Fitur utama dari blockchain termasuk transparansi, kekekalan, dan keamanan. Ini menggunakan algoritma cryptocurrency canggih untuk memastikan keamanan data. Selain itu, untuk mencapai konsensus, jaringan blockchain akan menggunakan algoritme konsensus seperti Proof-of-Work, Proof-of-Stake, dan sebagainya..

Baca Juga: Blockchain Untuk Pemula: Panduan Memulai

Memulai Membangun Blockchain

Dengan semua prasyarat penginstalan selesai, kami sekarang siap untuk memulai dengan tutorial kami, “Cara Membangun Blockchain.”

Untuk memulai, Anda perlu membuat file blockchain.py.

1. Pembuatan Blockchain

Langkah pertama adalah membuat solusi blockchain yang fungsional. Pertama, kita perlu membuat kelas Blockchain. Di sana kita akan membuat konstruktor yang akan memulai rantai dan daftar transaksi. Daftar rantai akan menyimpan blockchain kami, sedangkan transaksi akan disimpan dalam larik current_transacations.

def __init __ (self): self.chain = [] self.current_transactions = []

Selanjutnya, kita perlu membuat fungsi new_block yang akan digunakan untuk membuat blok baru dan kemudian menambahkannya ke rantai yang sudah ada. Kode untuk fungsi new_block adalah sebagai berikut:

def new_block (self): # Fungsi ini membuat blok baru dan kemudian menambahkan ke rantai pass yang ada

Metode transaksi_baru akan membuat transaksi baru dan kemudian menambahkan transaksi tersebut ke daftar transaksi yang sudah ada.

def new_transaction (self): #Fungsi ini menambahkan transaksi baru ke transaksi yang sudah ada. Kami juga memiliki fungsi hash yang digunakan untuk membuat hash untuk sebuah blok. @staticmethod def hash (block): #Digunakan untuk melakukan hashing pada sebuah blok

Fungsi terakhir yang akan kita buat last_block. Ini digunakan untuk memanggil blok terakhir dalam rantai.

Kami juga dapat membuat tiga fungsi lagi di sini.

  • register_node () → Untuk mendaftarkan node baru dan menambahkannya ke jaringan
  • valid_proof () → Akan memastikan apakah blok yang dikirimkan ke rantai menyelesaikan masalah
  • valid_chain () → Ini akan memeriksa apakah blok berikutnya dalam rantai itu valid atau tidak.

Cetak biru untuk blockchain.py terlihat seperti di bawah ini.

class Blockchain (object): def __init __ (self): self.chain = [] self.current_transactions = [] def new_block (self): # Fungsi ini membuat blok baru dan kemudian menambahkan ke rantai yang ada, pass def new_transaction (self): #Fungsi ini menambahkan transaksi baru ke transaksi yang sudah ada pass @staticmethod def hash (block): #Digunakan untuk hashing blok @property def last_block (self): # Memanggil dan mengembalikan blok terakhir dari rantai pass

Kelas Blockchain mengelola seluruh rantai. Definisi yang ditentukan di bawah kelas mengelola berbagai tindakan di dalam blockchain.

Mari kita bahas masing-masing metode di bawah ini.

Baca Sekarang: Apa itu sharding blockchain: Pengantar solusi penskalaan blockchain

Struktur sebuah balok

Blok berisi informasi penting tentang transaksi dan rantai. Setiap blok di rantai akan berisi informasi berikut

  • indeks
  • stempel waktu dalam waktu Unix
  • daftar transaksi
  • bukti
  • Hash blok sebelumnya

Sebagian besar informasi di dalam blok sudah cukup jelas. Di sini, dua variabel penting adalah prior_hash, yang berisi nilai hash dari blok sebelumnya. Ini penting karena memastikan bahwa blockchain tidak dapat diubah, dan tidak ada aktor jahat yang dapat memperbarui, menghapus, atau menambahkan data apa pun ke rantai..

Baca Sekarang: Mengapa Blockchain akan Mengubah Dunia?

Menambahkan Transaksi Ke Blok A.

Dengan memahami struktur blok, sekarang mari pelajari cara menambahkan transaksi ke blok. Kode untuk itu adalah sebagai berikut.

def new_transaction (self): # Fungsi ini menambahkan transaksi baru ke transaksi yang sudah ada """Ini akan membuat transaksi baru yang akan dikirim ke blok berikutnya. Ini akan berisi tiga variabel termasuk pengirim, penerima dan jumlah """ self.current_transactions.append ({‘sender’: sender, ‘penerima’: penerima ‘jumlah’: jumlah,}) return self.last_block [‘index’] + 1 Seperti yang Anda lihat, ini hanya menambahkan daftar transaksi_kini dengan objek yang berisi tiga variabel → pengirim, penerima, jumlah.

Setelah penambahan selesai, metode tersebut kemudian mengirimkan indeks blok ke rantai. Ini adalah blok berikutnya yang akan ditambang.

Membuat Blok baru

Sebelum kita mulai membuat blok baru, kita perlu membuat blok genesis. Untuk melakukannya, kita perlu menggunakan baris kode sederhana seperti di bawah ini.

self.new_block (before_hash = 1, proof = 100)

Baris ini harus ditambahkan ke kelas Blockchain Anda.

Untuk metode new_block (), Anda perlu mengirim dua variabel sebagai parameternya. Ini termasuk bukti dan hasutan_sebelumnya.

Sekarang, mari kita lihat metode new_block () di bawah ini.

def new_block (self, proof, before_hash = None): #Fungsi ini membuat blok baru dan kemudian menambahkan ke rantai yang ada """Metode ini akan berisi dua parameter bukti, hash sebelumnya""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, before_hash: before_hash atau self.hash (self.chain [-1]),}

# Setel daftar transaksi saat ini menjadi kosong.

   self.current_transactions = [] self.chain.append (blok) blok kembali

Mari kita jelaskan kode new_block. Kami membuat daftar blokir yang berisi tiga parameter penting. Setelah mereka ditentukan, kami juga menulis kode untuk mengatur ulang daftar current_transaction dan kemudian menambahkan blok ke rantai. Metode new_block, saat dipanggil, mengembalikan blok tersebut.

Baca Sekarang: Panduan Pemula: Apa itu Ethereum Classic?

Mari kita juga mendefinisikan metode last_block di bawah ini.

@Properti

def last_block (self):

# Memanggil dan mengembalikan blok terakhir rantai

kembalikan self.chain [-1]

Juga, kode untuk metode hash () adalah seperti di bawah ini:

 

def hash (block): #Digunakan untuk melakukan hashing pada sebuah blok """Kode berikut akan membuat hash blok SHA-256 dan juga memastikan bahwa kamus dipesan""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () Jika Anda menggabungkan semua kode sampai sekarang, kita akan memiliki blockchain.py berikut. Cek di bawah ini.

 

class Blockchain (object): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (before_hash = 1, proof = 100) def new_block (self, proof, before_hash = None): #This fungsi membuat blok baru dan kemudian menambah rantai yang ada """Metode ini akan berisi dua parameter bukti, hash sebelumnya""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, before_hash: before_hash atau self.hash (self.chain [-1]),} # Set daftar transaksi saat ini untuk dikosongkan. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): # Fungsi ini menambahkan transaksi baru ke transaksi yang sudah ada """Ini akan membuat transaksi baru yang akan dikirim ke blok berikutnya. Ini akan berisi tiga variabel termasuk pengirim, penerima dan jumlah """ self.current_transactions.append ({‘sender’: sender, ‘receiver’: penerima, ‘jumlah’: jumlah,}) kembalikan self.last_block [‘index’] + 1 @staticmethod def hash (block): #Digunakan untuk hashing satu blok """Kode berikut akan membuat hash blok SHA-256 dan juga memastikan bahwa kamus dipesan""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () @property def last_block (self): # Memanggil dan mengembalikan blok terakhir dari rantai return self.chain [ -1]

Bukti Pelaksanaan Pekerjaan

Langkah kami selanjutnya dalam membangun blockchain.py adalah implementasi Proof-of-Work.

Jadi, apa itu Proof of Work? Ini adalah metode konsensus yang digunakan untuk menambahkan blok baru ke dalam rantai. Ini menimbulkan tantangan bagi penambang, dan setelah penambang menyelesaikan masalah, blok tersebut kemudian diverifikasi. Sebagai imbalannya, penambang mendapat hadiah berdasarkan kompleksitas masalah.

Bukti Kerja Bitcoin dikenal sebagai Hashcash. Ini memastikan bahwa konsensus jaringan bitcoin berfungsi sebagaimana mestinya.

Baca Juga: Algoritma Konsensus: Akar Teknologi Blockchain

Mari kita tentukan metode proof_of_work (). Metode ini akan menjadi bagian dari kelas Blockchain.

def proof_of_work (self, last_proof): """Metode ini adalah tempat Anda menerapkan algoritme konsensus. Dibutuhkan dua parameter termasuk self dan last_proof""" proof = 0 sedangkan self.valid_proof (last_proof, proof) adalah False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """Metode ini memvalidasi blok tersebut""" tebak = f ‘{last_proof} {bukti}’. encode () guess_hash = hashlib.sha256 (tebak) .hexigest () return guess_hash [: 4] == "0000"

Metode proof_of_work pertama sederhana; itu hanya menetapkan bukti ke 0 dan kemudian menjalankan loop sementara untuk menjalankan metode valid_proof. Jika salah, tambahkan satu ke buktinya.

Anda dapat meningkatkan kesulitan hash dengan menambahkan lebih banyak nol.

Ini membawa kita ke bagian akhir Blockchain.py kita. Kode kami berdiri seperti di bawah ini.

class Blockchain (objek): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (before_hash = 1, proof = 100) def proof_of_work (self, last_proof): """Metode ini adalah tempat Anda menerapkan algoritme konsensus. Dibutuhkan dua parameter termasuk self dan last_proof""" proof = 0 sedangkan self.valid_proof (last_proof, proof) adalah False: proof + = 1 return proof @staticmethod def valid_proof (last_proof, proof): """Metode ini memvalidasi blok tersebut""" tebak = f ‘{last_proof} {bukti}’. encode () guess_hash = hashlib.sha256 (tebak) .hexigest () return guess_hash [: 4] == "0000" def new_block (self, proof, before_hash = None): #Fungsi ini membuat blok baru dan kemudian menambahkan ke rantai yang ada """Metode ini akan berisi dua parameter bukti, hash sebelumnya""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, before_hash: before_hash atau self.hash (self.chain [-1]),} # Set daftar transaksi saat ini untuk dikosongkan. self.current_transactions = [] self.chain.append (block) return block def new_transaction (self): # Fungsi ini menambahkan transaksi baru ke transaksi yang sudah ada """Ini akan membuat transaksi baru yang akan dikirim ke blok berikutnya. Ini akan berisi tiga variabel termasuk pengirim, penerima dan jumlah """ self.current_transactions.append ({‘sender’: sender, ‘receiver’: penerima, ‘jumlah’: jumlah,})

 

return self.last_block [‘index’] + 1

@tokopedia

def hash (blok):

#Digunakan untuk mencirikan blok

“” “Kode berikut akan membuat hash blok SHA-256 dan juga memastikan bahwa kamus diurutkan” “”

block_string = json.dumps (block, sort_keys = True) .encode ()

return hashlib.sha256 (block_string) .hexdigest ()

@Properti

def last_block (self):

# Memanggil dan mengembalikan blok terakhir rantai

kembalikan self.chain [-1]

2. Integrasi API

Hebat, kami membuat blockchain yang berfungsi! Sekarang, untuk menggunakannya secara efektif, kita perlu membuat API (Application Programming Interface).

Untuk melakukannya, kita akan menggunakan Framework Python yang populer: Flask.

Flask adalah kerangka mikro, yang berarti ringan, dan Anda dapat menambahkan pustaka yang Anda butuhkan. Ini juga memungkinkan Anda membuat titik akhir fungsi Python dengan mudah.

Untuk membuat API, pertama-tama kita perlu memastikan blockchain kita dapat menerima permintaan melalui HTTP. Untuk melakukannya, kita harus membuat lebih banyak metode.

Sekarang, kami akan memodifikasi blockchain.py.

# Membuat app node app = Flask (__ name__) node_identifier = str (uuid4 ()). Replace (‘-‘, ”) # Inisialisasi blockchain blockchain = Blockchain () @ app.route (‘/ mine’, metode = [ ‘GET’]) def mine (): return "Menambang Blok baru" @ app.route (‘/ transaksi / baru’, metode = [‘POST’]) def new_transaction (): return "Menambahkan transaksi baru" @ app.router (‘/ chain’, metode = [‘GET’]) def full_chain (): response = {‘chain’: blockchain.chain, ‘length’: len (blockchain.chain)} kembalikan jsonify (respons) , 200 jika __name__ == ‘__main__’: app.run (host ="0.0.0.0", port = 5000)

Kode ini sebagian besar sudah cukup jelas. Kami pertama kali melakukan inisiasi node. Selanjutnya, kami membuat node acak. Setelah selesai, kami kemudian menginisialisasi kelas Blockchain kami. Setelah selesai, kita perlu membuat tiga titik akhir seperti di bawah ini.

  • / titik akhir milikku
  • / transaksi / titik akhir baru
  • / chain endpoint

Terakhir, kami menjalankan server pada 5000 port.

Aplikasi ini sekarang hampir dibuat. Yang perlu kita lakukan adalah membuat metode kelas transaksi.

@ app.route (‘/ transaction / new’, methods = [‘POST’]) def new_transaction (): values ​​= request.get_json () # Memeriksa apakah data yang diperlukan ada atau tidak diperlukan = [‘sender’, ‘ penerima ‘,’ jumlah ‘] jika tidak semua (k dalam nilai untuk k diperlukan): kembalikan’ Nilai yang hilang ‘, 400 # membuat indeks transaksi baru = blockchain.new_transaction (nilai [‘ pengirim ‘], nilai [‘ penerima ‘ , nilai [‘jumlah’]]) response = {‘message’: f’Transaction dijadwalkan akan ditambahkan ke Blok No. {index} ‘} return jsonify (respon), 201

Baca Juga: Inilah Yang Perlu Anda Ketahui Tentang Bukti Kerja Blockchain

Penambangan Endpoint

Titik akhir terakhir yang akan kita buat adalah titik akhir penambangan. Untuk melakukannya, kita harus memastikan bahwa ia melakukan tiga hal berikut.

  • Perhitungan Bukti Pekerjaan
  • Buat blockchain baru, lalu tambahkan ke rantai
  • Hadiahi penambang untuk pekerjaannya

@ app.route (‘/ mine’, metode = [‘GET’]) def mine (): """Di sini kami membuat bukti algoritma kerja berfungsi""" last_block = blockchain.last_block last_proof = last_block [‘proof’] proof = blockchain.proof_of_work (last_proof) # menghadiahkan penambang atas kontribusinya. 0 menentukan koin baru telah ditambang blockchain.new_transaction (pengirim ="0", penerima = node_identifier, jumlah = 1,) # sekarang buat blok baru dan tambahkan ke rantai sebelumnya_hash = blockchain.hash (last_block) block = blockchain.new_block (bukti, prior_hash) response = {‘message’: ‘Blok baru telah dipalsukan ‘,’ indeks ‘: blok [‘ indeks ‘],’ transaksi ‘: blok [‘ transaksi ‘],’ bukti ‘: blok [‘ bukti ‘],’ sebelumnya_hash ‘: blok [‘ sebelumnya_hash ‘]} kembali jsonify (respon), 200

Baca Sekarang: Panduan Pemula: Apa itu AION? Jaringan Blockchain Generasi Ketiga Pertama Dunia

3. Interaksi Blockchain

Langkah terakhir adalah berinteraksi dengan blockchain. Kami akan menggunakan Postman untuk berinteraksi dengan jaringan blockchain menggunakan API yang baru saja kami buat.

Jalankan kode di bawah ini di Konsol Python

python blockchain.py

Kesimpulan

Ini membawa kita ke bagian akhir dari Cara membangun blockchain. Semoga langkah dan kode di atas akan membantu Anda membangun Blockchain dengan Python. Jadi, jika Anda seorang pemula dan bercita-cita untuk membangun karir di Blockchain, kami sarankan Anda memulai karir blockchain Anda dengan Kursus Dasar-dasar Blockchain Gratis kami. Pilih kami sebagai rekan belajar Anda dan kami akan membantu Anda sampai Anda tidak mendapatkan pekerjaan impian.

Jadi, apa pendapat Anda tentang blockchain dan implementasinya? Beri komentar di bawah dan beri tahu kami.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me