レッスン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を代表するものではありません。
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.