Pelajaran 3

Menerapkan Bukti Kerja pada Blockchain

Kami akan berkonsentrasi pada penerapan metode konsensus bukti kerja pada blockchain kami di sesi ini. Proof-of-work adalah metode keamanan yang menuntut upaya komputasi untuk menambahkan blok baru ke blockchain, mencegah pelaku kejahatan mengubah rantai dengan cepat.

3.1 Memahami Bukti Kerja

Perkenalkan konsep bukti kerja: Jelaskan bahwa bukti kerja mengharuskan penambang memecahkan teka-teki komputasi yang sulit untuk menambahkan blok baru. Teka-teki ini melibatkan pencarian nilai hash yang memenuhi kriteria tertentu, seperti memiliki sejumlah angka nol di depan.

Python pythonSalin kode kelas Blockchain: def init(self): self.chain = [] self.difficulty = 4 # Sesuaikan tingkat kesulitan sesuai kebutuhan Kode ini menambahkan atribut difficulty ke kelas Blockchain , yang mewakili jumlah angka nol di depan yang diperlukan dalam hash.

Menerapkan metode proof_of_work : Metode ini akan menghasilkan hash yang valid dengan menyesuaikan nilai nonce hingga hash memenuhi kriteria kesulitan.

Python pythonSalin kode impor hashlib kelas Blockchain: def init(mandiri): self.chain = [] self.difficulty = 4def proof_of_work(self, block): target = "0" * self.difficulty nonce = 0sementara Benar: data = str(block) + str(nonce) hash_value = hashlib.sha256(data.encode()).hexdigest() jika hash_value[:self.difficulty] == target: mengembalikan nilai_hash nonce += 1 Kode ini menambahkan metode proof_of_work ke kelas Blockchain . Ia menggunakan string target dengan jumlah nol di depan yang diperlukan dan menyesuaikan nilai nonce hingga hash yang valid ditemukan.

3.2 Menambahkan Bukti Kerja ke Pembuatan Blok

Perbarui metode add_block : Ubah metode add_block untuk menyertakan bukti kerja. Hasilkan hash yang valid untuk blok baru menggunakan metode proof_of_work .

Python pythonSalin kode kelas Blockchain: def init(mandiri): self.chain = [] self.difficulty = 4def proof_of_work(self, block):

Detail implementasidef add_block(self, block):

previous_hash = diri.rantai[-1].hash() if len(self.chain) > 0 lain Tidak ada blok.previous_hash = previous_hash block.mine(self.difficulty) self.chain.append(blok) Kode ini memodifikasi metode add_block untuk menyetel previous_hash dari blok baru, memanggil metode mine pada blok dengan tingkat kesulitan, dan menambahkan blok ke rantai.

Menerapkan metode mine di kelas Block : Metode mine akan menyesuaikan nilai nonce blok hingga hash yang valid ditemukan.

Python pythonSalin kode impor hashlib kelas Blok: def init(mandiri, indeks, stempel waktu, data, hash_sebelumnya, nonce=0): self.index = indeks self.timestamp = stempel waktu self.data = data diri.previous_hash = previous_hash self.nonce = nonce self.hash = self.calculate_hash()

def hitung_hash(mandiri): data = str(self.index) + str(self.cap waktu) + str(data diri) + str(self.previous_hash) + str(diri.nonce) kembalikan hashlib.sha256(data.encode()).hexdigest()

def milikku(mandiri, kesulitan): target = "0" * kesulitan sementara self.hash[:kesulitan] != target: self.nonce += 1 self.hash = self.calculate_hash()

Kode ini menambahkan metode mine ke kelas Block . Ini menyesuaikan nilai nonce dan menghitung ulang hash blok hingga hash memenuhi kriteria kesulitan.

3.3 Menguji Implementasi Bukti Kerja

Buat instance blockchain baru: Buat instance objek Blockchain baru dan tambahkan beberapa blok ke rantai.

Python pythonSalin kode blockchain = Blockchain() blok1 = Blok(1, datetime.now(), "Blokir 1 Data") blok2 = Blokir(2, tanggalwaktu.sekarang(), "Blokir 2 Data") blok3 = Blokir(3, tanggalwaktu.sekarang(), "Blokir 3 Data") Kode ini membuat objek Blockchain baru dan tiga blok.

Tambahkan blok ke blockchain: Gunakan metode add_block untuk menambahkan blok ke rantai.

Python pythonSalin kode blockchain.add_block(block1) blockchain.add_block(blok2) blockchain.tambahkan_blok(blok3) Kode ini menambahkan blok ke blockchain.

Cetak blockchain: Menampilkan blok blockchain dan hashnya.

Python pythonSalin kode untuk blok di blockchain.chain: print(f"Blok: {block.index}") print(f"Hash: {block.hash}") Kode ini mengulangi blok-blok blockchain dan mencetak indeks dan nilai hashnya.

3.4 Kesimpulan

Dalam pelajaran ini, kami telah menerapkan algoritma konsensus bukti kerja di blockchain kami. Kami memperkenalkan konsep proof-of-work, menjelaskan bagaimana hal ini mengharuskan penambang untuk memecahkan teka-teki komputasi yang sulit, dan menerapkannya di blockchain kami dengan menyesuaikan nilai nonce hingga hash yang valid ditemukan. Kami juga menguji penerapan bukti kerja dengan menambahkan blok ke rantai dan menampilkan konten blockchain.

Pernyataan Formal

* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.

* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.