Schritt für Schritt - wie funktioniert das Senden von 1 Bitcoin?

Ich lese seit einigen Wochen darüber, wie BitCoin funktioniert – und ich versuche, unter der Haube zu verstehen, wie die Kryptografie funktioniert.

Also werde ich erklären, was ich im Moment weiß - und wenn jemand es für mich klären könnte? Oder stellen Sie Links zu Artikeln bereit, die es etwas besser erklären (ich habe die ursprüngliche bitcoin.pdf gelesen, aber sie ist etwas vage).

Szenario:

Ich habe eine Adresse (pk, sk).

Ich habe eine frühere Transaktion, die 1 Bitcoin enthält.

Ich erstelle eine neue Adresse (pk', sk'), an die ich auch die Bitcoin senden möchte.

Ich hash den neuen öffentlichen Schlüssel pk' mit der vorherigen Transaktion tx, so dass hash(pk', tx) = h1.

Ich signiere die gehashte Transaktion h1 mit meinem geheimen Schlüssel und etwas 'Zufälligkeit' r. Zeichen"sk"(h1, r)

Dann – das wird ausgestrahlt und von einem Bitcoin-Miner in einen Block gesteckt?


Wenn ich zwei 0,5-Bitcoins an pk' senden würde, würde ich Folgendes tun ...

tx1 und tx2 sind mit 0,5 Bitcoins verbunden.

Ich hash dann tx1 und tx2 mit dem neuen öffentlichen Schlüssel pk', so dass hash(tx1, pk') = h1 und hash(tx2, pk') = h2.

Ich signiere dann diese beiden Hashes mit der folgenden Funktion ... Sign"sk"(h1, h2, r) oder wäre es Sign"sk"(h1,r), Sign"sk"(h2,r'). (unterschiedliche Zufälligkeit für jede Signatur)


Dies mag eine dumme Frage sein, aber ich fand es schwierig, Klarheit darüber zu bekommen, wie es funktioniert. Ich verstehe auch, dass einige Zeichen (wie i und 0) nicht im Hash enthalten sind - bezieht sich dies auf die Basis 58?

Antworten (1)

Sie würden es wahrscheinlich hilfreich finden, die technischen Artikel im Bitcoin-Wiki zu lesen. Hier sind einige Ansatzpunkte basierend auf Ihren Fragen.

https://en.bitcoin.it/wiki/Adresse

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

https://en.bitcoin.it/wiki/Script

https://en.bitcoin.it/wiki/Network

https://en.bitcoin.it/wiki/Block

Ein Konzept, das Sie nicht erwähnt haben, das aber entscheidend ist, um zu verstehen, wie es auf niedriger Ebene funktioniert, ist die Tatsache, dass Transaktionen durch Ausführen von Skripten verifiziert werden (siehe Link oben).

Übrigens scheinen Sie dem Verständnis ziemlich nahe zu sein ... Sie sind sich jedoch nicht sicher über die "Zufälligkeit" oder "einige Zeichen, die nicht im Hash enthalten sind".
Ich habe ein Papier namens CommitCoin eprint.iacr.org/2011/677.pdf gelesen – es bezieht sich auf die Fähigkeit, eine Verpflichtung zu einer Nachricht nachzuweisen, indem es dem Verifizierer erlaubt, den geheimen Schlüssel aus zwei Transaktionen zu extrahieren – es tut dies unter Verwendung desselben Zufälligkeit zweimal in einer Transaktion. Ich habe versucht herauszufinden, wo diese "Zufälligkeit" in Wirklichkeit ist - aber ich kann sie anscheinend nicht finden. Dem Hash fehlen einige Zeichen, die ich unter en.bitcoin.it/wiki/Address#What.27s_in_an_address gefunden habe. Ich werde mir diese Links jetzt ansehen, danke rentfree für die Antwort
Verwenden der gleichen Zufälligkeit und des gleichen geheimen Schlüssels in zwei separaten Transaktionen*****
@RentFree Der von Bitcoin verwendete ECDSA-Signaturalgorithmus erfordert die Verwendung einer Zufallszahl in jeder Signatur. Es gibt mögliche Angriffe, wenn sie nicht zufällig sind. Außerdem verwendet die Base58-Codierung der Hasen des öffentlichen Schlüssels einige Zeichen nicht, genauso wie die Basis 10 nicht Aals Zahl verwendet wird, wird die Basis 58 nicht verwendet i(weil sie zu leicht mit verwechselt werden kann 1).