Bitcoin Hype und ASICs

Na, das ist ja mal überraschend … Ich kann meinen einen Bitcoin, den ich vor fast 1,5 Jahren für 15EUR gekauft habe, momentan für 80EUR verkaufen …

Noch krasser: 1BTC kostete im August nur 5EUR … Es gab damals einen sehr starken Kurseinbruch, als ein Pyramiden-System, das Bitcoins verwendete, zusammen brach. Zu dieser Zeit hab ich den leider nicht mehr beobachtet, obwohl ich mir 100BTC kaufen wollte, sobald sie unter 10EUR fallen … Naja, hab ich wohl verpasst, die Gelegenheit 🙂

Bitcoins sind aber so eine Sache …

Man kann Bitcoins produzieren, indem man eine Mining-Software installiert, die Bitcoins errechnet. Hört sich so einfach an … Hat aber Haken:

Bitcoins errechnen ist ein reines Glücksspiel

Der Algorithmus hinter Bitcoin ist ein simpler SHA256(SHA256(B)) … Es ist wirklich so … Um einen Bitcoin zu berechnen, braucht man nur den SHA256 Algorithmus.

Wenn die Software gestartet wird, wird erstmal ein Block generiert. Dieser enthält alle möglichen Informationen wie vorheriger Block, irgendeinen Hash aller Blocks vor ihm, … und einen Zähler.

Der Block wird zweimal mit dem SHA256 gehasht und dann mit einem vom P2P-Netzwerk gestellten Problem verglichen. Dabei werden berechneter Hash und Problem als 256Bit Integer betrachtet und sie einfach verglichen. Ist der Integer-Wert des Hashs kleiner als der Integer-Wert des Problems, hat man einen Block gelöst und (derzeit) 25BTC errechnet.

Ist der Int-Wert des Hashs kleiner als der Int-Wert des Problems, wird der Counter im Block erhöht und erneut gehasht. Das passiert so oft, bis der 32Bit Zähler überläuft. Dann fängt man mit einem neuen Block an.

Selbstregulation

Das Netzwerk reguliert die Schwierigkeit des Problems so, dass pro Stunde ein Block gelöst werden (soll).

Wird die Rechengeschwindigkeit des Bitcoins Netzwerks höher, wird das Problem angepasst. Beispielsweise ist es einfach ein X zu finden, dessen SHA256(X)-Integer-Wert nicht nur eine „0“ am Anfang besitzt, sondern „0000“.

Genau das macht das P2P-Netzwerk … Der Integer-Wert des Problems wird kleiner und damit wird die Schwierigkeit höher.

ASICs

Es gibt mehrere Technologien, mit denen man das Problem lösen kann. Zum einen kann man auf CPUs oder GPUs ein Programm schreiben, dass das mehr oder weniger effizient bewerkstelligen kann. Mit High-End-Grafikkarten schafft man wohl bis zu 1GH/s. Normale CPUs versagen da fast vollständig. Auf einem normalen Rechner würde das wohl 1 Jahr dauern, einen Block zu lösen.

Mit FPGAs lässt sich eine digitale Architektur bauen, die nichts anderes macht, als möglichst effizient SHA256 zu berechnen. Mit FPGAs programmiert man nicht, sondern man beschreibt die Hardware, die dann das eigentliche Problem löst. Beispielsweise kann man in VHDL/Verilog eine CPU definieren, die dann Programme ausführt. Und dabei handelt es sich nicht um eine CPU-Emulation sondern um eine richtige CPU.

Mit FPGAs ist man keinerlei Einschränkung unterworfen (im Rahmen der Verfügbaren Logikresourcen), was Parallelität, Breite der Register, … betrifft. Benötigt man einen Addierer, der zwei 2048Bit Zahlen addiert? Kein Problem … Möchte man einen Algorithmus Pipelinen? Man kann sich eine Pipeline bauen, die Teilschritte vollständig Parallel abarbeitet. Möchte man die 64 Iterationen des SHA256 aufrollen und in einer Pipeline 64 SHA256 gleichzeitig bearbeiten? Dann würde man 64 Takte benötigen, bis die Pipeline gefüllt ist und dann pro Takt einen SHA256 berechnen … Wenn man das ganze nochmals 10fach parallelisiert, hätte man mit 100MHz schon 1GH/s … Wenn der FPGA genug Logikresourcen hat, kann man das machen …

Es ist so, als würde man mit 74xx Logik-Gattern die Funktionalität bauen. Mit Hilfe (teils kostenloser) Synthese-Werkzeuge (von z.B. Xilinx, Altera, Latice) macht man das nicht mehr Gatter-weise, sondern beschreibt in VHDL oder Verilog und lässt die Hardware-Beschreibung in Logik-Funktionen synthetisieren. Diese Logik-Funktionen werden dann auf die Logik-Resourcen der FPGAs gemappt.

FPGAs sind aber ziemlich teuer, wenn sie groß und schnell sein sollen … Es gibt da ein paar Implementierungen des SHA256 auf FPGA, aber so ultraschnell scheint das nicht zu sein. Einen Vorteil haben sie aber … Sie benötigen weniger Strom als eine GPU.

Die Königsklasse sind ASICs. Im Prinzip lässt sich eine in VHDL/Verilog definierte Hardware mit wenig Aufwand in ein ASIC-design konvertieren, das dann in Silizium geätzt werden kann. Der Herstellungsprozess von ASICs ist aufwändig und sehr teuer. Es lohnt sich wirklich nur, wenn die ASCIs viel verkauft werden (oder entsprechend mehr verlangt wird).

Nahezu alle käuflichen ICs sind ASICs. Sie sind extrem schnell und brauchen sehr wenig Energie …

Es gibt einen Hersteller, der hat solche ASICs zum Bitcoin minen produziert und ist kurz vor der Auslieferung …

Eine Box, die 30GH/s berechnen kann, benötigt nur 30W. D.h. 1GH/s etwa 1W. Das ist schon unglaublich effizient!

Lohnt sich der Bitcoin-miner auf ASIC-Basis?

Die Antwort lautet Jein … Für den Hersteller auf jeden Fall … Der Bedarf an ASIC-miner wird steigen, wenn mehr ASIC-miner verkauft wurden.

Das Netzwerk wird viel viel schneller durch die ASIC-miner, was dazu führt, dass das zu berechnende Problem viel viel schwieriger wird. GPUs werden da in kurzer Zeit nicht mehr mithalten können und unprofitabel werden. Wenn jemand wirklich noch minen möchte, wird er wohl auf ASICs umsteigen müssen, um möglicherweise gleich erfolgreich zu bleiben, wie bisher.

Zum Minen würde es sich nur lohnen, wenn man einer der ersten ist, der einen ASIC-miner hat …

Hier noch eine kleine Grafik, die zeigt, wie sich die Schwierigkeit und die Rechneleistung in der letzten Zeit entwickelt hat:

speed-small-lin

Quelle: http://bitcoindifficulty.com/

Man sieht, dass sich insbesondere seite dem letzten Hype, die Rechenleistung und die Schwierigkeit deutlich gestiegen ist … Ein Grund mehr, keine Bitcoins zu errechnen 🙂

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s