Bitcoin Hash Functions Erläuterte

Jeder, der Interesse an Bitcoin hat, wird die Phrase "kryptographische Hash-Funktion" irgendwann gehört haben. Aber was genau bedeutet es, und wie ist es mit cryptocurrency verbunden?

Hash-Funktionen sind ein wesentlicher Bestandteil des, nicht nur des Bitcoin-Protokolls, sondern der Informationssicherheit als Ganzes.

Im folgenden Artikel werfen wir einen Blick auf einige einfache Beispiele, wie sie arbeiten, mit einer einfachen Demonstration auch.

Was ist eine Hash-Funktion?

In der Zusammenfassung ist eine Hash-Funktion ein mathematischer Prozess, der Eingabedaten jeglicher Größe einnimmt, eine Operation ausführt und die Ausgabedaten einer festen Größe zurückgibt.

In einem konkreten Beispiel kann dies verwendet werden, um eine Sequenz von Buchstaben von jeder Länge als Eingabe zu nehmen - was wir einen String nennen - und eine Sequenz von Buchstaben von zurückgeben a feste Länge. Ob der eingegebene String ein einziger Buchstabe, ein Wort, ein Satz oder ein ganzer Roman ist, die Ausgabe - die so genannte Digest - wird immer die gleiche Länge sein.

Eine gemeinsame Verwendung dieser Art von Hash-Funktion ist es, Passwörter zu speichern.

Wenn Sie ein Benutzerkonto mit einem beliebigen Webdienst erstellen, der ein Passwort benötigt, wird das Passwort durch eine Hashfunktion ausgeführt und der Hash-Digest der Nachricht wird gespeichert. Wenn Sie Ihr Passwort eingeben, um sich anzumelden, wird dieselbe Hash-Funktion auf dem eingegebenen Wort ausgeführt und der Server prüft, ob das Ergebnis mit dem gespeicherten Digest übereinstimmt.

Dies bedeutet, dass, wenn ein Hacker auf die Datenbank mit den gespeicherten Hashes zugreifen kann, sie nicht in der Lage sind, alle Benutzerkonten sofort zu kompromittieren, da es keine einfache Möglichkeit gibt, das Passwort zu finden, das irgendwelche erzeugt hat gegebener Hash

Einfache Hash-Funktionen in Python

Sie können mit Hash-Werten mit Python experimentieren, eine Programmiersprache, die standardmäßig auf Mac- und Linux-Betriebssystemen installiert ist. (Dieses Tutorial wird davon ausgehen, dass Sie eine Version von OS X oder Linux verwenden, da Python unter Windows komplizierter ist.)

Zuerst öffnen Sie ein Terminal, geben Sie python ein und drücken Sie ENTER.

Das bringt dich in die Python REPL, eine Umgebung, in der du Python-Befehle direkt ausprobieren kannst, im Gegensatz zum Schreiben eines Programms in einer separaten Datei.

Dann geben Sie folgendes ein, drücken Sie nach jeder Zeile die EINGABETASTE und TAB, wo markiert:

 import hashlib def hash (mystring): [TAB] hash_object = hashlib. md5 (mystring.codode ()) [TAB] print (hash_object hexdigest ()) [ENTER] 

Du hast nun eine Funktion hash () angelegt, die den Hash berechnen und ausdrucken wird Wert für eine gegebene Zeichenfolge mit dem MD5-Hash-Algorithmus. Um es auszuführen, setzen Sie einen String zwischen den Klammern in Anführungszeichen, zB:

 Hash ("CoinDesk rocks") 

Und drücken Sie ENTER, um die Hash-Digest dieser Zeichenfolge zu sehen.

Du wirst sehen, dass das Aufrufen der Hash-Funktion auf demselben String immer denselben Hash erzeugt, aber das Hinzufügen oder Ändern eines Zeichens wird einen ganz anderen Hash-Wert erzeugen:

 Hash ("CoinDesk-Felsen") => 7ae26e64679abd1e66cfe1e9b93a9e85 hash ("CoinDesk Felsen!") => 6b1f6fde5ae60b2fe1bfe50677434c88 

Hash-Funktionen in Bitcoin

Im Bitcoin-Protokoll sind Hash-Funktionen Teil des Block-Hash-Algorithmus, der zum Schreiben neuer Transaktionen in die Blockkette durch den Mining-Prozess verwendet wird.

Im Bitcoin-Mining , die Eingaben für die Funktion sind alle der letzten, noch nicht bestätigten Transaktionen (zusammen mit einigen zusätzlichen Eingaben in Bezug auf den Zeitstempel und einen Verweis auf den vorherigen Block).

Im obigen Codebeispiel haben wir bereits gesehen, dass das Ändern eines kleinen Teils des Inputs für eine Hash-Funktion zu einem völlig anderen Ausgang führt.Diese Eigenschaft ist entscheidend für den "Beweis der Arbeit" Algorithmus im Bergbau beteiligt: ​​erfolgreich zu lösen "einen Block, Bergleute versuchen, alle zu kombinieren der Eingaben mit ihren eigenen willkürlichen Eingabedaten so, dass der resultierende Hash mit einer gewissen Anzahl von Nullen beginnt.

Als Grunddarstellung könnten wir mit unserer Python-Hash-Funktion durch manuelles Hinzufügen von Ausruf versuchen Punkte nach "CoinDesk Felsen!" bis wir einen Hash finden, der mit einer einzigen Null beginnt. <99 >>>> Hash ("CoinDesk Felsen!!") 66925f1da83c54354da73d81e013974d >>> Hash ("CoinDesk Felsen!!") C8de96b4cf781a6373766c668ceac0f0 >>> Hash ("CoinDesk Felsen!!!") 9ea367cea6a2cc4a6f5a1d9a334d0d9e >>> Hash ( "CoinDesk rocks!!!!!") B8d43387d98f035e2f0ac49740a5af38 >>> hash ("CoinDesk rocks!!!!!") 0fe46518541f4739613b9ce29ecea6b6 => LÖST!

 Natürlich erfordert das Lösen des Hashs für einen Bitcoin-Block - der zum Zeitpunkt des Schreibens mit 18 Nullen beginnen muss - eine große Berechnungsrate (und damit die kombinierte Rechenleistung aller Computer) im Netzwerk dauert noch ca. 10 Minuten, um einen Block zu lösen). 

Es ist die Notwendigkeit für diese große Menge an Rechenleistung, die bedeutet, dass neue Bitcoins über einen längeren Zeitraum abgebaut werden, nicht alle auf einmal. Um Bitcoins durch den Bergbau zu verdienen, musst du die riesige Menge an Arbeit einbringen, die notwendig ist, um einen Block zu lösen - und indem du diese Belohnung verdienst, verriegeln wir alle neuen Transaktionen in einen Block, der hinzugefügt wird zur permanenten Aufzeichnung aller bisherigen Transaktionen: die Blockkette. Irgendwelche Krypto-Grundlagen, die du als nächstes erklärt hättest? E-Mail: Redakteure

Bitcoin auf Tastaturbild über Shutterstock

Der Führer in Blockchain News, CoinDesk ist eine unabhängige Medien-Steckdose, die nach den höchsten journalistischen Standards strebt und sich an eine strenge Reihe von redaktionellen Richtlinien hält. Sie interessieren sich für Ihr Know-how oder Einblick in unsere Berichterstattung? Kontaktieren Sie uns unter news