Blockchain für Praktiker - 2

in #deutsch7 years ago (edited)

Die Blockchain ist in letzter Zeit zu einem Buzzword der Medien geworden, jedoch wissen nicht viele wie sie funktioniert. Oberflächliche Beschreibungen erleichtern zwar das grobe Verständnis, tragen aber nur bedingt dazu bei, die Blockchain-Technologie vielleicht auch in eigene Projekte zu integrieren. In dieser kleinen Artikel-Serie möchte ich anhand einiger Beispiele etwas Licht ins Dunkel des Mysteriums “Blockchain” bringen.

Im letzten Artikel der Serie ging es um die Begriffe Hash und Hashfunktion. Falls du darüber noch nichts gelesen hast, findest du den Artikel hier.
Blockchain Bild

Der Block

Die Informationen einer Blockchain sind auf einzelne Blöcke verteilt. Diese Blöcke sind grob mit Seiten eines Buches vergleichbar, welche z.B. mit Transaktionen oder Verträgen beschrieben sind. Um die besonderen Eigenschaften genauer unter die Lupe zu nehmen, werfen wir wieder einen Blick auf Paul und Marie:

Es ist wieder Donnerstag und Paul versucht händeringend Marie zu erreichen, um sich die Hausaufgaben in Physik zu ersparen. Aufgrund von Unterrichtsausfall, hatte Herr Rose eine ziemlich lange Liste zum Berechnen von Gestirnen und ihren Abständen herausgegeben. Mehr als zwanzig Aufgaben hatten sich angesammelt und Paul wollte sich nach einem 3 stündigen Nachhilfe-Marathon einfach nur hinlegen.

Marie nahm gehetzt den Hörer ab: “Hey Paul, ich habe heute nicht viel Zeit. Die Hausaufgaben habe ich schon vorbereitet. Da das letztens mit der Ergebnis-Überprüfung so gut geklappt hat, habe ich mir heute etwas neues ausgedacht. Hör genau zu!
Für jede Aufgabe schreibst du dir die Aufgabennummer, mein Ergebnis, eine Zahl X und Y auf. Wenn die

( Aufgabennummer + meinem Ergebnis + X ) modulo 181 = Y sind

und

Y kleiner als 99ist,
so hast du alles korrekt verstanden und ich brauche nicht noch einmal alles wiederholen.”
Paul fühlt sich etwas überrumpelt, tut aber wie ihm geheißen:

Aufgabe:          1
Ergebnis:     13210
X:               13
Y:               11

Aufgabe:          2
Ergebnis:2857264723
X:               65
Y:               57

Aufgabe:          3
Ergebnis:   1993441
X:               34
Y:               98
…

Nachdem Marie die letzte Zahlenfolge ausgesprochen hatte, verabschiedet sie sich hastig und legt auf.
Etwas verwirrt sitzt Paul vor den Zahlen. “Warum hat sie immer solch komische Einfälle?”
Er überprüft die Aufgaben, wie von Marie vorgegeben.

Aufgabe:      1 +
Ergebnis: 13210 +
X:           13 
-----------------
          13224

13224 modulo 181 = 11

Y: 11

Das Ergebnis scheint zu stimmen. Paul fragt sich nach dem Sinn der Zahlen X und Y und warum müssen die Zahlen davor zusammengerechnet werden?

Jede dieser Aufgaben stellt im eigentlichen Sinne einen Block dar. Jeder Block hat eine Nummer ( hier unsere Aufgabennummer ), Daten ( in dem Beispiel ist es das “Ergebnis” von Maries Rechnung ), eine Nonce ( X ) und mindestens einen Hashwert ( Y ).
Die Blocknummer wird mit den Daten und der Nonce verknüpft, um über eine Hashfunktion ( im Beispiel mod 181 ) einen digitalen Fingerabdruck des Blockes zu generieren.

Die Nonce eines Blockes ist dabei immer so gewählt, dass der Hashwert des Blockes ein vordefiniertes Kriterium erfüllt. Dieses zusätzliche Kriterium, dass hier Y kleiner 99 sein soll, kommt bei Aufgabe 3 besonders zum Tragen.
Vertauscht Paul versehentlich eine einzige Ziffer innerhalb seines Blockes, sei es Aufgabennummer, Ergebnis oder X, so schlägt seine Überprüfung fehl.

Aufgabe:        3 +
Ergebnis: 1993441 +
X:             34 
-------------------
          1993478

1993478 modulo 181 = 125

Ohne sein jetziges Ergebnis mit Y zu vergleichen, kann sich Paul sicher sein: mit Aufgabe 3 stimmt etwas nicht.

Das zusätzliche Kriterium für den berechneten Hashwert hilft einerseits bei der Fehlerfindung, andererseits gibt es vor wie Hashwerte auszusehen haben. Wenn Hashwerte bestimmten Regeln folgen müssen, so kann in späteren Schritten auf den Mining-Prozess von Blöcken Einfluss genommen werden.

Mining von Blöcken ist das Verändern der Nonce in einem Block, bis der Hashwert des Blockes dem Zusatzkriterium genügt.

Ist dieses nicht vorhanden und der Hashwert eines Blockes noch komplett unbekannt, so würde jeder berechnete Hash mit zugehöriger Blocknummer,Daten und Nonce einen gültigen Block darstellen. Um dies vorzubeugen und die Suche nach gültigen Blöcken künstlich zu erschweren, benutzt man zusätzliche Einschränkungen für Hashwerte.

Warum sollte man das Generieren von Blöcken künstlich verkomplizieren? Und wie wird aus den Blöcken nun eine Blockchain?




########

Ich hoffe, dass ich etwas zum Verständnis beitragen konnte. Im nächsten Artikel werde ich auf die letzten beiden Fragen eingehen und beschreiben, wie das Basiskonstrukt einer Blockchain grundsätzlich aussehen kann.
Wenn euch der Artikel gefallen hat, ihr Anregungen oder Fragen habt, würde ich mich über ein Kommentar freuen.
########

Sort:  

Congratulations @marius.sch! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Congratulations @marius.sch! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You got your First payout

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Hello @marius.sch, upv0t3
This is a free service for new steemit users, to support them and motivate them to continue generating valuable content for the community.
<3 This is a heart, or an ice cream, you choose.

:)


R4ND0M:
5381 1667 8718 7963
3934 2995 2450 8462
9797 2105 3648 2640
2350 9185 9159 1666

Congratulations @marius.sch! You have received a personal award!

1 Year on Steemit
Click on the badge to view your Board of Honor.

Do not miss the last post from @steemitboard!


Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes


Do you like SteemitBoard's project? Then Vote for its witness and get one more award!