admin Geschrieben 2. Februar Teilen Geschrieben 2. Februar Da speziell hier im 'Anfänger und Hilfe'- Bereich in regelmäßigen Abständen die selben Fragen zu den Blockchain Basics gestellt werden, möchte ich hier eine etwas detailliertere FAQ erstellen, um die am häufigsten gestellten Fragen zu beantworten. Ganz nach dem KISS- Prinzip ('keep it simple, stupid') möchte ich die Antworten so einfach und verständlich wie möglich halten. FAQ (klickbar) Ablauf einer Blockchain Transaktion? Was sind Konsensmechanismen? Welche unterschiedlichen Blockchain- Typen gibt es? Welche Informationen sind über die Bitcoin Adresse ersichtlich? Unterschied zwischen Public Key, Private Key und Bitcoin Adresse? Welche Adressformate gibt es? Was ist ein HD Wallet? BTC auf mehreren Adressen meines HD Wallets erhalten, einzeln verschicken oder Sendeauftrag? Wie konvertiert man WIF compressed Private Keys (Start mit 'L' oder 'K') in WIF Private Keys (Start mit '5')? Wie signiert man eine Nachricht? Sind Quantencomputer eine Gefahr für Bitcoin? Ich möchte Solo Minen, wie stehen meine Chancen einen gültigen Block- Hash zu finden? Wie ist der Ablauf einer Blockchain Transaktion? 1. Transaktion wird definiert 'Sender' erstellt eine Transaktion, bestehend aus öffentlicher Adresse des Senders, des Empfänger, sowie dem Betrag. Anschließend wird die Transaktion mit dem Private Key signiert und die Signatur (und der Public Key) der Transaktion angehängt. Auf diese Weise kann die Authentizität sichergestellt werden. (Das der Sender auch derjenige ist, der er vorgibt zu sein) 2. Transaktion verifizieren Durch Entschlüsselung der digitalen Signatur (durch den public key) können die Knoten nun die Gültigkeit der Transaktion authenthifizieren. Anschließend landet die Transaktion in einem "Pool ausstehender Transaktionen". 3. Block- Erstellung Die Miner fassen die Transaktionen aus diesem Pool nun zu einem Block zusammen (weitere Details siehe Konsensmechanismen) und senden den Block ins Netzwerk, wo dieser von den anderen Netzwerkteilnehmern validiert werden muss. 4. Block- Validierung In diesem Schritt erfolgt die eigentliche Validierung des Blocks, was einen Konsens der Mehrheit des Netzwerks erfordert. 5. Block 'chaining' Zum Schluss wird der Block der Kette angehängt und alle Knoten aktualisieren ihre lokale Kopie der Blockchain. Was sind Konsensmechanismen? Konsensmechanismen sind im Grunde nichts anderes als Algorithmen, um eine Einigung zwischen den Blockchain- Knoten zu erzielen. Alle Knoten im Netzwerk sollen sich dabei über die Änderungen im verteilten Ledger einigen. Von den zahlreichen verfügbaren Konsensmechansimen (PoW, PoS, DPoS, PoA, BFT, PoB usw.) werden wir uns aber nur die zwei bekanntesten ansehen: Proof of Work (PoW): 1. Transaktionen werden in einem Block gebündelt 2. Miner überprüfen die Legitimität der Transaktionen in einem Block 3. hash (block + nonce) < difficulty Hier versuchen die Miner einen Hash- Wert zu errechnen der kleiner oder gleich einem bestimmten Zielwert, der soganannten Difficulty, ist. 4. Eine Belohnung wird an den ersten Miner vergeben der dieses Rätsel löst (Belohnung = Blockbelohnung + Transaktionsgebühren) Proof of Stake (PoS): 1. Transaktionen werden in einem Block gebündelt 2. Validatoren werden pseudozufällig ausgewählt (pseudozufällig deshalb, da die Wahrscheinlichkeit gewählt zu werden, vom 'Coinalter' und der Anzahl der im Wallet gehaltenen Coins abhängt) 3. hash (hash(Bprev), U, t) <= d x balance(U) x age(U) 4. Validatoren erhalten Transaktionsgebühren des Blocks Bei PoS sind alle Coins pre- mined, deshalb werden hier ausschließlich die Transaktionsgebühren an die Validatoren verteilt. Welche unterschiedlichen Blockchain- Typen gibt es? Blockchains kann man einmal nach Art des Zugriffs (Wer kann Daten lesen?) und einmal nach Validierung (Wer darf validieren/Transaktionen verarbeiten?) einteilen. nach Zugriff: - Public: jeder kann Daten lesen - Private: nur bestimmte Teilnehmer können Daten lesen nach Validierung: - Permissionless: Alles Clients haben die selben Rechte, jeder darf Transaktionen verarbeiten - Permissioned: Nur festgelegte Clients dürfen Transaktionen verarbeiten. Nun gibt es natürlich verschiedene Kombinationen: Public Permissionless: Jeder darf Daten lesen und validieren, z.B. Bitcoin Public Permissioned: Jeder darf Daten lesen aber nur auserwählte dürfen validieren, z.B. Ripple Private Permissioned: Nur auserwählte dürfen Daten lesen und validieren, z.B. Libra (sollte es kommen) Private Permissionless: Nur auserwählte dürfen lesen aber jeder darf validiern => macht für mich wenig Sinn, deshalb auch ohne Beispiel Wink Welche Informationen sind über die Bitcoin Adresse ersichtlich? Am Besten einfach Blockexplorer öffnen und selber nachsehen. Wink Für BTC: https://btc.com/ Liste guter Bitcoin-Blockexplorer (mit Abstimmung) Für ETH: https://etherscan.io/ Unterschied zwischen Public Key, Private Key und Bitcoin Adresse? Generell unterscheidet man in der Kryptographie zwei Arten: symmetrische Kryptographie: Derselbe Schlüssel wird verwendet um Botschaften zu ver- und zu entschlüsseln. (muss Sender und Empfänder bekannt sein) asymmetrische Kryptographie: 2 Schlüssel - ein Verschlüsselungsschlüssel (public key) und ein Entschlüsselungsschlüssel (private key) - auch 'Public Key Kryptographie' genannt Public Key Kryptographie kommt jetzt zum Beispiel bei der Erstellung eines Wallets zum Einsatz oder wenn eine Transaktion signiert wird. Bitcoin selbst verwendet digitale Signaturen, genannt ECDSA (Elliptic Curve Digital Signature Algorithmus) um ein public/private Schlüsselpaar zu erstellen bzw. aus einem private key den dazugehörigen public key abzuleiten. Wichtig: die andere Richtung ist NICHT möglich, also von public auf private key. Auf diesem Public key wird dann zweimal die SHA-256 Hash- Funktion angewendet und die Public Addresse erstellt. Wichtig: auch hier ist die andere Richtung NICHT möglich, man kommt also von der Public Addresse NICHT auf den Public Key. Nun wird mit Hilfe der Base58Check-Codierung diese Adresse noch 'leichter lesbar' gemacht. Hier werden auch folgende Zeichen ausgenommen: '0', 'O', 'I', 'l', '+', '/ ' >> Eine Bitcoin-Adresse ist also nur eine Kurzschreibweise für den Public Key. Willst du dir jetzt mit bitcoin ein Bier kaufen, musst du die Transaktion (also wieviele btc du senden möchtest und an wen) mit deinem private key signieren. Die Signatur und dein Public key werden der Transaktion angehängt, damit jeder sie überprüfen kann. Welche Adressformate gibt es? Quote from: 1miau on April 20, 2019, 12:42:29 AM Es gibt unterschiedliche Adressformate und teilweise resultiert dies in unterschiedlichen Adressanfängen: Präfix Bezeichnung Format ________ ___________________ _______________________________________________________________________________ _____________ 1… Legacy-Adresse P2PKH (pay to public key hash) 3… nested SegWit-Adresse P2WPKH-P2SH (pay to witness public key hash - pay to script hash) / P2WSH-P2SH (pay to witness script hash - pay to script hash) 3… Multisignatur-Adresse P2SH (pay to script hash) bc1q… native Segwit-Adresse P2WPKH-bech32 (pay to witness public key hash) / P2WSH-bech32 (pay to witness script hash) Sämtliche Details dazu gibs hier: Wie erkennt man SegWit Adressen? Was ist ein HD Wallet? ECDSA erlaubt auch Schemata wie BIP32/BIP44 HD wallets. (Ein Ledger Nano oder Electrum sind HD Wallets) HD steht hier für "hierarchisch und deterministisch". Die Schlüssel sind also in einer Hierarchie angeordnet und folgen festen Regeln. Hier wird aus der Seed Phrase (12, 18 oder 24 Wörter) zuerst ein parent key pair generiert, aus dem anschließend alle child key pairs abgeleitet werden. Es ist daher wichtig, die Seed Phrase sicher aufzubewahren! Ich habe BTC auf mehreren Adressen meines HD Wallets erhalten, muss ich die BTC der einzelnen Adressen nun einzeln verschicken oder reicht ein Sendeauftrag? Nein, du musst nur einen Sendeauftrag erstellen. Eine Transaktion kann mehrere Inputs und mehrere Outputs besitzen. Wenn du z.B: am Ledger auf 10 unterschiedlichen Adressen je 0,1 btc empfangen hast und du anschließend eine Transaktion in der Höhe von 1 btc erstellst, werden zuerst mit den einzelnen private keys sämtliche Inputs der Transaktion signiert. Anschließend wird die Transaktion ins Bitcoin- Netzwerk geschickt. Wie konvertiert man WIF compressed Private Keys (Start mit 'L' oder 'K') in WIF Private Keys (Start mit '5')? Quote from: 1miau on January 18, 2020, 02:05:43 AM Präfix Format ____________ _______________________________________________________________________________ _____________ 5... WIF (Wallet import format) L... oder K... WIF compressed (Wallet import format compressed) Beispiel ____________________________ ___________________________________________________ ______________ ________________________________ Private Key WIF: 5K9qCsz17Bd1UxtS7HQWc2rKz6ssNaBHMzK8pJvYiDGVYvUSEWg Resultiert in: 1testgTQyiDMvtN67kj1w6R6J9dbo6bwd Private Key WIF compressed: L37ymS2bUHsw8Rg1pjQmfdAio2wXLDSPDdy3Vp7Lxu9P1bnqnz6g Resultiert in: 1LKd9CDvgHKCV8qZCMVv55tiKT22871XMi Diese private keys können z.B. in Electrum importiert werden, jedoch erzeugt der unkomprimierte private key nur den unkomprimierten public key und der komprimierte private key nur den komprimierten public key. Daher kann es manchmal Verwirrung geben, wenn man einen privaten Schlüssel importiert und man bekommt dann eine andere Adresse angezeigt. Um die jeweils anderen private key-Varianten (5... / K... oder L...) zu bekommen, kann man Bitaddress.org nutzen (am besten die aktuelle Version von GitHub herunterladen und offline ausführen): Wie signiert man eine Nachricht?? "Nachricht signieren" ist eine Funktion des Bitcoin-Clients, um jemandem zu beweisen, dass man die Kontrolle über eine Bitcoin-Adresse hat. Anleitung am Beispiel von Electrum: Quote from: shorena on February 11, 2015, 11:40:45 AM Signieren einer Nachricht Text: In der Menüleiste auf Werkzeuge -> Nachricht signieren / verifizieren klicken. Im neuen Fenster oben die Nachricht und in der Mitte die Adresse eingeben. Danach auf Signieren klicken. Bilder: Verifizieren einer Signatur Text: In der Menüleiste auf Werkzeuge -> Nachricht signieren / verifizieren klicken. Im neuen Fenster oben die Nachricht, in der Mitte die Adresse und unten die Signatur eingeben. Danach auf Verifizieren klicken. Es öffnet sich eine Meldung entweder: "Signatur bestätigt" oder "Fehler: Falsche Signatur" Bilder: Tutorials für andere Clients sind hier zu finden: So könnt ihr eine Nachricht signieren Wie das Ganze mit einem Ledger funktioniert hat Lakai01 hier beschrieben: Ledger Nano S Nachricht signieren Sind Quantencomputer eine Gefahr für Bitcoin? zuerst eine kurze Einführung zum Thema Quantencomputer: Grundsätzlich geht es hier um die Zustände der Bits / Qubits (quantum bits) bzw. um das Rechnen mit diesen. Bits können folgende Zustände haben: 0, 1 und Qubits: 0, 1 , Superposition (Zustand zwischen 0 und 1) In weiterer Folge können dann bestimmte Operationen ausgeführt werden. klassische Operationen: AND, OR, XOR usw. Quantenoperationen: hier eine Übersicht Vereinfacht ausgedrückt geht es also um die Operationen, die mit Hilfe von Quantengattern auf den Qubits ausgeführt werden. Inwiefern wäre Bitcoin davon betroffen? Generell muss man die verwendeten Algorithmen unterscheiden, nämlich ECDSA - der Algorithmus der zum Signieren verwendet wird und SHA256 - der Algorithmus der einerseits dazu verwendet wird um einen Block- Hash zu berechnen und andererseits dazu verwendet wird um die Public Adresse zu erstellen (Public key -> SHA256 -> Public Adresse -> Base58 -> Bitcoin Adresse) Betroffen wäre hier sowieso "nur" ECDSA. Hätte man also ein Wallet ohne einer einzigen ausgehenden Transaktion, gibts für den Quantencomputer auch keinen public key mit dem er den private key 'errechnen' kann. Und sollten Hash- Funktionen wie SHA256 in Zukunft 'gebrochen' werden können, dann hätten wir auch weitaus schlimmere Probleme als unseren Bitcoin. SHA256 wird nämlich nicht nur im Bitcoin Netzwerk, sondern auch quasi für alle Zertifikate im Internet verwendet. Ich möchte Solo Minen, wie stehen meine Chancen einen gültigen Block- Hash zu finden? Die Difficulty wird folgendermaßen berechnet: Quote new_difficulty = old_difficulty X (2016 blocks X 10 minutes) / (the time took in minutes to mine the last 2016 blocks) Alle 2016 Blöcke wird ja bekanntlich die Difficulty angepasst: war die durchschnittliche Block- Zeit zu kurz wird sie erhöht, war sie zu lang wird sie reduziert. Die Difficulty wird angepasst indem der target_value (256 bit Nummer) im Block Header entsprechend angepasst wird: Quote new_target = old_target / new_difficulty Je kleiner der target value (mehr führende Nullen) desto schwieriger einen gültigen Block- Hash zu finden. Die Aufgabe der Miner ist es ja einen Block- Hash zu finden der kleiner oder gleich dem Ziel Wert ist. Wenn man sich nun z.B. 10 PH/s mietet und die aktuelle Difficulty bei z.B. 91 EH/s liegt 1 Exa- Hash sind 10^18 H/s 1 Peta- Hash sind 10^15 H/s ist man im Besitz von ... (91 * 10^18) / (10 * 10^15) = 9100 ... 1/9100 des gesamten Netzwerks bei 10 Blocks / Minute = 6 Blocks / Stunde = 144 Blocks / Tag = 1008 Blocks/Woche muss man im Schnitt 63,19 Tage warten, bis man einen gültigen Block- Hash findet. Sinkt die Hashrate weiter ist der Anteil an der Gesamt- Hashrate des Netzwerks größer und man findet im Schnitt früher einen gültigen Block- Hash. Die Difficulty regelt nur, dass im Schnitt alle 10 Minuten ein Block gefunden wird. >> Als zusätzliche Lektüre möchte ich noch auf die Liste volkstümlicher Bitcoin Irrtümer - FAQ von qwk verweisen. << Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.
Hinweis: Dein Beitrag muss vom Moderator freigeschaltet werden, bevor er sichtbar wird.