Vom Ether-Wallet auf's Bankkonto

Sobald das Mining-Rig läuft, produziert es Geld. Dieses landet zunächst einmal auf dem beim Start des Miners angegebenen "Wallet" - im Grunde nicht mehr als ein Schlüsselpaar, bestehend aus Ihren öffentlichen und Ihrem privaten Schlüssel. Da bislang nur wenige Shops Ether als Zahlungsmittel akzeptieren, muss das Geld i. d. R. in eine andere Währung wie z. B. Euro oder US-Dollar getauscht werden. Hierzu benötigt man eine "Wechselstube". Der erste Schritt besteht also darin, ein Konto bei einem entsprechenden Dienstleiter (z. B. coinbase.com) zu eröffnen. Coinbase bietet u. A. die Möglichkeit, Ether aus der Blockchain zu empfangen und dieses Geld auf ein Giro- oder Kreditkartenkonto zu überweisen. Außerdem kann man hier auch Ether (und einige andere Krypto-Währungen) kaufen. Einige weitere solche Dienstleister hat MyEtherWallet zusammengetragen.

Ist das Konto angelegt, gibt es (mindestens) zwei Möglichkeiten, es mit den geschürften Ether zu füllen:

  1. Sie laden sich mit Hilfe von des Programms geth (= Go Ethereum) die komplette Blockchain auf Ihren Rechner herunter, werden also selbst ein Knoten im Ethereum-Netzwerk. Dann können Sie selbst beliebige Transaktionen anstoßen.
  2. Sie greifen auf einen Dienstleister wie z. B. myEtherWallet.com zurück. Ein solches Online Portal bildet lediglich eine Schnittstelle zum Ethereum-Netzwerk. Ein Konto wird hier nicht benötigt.

Der zweite Fall ist sicher der bequemere, weil Ihnen das mühsame Herunterladen und permanente Synchronisieren der Blockchain erspart bleibt. Der Nachteil ist jedoch, dass Sie Ihr Passwort einem Internet-Portal anvertrauen müssen, um Ihre Transaktionen zu autorisieren. Aus diesem Grund bevorzuge ich persönlich die erste Variante. Die folgenden Abschnitte enthalten Übersicht über die hierzu notwendigen geth-Kommandos. Zur Ausführung müssen Sie ein Kommandofenster (Windows)/Terminal-Fenster (Unix) öffnen.

Falls Sie mehr über Ethereum und geth lernen möchten, empfehle ich die vom Ethereum-Projekt erstellte Original-Dokumentation. Sie finden diese auf der Projekt-Homepage.  Auf der Seite ganz nach unten scrollen und dem "documentation"-Link folgen.

Neues Wallet erzeugen

Eine neue Ethereum-Geldbörse ("wallet") wird durch folgendes Kommando erzeugt:

 

geth account new

 

Geth wird anschließend nach einem Passwort fragen, mit dem das Wallet verschüsselt wird. Dieses müssen Sie sich gut merken. Andernfalls besteht keine Möglichkeit mehr auf Ihr Wallet zuzugreifen. Fertigen Sie daher unbedingt eine Sicherungskopie an und speichern diese an einem anderen physikalischen Ort.

Nachdem Sie Ihr Passwort zweimal eingegeben haben, erzeugt geth eine Datei im Verzeichnis .../keystore die in etwa folgenden Namen hat:

 

UTC--2018-06-23T14-01-11.009548900Z--0e77e8dd1103d05e841c4e16f860d0bbd11204ff

 

Entsprechend dem Namensschema "UTC--<date>T<UTC time>--<Ihr öffentlicher Schlüssel>". Dies ist eine normale ASCII-Datei, die mit jedem Editor geöffnet werden kann. Sie benötigen diese jedes mal, wenn Sie eine Transaktion im Ethereum-Netzwerk starten.

Blockchain synchronisieren

Um eine Transaktion in der Blockchain starten zu können, müssen Sie diese zunächst auf Ihren Computer herunterladen. Dies erreichen Sie im einfachsten Fall durch das Kommando "geth". Sie müssem jedoch nicht sämtliche Transaktionen der Vergangenheit speichern. Vielmehr reicht es aus, nur die "block headers" herunterzuladen. Hierfür bietet geth den sog. schnellen Modus an:

 

geth --syncmode=fast

 

Dies spart Speicherplatz und Rechenzeit. Aber auch in diesem Fall benötigen Sie ca. 60 GByte Speicherplatz. Bei mir hat die Synchronisation etwa drei Tage gedauert!

Den Fortschritt können Sie abfragen, indem Sie in einem zweiten Fenster folgendes eingeben:

 

geth attach
> eth.syncing

 

Dies erzeugt eine Ausgabe wie die unten dargestellte. Sollte stattdessen nur "false" ausgegeben werden, ist entweder ein Fehler aufgetreten, oder Sie sind fertig. (Herzlichen Glückwunsch!)

Sobald die Synchronisation abgeschlossen ist, lädt geth — etwa alle 15 Sekunden — einen vollständigen neuen Block herunter. Dies geschieht auch nach einem Neustart von geth. Der "syncmode"-Parameter hat anschließend keine Wirkung mehr.

Anfangs verläuft die Synchronisation recht schnell. Aber je näher Sie dem Ende der Blockchain kommen, desto zäher wird der Prozess. Am Ende ist geth fast nur noch damit beschäftigt, neue "state entries" zu laden. Seien Sie also geduldig …

Kontostand abfragen

Falls Ihr Computer mit der Blockchain synchronisert ist, können Sie Ihren dort gespeicherten Kontostand abfragen:

 

> eth.getBalance(eth.coinbase).toNumber();

 

Das Ergebnis ist Ihr Kontostand in Einheiten von 1 Wei (=10-18 Ether).

Geld überweisen

 

Jetzt kommt der interessante Teil. Sobald Sie ein paar Ether (oder ein paar hundertstel Ether) verdient haben, können Sie diese auf ein anderes Konto überweisen:

 

> personal.unlockAccount(eth.coinbase, "password");
> eth.sendTransaction({from: eth.coinbase, 
  to: "0xe77c3cc834ef8d12db8480389c9295dcda716ebd",
  value: web3.toWei(0.05, "ether")})

 

Das erste Kommando ermöglicht geth den Zugriff auf Ihr Wallet. Das zweite überweist in diesem Beispiel 0,05 Ether auf mein Konto. (Die Adresse also bitte ändern;-) Die "from:"-Adresse "eth.coinbase" hat nichts mit der gleichnamigen Online-Wechselstube zu tun, sondern bezeichnet Ihr eigenes Wallet. Der "to:"-Parameter ist die öffentliche Adresse des Zahlungsempfängers. Falls Sie Ihr Geld an coinbase.com (die Wechselstube) überweisen möchten, melden Sie sich dort an und geben bekannt, dass Sie Ether empfangen möchten. Die coinbase-Webseite wird Ihnen dann die zu verwendende Adresse mitteilen.

Zu erwähnen ist noch, dass Sie nicht den kompletten Ether-Bestand Ihres Kontos überweisen können, weil stets ein kleiner Betrag zum Bezahlen der Transaktion selbst benötigt wird. Diese Transaktionsgebühr wird nicht in der Einheit Ether bezahlt, sondern in Einheiten von einem "gas". Dies bewirkt eine Entkopplung der Transaktionskosten vom aktuellen Ether-Kurs. Eine genaue Beschreibung der Berechnung der Transaktionsgebühr finden Sie in der Dokumentatio des Ethereum-Projekts.

Für Ihre Transaktion können Sie festlegen, welche Gebühr diese maximal kosten soll. In diesem Fall müssen Sie zwei weitere Parameter angeben, "gas" und "gasprice". Der Wert des "gas"-Parameters is die maximale Anzahl gas-Einheiten der Transaktion (ein Schätzwert). Der "gasprice"-Parameter enthält den maximalen Preis (in Einheiten von 1 Wei), den Sie für eine gas-Einheit zu zahlen bereit sind. Letztlich bestimmen die Miner, ob sie diesen Preis akzeptieren und ggf. unterbieten, oder nicht. Das Kommando sieht dann wie folgt aus:

 

> eth.sendTransaction({from: eth.coinbase, 
  to: "0xe77c3cc834ef8d12db8480389c9295dcda716ebd",
  value: web3.toWei(0,05, "ether"),
  gas: 22000, gasPrice: web3.toWei(45,"Shannon")})

 

1 Shannon = 109 Wei = 10-9 Ether. In diesem Beispiel wird die maximale Transaktionsgebühr auf  22.000 * 45 * 10-9 Ether = 0.00099 Ether festgelegt. Die tatsächliche (geringere) Gebühr legen die Miner fest. Es gibt allerdings ein Risiko bei der Angabe von "gas" und "gasprice": Falls das "gas limit" zu niedrig sein sollte, wird Ihre Transaktion ggf. niemals ausgeführt, und die bereits angefallene Transaktionsgebühr wird trotzdem vom Miner einbehalten. Daher lasse ich stets das System den Preis bestimmen.