Datengewinnung

In den letzten beiden Blogeinträgen haben wir uns Gedanken darüber gemacht, welche prinzipiellen Möglichkeiten das Internet zur Entwicklung dezentraler autonomer Kooperationen bieten kann. Autonom soll hier im Sinne eines dezentralisierten Netzwerkes verstanden werden, welches Berechnungen über tausende von Servern durchführt, um das System selbst am Leben zu erhalten. Für ein dezentralisiertes autonomes Unternehmen stellt sich an dieser Stelle allerdings immer noch eine wichtige Frage: Wie kann das DAC mit der umgebenden realen Welt interagieren?

Hierbei geht es in erster Linie um Informationen, mit denen der Algorithmus arbeiten kann. Hierbei muss zwischen zwei Arten unterschieden werden: Selbst-verifizierende und nicht selbst-verifizierende Informationen. Selbst-verifizierend sind Informationen, wenn die in ihnen liegenden Daten von einem Algorithmus validiert werden können. Beispiel: Wenn die Zahl x eine Primzahl ist, dann gebe y aus. Hier kann das System die Bedingung selbst validieren und den entsprechenden Wert ausgeben. Bei nicht selbst-verifizierenden Daten kann der Algorithmus nicht eigenständig eine Entscheidung treffen sondern ist auf zusätzliche Informationen von der Außenwelt abhängig. Beispiel: Sobald die Temperatur in Frankfurt 11,3°C beträgt, dann gebe y aus.

Das Bitcoin-System ist diesbezüglich ein ganz interessanter Fall, da die hier vorgenommenen Transaktionen im Grunde genommen nur teilweise selbst-verifizierend sind. Hierbei müssen wir nämlich zwei Punkte unterscheiden. Zum einen geht es um die Frage, ob die jeweilige Transaktion korrekt signiert ist. Nach dem ECDSA (Elliptic Curve Digital Signature Algorithm) ist dies so. Nun könnte man noch anmerken, dass der aktuelle Transaktionszustand von den vorherigen Transaktionen und den jeweiligen öffentlichen Adressen abhängt. Aber auch hier sind in rekursiver Betrachtung alle Transaktionen nach dem ECDSA erfolgt und somit ebenfalls gültig.

Anders sieht es allerdings bei der zeitlichen Komponente aus. Prinzipiell kann eine Transaktion erst stattfinden, wenn das zahlende Konto einen entsprechenden Betrag aufweist bzw. einmal ausgegebenes Geld kann nicht vom gleichen Konto für einen anderen Zweck verwendet werden. Dieses zeitliche Problem lässt sich auf eine Frage konkretisieren: Wenn ich zur gleichen Zeit einen Betrag X sowohl an das Konto y als auch an das Konto z überweise, wer entscheidet, auf welchem der beiden Konten das Geld als erstes eingegangen ist (so dass es nicht auf dem zweiten doppelt gebucht werden kann)?

Bitcoin löst dieses Problem über die Rechenkapazität der an dieses Netz angeschlossenen Clients. Wenn die Mehrheit der Clients eine bestimmte Reihenfolge der Transaktionen als korrekt ansieht, dann gilt hierüber ein gemeinsamer Konsens. Das Netz kann hierbei nur kompromittiert werden, wenn ein einzelner oder eine Gruppe von Clients mehr Rechenpower als der Rest auf sich vereinigen kann. Dieser einzelne/diese Gruppe besäße dann die Macht, die Reihenfolge der Transaktionen zu seinen/ihren Gunsten umzuschreiben. Prinzipiell belohnt das Netzwerk nur diejenigen Clients (in diesem Fall mit Bitcoins), die sich am Mining neuer Bitcoins und somit an der Verifizierung der Transaktionen beteiligen.

Darin steckt eigentlich auch schon die Grundidee der Lösung des zeitlichen Problems: Finde quasi eine virtuelle Mehrheit der beteiligten Knoten an dem Gesamtnetz, die sich auf eine bestimmte Reihenfolge der Transaktionen einigen können und veröffentliche diese. Alle, die sich an diesem System beteiligen, werden belohnt.