P2SH- oder Pay-to-Script-Hash-Adressen sind eine spezielle Art von Adressen in Bitcoin, die es Ihnen ermöglicht, Adressen zu erstellen, die Transaktionen empfangen oder senden können, bei denen eine Reihe von Anweisungen erfüllt werden müssen, um die in diesen Adressen enthaltenen Guthaben freizugeben .
El Pay-to-ScriptHashoder auch bekannt als P2SH, ein Skriptformat, das im Netzwerk verwendet wird Bitcoin Dies ermöglicht es, die Bitcoins im Hash des Skripts (einen Teil) zu sperren und dann das ursprüngliche Skript (vollständig) bereitzustellen, wenn die Bitcoins zum Zeitpunkt der Durchführung einer Transaktion entsperrt werden.
Mit dieser Funktion ist es möglich, benutzerdefinierte Einlösungsskripte zu erstellen, die problemlos mit anderen Benutzern geteilt werden können. Das heißt, Sie können Adressen oder Transaktionen mit unkonventioneller Programmierung erstellen. Und diese können nur freigeschaltet werden, indem eine Reihe vorab festgelegter Bedingungen erfüllt werden.
Seit 2012 haben Bitcoin und andere Kryptowährungen das P2SH-Format in viele ihrer Adressen integriert. Dadurch können Transaktionen durchgeführt werden, die an einen Skript-Hash statt an einen Public-Key-Hash gesendet werden. Das heißt, Transaktionen werden an eine Adresse gesendet, die mit 3 beginnt, statt an eine, die mit 1 beginnt (ECDSA). Somit In diesem Format kodierte Adressen stellen den kodierten Hash eines Skripts dar und nicht das eines öffentlichen ECDSA-Schlüssels.
Aufgrund dieser Eigenschaft werden Adressen im P2SH-Format im Allgemeinen zur Durchführung von Transaktionen über verwendet Adressen mit mehreren Signaturen. Obwohl dies nicht die einzige Verwendung ist. Mit P2SH können Sie Adressen konfigurieren, die ein Skript darstellen können, durch das andere Arten von Transaktionen codiert werden. Mit P2SH kann ein Benutzer beispielsweise seine Bitcoins auf viele mögliche oder ungewöhnliche Arten an eine sichere Adresse senden, ohne zu wissen, wie die Sicherheit konfiguriert wurde. Während der Benutzer, der die Transaktion erhält, möglicherweise bestimmte Bedingungen oder spezielle Anweisungen erfüllen muss, um die Transaktion freizuschalten.
Beispiel einer P2SH-Transaktion
Eine P2SH-Transaktion funktioniert, weil die scriptPubKey Es enthält einen Hash, der entsperrt werden muss, um die Zahlung der gesperrten Bitcoins freizugeben. Erstens befindet sich das Quellskript zum Entsperren der Transaktion (Einlöseskript) in der scriptSig der Transaktion.
Hier können wir deutlich erkennen, dass das scriptSig eine Adresse erwähnt MuSig oder Multisignatur vom Typ (2 von 3). Darin sehen wir drei Schlüssel (die Schlüssel im Bild), zwei Unterschriften (der Teilnehmer der Transaktion) und die OP_CODE (Operationscode), OP_CHECKMULTISIG. Dieser Teil des Transaktionsskripts überprüft, ob die darin enthaltenen Signaturen und Schlüssel in der Lage sind, den Vorgang zu entsperren.
Stellen Sie also sicher, dass mindestens zwei der drei autorisierten Personen die Transaktion durchführen. Sobald das Skript dies überprüft hat, können wir sicher sein, dass wir das Bitcoin-Entsperrskript in unserem Besitz haben und fahren mit dem zweiten Teil fort.
Im zweiten Teil sehen wir, wie der scriptPubKey einer P2SH-Transaktion die folgende Struktur hat:
Diese OP_CODEs sagen uns, dass das PubKey-Skript nur dann entsperrt wird, wenn wir nachweisen können, dass wir über das Quellskript der Transaktion verfügen (das im Sig-Skript überprüfte Einlöseskript). Dazu müssen wir das Ergebnis dieses Skripts nehmen und die OP_HASH160-Operation ausführen. Wenden Sie also einen Hash auf das Skript an SHA-256 und dann ein RIPEMD-160. Das Ergebnis wird mit dem „Hash-Skript“ innerhalb des PubKey-Skripts verglichen (dieses unter Verwendung von OP_EQUAL) und wenn das Ergebnis identisch ist, haben wir unsere Bitcoins erfolgreich entsperrt.
Implementierung des P2SH-Formats in Bitcoin-Adressen
BIP-0013
El Pay-to-ScriptHash-Adressformat wurde ursprünglich in der eingeführt BIP 13 entworfen von Gavin Andresen. Dort wird ein neues Format für Bitcoin-Adressen beschrieben, das komplexe beliebige Transaktionen unterstützen kann.
In diesem BIP beschreibt Andressen, dass dieses neue Format für Bitcoin-Adressen eine feste Länge von 20 Bytes verwenden wird. Stellt den Hash des Skripts dar, über das Kryptowährungen ausgetauscht werden können. Und es kann einfach verwendet und über einen QR-Code gescannt oder schnell kopiert und eingefügt werden, um die gewünschte Transaktion durchzuführen.
Ebenso beschreibt Andresen, dass die Funktion in den ersten 4 Bytes der Bytefolge integriert ist Adressprüfsumme, was die Infrastruktur und Sicherheit des Bitcoin-Netzwerks stärkt. Dadurch wird die Implementierung einer viel sichereren, optimaleren und effizienteren Verifizierungsmethode ermöglicht, als einfach auf SHA-256 zu kürzen. Gleichzeitig wird für jede im Netzwerk erstellte Adresse eine eigene Identität hinzugefügt.
BIP-0016
Ebenso im BIP 16, das einige Monate nach BIP 13 von angekündigt wurde Gavin Andresen, P2SH wird als Soft Fork des Bitcoin-Protokolls beschrieben, das so konzipiert ist, dass P2SH-Adressen als neuer Standard-Transaktionstyp etabliert werden können. Ziel ist eine Vereinfachung der Verwendung von Skripten bei jeder Art von Transaktion, egal wie komplex sie auch sein mag.
BIP 16 zielt zusammen mit BIP 13 darauf ab, die Änderungen zu minimieren, die an der unterstützenden Infrastruktur des Bitcoin-Netzwerks vorgenommen werden müssen. Erleichtert das Teilen von Blockierungsskripten mit anderen Benutzern, unabhängig davon, wie komplex diese Skripte sind.
Wenn Sie beispielsweise vor der Implementierung von P2SH ein komplexes Sperrskript zu Ihren Bitcoins hinzufügen wollten, mussten Sie das gesamte Sperrskript mit dem Benutzer teilen, der eine Überweisung an Sie vornimmt. Aber mit der Einführung von P2SH ist es nun möglich, diesem Benutzer nur einen Teil des Sperrskripts zu geben, anstatt die gesamte Sequenz. Das heißt, statt des gesamten Skripts kann nur ein Hash des Skripts übermittelt werden.
Vorteile der P2SH-Implementierung
Adressen mit mehreren Signaturen
Die Aktivierung von P2SH ermöglicht Benutzern des Bitcoin-Systems, Transaktionen an Adressen mit mehreren Signaturen durchzuführen oder zu empfangen. Tatsächlich ist dies die bekannteste Anwendung für das P2SH-Format. Da Adressen im P2SH-Format so konzipiert sind, dass sie einen Satz von Signaturen unterstützen, der gleich oder kleiner als die Anzahl der privaten Schlüssel ist, die mit ihnen verknüpft oder verknüpft sind. Das heißt, in einer Adresse mit mehreren Signaturen, die über 3 Schlüssel verfügt, können die 3 Schlüssel die Unterzeichner sein, oder, falls dies nicht möglich ist, nur 2 oder 1 von ihnen.
Außerdem Bitcoin-Adressen, die das P2SH-Format verwenden, sind leicht zu identifizieren, da sie mit der Nummer 3 beginnen. Obwohl es häufig zum Erstellen von Adressen mit mehreren Signaturen verwendet wird, bedeutet die Tatsache, dass eine Adresse mit dieser Nummer beginnt, nicht immer, dass es sich um eine Adresse mit mehreren Signaturen handelt. Eine Adresse, die mit der Nummer 3 beginnt, ist immer eine P2SH-Adresse, aber nicht immer eine Adresse mit mehreren Signaturen.
Sicherheit und Privatsphäre
Über das P2SH-Format kann ein Benutzer jedes Skript finanzieren, ohne zu wissen, welche Ausgabenbedingungen mit diesem Skript verknüpft sind. Das heißt, der Benutzer kann die mit einer Transaktion verbundenen Skripte senden oder teilen, ohne teilweise oder vollständig Kenntnis von der Konfiguration dieser Bedingungen oder Sicherheitsanweisungen zu haben.
Als Absender darf der Nutzer daher nur die Transaktionen, die er durchführen möchte, an die P2SH-Adresse senden. Sie müssen nicht wissen, wofür das von Ihnen überwiesene Geld verwendet wird. Als Empfänger oder Empfänger muss der Benutzer jedoch die mit dieser Transaktion verbundenen Ausgabenbedingungen kennen. Dies kann zwischen der Notwendigkeit einer Mehrfachsignatur, eines Passworts oder Ähnlichem variieren, um auf die Kryptowährungen zugreifen zu können, die Ihnen zugesandt wurden.
Wenn das P2SH-Blockierungsskript nur einen Hash des Skripts enthält, ist es ebenfalls unmöglich zu wissen, von welcher Art von Skript dieser Hash stammt. Dies macht es für einen Benutzer unmöglich zu wissen, ob eine Transaktion von einer bestimmten Adresse oder von einer Adresse mit mehreren Signaturen stammt.
Kleinere nicht ausgegebene Ausgaben
Da alle nicht ausgegebenen Ausgaben bzw UTXOs Da die Anzahl der Bitcoins im RAM-Speicher der Knoten gespeichert ist, ist es wichtig, diesen Speicherplatz einzusparen. Durch die Verwendung von P2SH-Blockierungsskripten mit kleineren Sequenzen benötigen die UTXOs daher weniger Speicherplatz zum Speichern, wodurch die Knoten rechnerisch effizienter arbeiten und bei der Validierung von Netzwerktransaktionen agiler und kompetenter arbeiten können.
Niedrigere Provisionssätze
Da die in Bitcoin erhobenen Provisionsgebühren nicht von den übertragenen Beträgen, sondern von der Größe der Transaktionen abhängen, ermöglicht ein Skript-Hash mit einer kürzeren Länge dem Absender einer Transaktion, seine Gelder ohne dies an P2SH-Adressen senden zu müssen müssen hohe Provisionen zahlen. Dies würde auch bei Verwendung der vollständigen Skripte der Fall sein.
Obwohl dies heute möglicherweise kein ernstes Problem darstellt, könnte es in Zukunft ein ernstes Problem sein. wenn die Mining-Belohnungen reduziert werden und die Transaktionsprovisionssätze für Knoten beibehalten werden.
SegWit
Adressen im P2SH-Format sind mit beiden kompatibel SegWit wie bei denen, die es nicht sind. So können Benutzer ihre Gelder problemlos senden und Transaktionen in beiden Wallets durchführen.
Nachteile der P2SH-Implementierung
Die Wahrheit ist, dass P2SH nur sehr wenige Nachteile oder Einschränkungen aufweist. Da P2SH einige Zeit nach der Entwicklung der ursprünglichen Bitcoin-Skripte implementiert wurde, hatten die Entwickler die Möglichkeit, die zu diesem Zeitpunkt im Netzwerk vorhandenen Einschränkungen zu korrigieren. Die Einschränkungen von P2SH sind jedoch:
Datengröße
P2SH nimmt mehr Platz innerhalb der Blockchain ein. Dies kann zu einer Überlastung führen und die Betriebskapazität des Netzwerks beeinträchtigen. Dies liegt daran, dass beim Sperren von Bitcoins in P2SH 25 weitere Bytes zum ursprünglichen Skript hinzugefügt werden, sodass ein 2-aus-3-Multisignatur-Skript mit P2SH und 278 Bytes übrig bleibt. Im Vergleich zu den 253 Bytes, die das gleiche 2-von-3-Multisignaturskript mit P2MS hätte.