Frage 1:
Wenn ich Bitcoin ausgeben möchte -also eine Transaktion erzeuge -, generiert dann mein Wallettool immer einen neuen Private Key oder ist dieser Private Key immer jener, der bei der Einrichtung des Wallets erzeugt wurde? Also nach dem Motto: Einmal Private Key, immer der gleiche Private Key?
Frage 2:
In welchem mathematischen Verhältnis steht der Private Key zum Public Key? Oder anders: Wie nennt sich das kryptografische Verfahren? Ist es SHA 256 oder das sog. elyptische Verfahren mit dem der Private Key in den Public Key generiert wird?
Frage 3:
Wie wird mittels Private Key im Hintergrund die digitale Signatur erstellt, wenn ich Bitcoin ausgeben möchte? Wie nennt sich dieses mathematische Verfahren, welches dafür genutzt wird bzw. was die Signatur erzeugt.
Frage 4:
Kennt meine Wallet meinen Unspent Transaktion Output oder müssen das die Fullnodes im Rahmen der Verifizierung meiner gesendeten Transaktion erst prüfen. , da nur diese Zugang zur auf der Blockchain gespeicherten UTXO Datenbank haben?
Frage 5:
Ist es richtig wenn ich folgendes schreibe? An meinem Public Key (oder ist richtig - an meinen Bitcoin-Adressen- ?) kleben sozusagen alle früheren Transaktionen, die einen UTXO erzeugt haben. (Ich habe Coins erhalten-Transaktionen)
Wenn dieser Satz richtig ist, dann müsste das im Umkehrschluss meine Frage 1 beantworten. Denn dann müsste mein Private Key immer der selbe sein, wenn daraus mein Public Key gehasht wird. Richtig?
Deine öffentlichen Schlüssel „sind/enthalten“ deine UTXO. Dein Wallet kennt diese nur, wenn du die Infos von einer Node abfragst.
Zu Frage 5:
Urgh, jetzt muss ich es doch aufschreiben
Ist ein bisschen vereinfacht.
Zuerst wird dein privater Schlüssel generiert. Er hat 256 Bit und dient als Geheimnis, das zur Signierung von Transaktionen verwendet wird.
Aus deinem privaten Schlüssel wird mit ECC, also deiner Kurve, der öffentliche Schlüssel abgeleitet. Der öffentliche Schlüssel ist eine Koordinate auf der elliptischen Kurve und ist 512 Bit lang.
Um den öffentlichen Schlüssel in eine Adresse umzuwandeln, wird mit SHA 256 gehasht. Danach wird nochmal mit RIPEMD-160 gehasht. Aus dem Hash kommt dann die Adresse.
Vielen Dank an GBC und SOAPP
Bin echt froh, dass es diese Community gibt.
Ich hoffe ich kann eines Tages auch mal eine Gegenleistung erbringen.
Bringt mich wieder ein Stück weiter es endlich zu verstehen.
Noch zu 2. u. 3. als Grundlage asymmetrische Verschlüsselung. Der Qualität deiner Fragen nach, weißt du das wahrscheinlich schon, deshalb eher der Vollständigkeit halber.
Das ist so zu verstehen, dass es zwei Funktionen gibt.
Mit dem öffentlichen Schlüssel kann man Klartext verschlüsseln, den nur der Inhaber des privaten Schlüssels wieder entschlüsseln kann. Die Funktion lautet also: plaintext -(pub)-> encrypted -(prv)-> plaintext.
Umgekehrt kann der Inhaber des privaten Schlüssels Nachrichten signieren, und jeder kann mit dem öffentlichen Schlüssel überprüfen, ob die Nachricht tatsächlich mit dem zum öffentlichen Schlüssel passenden privaten Schlüssel signiert wurde. Hier ist die Funktion weniger intuitiv: plaintext -(prv)-> signature, sowie [plaintext, signature] -(pub)-> true|false
Danke Makowski.
Ich würde jetzt gerne einmal versuchen es in meinen Worten zu formulieren, wenn ich darf.
Perspektive: Ich möchte 0.5 Bitcoin an eine Walletadresse versenden:
Ich öffne das Wallet Tool
Wallet visualisiert meine BTC Bestand, indem es sich sinnbildlich frühere Transaktionen bei denen mein Public Key im Output stand aus dem Netzwerk zieht (UTXO) Datenbank
Ich klicke auf BTC senden, gebe den BTC Betrag 0.5 ein und füge die Wallet Adresse des Empfängers ein. Gegebenenfalls noch die Fee angleichen.
Dann klicke ich auf senden
Meine Wallet signiert diese Transaktion mit meinem Private Key im Hintergrund.
Diese erfolgt so: Transaktions-ID oder Hash jener Transaktion mit der ich die BTC erhalten habe + Mein Public Key werden zur Signatur gehasht. Sagen wir: SIG ist dann: 23234532123456234
Transaktion erreicht alle Fullnodes (habe noch keine eigene)
Das Fullnode Prüfschema muss ich mir noch anschauen
Die Ablaufbeschreibung mag nicht perfekt sein.
Oder habe ich es total verkackt und quasi nichts verstanden? Wenn der Ablauf falsch ist, wie würde man den Ablauf richtig beschreiben?
Genaugenommen können die Bedingungen, die zur Ausgabe berechtigen vielseitig sein. Das ist im Skript definiert, welches Teil der Transaktion ist. Und ja, das Wallet muss dann überprüfen, ob es die Ausgabebedingung erfüllen kann. Public Key Hash(!) ist eine der möglichen Bedingungen.
Im Großen und Ganzen ist das Korrekt.
Wenn du tiefer einsteigen willst, empfehle ich: