Grundlagen zu Blockchain und Bitcoin für Einsteiger

Als Informatiker beschäftige ich mich sehr vielen verschiedenen Themen und habe natürlich auch ein sehr breites Interessengebiet. Ich belese mich ständig, aber natürlich kann man sich nicht überall zu 100 % auskennen. Und an diesem Punkt driften wir in das sehr gefährliche Gebiet des Halbwissens ab.

So ging es mir auch beim Thema Blockchain und im genaueren Bitcoin. Nun, da es in aller Munde ist und selbst Taxifahrer mittlerweile zu Investitionsexperten in diesem Gebiet mutiert sind, möchte ich diesen Artikel nutzen, um selbst ein bisschen Licht ins Dunkel zu bringen und damit mein Halbwissen zu beseitigen.

Wichtig: ich schreibe diesen Text nach bestem Wissen und Gewissen, kann aber keine Garantie für die Richtigkeit meiner Angaben geben. Wenn ihr Korrekturen habt, dann schreibt doch bitte einen Kommentar und ich versuche das dann zeitnah auch im Artikel zu korrigieren.

Warum braucht man Bitcoin und was hat die Blockchain Technologie damit zu tun?

Zu Beginn der Geschichte waren alle Menschen Selbstversorger. Nach einiger Zeit begann man, sich in Gruppen zusammenzurotten, in der jeder verschiedene Aufgaben übernahm. Das entwickelte sich über große Zeitspannen zu Städten, in denen man statt direkter Zusammenarbeit irgendwann Tauschhandel betrieb. Sprich: „ich gebe dir eine Ladung Mehl, dafür bekomme ich von dir eine Fuhre Äpfel“ usw.

Prinzipiell klappte das ganz gut, allerdings hatte dieses System große Nachteile für Hersteller saisonaler Waren, die nicht das ganze Jahr über tauschen konnten. Zusätzlich kam die Schwierigkeit dazu, dass man bestimmte Dinge benötigte, der entsprechende Tauschpartner allerdings keine Verwendung für die eigenen Güter hatte.

So begannen sich Schuldscheine zu etablieren, mit einem großen Vorteil: der Schein könnte wiederum auch gegen Waren eingetauscht werden. Und all das basierte auf einem ÄUßERST wichtigen Prinzip: Vertrauen. Nur, weil alle das Vertrauen hatten, dass der Schuldschein auch eingelöst werden kann, konnten diese überhaupt weitergereicht werden.

Auf diesem Prinzip basiert auch heute noch unser komplettes Bankensystem. Statt die Schuldscheine tatsächlich einzulösen, wurden diese irgendwann mehr oder weniger dauerhaft als Sicherheit für weitere Tauschgeschäfte genutzt. Aus diesem Prinzip ist letztendlich das Geld geworden, wie wir es heute kennen.

Papiergeld und Münzen sind letztendlich nichts anderes als Schuldscheine auf Gold. Als sich Banken etablierten, lagerten diese Gold in ihren Tresoren ein und gaben so viel Geld aus, wie im Gegenwert Gold im Keller lag. So stellen sich die meisten Leute noch immer das Bankensystem vor, jedoch sind wir an irgendeiner Stelle zu einer sehr kritischen Wendung gekommen: die Banken fingen an, mehr Geld auszugeben als Sicherheiten im Keller vorhanden wahren. Sie taten und tun das noch immer auf der Grundannahme, dass ja nie alle Leute gleichzeitig kommen würden, sich Ihr Geld in Gold umtauschen zu lassen.

Somit wurde praktisch das unendliche Geld erfunden. Vielleicht mag das in der heutigen Zeit notwendig zu sein, aber ist bringt auch viele Nachteile mit sich. Zum einen ist man grundsätzlich von einzelnen Institutionen sowie dem Staat abhängig. Diese entscheiden, wie viel Geld im Umlauf ist und steuern damit auch dessen Wert – Stichwort Inflation. Hinzu kommen natürlich auch die Sicherheit sowie freier Zugang zum eigenen Geld. All dies liegt in den Händen weniger.

Und nun kommen wir endlich zu Bitcoin bzw. Cryptowährungen im Allgemeinen. Das ganz große Versprechen, dass diese mit sich bringen, ist Unabhängigkeit und ganz wichtig: Dezentralität. Mittels der Blockchain Technologie wird ermöglicht, dass das System der Cryptowährungen nicht auf wenigen zentralen Systemen liegt, sondern auf sehr viele Systeme verteilt wird. Denn das funktioniert nur, wenn man sicherstellen kann, dass keine Daten auf einzelnen Systemen verändert werden können, ohne dass die anderen Teilnehmer des Netzwerks das mitbekommen.

Und nun möchte ich ins Detail gehen:

Blockchain

Das Internet an sich war das erste echte große und globale dezentrale Netz. Die Idee dahinter war immer, dass es so robust ist, selbst einen Atomkrieg zu überstehen und eben nicht von wenigen zentralen Systemen abhängig zu sein.

So gut die Idee auch war, so hatten die Macher scheinbar nicht damit gerechnet, dass innerhalb dieses dezentralen System dann doch wieder zentrale Systeme wie Facebook, Amazon, Google und co entstehen. Diese Art von System wachsen so lange an, bis sie eine derart kritische Masse an Usern oder auch Gütern beinhalten, dass niemand mehr um sie herum kommt. Diese Art von Größe kann man nur mit entsprechenden Mitteln und technischem Know How umsetzen.

Die Blockchain Technologie wurde entwickelt, um ähnlich große Systeme umsetzen zu können, dabei aber komplett dezentral zu sein.

Wie der Name schon sagt, besteht das Ganze aus einer Kette von Blöcken. Innerhalb eines solchen Blockes können beliebige Daten liegen. Zusätzlich hat jeder Block einen sogn. Header, sprich so eine Art Kopfzeile. Dieser Header enthält einen Hash, also eine Checksumme, des Blocks um zu verifizieren, dass beide zusammen gehören.

Dazu ein kurzer Exkurs zu Hashes bzw. Checksummen: Einfach gesagt nimmt man z.B. Text oder beliebige binäre Daten/Dateien, führt darauf eine mathematische Operation aus, die dann z.B. in einem 40 Zeichen langen Text endet. Diese Operation kann man beliebig oft wiederholen, beim gleichen Ausgangs-Inhalt wird immer wieder der gleiche Hash herauskommen. Sobald man nur ein einzelnes Zeichen im Ausgangstext/Inhalt ändert, kommt ein komplett anderer Hash heraus. Aber: in der Regel wird nie bei zwei verschiedenen Ausgangsinhalten der exakt gleiche Hash herauskommen. Sprich, ein Hash ist einmalig.

Diese mathematische Methode wird also auf den Inhalt des Blocks angewandt und das berechnete Ergebnis im Header gespeichert. Somit kann man immer zweifelsfrei beweisen, dass der zugehörige Block unverändert ist – denn das Ergebnis der Berechnung wird immer wieder exakt diesen Wert ergeben, sofern nichts verändert wurde. Anschließend wird für den Header auch noch ein Hash erzeugt.

Nun haben wir das erste Element der Kette. Fügt man dieser nun einen zweiten Block hinzu, wird wieder der Hash für den Inhalt berechnet, ein neuer Header inkl. des Hashes angelegt und, das ist jetzt wichtig, ausserdem ein Hash für den VORHERIGEN Header im neuen Header hinterlegt.

Von nun an wird jeder hinzugekommene Block in der gleichen Art und Weise angelegt. Um das Ganze zu visualisieren, hier die entsprechende Grafik aus dem Blockchain Wikipedia Artikel:


(via https://de.wikipedia.org)

Die Magie an der ganzen Sache ist, dass jeder Block-Header den Hash des vorherigen Headers enthält. Sobald man nun versucht, die Reihenfolge der Blöcke zu ändern oder den Inhalt eines Blockes modifiziert, fällt dies sofort durch die Hashes auf, die nun nicht mehr stimmen. Dieses Prinzip ist eigentlich relativ simpel aber dennoch genial.

Nun besteht noch ein Problem: wer hat Recht? Oder sagen wir es deutlicher: Wer darf etwas an die Blockchain anhängen, wenn wir uns in einem dezentralen Netzwerk befinden, das keine zentrale Einheit kennt? Um den dafür nötigen „Konsens“ zwischen allen Teilnehmern des Netzwerks zu erreichen, gibt es mehrere Methoden, wie z.B. Proof-Of-Work, Proof-of-Stake, Proof-of-Activity und noch einige mehr. Jede der Methoden hat unterschiedliche Ansätze. Für Bitcoin wird z.B. die Proof-of-Work Methode verwendet, das sogn. Mining – welches sehr rechenintensiv ist. Dazu gleich mehr.

Wurde der Konsens erreicht, wird der neue Block an die Chain angehangen und es geht von vorne los.

Das ist mehr oder weniger die Blockchain Technologie, wie sie prinzipiell funktioniert.

Mining

Zurück zum Problem des Konsens: mit sehr vielen Teilnehmern in der Blockchain besteht natürlich das Bedürfnis, eine Art Sicherheit zu haben, dass nicht jeder wild Daten an Sie anhängen kann. Die Entscheidung, wer das gerade darf, bringt der sogn „Konsens“. Im Falle von Bitcoin wird das Proof-of-work Prinzip verwendet. Dazu wird eine bestimmte Anzahl von Bitcoin Transaktionen genommen, in einen Block gepackt und dann ein entsprechender Hash erzeugt.

Damit die Berechnung mit den Jahren und somit schnelleren Computern nicht einfach schneller erledigt werden kann, ist das Regelwerk der Bestätigung eines Transaktionsblocks variabel gestaltet. Sprich, der Aufwand, um einen validen Block zu erzeugen, wird größer.

Einfach gesagt funktioniert es bei Bitcoin so: der Inhalt des Blocks plus einem zu berechnenden Zusatztext muss einen Hash ergeben, bei dem die erste x Stellen eine 0 sind. Mit der erforderlichen Anzahl dieser Nullen kann man den Schwierigkeitsgrad und somit die Dauer der Berechnung beeinflussen.

Der erste Miner, der den richtigen Zusatztext gefunden hat, wird mit Bitcoins belohnt, und alle anderen Teilnehmer der Chain können seine Lösung sehr schnell und einfach verifizieren. Und das ist eine sehr wichtige Eigenschaft bei Proof-of-Work: dass die Berechnung an sich sehr kompliziert und aufwändig, die Verifizierung dafür extrem schnell möglich ist.

Probleme von Cryptowährungen und Blockchains

Eines der Hauptargumente für die Blockchain ist im Bereich Finanzen auch gleichzeitig ein riesiger Nachteil: die Unveränderbarkeit. Menschen nutzen das System, Menschen machen Fehler. Kann man im „normalen” Bankenwesen Transaktionen rückgängig machen, so ist das in der Blockchain nur dann möglich, wenn alle bzw. ein sehr großer Teil der Beteiligten zustimmt, nämlich mindestens 51%. In diesem Fall muss ein „Fork“ der Chain zum Zeitpunkt vor dem entsprechenden Fehler durchgeführt werden und alle später geschehenen Transaktionen sind ungültig bzw. werden vergessen. Es liegt auf der Hand, dass man diesen Aufwand nur äußerst selten durchführen kann und nicht bei jeder beliebigen Fehlüberweisung.

Ein weiteres Problem sind die Datenmengen und der zugehörige Stromverbrauch. Aktuell beträgt die Dateigröße der Datenbank aller Bitcoin ca. 150gb. Aufgrund des sehr hohen Berechnungsaufwandes schafft das Netzwerk aktuell ca. 4 Transaktionen pro Sekunde. Zum Vergleich: alleine „Visa“ erledigt in der gleichen Zeit ca. 1600 Transaktionen. Sprich, wenn wirklich ein großer Teil des Zahlungsverkehrs über Bitcoin laufen würde, dann müsste man ziemlich lange auf die Bestätigung warten.

Aber nehmen wir mal an, man bekommt das Geschwindigkeitsproblem in den Griff, dann schafft man aber das nächste Problem. Die Größe der Datenbank wird entsprechend schnell mit wachsen. Da die Blockchain nie vergisst und man immer alles vorhalten muss, wird dies schnell ein Problem werden. Denn alle aktiven Teilnehmer der Chain müssen ja immer die komplette Datenbank vorhalten.

Und letztlich besteht noch immer das Problem des immensen Strombedarfes. Bereits jetzt, wo Bitcoin eher Spekulationsobjekt als wirklich aktives und verbreitetes Zahlungsmittel sind, liegen Schätzungen für 2018 bei bis zu 140 Terawattstunden Stromverbrauch, was etwa 0,6 Prozent des weltweiten Stromverbrauchs entspräche. Aktuell kann sich das System nur tragen, weil besonders in China durch Stromsubvention überhaupt das Mining im großen Stil möglich ist.

Fazit

An sich muss ich sagen, dass die Technologie absolut faszinierend und sicher auch wegweisend ist. Unabhängig von gesellschaftlicher Akzeptanz sehe ich jedoch aus technischer Sicht absolut keine Zukunft für Bitcoin als generelles Zahlungsmittel. Andere Cryptowährungen, die auf andere Arten der Konsens-Herbeiführung basieren, haben hier schon eher Chancen.

Auf jeden Fall bleibt es spannend 🙂

Wie man das 5 Sekunden boot Delay beim Digispark / Digistump attiny85 entfernt

Neben den ESP8266 Microcontrollern hatte ich mir zum Herumspielen auch ein Dreierpack attiny85 Microcontroller von Digispark bestellt. Diese sind sehr klein, stromsparend und können für verschiedenste kleine Aufgaben herangezogen werden. Der entsprechend installierte Bootloader macht die Entwicklung dabei besonders einfach, weil man mit der Arduino IDE arbeiten kann und das Gerät einfach nur anstecken muss und nicht irgendwelche Programmer benötigt oder so.

Diese Einfachheit hat allerdings einen Nachteil: immer, wenn man den attiny85 mit dem Strom verbindet, wartet der Bootloader 5-6 Sekunden lang, ehe das installierte Programm startet. Und hier möchte ich euch nun zeigen, wie ihr den Bootloader so modifizieren könnt, dass er direkt das Programm startet und statt der 5s Wartezeit mittels Jumper in den Programmier-Modus gebracht wird.

Dazu benötigt ihr:

Neuer Bootloader:
https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-entry-jumper-pb0-upgrade.hex

Upload Software:
https://github.com/digistump/DigistumpArduino/tree/master/tools

Ladet euch das für euer Betriebsystem passende tar.gz herunter und entpackt es. In den entpackten Ordner könnt ihr der Einfachheit halber direkt die Hex Datei packen.

Der Upload ist dann eigentlich ganz leicht:

chmod +x micronucleus <-- die Binary ist nicht ausführbar, muss man also einmalig erledigen...
./micronucleus micronucleus-1.11-entry-jumper-pb0-upgrade.hex

Ihr werdet nun aufgefordert, den attiny85 anzustecken. Sobald das erledigt ist, wird der neue Bootloader gebrannt. Anschließend müsst ihr ca. 30s warten, dann das Gerät vom USB abziehen und den Pin GND mit Pin P0 verbinden. Nun zurück zur Arduino IDE wechseln, erneut den Upload des Programmes starten und wenn ihr aufgefordert werdet steckt ihr den attiny85 mit der GND-P0 Verbindung an. Nachdem die Firmware geschrieben wurde, zieht ihr das Teil wieder ab und trennt die Verbindung zwischen GND und P0. Wenn er nun wieder mit dem Strom verbunden wird, sollte der attiny85 sofort und ohne Pause das Programm starten.

Eilmeldung Münster

Wie krass der Riss in unserer Gesellschaft ist sieht man, wenn es mittlerweile eine Eilmeldung ist, dass ein Arschloch (!) „deutscher“ oder was auch immer ist. Jemand der einen oder mehrere Menschen tötet, ist einfach ein riesengroßes Arschloch – egal wo er/sie herkommt oder welcher Religion er/sie angehört. Es ist unerträglich dass diese Tat nun scheinbar „weniger schlimm“ ist weil es ja kein böser Ausländer war 😔😔😔

Warum der Fall Cambridge Analytica und Facebook gravierender ist als angenommen

Für alle, die die Tragweite hinter dem Cambridge Analytica Problem noch immer nicht verstanden haben oder nicht wollen, erklärt dieses Video das Thema ziemlich gut.

Um das Ganze etwas verständlicher zu machen: Bei der ganzen Thematik geht es um zwei Problematiken, nämlich: wie ist diese Firma an ihre Daten gekommen und was hat sie anschließend damit angestellt.

Zur Frage der Datenherkunft sind sich viele der selbsternannten Internetexperten einig, dass ja jeder Nutzer bei Facebook wissen sollte, dass der Dienst kostenlos ist und man somit mit seinen eigenen Daten bezahlt – denn niemand verschenkt etwas in der heutigen Zeit. Das ist soweit auch korrekt.

ABER: Cambridge Analytica hat die Daten erstens von einer völlig anderen App geliefert bekommen und somit explizit NICHT die Zustimmung der Nutzer erhalten. An dieser Stelle wurde auch Facebook „betrogen“ und konnte ehrlich gesagt nicht viel dagegen tun. Und zweitens: der große Fehler von Facebook war (und ist es leider noch immer), dass eine App, die von einem Nutzer die Erlaubnis zum Lesen seiner Daten bekommt, AUCH die Erlaubnis hat, die gleichen Daten seiner Freunde abzufragen, obwohl diese NICHT explizit ihre Zustimmung dazu gegeben haben. So wurden „nur“ die Zustimmungen von ca. 320.000 Usern eingeholt, jedoch auch die Daten ihrer im Schnitt 160 Freunde. Erst dadurch kam die Summe von ca. 50 Mio „geklauten“ Profilen zusammen.

Aber nun zur Frage, was man mit diesen abgegriffenen Daten anfangen kann: Bereits mit ein paar Likes und Angaben wie Geburtsort, Alter, Geschlecht usw. kann man ein relativ genaues Persönlichkeitsprofil einzelner Menschen anlegen. Wenn man dann noch Zugriff auf deutlich mehr Likes bekommt, wird das Bild immer feiner. Cambridge Analytica hat diese Daten soweit analysieren können, dass damit ein sehr genaues Targeting von Facebook Werbung möglich war. Und damit wurde dann auch sehr gezielt Werbung geschalten, für kleinste Nutzergruppen, um ihnen genau das im Feed einzublenden, was sie „sehen wollten“ – inkl. angepasster Tonalität und Inhalte. Und indem man die Inhalte Stück für Stück veränderte, konnte man die Meinung der Nutzer ganz subtil manipulieren.

Der Typ im Video fasst es in einer Analogie extrem gut zusammen: Mittels der gewonnenen Daten kann man Micro-Targeting betreiben, was im Endeffekt bedeutet, dass man seine Meinung nicht auf dem Marktplatz herausposaunt, sondern jedem einzelnen Menschen ins Ohr flüstert – und zwar für jeden in einer abgewandelten Form, die bei ihm am besten ankommt.

Und als letzter Punkt noch: ich möchte hier nicht falsch verstanden werden. Mir ist klar, dass man mit derartigen Methoden nicht einfach eine Wahl oder Abstimmung komplett kippen kann. Die Taktik war und ist hier jedoch:  Wahlen und Abstimmungen, bei denen knappe Mehrheiten in Kombination mit vielen unentschlossenen Menschen und Nichtwählern wahrscheinlich sind, sind anfällig für diese Manipulation. Man muss nämlich “nur” kleine Teile der Bevölkerung umstimmen, die eben nicht in ihrer Meinung gefestigt sind. Dies traf sowohl bei der Wahl des US Präsidenten als auch beim Brexit zu.

PS: Übrigens hat Steve Jobs hat vor ein paar Jahren mal folgendes zum Thema Privatsphäre gesagt, und die Aktionen von Apple lassen zumindest darauf schließen, dass sie diese Aussage ernst nehmen:

raspberry pi 3 b+ will nicht booten

Die Geschwindigkeit meines Octopi Druckservers für meinen 3D Drucker hat mich in letzter Zeit etwas genervt, daher habe ich mir direkt einen ganz neuen Raspberry Pi 3 b+ bestellt. So wie immer dachte ich mir: Karte wechseln, booten, fertig. Aber nix da. Der neue Raspi bootet einfach nicht.

Ok, dann neues Image probiert, andere Karten, andere Kabel usw. Nichts half. Die rote LED blinkte immer nur in unregelmäßigen Abständen und auf meinem Monitor war nur das Bunte Viereck sowie das Blitzsymbol zu sehen, was eigentlich auf Stromprobleme hinweist. Was aber wiederum bei einem 2 oder auch 2.5 A Netzteil mit dicken Kabeln nicht sein kann.

Der Grund für das Problem war dann doch sehr einfach: man muss die SD Karte “richtig” formatieren 🙄…

Am besten lädt man sich dazu das offizielle Tool zum Formatieren von SD Karten runter (ja, das gibt es tatsächlich 🙂 ) und wählt dort bei der Formatierung “overwrite format” aus. Damit wird die komplette SD Karte einmal überschrieben. Anschließend spielt man mit einem Tool seiner Wahl ein AKTUELLES Raspbian oder Noobs Image auf, welches die Treiber für den neuen Raspberry enthält.

Im Falle von Octopi wie bei mir war es nötig, den aktuellen Nightly Build zu verwenden. Das letzte stable Release verwendet sogar noch die letzte Raspbian Version…

Wunderschöne Kartenausschnitte als Hintergrundbilder für dein Handy

Um seinem Handy den persönlichen Touch zu geben, sind Hintergrundbilder bzw. Wallpaper das einfachste und offensichtlichste Mittel. Viele mögen Bilder ihrer Liebsten sehen, wenn sie ihr Handy entsperren, andere wieder nehmen Landschaften oder abstraktes und wieder andere haben einfach nur einen einfarbigen Hintergrund.

Etwas richtig besonderes bekommt man bei alvarcarto.com geboten: einen wählbaren Kartenausschnitt, der in verschiedenen Schwarz-Weiss Varianten eingefärbt ist. Eigentlich bietet der Anieter dieses Verfahren für Poster an, hat sich aber nun dazu entschlossen, einen Generator für mobile Hintergrundbilder zu erstellen:

Man gibt einfach die gewünschte Location ein und wählt dann das Farbmuster. Anschließend stellt man noch das Handy Modell bzw. die richtige Auflösung ein, und schon kann man das Bild generieren lassen und es dann herunterladen.

Für meinen Wohnort Dresden sieht das Ergebnis dann so aus:

FreeBSD pkg install meldet size mismatch Fehler

Die Fehlermeldung sieht in der Regel so oder so ähnlich aus:

pkg: cached package ...: size mismatch, fetching from remote
pkg: cached package ...: size mismatch, cannot continue

Um das Problem zu lösen, löscht man sämtliche caches von pkg mit folgenden Commands:

pkg clean
rm -rf /var/cache/pkg/*
pkg update -f
rm /var/db/pkg/repo-*.sqlite
pkg bootstrap -f