Glossar / Adressen und Schlüssel
P2PKH-Adresse
Auch bekannt als Pay-to-Public-Key-Hash, P2PKH-Ausgabe.
- Was ist P2PKH-Adresse?
- P2PKH ist der Ausgabetyp, der Bitcoin an einen 20 Byte langen Hash eines öffentlichen Schlüssels bindet, sodass der Schlüssel selbst bis zum Moment der Ausgabe verborgen bleibt.
Pay to public key hash ist das Skriptmuster hinter jeder Adresse, die mit 1 beginnt. Ihr Sperrskript ist genau 25 Byte lang und führt fünf Operationen aus, wenn die Bitcoin bewegt werden. Weil die Ausgabe einen Fingerabdruck statt des Schlüssels festschreibt, verrät eine nicht ausgegebene P2PKH-Ausgabe einem Beobachter nichts über den öffentlichen Schlüssel dahinter.
Wie es funktioniert
Eine P2PKH-Ausgabe trägt ein einziges Sperrskript, immer in derselben Form: OP_DUP OP_HASH160 <20-Byte-Hash> OP_EQUALVERIFY OP_CHECKSIG. Dieser 20 Byte lange Hash ist HASH160, also RIPEMD-160 angewendet auf den SHA-256 des komprimierten öffentlichen Schlüssels, und so wird aus einem 33 Byte langen Schlüssel eine 20 Byte lange Bindung.
Das Ausgeben liefert zwei Elemente im scriptSig der Eingabe: eine Signatur, dann den öffentlichen Schlüssel. Die Ausführung läuft der Reihe nach ab. OP_DUP kopiert den Schlüssel, OP_HASH160 reduziert die Kopie auf 20 Byte, OP_EQUALVERIFY vergleicht sie mit dem festgeschriebenen Wert und bricht ab, wenn sie sich unterscheiden, und OP_CHECKSIG prüft die Signatur gegen die Transaktion. Beide Prüfungen müssen bestehen; wenn eine fehlschlägt, wird die gesamte Transaktion ungültig, nicht nur diese Eingabe.
Die Größen ergeben sich aus dem Aufbau. Eine P2PKH-Ausgabe kostet 34 Byte auf der Chain, bestehend aus einem 8 Byte langen Betrag, einer 1 Byte langen Länge und dem 25 Byte langen Skript. Eine Eingabe kostet ungefähr 148 vbytes, weil eine DER-kodierte ECDSA-Signatur 71 bis 72 Byte umfasst, der komprimierte Schlüssel 33 weitere hinzufügt und all das außerhalb des Witness liegt, wo jedes Byte vierfach gewichtet wird.
Wo sie vorkommt
Jede Adresse, die mit 1 beginnt, ist eine P2PKH-Adresse, was die meisten Bitcoin abdeckt, die vor der Aktivierung von SegWit bei Block 481.824 im August 2017 bewegt wurden. Block-Explorer kennzeichnen den Typ an jeder Ausgabe, sodass Sie prüfen können, was Sie vor sich haben, ohne etwas zu dekodieren.
Das Detail, das es mitzunehmen lohnt, ist der Zeitpunkt, ab dem Ihr öffentlicher Schlüssel öffentlich wird. Bis Sie ausgeben, hält die Chain nur den Hash. Das erste Ausgeben veröffentlicht den Schlüssel im scriptSig, dauerhaft. Wenn Sie diese Adresse danach wiederverwenden, steht jedes spätere Guthaben hinter einem Schlüssel, der bereits für alle sichtbar ist, was eine Schutzschicht entfernt, die Sie nichts gekostet hat. Das ist sofort ein Datenschutzproblem, und es ist der Grund, warum die langjährige Diskussion über künftige Angriffe auf die Kryptografie elliptischer Kurven auf wiederverwendete und bereits ausgegebene Adressen zielt und nicht auf neue.
Praktisch: Lassen Sie sich von Ihrer Wallet für jede Zahlung eine neue Empfangsadresse geben, und lassen Sie auch das Wechselgeld an eine neue Adresse gehen. Moderne Software macht beides standardmäßig.
P2PKH-Adresse vs. P2WPKH
P2PKH und P2WPKH schreiben dasselbe fest und kosten sehr unterschiedliche Beträge. Beide binden Bitcoin an einen 20 Byte langen HASH160 eines einzelnen komprimierten öffentlichen Schlüssels, und beide werden durch eine Signatur dieses Schlüssels entsperrt. Was sie trennt, ist, wo die Entsperrdaten geschrieben werden. P2PKH hält die Signatur und den Schlüssel im scriptSig, gezählt mit vier Gewichtseinheiten pro Byte; P2WPKH verschiebt sie in den Witness, gezählt mit einer. Deshalb kann dasselbe Geheimnis eine Adresse mit 1 und eine bc1q-Adresse erzeugen, die völlig unterschiedlich aussehen, Bitcoin unabhängig voneinander halten und sich um mehr als den Faktor zwei darin unterscheiden, was ihre Leerung kostet.