Bitcoin: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 41: Line 41:
=== Transaktionen ===
=== Transaktionen ===


* 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 erfoderlich sein


=== Blöcke und die Block Chain ===
=== Blöcke und die Block Chain ===

Revision as of 20:02, 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

  • 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 erfoderlich sein

Blöcke und die Block Chain

Blockerzeugung

Sicherheit

Ökonomische Aspekte

Quellen

Headline text