Wie BitSignature in Bitcoin funktioniert

In diesem Artikel werden wir uns ansehen, wie die Mehrfachsignatur im Bitcoin-Protokoll funktioniert. Bitte beachten Sie, dass diese Mechanismen in anderen Kryptowährungen und digitalen Währungen unterschiedlich implementiert werden können - dies hängt vom Transaktionsmodell ab. Wir werden eine Definition der Mehrfachsignatur geben, ihre Struktur anhand eines Beispiels einer Transaktion schematisch analysieren, Optionen für ihre Verwendung und Vorsichtsmaßnahmen bei der Arbeit damit berücksichtigen. Wir werden versuchen, das Thema der vorgeschlagenen Verbesserungen, P2SH, offen zu offenbaren, und im Diagramm werden wir den Mechanismus zum Senden einer Zahlung an eine Adresse mit mehreren Signaturen analysieren. Wir glauben, dass das präsentierte Material für Leser von Interesse sein wird, deren Aktivität oder Interessenbereich sich auf digitale Währungen bezieht.

Multisignaturadresse


Die Multisignaturadresse (kurz Multisig-Adresse) ist eine Bitcoin-Adresse, an die mehrere Paare von ECDSA-Schlüsseln gleichzeitig angehängt sind. Jedes Paar besteht aus privaten und öffentlichen Schlüsseln. Kombinationsmuster, nach denen diese Schlüssel verwendet werden können, können unterschiedlich sein. Darüber hinaus können Bedingungen festgelegt werden, unter denen mehrere Unterschriften erforderlich sind, um Münzen von der Adresse auszugeben.

Bitcoin-Transaktion mit Mehrfachsignatur


Im Detail kann es schematisch angezeigt werden. Im Moment genügt es, sich im übertragenen Sinne vorzustellen, dass eine Multisignaturadresse durch gleichzeitiges Hashing mehrerer verketteter öffentlicher Schlüssel gebildet wird. Wir werden dies etwas genauer betrachten. Das Diagramm zeigt eine Transaktion, die mit einer Multisignaturadresse ausgegeben wird.

Bild

Grau zeigt den Titelbereich an. Es enthält zwei Felder. Zwei Eingänge werden blau und zwei Ausgänge grün angezeigt. Der erste Eintrag enthält die ausgefüllten Felder: Der Hash-Wert der vorherigen Transaktion wird geschrieben, der die Münzdaten, die Ausgangsnummer usw. ausgibt. Das Feld scriptSig enthält den öffentlichen Schlüssel und die Signatur, die für eine normale Transaktion typisch sind.

Achten Sie auf die zweite Eingabe der Transaktion. Das Feld scriptSig enthält eine weitere Kombination von Daten: Es werden zwei öffentliche Schlüssel und zwei Signaturen aufgelistet. Sie müssen jeweils durch diese öffentlichen Schlüssel überprüft werden. Dies ist die Transaktionseingabe, die Münzen mit einer Multisignaturadresse ausgibt. So wird der Eigentumsnachweis für Münzen aussehen.

Schlüsselkombinationsoptionen


Bei Verwendung der Multisignaturadresse gibt es verschiedene Tastenkombinationen. Die am häufigsten verwendeten Optionen sind 2 von 2, 2 von 3 und 3 von 3. Die maximal mögliche Option ist 15 von 15.

Die einfachste Kombination ist 2 von 2. Dies impliziert, dass es eine Multisignaturadresse gibt, an die zwei Schlüsselpaare gebunden sind. Tatsächlich werden zwei öffentliche Schlüssel in einer Reihe gehasht und eine Adresse wird empfangen. Um Münzen von dieser Adresse auszugeben, müssen Sie zwei Signaturen bereitstellen, die durch zwei verfügbare öffentliche Schlüssel überprüft werden, deren Verkettung und Hashing in der richtigen Reihenfolge den gleichen Wert der Adresse ergeben sollten. Zusammenfassend sind zwei Schlüssel vorinstalliert, und Sie benötigen zwei Signaturen, die jeweils von diesen Schlüsseln überprüft werden.

Die Verwendung der Multisignaturadresse 2-von-3 impliziert, dass zwei der drei vordefinierten Schlüssel verwendet werden müssen, um die beiden als Eigentumsnachweis für die Münzen vorgelegten Signaturen zu überprüfen. Mit anderen Worten, um Münzen auszugeben, müssen Sie zwei Signaturen bereitstellen, die von zwei öffentlichen Schlüsseln aus den vordefinierten drei überprüft werden.

Die Kombination von 3 von 3 erfordert, wie Sie bereits verstanden haben, drei Signaturen, die von drei vorinstallierten Schlüsseln überprüft werden. Das Maximum in Bezug auf die Anzahl der erforderlichen Signaturen und öffentlichen Schlüssel ist das 15-von-15-Schema.

Lassen Sie uns die Optionen für die Verwendung dieser Kombinationen durchgehen.

2 von 2


Stellen Sie sich vor, ein Ehemann und eine Ehefrau wollten ein gemeinsames Budget aufrechterhalten.

Bild

Sie sind sich einig, dass nur mit Zustimmung jedes Einzelnen Mittel aus dem Haushalt für bestimmte Bedürfnisse ausgegeben werden. Mit Bitcoin kann dies ganz einfach implementiert werden. Sie erstellen eine Multisignaturadresse nach diesem Schema, wobei die Frau einen Schlüssel und der Ehemann den zweiten steuert. Dann erhält die Familie das gesamte Einkommen an solchen Adressen, und Geld kann nur im gegenseitigen Einvernehmen ausgegeben werden.

Wenn Sie Ihre Frage zu dem Szenario vorhersagen, in dem sich Ehemann und Ehefrau nicht einig sind, stellen Sie sich vor, dass die Ehefrau es für notwendig hält, eine Waschmaschine zu kaufen, weil sie es satt hat, mit den Händen zu waschen, und der Ehemann glaubt, dass dies keine so harte Arbeit ist und es zweckmäßiger ist, alle Münzen dafür auszugeben das neueste PlayStation-Modell und verbringe deine Freizeit auf diese Weise. Die Frau beleidigt ihren Ehemann und isst ein Stück Papier mit ihrem privaten Schlüssel, was Ausgaben von dieser Adresse überhaupt unmöglich macht.

Wie kann eine solche Situation vermieden und Münzen vor dem endgültigen Verlust von Münzen geschützt werden?

Es ist möglich, eine Transaktion zu erstellen, bei der alle Gelder von der gewünschten Adresse ausgegeben werden, obwohl der Betrag nicht im Voraus bekannt ist. Die Eingabe ist nicht der Betrag, sondern ein Link zur Transaktion, von der aus diese Münzen ausgegeben werden können. Es gibt so etwas wie einen Hash-Typ , der mit einer Transaktionssignatur abgedeckt werden kann. Sie können im Voraus eine Signatur erstellen und einige Transaktionsdaten, z. B. Eingaben, können später ersetzt werden. Auf diese Weise können Sie eine Transaktion erstellen, die Münzen aus einer noch nicht vorhandenen Transaktion ausgibt, und sie später anwenden, dh wenn sie benötigt wird.

Darüber hinaus können Sie diese Transaktion mit einer LockTime-Einschränkung versehen. Sie können die Transaktion nicht sofort bestätigen, sondern für einige Zeit verschieben. So können Ehemann und Ehefrau unmittelbar nach dem Erstellen einer Multisignaturadresse, noch bevor Zahlungen eingehen, zwei LockTime-Transaktionen erstellen, bei denen alle zukünftigen Münzen an die üblichen Adressen des Ehemanns und der Ehefrau umgeleitet werden, die sie unabhängig voneinander steuern. Gleichzeitig werden Transaktionen zurückgestellt und können beispielsweise erst nach zwei Monaten bestätigt werden. Diese Transaktionen können auf Papier gedruckt und einzeln in einem Safe aufbewahrt werden. Wenn eine Situation auftritt, in der sich die Münzen auf dem Kontostand der Multisignaturadresse befinden und die Schlüssel verloren gehen (einer oder beide), werden die Münzen eingefroren. Es gibt jedoch eine LockTime-Transaktion. Jeder, der eine solche Transaktion veröffentlicht, kann diese Gelder an eine gültige externe Adresse abheben. Münzen werden gespeichert. Dies war ein vereinfachtes Beispiel, aber komplexere Mechanismen sind möglich.

2 von 3


Angenommen, es gibt eine Gruppe von Menschen, die ein gemeinsames Budget haben.

Bild

Sie erstellen eine Multisignaturadresse mit drei Schlüsseln, aber zwei Signaturen reichen aus, um die Transaktion zu signieren. Mit Zustimmung der Teilnehmer, aus denen die Mehrheit der Gruppe besteht, können diese Mittel ausgegeben werden. Mit anderen Worten, zwei von drei Teilnehmern können Münzen ausgeben. Dazu reicht es aus, die Transaktion auf das Netzwerk zu verteilen.

Beispiel für einen Brieftaschenservice


Es gibt eine interessantere Möglichkeit, die 2-aus-3-Kombination zu verwenden, und sie wird in den sogenannten Brieftaschendiensten verwendet. Der Brieftaschendienst sollte in diesem Zusammenhang nicht mit der üblichen Bitcoin-Brieftasche verwechselt werden, die der Benutzer unabhängig steuert. Der Dienst bietet keinen vollständigen Speicher für Münzen und besitzt diese nicht, sondern bietet nur Dienste für bequemes Arbeiten.

Wenn Sie sich diese Situation schematisch vorstellen, gehört ein Schlüssel direkt zum Dienst, der zweite wird nur vom Benutzer generiert (und nur er weiß es), der dritte Schlüssel wird ebenfalls vom Benutzer generiert und gespeichert, jedoch separat. Danach werden die diesen persönlichen Schlüsseln entsprechenden öffentlichen Schlüssel berechnet und eine Multisignaturadresse kompiliert. Dort kommen Münzen an und jetzt sind die Ausgabenbedingungen begrenzt.

Bild

Stellen Sie sich vor, wir haben es mit einem bestimmten Webdienst zu tun und Sie können seine Ressource über einen Browser eingeben. Der Browser lädt den Bitcoin-Brieftaschencode herunter, der an dieser Adresse eine Liste der nicht ausgegebenen Münzen erhält, deren Guthaben berechnet und zum Ausgeben bereit ist. Wenn der Benutzer Münzen ausgeben möchte, führt er eine Transaktion direkt im Browser durch und signiert sie mit seiner (einer der erforderlichen) Unterschrift.

Beachten Sie, dass der Benutzer den privaten Schlüssel entweder von seinem Kennwort erhalten kann oder der Schlüssel zufällig generiert, mit dem Kennwort des Benutzers verschlüsselt und im Dienst gespeichert werden kann. Anschließend sendet der Benutzer eine Anfrage an den Dienst, empfängt einen Container mit einem verschlüsselten Schlüssel, entschlüsselt ihn mit seinem Kennwort und hat bereits Zugriff auf seinen privaten Schlüssel.

Wenn ein Benutzer eine Transaktion signiert, wird sie an die Seite des Dienstes gesendet, sodass er die zweite erforderliche Signatur setzt und die Transaktion sendet. Der Dienst verdeutlicht die Notwendigkeit, die Transaktion über den zweiten Authentifizierungskanal zu signieren, dh über einen anderen im Voraus festgelegten Kanal, bei dem es sich um einen Anruf an ein Mobiltelefon, eine SMS, eine E-Mail-Nachricht und andere alternative Kommunikationsmethoden handeln kann (bis zu einem persönlichen Besuch, sofern die Sicherheitsstufe dies erfordert). . Wenn der Dienst sichergestellt hat, dass der registrierte Benutzer die Transaktionssignaturanforderung tatsächlich initiiert, setzt er die fehlende Signatur mit seinem Schlüssel. Danach wird die Transaktion gültig und kann zur Bestätigung an das Netzwerk verteilt werden.

Der dritte Schlüssel wird verwendet, wenn dem Dienst der Dienst verweigert wird. Die Software generiert diesen Schlüssel und bietet an, ihn auf eine für Sie bequeme Weise zu speichern. Der Benutzer bewahrt es normalerweise an einem sicheren Ort auf. Wenn dem Dienst der Dienst verweigert wird, kann der Benutzer die Transaktion mit seinen eigenen Schlüsseln (zweiter und dritter) signieren. Wenn der zweite Schlüssel auf der Serviceseite gespeichert wurde, wird ein geschützter Container mit diesem Schlüssel vorab über einen alternativen Datenkanal an den Benutzer gesendet, beispielsweise per E-Mail. Der Benutzer entschlüsselt den Container mit dem Schlüssel unter Verwendung seines Passworts.

Der Benutzer erhält zwei notwendige private Schlüssel und gibt die spezielle Software ein, die der Dienst im Voraus bereitgestellt hat. Darüber hinaus wird diese Software ohne Teilnahme des Dienstes autonom auf dem Computer des Benutzers ausgeführt. Es ist erwähnenswert, dass diese Software nur in extremen Fällen verwendet werden sollte, wenn der Dienst den Dienst verweigert (d. H. Sie wurde gehackt, beschädigt oder existiert nicht mehr). Anschließend unterschreibt der Benutzer die Transaktion mit seinen Schlüsseln und überweist die Münzen bei Bedarf.

Vorteile von 2-of-3-Wallet-Services


Wir werden näher auf die Vorteile solcher Wallet-Dienste eingehen. Dies ist eine sichere Art der Aufbewahrung, da der Dienst nicht alle erforderlichen Schlüssel besitzt - er besitzt nur einen Teil, was nicht ausreicht, um die Mittel in Besitz zu nehmen. Darüber hinaus haben weder der Dienst selbst noch der Hacker, der ihn knacken kann, Zugang zu Geldern.

Der Vorteil dieses Ansatzes besteht darin, dass der Benutzer keinen sicheren Zugriff auf diesen Dienst haben muss. Es kann ein normales Gerät haben, das mit Viren infiziert oder von Betrügern kontrolliert werden kann, und die Daten können kompromittiert oder ersetzt werden. Es reicht jedoch nicht aus, dass ein Angreifer nur dieses Gerät besitzt, da nur eine von zwei Signaturen von ihm abgerufen werden kann.

Ein weiterer Vorteil besteht darin, dass der Benutzer den Zugriff auf seine Münzen nicht verliert, wenn der Dienst den Dienst verweigert. Dies waren nur einige der möglichen Schemata für die Verwendung von Multisignaturadressen, die für die Datierung ausreichen.

Vorsichtsmaßnahmen für mehrere Signaturen


Und jetzt lohnt es sich, über Vorsichtsmaßnahmen bezüglich der Mehrfachsignatur zu sprechen. Im Fall von 2-of-2 müssen Sie LockTime-Transaktionen erstellen, mit denen blockierte Gelder an eine bestimmte Adresse übertragen werden können. Dies gilt, wenn ein Schlüsselverlust auftritt.

Wenn Sie die Multisignaturadresse 2-von-3 verwenden, ist es sehr wichtig, dass Sie die Schlüssel an einem sicheren Ort aufbewahren. Bei Verlust eines der drei Schlüssel müssen Sie sofort Geld überweisen und dürfen nicht warten, bis 2 der 3 erforderlichen Schlüssel verloren gehen.

Wie Bitcoin Script funktioniert (zum Beispiel)


Um genauer zu verstehen, wie Mehrfachsignaturen funktionieren, müssen wir ein wenig darüber sprechen, wie Bitcoin Script funktioniert: wie die Regeln für das Ausgeben von Münzen festgelegt werden, wie sie erfüllt werden, wie die Regeln beschrieben werden, was Bitcoin Script ist und wie es ausgeführt wird.

Stellen Sie sich ein Beispiel für einen einfachen Fall des Ausgebens von Münzen vor, bei dem es eine reguläre Adresse gibt, der ein Hash eines öffentlichen Schlüssels zugeordnet ist, ein entsprechendes Skript, das die Bedingungen für das Ausgeben festlegt, und ein Skript, das diese Bedingungen erfüllt.

Bild

Im Diagramm links sehen wir den Datenstapel und rechts das Skript selbst. Die ersten beiden Teile der Skriptzeile sind die Signatur und der öffentliche Schlüssel, das sogenannte Entsperrskript, dh das Skript, das in der Eingabe der Transaktion angegeben ist, die Münzen ausgibt. Darauf folgt der Datensatz, der in der Transaktionsausgabe angegeben ist - dies wird als Sperrskript bezeichnet. Mit anderen Worten, hier wird die Verkettung von zwei Skripten vorgestellt: ein Skript zum Entsperren von Münzen und ein Skript zum Sperren von Münzen. Für den Fall, dass die Transaktion bereits vom Netzwerkknoten validiert wird, werden diese beiden Skripte kombiniert, um die Bedingungen für das Ausgeben von Münzen zu überprüfen. Daher steht das Entsperrskript an erster Stelle, gefolgt vom Sperrskript.

Danach erfolgt die sequentielle Ausführung eines vollständigen Satzes von Operanden und Daten. Der Ausführungspunkt wird nacheinander für jeden Operanden und jedes Datenelement ausgeführt. Wenn der Ausführungspunkt auf ein Datenelement trifft, wird es auf den Stapel verschoben. Wie wir im Diagramm sehen, zeigt der Skriptausführungscursor oben die Signaturdaten an, die dann auf den Stapel geschoben werden.

Außerdem zeigt der Ausführungscursor auf den öffentlichen Schlüssel - er wird auch auf den Stapel geschoben.

Der dritte Schritt besteht darin, die Duplizierungsoperation auszuführen, dh die Oberseite des Stapels zu kopieren und diese Daten erneut auf den Stapel zu legen.

Danach wird das Hashing mit der Hash-Funktion Hash-160 durchgeführt. Dies bedeutet, dass die Oberseite des Stapels zuerst vom SHA-2-Algorithmus mit einer Länge von 256 Bit und dann von der RIPEMD-160-Funktion mit einer Länge von 160 Bit gehasht wird. Die Operation ist genau die gleiche wie beim Hashing des öffentlichen Schlüssels und beim Abrufen der Adresse. In der Tat ist es das.

Bild

Wir haben einen Stapel, eine Signatur, einen öffentlichen Schlüssel und einen Hashwert des öffentlichen Schlüssels. Der Skriptausführungscursor zeigt auf die Adresse, die in der Transaktionsausgabe angegeben wurde, dh auf den Hashwert des öffentlichen Schlüssels, der angegeben wurde, als die Münzen an ihn gesendet wurden. Dieses Datenelement wird ebenfalls auf den Stapel gelegt.

Die nächste Operation ist gleich verifizieren.

Bild

Die beiden obersten Elemente des Stapels werden verglichen. Wenn es sich genau um dasselbe Byte handelt, werden diese Daten aus dem Stapel gelöscht, und es wird angenommen, dass die Prüfung erfolgreich war. Danach verbleiben Signatur und öffentlicher Schlüssel auf dem Stapel. Dementsprechend nimmt die Überprüfungssignaturoperation diese beiden Operanden und überprüft die Signatur mit dem öffentlichen Schlüssel. Wenn die Signatur in Bezug auf die Transaktion, die derzeit überprüft wird, korrekt ist, da die Signatur einen Teil der Transaktion abdeckt, müssen Sie den Hashwert entsprechend bestimmten Feldern dieser Transaktion entnehmen. Dies wird durch ein separates Byte der Hash-Typ-Struktur festgelegt, dh ein Hash-Wert wird zusammen mit der Signatur selbst und dem öffentlichen Schlüssel genommen und der Signaturüberprüfungseingabe zugeführt. Wenn die Prüfung korrekt durchgeführt wird, ist das Ergebnis der Prüfung wahr. Dieser Wert wird auf den Stapel verschoben. Damit ist die Ausführung des Skripts abgeschlossen. Daten werden an die aufrufende Funktion übergeben und dort überprüft. Wenn der Stapel wahr ist, war die Überprüfung dieser Transaktionseingabe korrekt. Wenn alle Transaktionseingaben korrekt überprüft wurden, wird die gesamte Transaktion als korrekt betrachtet.

Wir haben gelernt, wie Bitcoin Script funktioniert, um die einfachen Ein- und Ausgaben einer Transaktion zu überprüfen. Jetzt werden wir darüber sprechen, wie Multisignatur organisiert ist und wie sie bei Verwendung von Bitcoin Script funktioniert.

P2SH


Es wurde einmal BIP16 vorgeschlagen, das ein neues Konzept im Bitcoin-Protokoll definiert - den sogenannten Pay-to-Script-Hash (P2SH). Dies ist eine Gelegenheit, die Regeln für das Ausgeben von Münzen nicht in einem offenen Skript festzulegen, in dem Sie Operanden und einige Daten hintereinander schreiben, die dann auf die von uns untersuchte Weise ausgeführt werden, sondern in Form eines Hashwerts aus dem von Ihnen benötigten Skript, dh einer Prüfsumme aus diesen Operanden. Dies ermöglichte es dem Ausstieg aus der Transaktion, große und komplexe Bedingungen für das Ausgeben von Münzen festzulegen, aber der Ausstieg selbst blieb kurz.

Um diese Münzen unter solchen Bedingungen auszugeben, müssen Sie bei der Eingabe der Transaktion die Daten angeben, die diesem Skript entsprechen, und das gesamte Skript, um zu beweisen, dass Sie wissen, welche Bedingungen beim Senden von Münzen festgelegt wurden, damit der Hashwert des Quellenskripts mit den Adressen übereinstimmt, an die Münzen wurden verschickt. Mit anderen Worten, beweisen Sie, dass Sie die Bedingungen kennen und diese Bedingungen erfüllen.

Dieser Vorschlag zur Verbesserung von Bitcoin wurde am 3. Januar 2012 angenommen. In der Tat der Geburtstag von Bitcoin. Jetzt wird es aktiv verwendet, um eine Multisignaturadresse zu implementieren.

Wie funktioniert P2SH?


Schauen wir uns ein Beispiel an, wie das funktioniert. Um eine Transaktion zu erstellen, müssen wir Konzepte wie "Skript einlösen", "Skript sperren" und "Skript entsperren" verstehen.

Skript einlösen enthält die öffentlichen Schlüssel, an die die Multisignaturadresse gebunden wird. In diesem Fall ziehen wir eine Tastenkombination „2-of-5“ in Betracht. Zuerst kommt der Wert 2, das heißt, wir geben an, dass 2 Signaturen erforderlich sind, die durch die entsprechenden öffentlichen Schlüssel überprüft werden. Danach folgen öffentliche Schlüssel, in unserem Fall sind es 5. Als nächstes geben wir den Wert 5 an, da wir 5 öffentliche Schlüssel angegeben haben. Wenn die Daten in umgekehrter Reihenfolge gelesen werden, wird dieser Wert benötigt, um zu verstehen, wie viele Schlüssel Sie lesen müssen. Danach wird die Betriebsprüfungs-Multisignatur angezeigt.

Sperrskript - Ein Skript, das in der Ausgabe einer Transaktion angegeben wird, die für eine Multisignaturadresse bezahlt.Hier wird der Vorgang des Erhaltens eines Hashwerts durchgeführt, mit dem wir uns bereits im Detail vertraut gemacht haben. Als nächstes folgt der Hash-Wert zum Einlösen des Skripts, der 20 Byte belegt. Danach wird eine Operation ausgeführt, um zu überprüfen, ob die Daten mit dem tatsächlichen Hashwert übereinstimmen.

Das Entsperren von Skripten ist eine Verkettung von Skripten an der Eingabe der Transaktion mit Skripten an der Ausgabe der Transaktion, die an diese Adresse gezahlt wurde. Für das Ausgeben von Münzen sind zwei Unterschriften erforderlich, und das vollständige Einlöseskript, das später gehasht und auf Übereinstimmung mit der Adresse überprüft wird, an die die Münzen gesendet wurden. Danach wird das Skript vollständig ausgeführt, auch zur Überprüfung der Mehrfachsignatur.

Es ist wichtig, dass die maximale Größe für jedes der aufgelisteten Skripte begrenzt ist. Dies sind 520 Byte. Diese Anzahl wurde auf der Grundlage berechnet, dass Unlocking Script maximal 15 Signaturen und 15 entsprechende öffentliche Schlüssel sowie mehrere Vorgänge zur Überprüfung dieser Werte aufnehmen kann. Auf diese Weise wurde eine bestimmte Zahl erhalten, die beim Runden 520 Bytes ergab. Es sollte gesagt werden, dass diese Nummer mit der Erwartung erhalten wurde, dass die Multisignaturadresse vom Typ "15 von 15" eine vernünftige Grenze für den praktischen Gebrauch darstellt. Das Einlösen von Skripten bei Verwendung einer großen Anzahl von Signaturen wird sehr umfangreich. Der Benutzer, der die Multisignaturadresse oder andere P2SH-Adressen verwendet, wenn er Münzen von ihnen ausgibt, hat sehr große Transaktionen. Das heisst,Um seine Transaktionen zu bestätigen, muss er hohe Provisionen zahlen.

Vorteile von P2SH


Wir werden die Vorteile von P2SH separat betrachten. Die erste besteht darin, dass solche Adressen mit Base58 in der bekannten Form codiert werden können, wobei ihre Länge 34 Zeichen beträgt. Gemäß BIP13, das die Regeln zum Festlegen des Versionsbytes für von Base58Check codierte Bitcoin-Adressen definiert, beginnt die Adresse mit einem Tripel, dh dort wird ein bestimmtes Versionsbyte eingefügt.

Als Beispiel sehen Sie die P2SH-Adresse.

3P14159f73E4gFr7JterCCQh9QjiTjiZrG

Dies ist möglicherweise keine Multisignaturadresse. Skript einlösen kann nicht nur eine Multisignaturadresse beschreiben, sondern auch andere komplexe Regeln für das Ausgeben von Münzen.

Wir fügen hinzu, dass dies nicht die einzige Möglichkeit ist, Mehrfachsignaturen in Bitcoin zu organisieren. Sie können P2SH nicht verwenden, aber in der Ausgabe, die für die Multisignaturadresse bezahlt, nicht den Hashwert aus dem Skript, sondern das Skript selbst, dh alle öffentlichen Schlüssel direkt in der Ausgabe auflisten und die Multisignaturüberprüfungsoperation festlegen. Wenn Sie jedoch Münzen an diese Adresse senden, geben Sie die öffentlichen Schlüssel sofort bekannt, da diese gemeinfrei sind und in diesem Moment Münzen darauf gespeichert werden.

Ein weiterer Nachteil ist, dass der Absender von Münzen an der Multisignaturadresse eine große Transaktion hat, für die Sie eine große Provision zahlen müssen. Es ist unwahrscheinlich, dass der Absender die Tatsache überbezahlen möchte, dass der Empfänger Multisignatur verwenden möchte. Mit P2SH können Sie Provisionskosten an den Empfänger übertragen. Wenn der Empfänger Münzen an der Multisignaturadresse annehmen möchte, zahlt er selbst für große Transaktionen, was ein fairer Ansatz ist.

Wir fügen hinzu, dass Sie mit P2SH verschiedene Kombinationen solcher Multisignaturen implementieren können (2-of-2, 2-of-3 und andere).
Erwägen Sie schematisch das Senden an eine Multisignaturadresse.

Bild

Angenommen, Alice möchte Bob bezahlen, der nur Multisignaturadressen verwendet. Zu diesem Zweck generiert Bob lokal auf seinem Computer (es kann übrigens eine Art Organisation anstelle von Bob geben) mehrere private Schlüssel und empfängt von ihnen die entsprechenden öffentlichen Schlüssel, die auf bestimmte Weise verkettet sind. In den meisten Fällen werden öffentliche Schlüssel zuerst mit Base58Check codiert, dann alphabetisch sortiert und dann verkettet.

Dieser Ansatz zahlt sich aus, wenn eine Neuberechnung öffentlicher Schlüssel aus persönlichen Schlüsseln erforderlich ist. Sie müssen in genau derselben Reihenfolge verkettet werden, da der nächste Schritt darin besteht, ein Einlösungsskript zu erstellen und es zu hashen. Wenn genau dieselben Schlüssel in das Skript einlösen, jedoch in einer anderen Reihenfolge, erhalten wir einen anderen Hashwert und eine andere Adresse. Dies führt zu gewissen Missverständnissen. Daher müssen öffentliche Schlüssel vor der Verkettung nach bestimmten Regeln sortiert werden. Und meistens verwenden sie eine alphabetische Sortierung im Base58-Zahlensystem.

Also berechnete Bob den Hash-Wert aus "Skript einlösen". Er kann es als 20 Bytes darstellen und an Alice senden, wobei er sagt, dass dies eine Multisignaturadresse ist, die P2SH verwendet. Bob kann es jedoch mit einem Versionsbyte wie einer regulären Adresse codieren und es einfach an Alice senden. Alice wird anhand des Versionsbytes verstehen, dass dies eine Multisignaturadresse ist, eine Transaktion erstellen und ihre Ausgabe entsprechend füllen, damit Bob seine Münzen erhält. Anschließend wird die Transaktion an das Netzwerk weitergegeben. Sie warten auf Bestätigung und Bob akzeptiert die Zahlung von Alice. Ersatz Bob bietet zum Beispiel eine Dienstleistung an oder überträgt Waren.

Es kommt eine Zeit, in der Bob diese Münzen ausgeben möchte. Es versteht sich, dass das vollständige Einlösungsskript nicht öffentlich bekannt gegeben wurde, während sich die Münzen an ihrer Multisignaturadresse befanden. Und selbst Alice hat nicht genau gesehen, welche öffentlichen Schlüssel Bob verwendet hat, wie viele davon es gab usw. Sie weiß überhaupt nicht, nach welchen Regeln diese P2SH-Adresse zusammengesetzt ist, welche Multisignaturadresse oder nicht usw. Dementsprechend Angriffe auf elektronische Eine digitale Signatur (auf einer elliptischen Kurve) ist noch nicht möglich.

Angenommen, Bob möchte eine Zahlung an Eve senden.

Bild

Sie generiert eine neue Adresse und gibt sie Bob. Er erstellt ein Transaktionsleerzeichen, in dessen Eingabe er die Transaktion angibt, in der er Münzen von Alice erhalten hat, und die Ausgabe ist die Adresse von Eva. Jetzt muss er den Besitz der von ihm ausgegebenen Münzen nachweisen. Dazu nimmt er zwei seiner privaten Schlüssel (wir haben oben erwähnt, dass seine Multisignaturadresse die Option „2 von 5“ annimmt), aus der er zwei Signaturen für diese Transaktion berechnet. Als Nächstes nimmt er das vollständige Einlösungsskript und fügt es der Transaktionseingabe hinzu.

Bitte beachten Sie, dass dieses Skript zum Einlösen vollständig auf Bobs Computer gespeichert sein muss oder dass er sich an die Reihenfolge erinnern muss, in der er öffentliche Schlüssel zum Erstellen dieses Skripts verwendet hat. Wenn er bestimmte Sortierregeln angewendet hat, muss er sich an diese erinnern. Er sollte sich auch daran erinnern, dass eine Multisignaturadresse an bestimmte private Schlüssel gebunden ist. Ohne dieses Wissen hätte Bob nicht gewusst, mit welchen seiner privaten Schlüssel er arbeiten soll und in welcher Reihenfolge sie gehasht werden sollten, um die gewünschte Adresse zu erhalten.

Er hat also zwei Unterschriften und ein vollständiges Einlösungsskript. Die Transaktion wird als korrekt angesehen und Bob verteilt sie an das Netzwerk und wartet dann auf die Bestätigung. Dies ist die Hauptsache bei Ausgaben mit einer Multisignaturadresse.

Fragen


Nun kommen wir zu Ihren Fragen.

- Ist es möglich, dieselbe Brieftasche gleichzeitig auf drei verschiedenen Computern auszuführen und die Synchronisierung zu starten?

Höchstwahrscheinlich handelt es sich um eine Art Netzwerkknoten: entweder einen SPV-Knoten oder einen vollständigen Knoten. Es wurden mehrere verschiedene Computer und dieselbe Brieftasche verwendet. Und eine Brieftasche bedeutet private Schlüssel. Es gibt mehrere vollständige Knoten, die Brieftaschenfunktionen implementieren. Auf diesen Knoten fügen wir dieselben privaten Schlüssel ein und beginnen mit der Synchronisation. Bei vollständiger Synchronisierung mit dem Netzwerk wird höchstwahrscheinlich auf jeder Brieftasche, die ihren eigenen Knoten verwendet, das gleiche Gleichgewicht angezeigt. Wenn auf einem Knoten Änderungen angezeigt werden, werden nach der Synchronisierung mit dem Netzwerk auf allen anderen Knoten genau dieselben Änderungen angezeigt. Die Transaktion wird nicht geheim gehalten, sondern an alle Knoten verteilt, die sie überprüfen und die entsprechenden Änderungen anzeigen, wenn es um deren Adressen geht. Ja, Sie können dieselben Schlüssel auf mehreren Knoten verwenden.Alle Transaktionen werden jedoch auch automatisch synchronisiert. Bitcoins werden sich davon sicherlich nicht verdoppeln und darüber hinaus nicht verdreifachen.

— P2SH Segregated Witness?

Segregated Witness ist eine solche Transaktionsstruktur, bei der der Nachweis des Eigentums an Münzen auf eine separate Struktur übertragen wird. Sie fallen nicht in die Blockchain. Bei der Validierung von Transaktionen werden sie jedoch zusammen verteilt, dh alle Validatoren überprüfen die Richtigkeit von Transaktionen in einer separaten Struktur mit einem Nachweis. Nachdem die Transaktion bestätigt wurde, werden die Beweise nicht gespeichert, da dies keinen Sinn ergibt. Es gibt auch Vorteile beim Aufbau solcher Transaktionsketten, bei denen bestimmte Münzen ohne tatsächliche Bestätigung in der aktuellen Transaktion bereits in der nächsten auf ihrer Basis erstellten ausgegeben werden, aber nicht an das Netzwerk verteilt werden. Somit werden Transaktionsketten gebildet, die keine Beweise für den Besitz von Münzen offenbaren. Dies erleichtert die Datenübertragung und erhöht die Privatsphäre. Eine andere Art von Adresse wurde für getrennte Zeugen verwendet,es enthält leicht unterschiedliche Operanden. Es ist möglich, Münzen, die an regulären Adressen, einschließlich P2SH-Adressen, gespeichert sind, an Zeugen-P2SH-Adressen zu senden.

- Beginnen Adressen der drei besten im Beleuchtungsnetzwerk?

BIP13 definiert die Regeln, nach denen ein Versionsbyte für Bitcoin-Adressen im Testnetz, in anderen Währungen usw. ausgewählt wird. Ja, Lighting Network verwendet Multisignaturadressen, die auch die P2SH-Methode zum Festlegen von Bedingungen verwenden.

- Warum ist es unmöglich, eine Brieftasche zu personalisieren, dh an eine bestimmte Person zu binden?
Bitcoin als Protokoll eines Zahlungssystems erfordert keine Identifizierung der Identität einer Brieftasche, da es nach den Gesetzen der Mathematik funktioniert und die Mathematik es nicht erlaubt, eine Person als Person zu beschreiben. Darüber hinaus ist dies keine Voraussetzung für die Überprüfung von Transaktionen. Es gibt genug digitale Signatur. Wer solche Signaturen generieren kann, ist sein Besitzer - dies gilt nicht für das Bitcoin-Protokoll. Daher kann eine Signatur einer Person, einer Gruppe von mehreren Personen, einem Roboter usw.
gehören. Wenn Sie bei der Personalisierung eine Verbindung zwischen einer bestimmten Adresse und einer bestimmten Person herstellen, verletzen Sie die Privatsphäre und können einen Teil des Netzwerks mit einer bestimmten Wahrscheinlichkeit dekanonymisieren. Im Allgemeinen ist die Datenbank geöffnet, es sind jedoch keine Identitätsdaten enthalten.

— , 70-80%, ?

Es ist gut geschrieben, dass dies eine Währung ist, keine Kryptowährung, da die Kryptowährung nach den gleichen Prinzipien wie Bitcoin funktioniert, dh alle Prozesse sind maximal dezentralisiert: Emission, Überprüfung von Transaktionen, Datenspeicherung, Akzeptanz von Änderungen usw. Aber es gibt solche Währungen Wir nennen sie digitale Währungen, in denen nicht alle aufgeführten Prozesse dezentralisiert sind. Eine der Optionen kann ein zentrales Problem sein, dh es gibt keinen Bergbau, Bergbau, dh es gibt keine Lösung für ein komplexes Problem. Nach diesem Prinzip arbeiten Ripple, Stellar, digitale Währung NXT, Cardano. Dort wurden andere Grundsätze für die Verteilung von Münzen unter Benutzern angewendet, z. B. durch ICOs, Identitätsnachweise usw. Da nicht alle Prozesse dezentralisiert und unabhängig sind, können Sie keine digitale Währung benennenKryptowährung . Darüber hinaus ist die Frage des Vertrauens in eine bestimmte Währung persönlicher Natur. Sie entscheiden über die Höhe dieses Vertrauens. Es ist notwendig, die Zwecke, für die die Währung verwendet wird, sowie ihre Risiken und Einschränkungen zu berücksichtigen.

Source: https://habr.com/ru/post/de415757/


All Articles