Transaktionen (technische Erläuterungen zu Bitcoin)

Dies ist mein achter Artikel zum Thema Bitcoin (technische Erläuterungen). Hier eine Übersicht der sieben bisher erschienenen Artikel:

  1. Das Bitcoin-System
  2. Erfüllung der drei Transaktionsbedingungen bei Bitcoin
  3. Transaktionskonsens bei Bitcoin (Mining und Blockchain)
  4. Netzwerkknoten (Bitcoin)
  5. Bitcoin Kommunikationsprotokoll und aktuelle Registerversion; Verwaltung des Bitcoin Systems(BIP), Bitcoin ist Fiatgeld
  6. Pseudonyme und Zugriffsberechtigungen bei Bitcoin (Transaktionslegitimität)
  7. Sicherheit bei Bitcoin (Schlüssel und Pseudonyme), Einstieg Hahsfunktionen

Elliptische Kurven

(Eigentlich) sind wir jetzt bei den elliptischen Kurven angelangt. Der Grund weshalb hier jetzt trotzdem keine seitenlangen Beispielrechnungen und Erklärungen stehen ist der, dass ich ganz sicher nicht der größte Mathematiker auf Erden bin und in den letzten Tagen keine Motivation hatte mich dementsprechend umfangreich einzulesen (und einzurechnen:D). Falls extrem großes Interesse an diesem auf elliptischen Kurven basierenden asymmetrisch kryptografischen Verfahren besteht werde ich mir das vielleicht anders überlegen. Sonst werde ich den mathematischen Teil wie gesagt größtenteils skippen und nur kurze Erklärungen geben welches mathematische Verfahren verwendet wird und wieso.

Mit unserem jetzigen Wissen über Bitcoin brauchen wir uns auf jdenfall nicht verstecken:D Ich denke die aller wenigsten Verstehen den mathematischen Teil (vielleicht eine Handvoll Leute) bzw die meisten haben noch nie etwas von "elliptischen Kurven und zyklischen Gruppen" gehört:D

Wieso elliptische Kurven?

  1. Bei asymmetrischen Verschlüsselungsverfahren die auf elliptischen Kurven basieren werden für Signaturen (mit einem gewissen Mass an Sicherheit) um einiges kürzere Schlüssellängen benötigt als bei "herkömmlichen Verfahren" (ohne elliptische Kurven)
  2. Der Verschlüsselungprozess ist effizienter.

Bei Bitcoin wird ein Standard verwendet, durch den die elliptische Kurve definiert wird: secp256k1

Wie die Schlüssel erstellt werden wurde in einem älteren Artikel schonmal erwähnt(Artikel 6) aber hier nochmal. Der private key wird aus einer sehr sehr großen Zahlenmenge ausgewählt (siehe Artikel 6). Aus diesem wird dann den öffentliche Schlüssel berechnet. Dies geschieht durch Punkteverdopplung und Addition. Auf Deutsch heißt das ein Basispunkt G der elliptischen Kurve (der allgemein bekannt ist) wird mit dem privaten Schlüssel multipliziert. Der Punkt den man dann erhält ist der public key.

Signieren einer (Transaktions-)Nachricht

Wieder explizite Mathematik die ich überspringen werde. Grob gesagt:

  1. Wählen einer beliebigen Zahl i zwischen 1 und n-1 (Zahl wird nur einmal verwendet)
  2. Berechnung eines Punktes P=i*G 
  3. r=xp (x-wert des berechneten Punktes bestimmen)
  4. s=[i^-1(t+r+kp)]    t=Nachricht kp=private key
  5. Veröffentlichen der Nachricht t zusammen mit dem public key und der Signatur (r,s)

Überprüfung der Nachrichten Signatur

Wie wir wissen erhält ein beliebiger (vollwertiger) Knoten die Transaktionsnachricht dessen Signatur er nun überprüft.

  1. [u_1=(s^-1 *t)]
  2. [u_2=(s^-1 *r)]
  3. P=u_1 *G+u_2 *Kö
  4. Signatur gültig, wenn r=xp

_ ist bei mir für tiefgestellte Zahlen und ^ für hochgestellte Zahlen (da Strg++ bzw Strg+# bei Steemit nicht funktioniert)

Da wir den Mathe Teil so schnell durchgeskippt haben wars das auch schon (juhu:D)

Das nächste Thema ist jedoch auch ziemlich trocken.

Transaktionen und wie sie aufgebaut sind

Transaktionen sind Nachrichten (Transaktionsnachrichten)  über die wir in anderen Artikeln schon oft gesprochen haben. Hier werden wir näher darauf eingehen.

  • Transaktionsnachrichten werden über das Bitcoin Netzwerk (vollwertige)Knoten propagiert und fungieren als Zahlungsaufträge.
  • Transaktionsnachrichten sind die einzige Möglichkeit das Besitzrecht von Bitcoin Einheiten zu ändern.

Kleine Wiederholung:

Eine Transaktionsnachricht wird vom Initiianten einer Transaktion erstellt, kryptografisch signiert und an einen beliebigen Netzwerkteilnehmer (full node) geschickt. Der Knoten der die Nachricht erhält, wird diese anhand der kryptografischen Signatur prüfen (um die Transaktionslegitimität zu prüfen{sicherzugehen,dass die Nachricht wirklich vom Besitzer des Guthabens kommt}). Falls das passt wird eine kopie der Nachricht in den transaction pool des Knotens kommen und das Original wird an die Kontakte des Knotens weitergeleitet, die ebenso verfahren werden, bis das ganze Netzwerk von der Transaktion erfahren hat. (Daraus wird erkennbar, dass normale Transaktionen nicht storniert werden können; außer double-spend natürlich wie bereits erklärt).

Der Aufbau

Die Bestandteile einer Transaktion seht ihr im Bild. Selbstverständlich gibt es eine standartisierte Form nach dem Bitcoin Protokoll, die Abbildung ist daher nur eine vereinfachte Darstellung


Jeder Output kann nur einmal verwendet werden. Falls ein Knoten eine Transaktionsnachricht erhält, die ein schon zuvor verwendeten Output als Input referenziert, wird er die Transaktionsnachricht ignorieren.

Wurde der Output nicht bereits zuvor als Input referenziert steht er für die neue Transaktion zur Verfügung. Diese Outputs nennt man unspent transaction outputs (UTXO) (Outputs die bisher nicht verwendet wurden). Die UTXO sind sozusagen die Wertspeicher des Bitcoin Netzwerkes und werden als Bestandteil einer Transaktion in der Blockchain gespeichert und können dann in einer beliebigen Transaktion als Input referenziert werden (alle nicht als Input referenzierten Outputs UTXO sind im Arbeitsspeicher jedes vollwertigen Knoten).

Jede Bitcoin Einheit ist Bestandteil eines nicht verwendeten Transaktionsoutputs.


Wenn eine UTXO von einem Input referenziert wird, muss diese komplett verwendet werden. Um dennoch präzise Beträge zu haben gibt es verschiedene Transaktionstypen, die entweder mehrere Inputs zu einem großen Output zusammenfügen oder einen großen Input in mehrere Outputs aufsplitten (Modifikation von Stückelungen/Wechselgeld).

Transaktionstypen

  1. Aggregierend: Eine beliebige Anzahl an Inputs wird zu einem einzigen Output zusammengefasst (mehrere Beträge können an eine einzige Auszahlungsbedingung geknüpft werden).
  2. Aufsplittend: Ein einzelner Input wird in eine beliebige Anzahl von Outputs aufgesplittet. (gängigste Transaktionsform). Hierbei übersteigt der vewendete Input den Output, sodass er Wechselgeld erhält, welches er zu seinen Gunsten auf eine zweite Adresse von sich schicken kann. (mehr Anonymität und Sicherheit)
  3. Weiterleitend: Ein einziger Input aus dem ein einzelner Output generiert wird.

Transaktionsgebühr

Die Summe aller Inputs/des Inputs muss mindestens so groß sein, wie die Summe der Outputs/des Outputs. Ist der Input größer als der Output bleibt eine gewisse Summe übrig. Diese Differenz (das Wechselgeld) wird (bei der aufsplittenden Transaktion auf eine nächste Adresse versand) und kommt als Transaktionsgebühr dem Miner zugute, der die Transaktion in die Blockchain aufnimmt (einen gültigen Block erstellt). Umso höher diese Differenz zwischen Input und Output (umso mehr Geld für den Miner übrig bleibt) umso schneller wird die transaktion in der Regel bearbeitet/bei der Auswahl der Transaktionen die in den Block des Miners kommen bevorzugt.


Durch diese Verkettung der Transaktionen entsteht eine Transaktionshierarchie, in der jeder Output eine klar nachvollziehbare Herkunft hat (bis hin zur jeweiligen Coinbase Transaktion).

Alle Transaktionen, die einen bestimmten Transaktionsoutput von vorherigen Transaktionen als Input referenzieren werden von den Knoten als Duplikate erkannt und verworfen.

Ein Output kann nicht mehrmals referenziert werden. Sonst würde er ja mit der ersten transaktion die sich auf diesen Output refrenziert konkurrieren.

Das war es mit diesem Artikel. Ich finde das ganze Input/Output Zeug ziemlich verwirrend, hoffe das euch das besser geht:D

Im nächsten Artikel werden wir noch ein paar Transaktions-"Feinheiten" behandeln und uns dann dem Thema "Transaktionskonsens" genauer widmen. Ein Thema das ich besonders interessant finde.


Quellen

 

  • Bild

Das Bild habe ich mithilfe von Paint 3D erstellt. Als Vorbild diente mir dafür die "Abbildung 44"aus dem Buch "Bitcoin, Blockchain und Kryptoassets von Aleksander Berentsen und Fabian Schär.

  • Mein Wissen über dieses Thema habe ich ebenfalls größtenteils aus diesem Buch.

https://www.amazon.de/gp/product/3738653929/ref=as_li_tl?ie=UTF8&tag=urdreamscomet-21&camp=1638&creative=6742&linkCode=as2&creativeASIN=3738653929&linkId=d95515f27071b70b443408ad7170a100Dies ist ein ref Link von mir zu dem Buch. 

  • Quelle über utxo und input/output

http://blockchain-nachrichten.com/blockchaintechnologien/utxo

https://de.bitcoin.it/wiki/Transaktion

 

Wenn euch der Artikel gefallen hat, dürft ihr mir gerne folgen und Feedback sowie einen Upvote dalassen. Werde selbstverständlich auf alle Fragen eingehen. 



H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center