Wallet Funktion

In diesem Beitrag erfahren Sie alles, über die Funktion der Wallet und die Bedeutung der Schüsselpaare, Privater, Öffentlicher Schlüssel und Mnemonic Seed. Welche Adresstypen es gibt und wie genau Transaktionen funktionieren.


Was ist dieses Wallet?


Das Wallet ist die Pirmäre Nutzerschnittstelle, die digitale Geldbörse, sie kontrolliert den Zugriff auf die digitalen Einheiten des Nutzers. Wallets enthalten keine Coins, sondern Schlüsselpaare Private & Öffentliche Schlüssel oder den Mnemonic Seed, sie sind der Besitznachweis für die Nutzer/in. Indem die Software mithilfe des Öffentlichen Schlüssels auf Transaktions-Outputs (bzw. UTXO – Unspent Transactions Output) in der Blockchain prüft.

Es gibt 2 unterschiedliche arten von Schlüsselpaar verfahren: Die nichtdeterministische Wallet und die hierarchisch deterministische Wallet. Für die praktische Aufbewahrung gibt grundsätzlich 3 Unterschiedliche arten von digitalen Göldbörsen, das Software Wallet, Cold Wallet & Hardwarewallet. Entscheidend ist, dass eine Wallet benutzt wird, bei der der Private Schlüssel oder Seed kontrolliert werden kann (export & import der Schlüssel) und diese nicht bei Drittanbietern gespeichert sind.

Es gibt viele Online Wallet anbieter, die Geldbörsen für user verwalten. Mittels E-mail Adressen und Passwort können deren Kunden/Innen zugang zu ihrer Wallet erhalten, allerdings sind sie nie im besitz ihrer Guthaben, da sie nicht über ihre Schlüsselpaare verfügen.

Achtung! Sollten Sie ihre Privaten Schlüssel oder Seed verlieren, ist ihr Guthaben auch verloren! Sichern Sie Ihren privaten Schlüssel, bedenken Sie Umwelteinflüsse und organisieren Sie die Vererbung ihrer Schlüssel!

Was sind Private-Key Public-Key & Mnemonic Seed?


Ein Privater Schlüssel (Private-Key) ist eine Elyptische Kurve, jeder Punkt auf dieser mathematischen Funktion definiert eine Adresse mit x & y Koordinaten in Hexadezimal. Der Private-Key besteht aus 2^256 Möglichkeiten von verschiedenen Zahlen und Buchstaben, mit einer Zeichenfolge von 52 Zeichen.

Das sind 1,1579*10^77‬ Keys, was fast der Anzahl der Atome im sichtbaren Universum entspricht! Der Private-Key ist der Besitznachweis für Ihre Bitcoins. Der Public-Key wird aus dem Private-Key abgeleitet, z.B. Public-Key = Private-Key ^ n. Dabei ist der Faktor n nicht zu bestimmen und somit ist es nicht möglich, den Privaten Schlüssel aus dem Öffentlichen Schlüssel herzuleiten! 

Eine Transaktion sieht dann wie folgt aus: Alice signiert mit ihrem Private-Key Transaktionen, wodurch der Besitz an den Transaktions-Outputs bewiesen wird. Der Inhalt der Transaktion wird durch den Öffentlichen Schlüssel - Public-Key von Lina verschlüsselt. Lina kann nun mit ihrem Private-Key die Nachricht entschlüsseln, die einen Betrag in BTC enthält.

Ein Mnemonic Seed ist eine Aneinanderreihung von mehreren Wörtern, der entweder aus 12 oder 24 Wörtern besteht. Diese Wörter beschränken sich auf 2048 Wörter, die mit dem Bitcoin-Improvement-Protokoll BIP32 eingeführt wurden, dabei ist das 12. oder 24. Wort eine Prüfsumme, darum sollte der Seed von einer Software generiert werden.

Mathematisch betrachtet sind es 12!*2048 bzw. 24!*2048 Möglichkeiten für die Anzahl aller Seeds. Die Software rechnet zur Generierung einer hohen Zufälligkeit mit der Entropie, die z.B. vom Nutzer erzeugt wird. Seeds und Private-Keys können durch ein zusätzliches Passwort verschlüsselt werden.

Software & Hardware Wallets können mehrere Private-Keys aus dem Seed ableiten bzw. errechnen. Der Private-Key oder Seed sollte bei einer entsprechenden Software Wallet oder Hardware Wallet exportiert und aufgeschrieben werden, oder in ein Cold Wallet gesichert werden! Der Public-Key wird automatisch in einer Sofware aus dem Private-key abgeleitet, daher muss er nicht zwingend gesichert werden. 

Hierarchisch Deterministische Wallet

Das als determinischtische Wallet bekannte Verfahren, leitet die Schlüssel aus einem Master-Schlüssel mithilfe einer einwegs Hash-Funktion ab, der Master Schlüssel ist als Seed bekannt. Alle Schlüssel dieses Typs können erneut aus dem Seed abgeleitet werden.

Die am häufigsten verwendete Methode bedient sich einer Baum Struktur, von „Parent“ und deren folgenden „Child“ Schlüsseln. Aufgrund dieser Baum Struktur wird das Verfahren als hirarchisch determinischtisch kurz HD Wallet bezeichnet.

 

Adressen


Es ist nicht wichtig alles im Detail zu verstehen wichtig ist für die Nutzung, dass Adressen öffentliche Schlüssel repräsentieren. Die Adresse wird selbsterklärend dafür verwendet UTXO/Transaktionen/Guthaben bzw. Bitcoins & Nachrichten zu erhalten, oder zu senden, sie erfüllt also die Funktion einer E-Mail Adresse.

Die unterschiedlichen Adressformate unterscheiden sich äußerlich von dem Präfix also den ersten Zeichen der Adresse und der Zeichenkettenlänge.

Legacy oder Pay-to-Public-Key-Hash (P2PKH) Adresse

Die Legency Adresse ist das ursprüngliche Adressformat, sie hat als Präfix eine 1, ist also immer an dem ersten Zeichen zu erkennen. Die Software hasht den öffentlichen Schlüssel erst mit SHA 256 und dann mit RIPEMD-160.Dann fügt sie an das Ergebnis die bytes 00 als Präfix an den Anfang an – das ist der Grund weshalb P2PKH-Adressen mit einer 1 beginnen – und noch vier Prüfsummen-Bytes an das Ende.

Die vier Prüfsummen-Bytes werden erzeugt, indem die Wallet die RIPEMD-160 Hash inklusive Präfix zweimal mit SHA 256 hasht und dann die ersten vier Bytes des Ergebnisses nimmt. Die so bearbeitete RIPEMD-160 Hash, die noch hexadezimal ist, wird in das alphanumerische base58 konvertiert, und schon haben wir die Lagacy Adresse.

Die Adresse ist nun besser zu Lesen da sie viel kürzer als der Publickey ist, die Prüfsumme verhindert das Tippfehler gemacht werden. Wenn also eine Adresse in der Wallet Software eingefügt wird, werden Präfix und Prüfsumme kontrolliert.

Diese Standard Adresse ist mit den Adressformaten P2SH & Native SegWit Bech32 kompatibel, kann SegWit aber nicht nutzen. Die Transaktionsgebühr liegt bei 1mBTC = 0.001BTC und ist aufgrund des umgerechneten Preises natürlich nicht mehr zeitgemäß.

Pay-to-Script-Hash P2SH Adresse

Das Pay-to-Script-Hash verfahren wurde mit dem BIP16 2012 eingeführt. Beim P2SH wird nicht an den Hash eines öffentlichen Schlüssels gezahlt sondern an den Hash eines Sryptes. Es muss also nicht die Signatur die zu einem bestimmten öffentlichen Schlüssel passt vorgelegt werden, sondern ein Script das eine bestimmte Hash hat.

Diese Adressen ermöglichen es unterschiedliche Methoden einzuführen, um sich als Eigentümer einer UTXO auszuweisen, sie ermöglichen z.B. Multi-Signatur Adressen (Multi-Sig-Adress), bei denen mehrere Parteien eine Transaktion Signieren müssen.

Seit SegWit gibt es die Nested P2SH, sie nutzt SegWit, ist ebenfalls mit allen Adressformaten kompatibel, kann allerdings nicht das volle Potential des Segregatet Witness (kurz SegWit wird in 7.1 ausführlich erläutert) nutzen und benötigt sogar 10% mehr Speicher. Das Adresspräfix ist die Ziffer 3 gefolgt von einem Großbuchstaben, die länge beträgt 34 Zeichen.

Prefix: 3

Native Segwit - Bech32 Adresse

Dieses Adressformat ist das fortschrittlichste, wenn diese Adresse vom Sender und Empfängerin benutzt wird, wird das volle Potential von SegWit genutz, es können sehr geringe Gebühren eingestellt werden da der Speicherbedarf für die Blockchain sehr gering ist. Ein weiterer Vorteil ist die Lesbarkeit indem kleinbuchstaben verwendet werden.

 Prefix: bc1q

Testnet Adresse

Testnet Adressen sind ausschließlich für das Testnetzwerk des Bitcoin vorgesehen, die P2PKH beginnen mit dem Buchstaben m oder n. Das Senden von Guthaben aus dem Mainnet führt zum Verlust des Guthaben. Testnet Bech32 beginnen mit tb1.

 

Transaktionen


Wie funktioniert eine Bitcoin Transaktion?

Wie bereits erwähnt bedient sich das Netzwerk für transaktionen asymetrischer Kryptographie, dies bedeutet, dass wir mit privaten und öffentlichen Schlüsseln arbeiten. Zum besseren Verständnis helfen uns in diesem Beispiel Alice und ihre freundin Lina.

Alice möchte Lina für ein design bezahlen und sendet 0.01BTC an Linas Adresse. Alice hält mithilfe ihrer Wallet den privaten Schlüssel vor um zu beweisen, dass sie im besitz digitaler Einheiten ist, mit dem Hash des öffenlichen Schlüssels von Lina (Adresse) verschlüsselt sie die transaktion und Nachricht. Der private Schlüssel von Alice signiert nun die transaktion.

Lina kann nun mit ihrem privaten Schlüssel die Nachricht / Transaktion entschlüsseln dessen nun das Volumen der transaktion (Nachricht und digitale Einheiten) enthalten. Im detail passiert jedoch noch mehr, wenn wir die digitalen Einheiten genauer betrachten.

Diese digitalen Einheiten die als Bitcoin, BTC oder in kleinen Einheiten als Satoschi /Sato/sats beschrieben sind, werden technisch als UTXO (Unspend Transction Output) bezeichnet. Diese lassen sich nur teilen wenn eine Transaktion ausgeführt wird. Beispiel:

Alice Wallet werden 4 UTXO zugeordnet, wobei dessen Summe 0.012BTC entsprechen. Keine der UTXO von Alice hat den genauen wert von 0.01BTC die für Lina vorgesehen sind, sondern jeweils 0.003BTC.

Als Alice die transaktion ausführt werden alle UTXO mit einem Volumen von 0.012BTC an Linas Wallet gutgeschrieben, wobei die Differenz von allen gesendeten UTXO (0,012) und der Zielsumme von 0.01BTC an Alice als eine UTXO mit dem Volumen von 0.002 (abzüglich der Transaktionsgebühren für die miner) zurückgesendet werden.

Das musst du beim erstellen der Wallet und beim ausführen von Transkationen beachten!

Transaktionen sind die bedeutsamste Anwendung in der jungen Geschichte des Bitcoin. Es gibt viele tricks und tücken die EinsteigerInnen zum Opfer fallen, das erschwert die Benutzerfreundlichkeit des Zahlungssystems. Dank der Bitcoin Uni Haben Sie die Beste Einführung die überhaupt existiert! ;) 

Beginnen wir also damit ein Wallet zu erstellen, dabei möchten wir natürlich ein modernes Adressformat benutzen, wie z.B. die Pay-to-Scrypt-Hash (P2SH) oder Native SegWit Adresse auch Bech32 gennant. Diese können wir in der Software Wallet auswählen. Die neueren Adressformate gestatten den NutzerInnen bei einer Transaktion die Gebühren selbst einzustellen, die Sender können nun bestimmen wie schnell die Transaktion verarbeitet werden soll. Umso höher die Gebühren, desto schneller ist die Transaktion im nächsten Block.

Ist die Gebühr zu gering eingestellt, wird die Transaktion womöglich nicht validiert und nach ca. 2 Tagen verworfen. Die genaue höhe der Gebühren wird durch die Belastung des Netzwerks bestimmt, den sogenannten Mempool, der alle  "unsigned transactions"  speichert, bis sie durch den nächst gefundenen Block validiert werden können. Der Mempool wird von den Nodes gespeichert, bis der passende Hash gefunden wird, damit der nächste Block angehängt werden kann.

Transaktion erhalten

Bevor wir selbst transaktionen ausführen können müssen wir zunächst Guthaben erhalten. Wir kopieren dazu die Adresse der erzeugten Wallet und  verschicken diese an den Sender oder fügen sie in ein abhebungs Formular bei einem Broker oder Börse ein. Alternativ kann die Software Wallet die Adresse auch als QR Code anzeigen lassen, diese lässt sich nun sehr leicht von anderen Endgeräten scannen.

Überprüfen Sie beim kopieren die ersten und letzten ca. 3 Zeichen, um sicherzustellen, dass es sich um Ihre Adresse handelt und sie nicht Opfer einer Maleware sind, die ihre Adresse beim kopieren austauscht.

Transaktion ausführen

Mit einer mobilen Wallet können wir nun problemlos einen QR Code scannen, die höhe des zu versendenden Volumens bestimmen, sowie die Netzwerkgebühren festlegen. Für das versenden ist selbstverständlich ein Internet Zugang notwendig. Bei einer transaktion kann auch eine Nachricht mitgesendet werden, um Zalungen einem Betreff zuzuordnen.

Im Blockchain explorer können Sie alle "Onchain" Transaktionen & öffentlichen Blockchaindaten und Statisktiken einsehen. Um sicher zu gehen sollten möglichst 6 Blöcke und damit Bestätigungen für die Transaktion abgewartet werden (ca. 1h), um mit 99% Sicherheit einer 51% Attacke zu entgehen.