[Python] Ikiri-Schüler erklären Anfängern in 10 Minuten die Blockchain! !! !!

1. Über diesen Artikel

## 1-1. Einführung Dieser Artikel war beeindruckt von meinem Schüler [Udemy: Einführung in die Blockchain-Entwicklung von Grund auf neu, beginnend mit Python, unterrichtet von aktiven Silicon Valley-Ingenieuren](https://www.udemy.com/share/1021OSAkIbdVdQQXo=0). Ich habe es in der Hoffnung geschrieben, dass jeder, der diesen Artikel liest, es nehmen wird. Ich habe diese Lektion in zwei Tagen abgeschlossen. Wenn Sie also bereits mit der Entwicklung vertraut sind, ist es meiner Meinung nach durchaus möglich, sie an einem Tag zu verstehen und umzusetzen. Ich werde auch Artikel vorstellen, die mir beim Verständnis geholfen haben.

(Ich bin froh zu weinen, wenn es dir gefällt)

1-2. Was wird in diesem Artikel erklärt

In diesem Artikel werden wir zunächst BlockChain kurz erklären und verstehen. Als nächstes werde ich die technische Erklärung von BlockChain </ font> und P2P-Netzwerk </ font> erläutern. Und schließlich werden wir überlegen, auf welche Art von Anwendung diese Technologie namens BlockChain in Zukunft angewendet werden kann.

Ich werde die Verwendung von Bitcoin als Beispiel erläutern, daher denke ich, dass dies zu einem Verständnis von Bitcoin führen wird.

Lesen Sie sie unbedingt in der richtigen Reihenfolge. Ich denke, es ist schwer zu verstehen, selbst wenn Sie es aus der Mitte lesen.

1-3. Zielleser

  • Diejenigen, die an BlockChain interessiert sind
  • Diejenigen, die BlockChain studiert haben, aber nicht verstehen
  • Für diejenigen, die den Artikel vorerst lesen
  • Diejenigen, die mehr über beliebte virtuelle Währungen erfahren möchten

Wie auch immer, ich werde von 1 für die oben genannten Personen erklären.

1-4. Entwicklungsumgebung

Python3.7(Anaconda)

PC: macOS Catalina Version 10.15 (Speicher 8 GB, Intel Core i5)

Entwicklungs-IDE: PyCharm

2. Was ist eine Blockchain?

Ich werde von nun an etwas über Blockchain erklären.

2-1. Kryptowährung und BlockChain

Abgesehen von der technischen Geschichte von BlockChain werde ich zunächst die Position von BlockChain am Beispiel der Kryptowährung erläutern. Betrachten Sie zunächst die Situation, in der Sie Geld über eine normale Bank senden. Stellen Sie sich die Situation vor, in der Herr A 1000 Yen an Herrn B sendet. スクリーンショット 2019-10-16 7.08.57.png Sobald die Bank die Bank durchlaufen hat, genehmigt sie die Überweisung und die Überweisung ist abgeschlossen. Das Bankbuch (Datenbank) führt Aufzeichnungen über verschiedene Transaktionen, wie unten gezeigt. スクリーンショット 2019-10-16 7.16.34.png

Es besteht jedoch ein implizites Verständnis der Überweisungen über diese Bank. Es bedeutet, dass Sie der Bank vertrauen. Jeder vertraut darauf, dass ** Banken diese Transaktion nicht manipulieren **, sodass Sie Geld über die Bank senden können. Wenn eine Bank beispielsweise 1000 Yen sendet, aber nur 500 Yen ohne Erlaubnis umgeschrieben werden, wird dieser Bank nicht vertraut und niemand sendet Geld an diese Bank.

In diesem Fall ist die Bank hauptsächlich für zwei Dinge verantwortlich.

--Überprüfen Sie, ob diese Transaktion legitim ist

  • Zeichnen Sie die Daten dieser Transaktion auf

darüber. Es ist unmöglich zu überprüfen, ob diese Transaktion gültig ist, selbst wenn Sie versuchen, 10.000 Yen von Herrn M, der nicht bei dieser Bank registriert ist, an Herrn A zu senden. Es ist auch keine legitime Transaktion, zu versuchen, das Guthaben von Herrn A ohne Erlaubnis auf 1000000 Yen zu erhöhen. Banken überprüfen dies. Das Aufzeichnen von Transaktionsdaten erfolgt wie in der vorherigen Abbildung gezeigt.

** BlockChain ersetzt diese beiden Rollen. ** ** **

Und in der Blockchain ** überprüfen alle Teilnehmer ohne Einrichtung einer Zentralbank, ob die Transaktion korrekt ist **. Dies ist der wichtige Teil. Denken Sie daran.

Wie ersetzen Sie es? Ich werde es erklären, während ich technisch spreche.

2-2. P2P und Server / Client

BlockChain wird von einem Netzwerk namens P2P unterstützt. Was für ein Netzwerk ist P2P?

2-2.1 Netzwerk vom Typ Server / Client

Zunächst ist das Netzwerk, das wir normalerweise verwenden, ein Netzwerk namens Server / Client. Das Netzwerk vom Typ Server / Client führt Transaktionen wie folgt aus.

serverclient.png

Wenn die Clientseite die Serverseite auffordert, "mir Daten zu geben!", Gibt die Serverseite die Daten entsprechend zurück.

Betrachten Sie zum Beispiel Twitter. Der Server gehört Twitter und die Clients sind unsere Smartphones und PCs. Öffnen Sie die Twiiter-App und Sie sehen die Tweets der ersten Person, der Sie folgen. Dies liegt daran, dass das Smartphone auf der Clientseite beim Öffnen der App den Twitter-Server auffordert, "mir die Tweets der Personen zu geben, denen Sie folgen!", Und der Server antwortet mit "Dies sind die Daten". Wird zurückgegeben und fließt zur Timeline.

Was ist in diesem Fall, wenn der Server von Twitter ausfällt? Wenn Sie die App öffnen, können Sie die entsprechenden Daten nicht zurückgeben, selbst wenn die Client-Seite dies anfordert. Mit anderen Worten, wir können den Dienst nicht als Twitter empfangen.

Was ist als nächstes, wenn die Verarbeitungsleistung des Twitter-Servers sehr niedrig ist? Wenn die App geöffnet wird, benötigt die Serverseite enorm viel Zeit, um die Daten zu finden, selbst wenn die Clientseite dies anfordert. Dann brauchen wir viel Zeit, um Twitter zu nutzen, und manchmal fällt der Server aus, wodurch wir uns gestresst fühlen.

Zusammenfassend sind die folgenden Nachteile von Netzwerken vom Typ Server / Client.

  • Wenn der Server ausfällt, kann das Netzwerk nicht gewartet werden und der Dienst kann nicht verwendet werden. --Wenn die Verarbeitungsleistung des Servers gering ist, können keine belastenden Dienste bereitgestellt werden.

Dies ist weniger zuverlässig, da Sie nicht wissen, wann der Server ausfallen wird.

Das P2P-Netzwerk beseitigt diese beiden Nachteile.

2-2.2 P2P-Netzwerk

P2P.png

Das P2P-Netzwerk sieht wie in der obigen Abbildung aus. Lassen Sie uns genauer erklären.

Erstens gibt es in einem P2P-Netzwerk keine solche Rolle als Server oder Client wie zuvor. ** Umgekehrt ist jeder Computer, der am Netzwerk teilnimmt, sowohl ein Server als auch ein Client. ** ** **

Zweitens hat jeder Computer seine eigenen Daten, und jeder verwaltet diese Daten. Also, ** Selbst wenn einer dieser Computer ausfällt, kann das Netzwerk betrieben und gewartet werden. ** Daher ist es zuverlässiger als das Netzwerk vom Typ Server / Client.

Darüber hinaus fungieren alle Computer, die am Netzwerk teilnehmen, als Server. Je mehr Computer am Netzwerk teilnehmen, desto besser ist die Verarbeitungsleistung des gesamten Netzwerks. ** ** **

Daher sind die folgenden Vorteile von Netzwerken vom Typ P2P und sie überwinden die Nachteile von Netzwerken vom Typ Server / Client.

  • Das Netzwerk kann auch dann betrieben und gewartet werden, wenn ein Computer ausfällt.
  • Die Verarbeitungsleistung des gesamten Netzwerks ist sehr hoch

3. Detaillierte Erklärung

Hier werden wir BlockChain im Detail erklären.

ブロックチェーン.png

Es ist schwer zu verstehen, selbst wenn gesagt wird, dass die Blockchain Daten speichert, wie in der obigen Abbildung gezeigt. Ich werde im Detail erklären. Ich werde die Verwendung von Bitcoin als Beispiel auf leicht verständliche Weise erläutern.

Was ist ein Block?

Ein Block ist ein ** Zertifikat für Transaktionsdaten **. Zum Beispiel hat Herr A 1 Bitcoin an Herrn B. gesendet. Wie bereits erläutert, müssen jedoch alle Teilnehmer ** überprüfen, ob die Transaktion korrekt ist **, um Geld zu senden. Das Verifizierungszertifikat ist ein Block. Dieses Zertifikat kann jedoch nicht leicht manipuliert werden. Was passiert, wenn es manipuliert wird? Vor langer Zeit schickte Herr A 1 Bitcoin an Herrn B, aber fünf Jahre später hatte Herr A Probleme mit dem Geld, also beschloss er, es nicht zu senden. Ich werde. Es wäre schwierig, wenn Sie das tun könnten (nicht wirklich). Daher wird dieses Zertifikat (Block) gespeichert, damit es nicht manipuliert werden kann. Lassen Sie mich erklären, wie es funktioniert.

Erstens enthält der Block vier Informationen. Es gibt vier: ** vorheriger Hashwert **, ** Zeitstempel **, ** Nonce **, ** Transaktion **. Ich werde jedes einzeln erklären.

Erstens ist der Zeitstempel. Der Zeitstempel ist der Zeitpunkt, zu dem die Transaktion auf Richtigkeit überprüft wird. Dies garantiert ** wann **, dass diese Transaktion als korrekt genehmigt wurde.

Als nächstes kommt die Transaktion. Eine Transaktion sind die Daten der tatsächlichen Transaktion. [2-1](# 2-1. Cryptocurrency und BlockChain) ist ein Bank-Blowout. Dies sind Transaktionsdaten.

Weiter ist der vorherige Hashwert. Wir werden uns von hier aus genauer entwickeln. Nun wollen wir sehen, wie der eigentliche Block aussieht. (Dies ist ein Block, keine Kette. Eine Kette ist eine Kette von Blöcken.)

ブロックの中身.png

Abgesehen vom detaillierten Inhalt ist der hellblaue Teil die Nonce, der gelbgrüne Teil der vorherige Hashwert, der lila Teil der Zeitstempel und der rosa Teil die Transaktion. Da dies ein Block ist, gibt es vor diesem Block einen solchen Block (natürlich ist jede Zahl usw. anders). Der Hash-Wert des gesamten vorherigen Blocks ist ** der Hash-Wert des vorherigen Blocks **. Der Grund für das Einfügen des Hash-Werts des vorherigen Blocks als Information des nächsten Blocks ist **, da er nicht manipuliert wird **. Wenn Sie den vorherigen Block manipulieren, ändern sich die Informationen zum "Hash-Wert des vorherigen Blocks" im nächsten Block, sodass sich der Hash-Wert der Hash-Version dieses Blocks ändert. (Siehe folgende Abbildung)

ブロック改ざん.png

Mit anderen Worten, wenn Sie einen Block manipulieren, ändern sich alle nachfolgenden Blöcke. Infolgedessen ist es nicht mehr möglich, ** nur einen Block umzuschreiben (zu ändern) **.

Abschließend werde ich über Nonce erklären. Eine Nonce ist eine ** Antwort auf eine Frage **. Was ist also das Problem? Zuvor habe ich erklärt, dass Blockchain überprüft, ob die Transaktion korrekt ist, wenn jeder einen neuen Block hinzufügt. Bei Bitcoin heißt die Überprüfungsmethode ** Proof of Work ** (PoW). Nonce ist die Antwort von PoW. Proof of Work ist nur eine Überprüfungsmethode in Bitcoin, und es gibt mehrere andere Überprüfungsmethoden. Zum Beispiel verwendet die Währung Ripple ** Konsensnachweis ** und NEM-Münze ** Wichtigkeitsnachweis **. (Für Details suchen Sie nach "Consensus Algorithm List")

Dieser Arbeitsnachweis verwendet eine sogenannte Nonce, um zu überprüfen, ob dieser Block korrekt ist. Erstens ist zum Zeitpunkt des Geschäftsabschlusses (zum Zeitpunkt des Versuchs, einen Block hinzuzufügen) die Nonce noch nicht bekannt. Was wir wissen, ist die Transaktion (der Inhalt der Transaktion) und der Hash-Wert des vorherigen Blocks. Daher finden wir eine Nonce, deren Berechnungsergebnis unter Verwendung von zwei bekannten Informationen (dem Hashwert der Transaktion und dem vorherigen Block) abgeleitet wurde, und eine Nonce wie eine Variable, die wir noch nicht kennen, hat einen bestimmten festen Wert. (Es fühlt sich wie eine Gleichung an. Es ist, als würde man nach einer Nonce suchen, die Transaktion + prev_hash + nonce = Ans ergibt (Ans ist eine feste Antwort). Streng anders, aber sinnlich gleich, diese Berechnung Da die Methode keine inverse Operation enthält, ändern Sie einfach den Nonce-Wert. Wenn er übereinstimmt, ist dieser Wert die endgültige korrekte Nonce.) Der Arbeitsnachweis ist die Arbeit, den Nonce-Wert zu ändern und die richtige Nonce zu finden.

** Bergbau ** bedeutet die Ausgabe ** einer neuen Währung in Bitcoin **, und der Bergmann (minderjährig), der zuerst den Arbeitsnachweis erhalten hat, erhält die ausgegebenen Münzen.

4. Implementierung von BlockChain

Zunächst wird der Implementierungsablauf erläutert.

スクリーンショット 2019-12-11 23.44.45.png

Dieses Mal werde ich ①② in der obigen Abbildung erklären. Weitere Informationen zur API-Konvertierung des Blockchain-Servers und zum Aufbau des Blockchain-Netzwerks finden Sie in Udemys Video Klicken Sie hier, um das Video von Udemy anzuzeigen.

Blockchain-Erstellung und Brieftaschenerstellung werden hier auch nur für etwa 20% der Gesamtzahl erklärt. Sehen Sie sich also das Video an.

Erstellen Sie zunächst eine Blockchain-Klasse, die eine Entwurfszeichnung sein wird. Als nächstes werden wir PoW, Nonce und Mining (dies ist nur Bitcoin) implementieren, aus denen die Blockchain besteht. Das ist ①.

Erstellen Sie als Nächstes eine Brieftasche in ②. Eine Brieftasche ist eine virtuelle Geldbörse. Das ist alles. Hier generieren wir eine Blockchain-Adresse, die Ihre persönliche Brieftasche identifiziert. Erfahren Sie dann, wie Sie Transaktionen für den Handel mit virtuellen Währungen signieren und zertifizieren.

4-1 Blockchain-Implementierung

4-1.1 Erstellen einer Blockchain-Klasse

Unten finden Sie eine grobe Konstruktionszeichnung der Blockchain.

Viele der kommenden ** sender_blockchain_address ** und ** recept_blockchain_adress ** sind Absender und Empfänger. Die Variablen, die jeden identifizieren.

Wenn Sie die Erklärungen bisher gelesen haben, gibt es nichts besonders Schwieriges, daher denke ich, dass Sie verstehen können, wenn Sie sie als Kommentar lesen.

import hashlib
import json
import time
class BlockChain(object):

    def __init__(self, blockchain_address=None):
        self.transaction_pool = [] 	#Transaktionen, die noch nicht authentifiziert wurden
        self.chain = []	#Blockchain zum Speichern authentifizierter Transaktionen
        self.create_block(0, self.hash({})) 
        self.blockchain_address = blockchain_address
        
    #Methode zum Erstellen eines Blocks
    def create_block(self, nonce, previous_hash):		 
        """
Wie erstelle ich einen neuen Block?
        1.Liste unvollständiger Transaktionen(transaction_pool)Blockinformationen abrufen von
        2.Fügen Sie der Blockchain Blöcke hinzu
        3.Leeren Sie nicht abgeschlossene Transaktionen
        """
        block = {
            'timestamp': time.time(), #Handelszeit
            'transactions': self.transaction_pool, #Transaktionsinhalt(Bringen Sie aus einer Liste nicht genehmigter Transaktionen)
            'nonce': nonce, #Nonce
            'previous_hash': previous_hash #Hash-Wert des vorherigen Blocks
        }
        self.chain.append(block) #Zur Blockchain hinzufügen
        self.transaction_pool = [] #Leeren Sie die Liste der nicht genehmigten Transaktionen
        return block
  
    #Methode zum Ermitteln des Hashwerts des Blocks
    def hash(self, block):			
        return hashlib.sha256(json.dumps(block).encode()).hexdigest() #Gibt die Hash-Version hexadezimal zurück
      
    #Methode zum Erstellen einer neuen Transaktion
    #Machen Sie hier einen neuen Deal und der Deal wird erstellt_Zur Blockchain mit Block hinzugefügt
    def add_transaction(self, sender_blockchain_address,
                        recipient_blockchain_address, value,
                        sender_public_key=None):
        #Machen Sie den Inhalt der Transaktion
        transaction = {
            'sender_blockchain_address': sender_blockchain_address, #Wer hat gesendet
            'recipient_blockchain_address': recipient_blockchain_address, #Wer hat empfangen
            'value': float(value) #Wert(Geldbetrag)Etwas
        }
        #Zur nicht genehmigten Transaktionsliste hinzufügen
        self.transaction_pool.append(transaction)
        return True

4-1.2 Implementierung von PoW, Nonce, Mining

Wie zuvor erläutert, verwendet PoW (Proof of Work) den Hash-Wert und die Nonce der Transaktion und des vorherigen Blocks und ändert die Nonce, bis eine bestimmte aus den drei abgeleitete Zeichenfolge zu einem festen Wert wird. Ich werde fortsetzen.

#Eine Methode zum Überprüfen, ob der Wert ein fester Wert ist
def valid_proof(self, transactions, previous_hash, nonce,):
        guess_block = {
            'transactions': transactions,
            'nonce': nonce,
            'previous_hash': previous_hash
        }
        guess_hash = self.hash(guess_block)
      	#Gibt true zurück, wenn die vorherigen 3 Zeichen 000 sind, andernfalls false
        return guess_hash[:3] == '0'*3

#Eine Methode, die den Nonce-Wert so lange ändert, bis er einen festen Wert erreicht
def proof_of_work(self):
        transactions = self.transaction_pool.copy()
        previous_hash = self.hash(self.chain[-1])
        nonce = 0
        #Ändern Sie den Nonce-Wert so lange, bis er den festen Wert erreicht
        while self.valid_proof(transactions, previous_hash, nonce) is False:
            nonce += 1
        return nonce

Zunächst wird bei der valid_proof-Methode unter Verwendung der Transaktion ** und des Hashwerts und der Nonce des zuvor beschriebenen vorherigen Blocks überprüft, ob eine bestimmte von diesen drei abgeleitete Zeichenfolge zu einem festen Wert ** wird oder nicht. Ich bin. erraten_block ist der vorläufige Block und erraten_hash ist sein Hashwert. rate_hash ist eine Zeichenfolge, die von drei abgeleitet ist. ** Natürlich gibt es keine inverse Operation, da sie gehasht ist. ** ** **

rate_hash [: 3] bedeutet die ersten 3 Zeichen der rate_hash-Zeichenfolge. Daher werden wir dieses Mal den Nonce-Wert weiter ändern, bis die 3 Zeichen vor rate_hash 000 werden.

In der Methodeproof_of_work wird der Nonce-Wert geändert, bis der Rückgabewert der Methode valid_proof wahr wird. Das Nonce beginnt bei 0 und der Nonce-Wert wird um +1 erhöht, bis die Antwort erreicht ist. Die valid_proof-Methode und dieproof_of_work-Methode sind zwei und eins.

Als nächstes werde ich über Minig erklären. Wie bereits erläutert, handelt es sich beim Bergbau um die Ausgabe einer neuen Währung in Bitcoin. Voraussetzung für die Ausgabe der neuen Währung ist die Person, die die PoW erfolgreich abgeschlossen hat.

#Die Währung, die als Belohnung für den Bergbau erhalten werden kann, ist der Absender(sender)Weil es kein ... gibt
 MINING_SENDER =  'THIS IS MINING SENDER' 
#Entscheide dich für eine Bergbaubelohnung
 MINING_REWAES = 1
#Bergbaumethode
 def mining(self):
    	#Die beim Mining erzielten Belohnungen sind ebenfalls Transaktionen. Fügen Sie sie daher der Liste der nicht genehmigten Transaktionen hinzu.
       	self.add_transaction(
            sender_blockchain_address=MINING_SENDER,
            recipient_blockchain_address=self.blockchain_address,
            value=MINING_REWARD)
        nonce = self.proof_of_work()
        previous_hash = self.hash(self.chain[-1]) #Hash den vorherigen Block
        #Erstellen Sie einen Block mit dem Nonce- und dem Hash-Wert des vorherigen Blocks
        self.create_block(nonce, previous_hash) 
        return True

Wie Sie im obigen Programm sehen können, senden wir MINING_REWAES nur an die PoW-Adresse. Derzeit lautet die Überweisungsquelle MINING_SENDER, da beim Ausgeben einer neuen Währung im Mining keine Überweisungsquelle vorhanden ist.

Sie müssen lediglich die Transaktion als Block speichern.

4-2. Erstellen einer Brieftasche

Die Brieftasche ist nicht speziell mit der Blockchain verbunden, sondern fungiert lediglich als ** Brieftasche in virtueller Währung **. Daher werden nur das Signieren und Zertifizieren von Transaktionen behandelt.

Schauen wir uns nun die Blockchain-Adressen genauer an. Erstens hat jeder, der an der Blockchain beteiligt ist, einen ** öffentlichen Schlüssel ** und einen ** privaten Schlüssel **. Der öffentliche Schlüssel und der private Schlüssel sind ein Mechanismus zur Verschlüsselung (Einzelheiten finden Sie unter gg). Da die Person durch diesen öffentlichen Schlüssel und den privaten Schlüssel identifiziert wird, ist es ausreichend, die Identifikation zu speichern, dass die Transaktion in virtueller Währung von wem durch diesen öffentlichen Schlüssel und die Zeichenfolge des privaten Schlüssels an wen gesendet wurde. Die Zeichenfolgen für den öffentlichen und den privaten Schlüssel sind jedoch sehr lange Zeichenfolgen, und das Speichern dieser langen Zeichenfolgen für jede Transaktion würde die Kapazität der Blockchain als Datenbank stark unter Druck setzen. Es wäre also schön, wenn es so etwas wie eine Adresse gäbe, die eine Person mit einer kürzeren Zeichenfolge identifizieren könnte. Das ist die Blockchain-Adresse. Diese Blockchain-Adresse wird aus den öffentlichen und privaten Schlüsseln generiert. Der Mechanismus ist kompliziert und ich verstehe ihn nicht (fast kopieren und einfügen). Wenn Sie also wissen möchten, wie eine Blockchain generiert wird, nehmen Sie bitte am Udemy-Kurs teil.

4-2.1 Unterzeichnung und Zertifizierung von Transaktionen

Das Signieren und Beweisen von Transaktionen ist ein Beweis dafür, dass eine Brieftasche, wenn sie eine Transaktion an einen Computer sendet, aus dem P2P besteht, ** tatsächlich von dieser Person ** gesendet wird. Dies bedeutet, dass wenn Herr A die Information "Herr A sendet 100 Yen an Herrn B" sendet, dies korrekt wäre, aber wenn es von Herrn C gesendet würde, wäre es falsch. Es beweist das. Um dies zu beweisen, senden wir den öffentlichen Schlüssel **, die ** Transaktion ** und die ** Signatur ** von A als Satz. Die Signatur ist eine Zeichenfolge, die aus dem privaten Schlüssel und der Transaktion generiert wird. Das Erstellen einer Sinatur und das Senden eines öffentlichen Schlüssels, einer Transaktion und einer Signatur wird als ** Signieren ** bezeichnet. Das Empfangen des öffentlichen Schlüssels, der Transaktion und der Signatur sowie das Überprüfen der Richtigkeit wird als ** Zertifizierung ** bezeichnet.

class Transaction(object):

    def __init__(self, sender_private_key, sender_public_key,
                 sender_blockchain_address, recipient_blockchain_address,
                 value):
        self.sender_private_key = sender_private_key
        self.sender_public_key = sender_public_key
        self.sender_blockchain_address = sender_blockchain_address
        self.recipient_blockchain_address = recipient_blockchain_address
        self.value = value

    def generate_signature(self):
        sha256 = hashlib.sha256() #benutze sha256
        #Machen Sie eine Transaktion
        transaction ={ 
            'sender_blockchain_address': self.sender_blockchain_address,
            'recipient_blockchain_address': self.recipient_blockchain_address,
            'value': float(self.value)
        }
        sha256.update(str(transaction).encode('utf-8'))
        message = sha256.digest()
        private_key = SigningKey.from_string(
            bytes().fromhex(self.sender_private_key), curve=NIST256p)
        private_key_sign = private_key.sign(message)
        signature= private_key_sign.hex()
        return signature

↑ Signierprogramm


def verify_transaction_signature(
            self, sender_public_key, signature, transaction):
        sha256 = hashlib.sha256()
        sha256.update(str(transaction).encode('utf-8'))
        message = sha256.digest()
        signature_bytes = bytes().fromhex(signature)
        verifying_key = VerifyingKey.from_string(
            bytes().fromhex(sender_public_key), curve=NIST256p)
        verified_key = verifying_key.verify(signature_bytes, message)
        return verified_key

↑ Proof-Programm

5. Zukünftige Position von BlockChain

Nachdem Sie Blockchain gelernt haben, werden Sie verstehen, warum Sie diese Technologie benötigen.

5-1 Vor- und Nachteile der Blockchain

Wie jeder, der den Artikel bisher gelesen hat, verstehen wird, lassen Sie uns die Vor- und Nachteile der Blockchain noch einmal überprüfen.

Es wurde ein Artikel ausführlicher geschrieben, daher denke ich, dass Sie ihn lesen sollten. Klicken Sie hier für den Artikel

Der erste Vorteil ist, dass es ** dezentral ** ist. Wenn Sie Ihren Computer mit dem Blockchain-Netzwerk verbinden, müssen Sie Ihre Daten und Leistung nicht an einem Ort konzentrieren. Facebook hat alle Daten, genau wie die Konzentration der Macht. Die Stromverteilung erfolgt durch gemeinsame Verwaltung der Daten.

Als nächstes wird ein ** vertrauenswürdiges Netzwerk ** aufgebaut. Da wir ein Netzwerk mit vielen Computern aufbauen, sind die Wartungsrate und die Leistung höher als beim Aufbau eines Netzwerks mit einem Computer.

Und es bedeutet, dass es nicht manipuliert werden kann **. Das liegt daran, dass der Block einen Hash des vorherigen Blocks enthält.

Erstens ist der Nachteil, dass der Stromverbrauch auf der Benutzerseite groß ist. Da PoW weiter berechnet, steigt der Stromverbrauch. Daher scheint es im Bitcoin-Bergbau nicht viele neue Teilnehmer zu geben, da die Stromkosten für den Bergbau nicht den Belohnungen aus dem Bergbau entsprechen.

Sie können auch verhindern, dass sie etwas duplizieren. Ich denke, dass der Wert von Technologie, die nicht dupliziert werden kann, nur in dem Zeitalter geschaffen wird, in dem alles von einem Computer dupliziert werden kann.

5-2. Blockchain-Geschäftsbeispiel

Ich möchte ein Geschäft vorstellen, das ich persönlich interessant fand.

1.Bitcoin Nun, es ist eine virtuelle Währung, die jeder kennt. Ich werde nicht besonders erklären. Bitcoin.org

2.bPassport Bitflyer verwaltet persönliche Informationen, die sich in der Entwicklung befinden. In jüngster Zeit ist der unbefugte Kauf und Verkauf personenbezogener Daten zwischen Unternehmen zu einem Problem geworden. Daher ist es wichtig, dass Einzelpersonen genau auswählen können, welchem Unternehmen personenbezogene Daten bereitgestellt werden sollen. https://crypto.watch.impress.co.jp/docs/event/1210425.html

3.Verisart veriart hilft bei der Unterscheidung zwischen gefälscht und echt, indem die Bilddaten des Kunstwerks in der Blockchain gespeichert werden. Ich fand es sehr interessant, dass Kunst und Technologie miteinander verbunden sind. https://verisart.com

etc Ich habe einen zusammenhängenden Link gefunden, daher werde ich ihn vorstellen. https://innovation.mufg.jp/detail/id=322

6. Schließlich

In den Referenzen werde ich Bücher und Artikel vorstellen, die nicht direkt mit diesem Artikel zusammenhängen, aber in meiner Studie sehr hilfreich waren.

6-1. Danke

Ich bin froh zu weinen, wenn es dir gefällt, um mich zu motivieren !!

6-2. Referenzen

Die folgenden Dokumente waren sehr hilfreich und werden vorgestellt.

Kursinhalt Verstehen Sie, wie Blockchain funktioniert. Lernen Sie die grundlegende Entwicklung der Blockchain mit Python Blockchain-Transaktionsauthentifizierung verstehen. Sie können einen Hash-Mechanismus erstellen, der Blockchains verbindet. Verstehen Sie den Konsensalgorithmus, der Nonces im Blockchain-Mining ableitet. Verstehen Sie, wie die dezentrale Blockchain-Konsensbildung funktioniert. Verstehen Sie, wie virtuelle Währung gesendet und empfangen wird.

Recommended Posts