Bitcoin: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Motivation ===
== Motivation ==


Alle vertrauensbasierten Zahlungssysteme haben folgende inhärente Schwächen:
Alle vertrauensbasierten Zahlungssysteme haben folgende inhärente Schwächen:
Line 14: Line 14:
* direkte Zahlungen zwischen handelswilligen Partnern
* direkte Zahlungen zwischen handelswilligen Partnern


=== Quellen ===
== Funktionsweise ==

* dezentralisierte, elektronische, anonyme Währung auf Peer-to-Peer-Basis
* unumkehrbare Transaktionen mittels digitaler Signaturen und Proof of Work (verwendet werden ECDSA, RIPEMD-160, SHA-256)
* begrenzte maximale Anzahl Bitcoins: 21 Millionen (derzeit rund 8,34 Millionen, Stand Februar 2012)

=== Adressen ===

* Base58 kodierte "Kontonummern" mit 25-34 Zeichen, beginnend mit 1 oder 3
* dienen dem Empfang und Versand von Bitcoins
* Speicherung in elektronischer Brieftasche, der "Wallet"
** geht die Wallet-Datei verloren, sind auch die ihr zugeordneten Bitcoins für immer verloren
** wird die Wallet-Datei gestohlen bzw. kopiert, so kann der Angreifer über sämtliche Guthaben verfügen

==== Adresserzeugung ====

# ECDSA Private Key (Kurvenparameter secp256k1)
# zugehöriger Public Key
# SHA-256(2.)
# RIPEMD-160(3.)
# Netzwerk-ID-Byte vorn an 4. anstellen (Main, Test ...)
# SHA-256(SHA-256(5.))
# Checksumme: erste 4 Bytes von 6.
# Checksumme an 5. anhängen ergibt 25 Byte lange binäre Bitcoin-Adresse
# Base58-Kodierung von 8. ergibt menschenlesbare Adressform (gebräuchlichstes Format)

=== Transaktionen ===

Alle Transaktionen werden veröffentlicht, also an alle erreichbaren Knoten übermittelt.

* Input
** Hash voriger Transaktionen (mehrere möglich)
** Index des Outputs voriger Transaktion (zwei Möglichkeiten: Überweisung, Rückgeld)
** erste Hälfte Skript (Public Key des Empfängers und ECDSA-Signatur der vereinfachten Transaktion)

* Output
** Anzahl Bitcoins in Satoshi (1 BTC = 100 Millionen Satoshi)
** Transaktionsgebühren sind die Differenz zwischen Output- und Input-Werten
** zweite Hälfte Skript (Transaktionstyp, der die Einlösebedingungen spezifiziert)

* Verifikation
** Skriptsystem mit Stack
** erst Inputskript auf den Stack, dann Outputskript voriger Transaktion
** bleibt 0 als Ergebnis auf dem Stack ist die Transaktion verifiziert, sonst nicht

==== Transaktionstypen ====

* IP-Adresse
** Sender bekommt Public Key des Empfängers über IP-Kommunikation
** Einlösung: Empfängersignatur gegen Public Key prüfen
** Vorsicht: Man in the Middle

* Bitcoin-Adresse
** Bitcoin-Adresse ist ein Hash, also kein vollständiger Public Key des Empfängers enthalten
** Einlösung: Empfängersignatur gegen seinen Public Key und Hash des Public Keys gegen Empfänger-Bitcoin-Adresse prüfen

* Erzeugung
** keine ECDSA-Signatur, da Bitcoins aus dem Nichts erzeugt werden
** Output und Einlösung wie bei IP-Transaktionen

* komplexere Bedingungen sind möglich, um Verträge zu bilden, z. B. könnten 10 Signaturen erforderlich sein

=== Blöcke ===

* Blöcke zeichnen Transaktionen im Netzwerk auf
* zweiteilig: Header und angehänge Transaktionen
* entsteht durch Mining, enthält also den Proof of Work (Lösung schwieriger mathematischer Aufgabe)
* Headerdaten (gesamt 80 Byte):
** Versionsnummer des Clients
** Hash des Vorgängerblocks
** SHA-256 Hash basierend auf allen Transaktionen (Wurzel eines Hash-Trees zur Kompression)
** Zeitstempel
** Schwierigkeitsgrad (Anzahl führender Nullen des gesuchten Hashes)
** Nonce (32 Bit)

=== Block Chain ===

* Datenbank aller jemals im Netzwerk getätigter Transaktionen
* an allen Knoten vollständig vorhanden
* Blöcke enthalten Referenz auf Vorgänger, Fälschung eines Blockes erfordert also Neuberechnung aller Nachfolger
* jeweils längste Kette wird fortgesetzt (Länge = Gesamtschwierigkeit aller enthaltenen Blöcke)
* Kette ist korrekt, wenn alle enthaltenen Transaktionen und Blöcke korrekt sind und sie beim Genesis-Block beginnt
* Verzweigungen:
** entstehen, wenn zwei Clients zeitnah einen Block finden
** lösen sich mit Folgeblöcken, da eine Kette schneller wachsen wird
** Transaktionen in verwaistem Kettenarm müssen in neuen Blöcken integriert werden
* Länge: knapp 167000 (Stand Februar 2012)

=== Blockerzeugung ===

* wiederholtes Hashen des Block Headers
* Nonce wird inkrementiert, um Hashwert kleiner oder gleich dem Schwierigkeitsgrad zu finden
* läuft 32 Bit Nonce über, wird die Empfängeradresse der Erzeugungstransaktion des Blocks geändert und damit der Transaktionshash im Block Header

== Sicherheit ==

=== Double Spending ===

Ein Beispiel: Eve bezahlt Ware, wartet auf die Versandbestätigung und überweist sich selbst dann die verwendeten Bitcoins. Diese Betrugsform funktioniert nicht aus den folgenden Gründen:

* Transaktionen werden an alle verfügbaren Knoten übermittelt
* Netz arbeitet an Blöcken, die u. a. diese Transaktionen enthalten
* Versuch zweiter Ausgabe der Bitcoins scheitert, da bereits Blöcke belegen, dass die Bitcoins nicht mehr Eve gehören
* Eve müsste selbst Blöcke mit ihren betrügerischen Transaktionen generieren und die aktuelle Block Chain überholen
* Solange die Mehrheit der Rechenleistung im Netzwerk ehrlichen Knoten gehört, wächst die korrekte Block Chain schneller

=== Anonymität ===

* altes Datenschutzmodell: Datenschutz durch Zugriffsbeschränkung auf Informationen auf die beteiligten Partner und die Mittelinstanz (Bank)
* neues Datenschutzmodell:
** alle Transaktionen öffentlich
** Datenschutz durch anonyme Adressen
** Öffentlichkeit kann den Transaktionen keine Personen zuordnen, nur die anonymen Adressen
** Börse funktioniert ähnlich: Zeitpunkt und Größe der Transaktin sichtbar, die Beteiligten nicht
* zusätzliche Sicherheit: für jede Transaktion neues Schlüsselpaar benutzen, sodass mehrere Transaktionen einer Person nicht als solche erkannt werden können
* größere Transaktionen dennoch problematisch, da mehrere Inputs erforderlich sind, also alle Input-Adressen der selben Person gehören müssen

=== Wallet ===

* lokale Datei des Clients
* beinhaltet Schlüsselpaare
* geht Wallet verloren, sind alle zugehörigen Bitcoins für immer verloren
* wird Wallet gestohlen, hat Angreifer uneingeschränkten Zugriff auf alle zugehörigen Bitcoins
* Verschlüsselung und Backup wird empfohlen

== Ökonomische Aspekte ==

=== Early Adopters haben einen unfairen Vorteil ===

* Vorteil ja, aber berechtigt
* Investition mit hohem Risiko in eine unbewiesene Technologie
* bei jeder neuen Technologie ähnliche Vorteile für Früheinsteiger

=== Woher stammt der Wert von Bitcoins? ===

* unabhängig von Erzeugungskosten (100 Leute buddeln ein Loch: teuer, aber nicht wertvoll)
* unabhängig von Knappheit (Fingerabdruck ist einzigartig, aber nicht wertvoll)
* je breiter die Akzeptanz, desto wertvoller (Sicherheit, Bitcoins gegen Waren bzw. Dienstleistungen eintauschen zu können)
* Akzeptanz von Bitcoin:
** Wikileaks, Occupy Wallstreet etc.
** Tauschbörsen (z. B. [https://www.mtgox.com Mt. Gox])
** Indie-Musiker, Künstler, Fotografen etc.
** einige Webshops, Wertstoffbank etc.
** Liste z. B. unter [http://go-bitcoin.com/seite/wer-nimmt-bitcoin go-bitcoin.com]

== Quellen ==


* Satoshi Nakamoto: Bitcoin: A Peer-To-Peer Electronic Cash System.
* Satoshi Nakamoto: Bitcoin: A Peer-To-Peer Electronic Cash System.
** gttp://www.bitcoin.org/bitcoin.pdf
** http://www.bitcoin.org/bitcoin.pdf


* Bitcoin-Webseite
* Webseite des Bitcoin-Projektes
** http://bitcoin.org/
** http://bitcoin.org/


* Bitcoin-Wiki
* Bitcoin-Wiki
** https://en.bitcoin.it/wiki/Main_Page
** https://en.bitcoin.it/wiki/Main_Page

* Webmagazin über Bitcoin
** http://go-bitcoin.com/seite/wer-nimmt-bitcoin

Latest revision as of 20:48, 14 February 2012

Motivation

Alle vertrauensbasierten Zahlungssysteme haben folgende inhärente Schwächen:

  • Transaktionskosten
  • geringe Anonymität
  • ausschließlich umkehrbare Transaktionen, auch für unumkehrbare Dienstleistungen
  • indirekte Transaktionen über Mittelsmänner (Banken etc.)
  • Abhängigkeit von der Kooperation des Übermittlers der Zahlungen, z. B. blockiert Paypal Zahlungen an Wikileaks

Die meisten dieser Probleme vermeidet Bargeld, jedoch hat diese Zahlungsmethode den Nachteil, dass sie nicht online, also via modernen Kommunikationskanälen, verfügbar ist. Bitcoin versucht, diese Lücke zu schließen, indem es folgende Eigenschaften zu vereinen sucht:

  • keine bzw. geringe Transaktionskosten
  • Anonymität
  • unumkehrbare Transaktionen
  • direkte Zahlungen zwischen handelswilligen Partnern

Funktionsweise

  • dezentralisierte, elektronische, anonyme Währung auf Peer-to-Peer-Basis
  • unumkehrbare Transaktionen mittels digitaler Signaturen und Proof of Work (verwendet werden ECDSA, RIPEMD-160, SHA-256)
  • begrenzte maximale Anzahl Bitcoins: 21 Millionen (derzeit rund 8,34 Millionen, Stand Februar 2012)

Adressen

  • Base58 kodierte "Kontonummern" mit 25-34 Zeichen, beginnend mit 1 oder 3
  • dienen dem Empfang und Versand von Bitcoins
  • Speicherung in elektronischer Brieftasche, der "Wallet"
    • geht die Wallet-Datei verloren, sind auch die ihr zugeordneten Bitcoins für immer verloren
    • wird die Wallet-Datei gestohlen bzw. kopiert, so kann der Angreifer über sämtliche Guthaben verfügen

Adresserzeugung

  1. ECDSA Private Key (Kurvenparameter secp256k1)
  2. zugehöriger Public Key
  3. SHA-256(2.)
  4. RIPEMD-160(3.)
  5. Netzwerk-ID-Byte vorn an 4. anstellen (Main, Test ...)
  6. SHA-256(SHA-256(5.))
  7. Checksumme: erste 4 Bytes von 6.
  8. Checksumme an 5. anhängen ergibt 25 Byte lange binäre Bitcoin-Adresse
  9. Base58-Kodierung von 8. ergibt menschenlesbare Adressform (gebräuchlichstes Format)

Transaktionen

Alle Transaktionen werden veröffentlicht, also an alle erreichbaren Knoten übermittelt.

  • Input
    • Hash voriger Transaktionen (mehrere möglich)
    • Index des Outputs voriger Transaktion (zwei Möglichkeiten: Überweisung, Rückgeld)
    • erste Hälfte Skript (Public Key des Empfängers und ECDSA-Signatur der vereinfachten Transaktion)
  • Output
    • Anzahl Bitcoins in Satoshi (1 BTC = 100 Millionen Satoshi)
    • Transaktionsgebühren sind die Differenz zwischen Output- und Input-Werten
    • zweite Hälfte Skript (Transaktionstyp, der die Einlösebedingungen spezifiziert)
  • Verifikation
    • Skriptsystem mit Stack
    • erst Inputskript auf den Stack, dann Outputskript voriger Transaktion
    • bleibt 0 als Ergebnis auf dem Stack ist die Transaktion verifiziert, sonst nicht

Transaktionstypen

  • IP-Adresse
    • Sender bekommt Public Key des Empfängers über IP-Kommunikation
    • Einlösung: Empfängersignatur gegen Public Key prüfen
    • Vorsicht: Man in the Middle
  • Bitcoin-Adresse
    • Bitcoin-Adresse ist ein Hash, also kein vollständiger Public Key des Empfängers enthalten
    • Einlösung: Empfängersignatur gegen seinen Public Key und Hash des Public Keys gegen Empfänger-Bitcoin-Adresse prüfen
  • Erzeugung
    • keine ECDSA-Signatur, da Bitcoins aus dem Nichts erzeugt werden
    • Output und Einlösung wie bei IP-Transaktionen
  • komplexere Bedingungen sind möglich, um Verträge zu bilden, z. B. könnten 10 Signaturen erforderlich sein

Blöcke

  • Blöcke zeichnen Transaktionen im Netzwerk auf
  • zweiteilig: Header und angehänge Transaktionen
  • entsteht durch Mining, enthält also den Proof of Work (Lösung schwieriger mathematischer Aufgabe)
  • Headerdaten (gesamt 80 Byte):
    • Versionsnummer des Clients
    • Hash des Vorgängerblocks
    • SHA-256 Hash basierend auf allen Transaktionen (Wurzel eines Hash-Trees zur Kompression)
    • Zeitstempel
    • Schwierigkeitsgrad (Anzahl führender Nullen des gesuchten Hashes)
    • Nonce (32 Bit)

Block Chain

  • Datenbank aller jemals im Netzwerk getätigter Transaktionen
  • an allen Knoten vollständig vorhanden
  • Blöcke enthalten Referenz auf Vorgänger, Fälschung eines Blockes erfordert also Neuberechnung aller Nachfolger
  • jeweils längste Kette wird fortgesetzt (Länge = Gesamtschwierigkeit aller enthaltenen Blöcke)
  • Kette ist korrekt, wenn alle enthaltenen Transaktionen und Blöcke korrekt sind und sie beim Genesis-Block beginnt
  • Verzweigungen:
    • entstehen, wenn zwei Clients zeitnah einen Block finden
    • lösen sich mit Folgeblöcken, da eine Kette schneller wachsen wird
    • Transaktionen in verwaistem Kettenarm müssen in neuen Blöcken integriert werden
  • Länge: knapp 167000 (Stand Februar 2012)

Blockerzeugung

  • wiederholtes Hashen des Block Headers
  • Nonce wird inkrementiert, um Hashwert kleiner oder gleich dem Schwierigkeitsgrad zu finden
  • läuft 32 Bit Nonce über, wird die Empfängeradresse der Erzeugungstransaktion des Blocks geändert und damit der Transaktionshash im Block Header

Sicherheit

Double Spending

Ein Beispiel: Eve bezahlt Ware, wartet auf die Versandbestätigung und überweist sich selbst dann die verwendeten Bitcoins. Diese Betrugsform funktioniert nicht aus den folgenden Gründen:

  • Transaktionen werden an alle verfügbaren Knoten übermittelt
  • Netz arbeitet an Blöcken, die u. a. diese Transaktionen enthalten
  • Versuch zweiter Ausgabe der Bitcoins scheitert, da bereits Blöcke belegen, dass die Bitcoins nicht mehr Eve gehören
  • Eve müsste selbst Blöcke mit ihren betrügerischen Transaktionen generieren und die aktuelle Block Chain überholen
  • Solange die Mehrheit der Rechenleistung im Netzwerk ehrlichen Knoten gehört, wächst die korrekte Block Chain schneller

Anonymität

  • altes Datenschutzmodell: Datenschutz durch Zugriffsbeschränkung auf Informationen auf die beteiligten Partner und die Mittelinstanz (Bank)
  • neues Datenschutzmodell:
    • alle Transaktionen öffentlich
    • Datenschutz durch anonyme Adressen
    • Öffentlichkeit kann den Transaktionen keine Personen zuordnen, nur die anonymen Adressen
    • Börse funktioniert ähnlich: Zeitpunkt und Größe der Transaktin sichtbar, die Beteiligten nicht
  • zusätzliche Sicherheit: für jede Transaktion neues Schlüsselpaar benutzen, sodass mehrere Transaktionen einer Person nicht als solche erkannt werden können
  • größere Transaktionen dennoch problematisch, da mehrere Inputs erforderlich sind, also alle Input-Adressen der selben Person gehören müssen

Wallet

  • lokale Datei des Clients
  • beinhaltet Schlüsselpaare
  • geht Wallet verloren, sind alle zugehörigen Bitcoins für immer verloren
  • wird Wallet gestohlen, hat Angreifer uneingeschränkten Zugriff auf alle zugehörigen Bitcoins
  • Verschlüsselung und Backup wird empfohlen

Ökonomische Aspekte

Early Adopters haben einen unfairen Vorteil

  • Vorteil ja, aber berechtigt
  • Investition mit hohem Risiko in eine unbewiesene Technologie
  • bei jeder neuen Technologie ähnliche Vorteile für Früheinsteiger

Woher stammt der Wert von Bitcoins?

  • unabhängig von Erzeugungskosten (100 Leute buddeln ein Loch: teuer, aber nicht wertvoll)
  • unabhängig von Knappheit (Fingerabdruck ist einzigartig, aber nicht wertvoll)
  • je breiter die Akzeptanz, desto wertvoller (Sicherheit, Bitcoins gegen Waren bzw. Dienstleistungen eintauschen zu können)
  • Akzeptanz von Bitcoin:
    • Wikileaks, Occupy Wallstreet etc.
    • Tauschbörsen (z. B. Mt. Gox)
    • Indie-Musiker, Künstler, Fotografen etc.
    • einige Webshops, Wertstoffbank etc.
    • Liste z. B. unter go-bitcoin.com

Quellen