第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

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

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

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

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

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

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

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

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第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

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

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

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

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

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

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

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

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。