Multisig-Adresse für Website?

Ich versuche den Anwendungsfall einer veröffentlichten Förderadresse auf einer Webseite zu klären, an die jeder ausgeben kann. Intern in unserem Unternehmen möchte ich vermeiden, dass eine einzelne Person diese Mittel ausgeben kann. Es bedarf mehr als einer Unterschrift, um die Mittel ausgeben zu können. Ich hatte die Idee, eine Multisig-Adresse zu verwenden, aber dies scheint nicht erfolgreich zu sein. Die vielen Stackexchange-Links decken dieses Szenario nicht ab, sie scheinen alle abzudecken, wie man von msig-Adressen ausgibt ...

Wenn Sie eine Multisig-Adresse verwenden, sieht es so aus, als ob Ausgaben an diese Adresse das Einlöseskript erfordern. Alle Beispiele, die ich gefunden habe, verwenden das Redeemscript. Das ist also irgendwie ein No-Go für eine Multisig-Adresse auf einer Webseite?

Was ich bisher gemacht habe: - Ich dachte, dass "Leute" von einer normalen Brieftasche (auch bekannt als P2PKH-Skript) an die msig-Adresse senden könnten. Das funktioniert nicht, da das Pubkey-Skript auf dem Stack kein "true" finden würde. Angesichts eines Standard-Pubkey-Skripts würde s.th. so was:

    DUP     HASH     PKH     EQ_VFY CHK_SIG
     |       |        |        |      |
     |       |        | PKHASH |      |
     |  PK   | PKHASH | PKHASH |      |
PK?  |  PK   |   PK   |  PK    | PK   |
SIG  |  SIG  |   SIG  |  SIG   | SIG  |  TRUE/FALSE

Die erste Spalte (SIG und PK?) ist das Sigscript. Für die Multisig-Adresse steht in der ersten Spalte kein öffentlicher Schlüssel. Natürlich könnte ich ganz am Anfang mit dem Redeem-Skript spielen und es hashen, um das "OP_EQUALVERIFY" zu erfüllen. Aber dann würde das Skript am Ende nicht "TRUE" beenden, weil es die Sig und einen "gehashten" Hash auf dem Stapel hinterlassen würde.

  • Ich könnte das Erlösungsskript veröffentlichen. Nachteil: Dies erschwert die Benutzererfahrung

  • Ich könnte einen Std verwenden. P2PKH-Adresse, und "leiten" regelmäßig die Gelder von der Webseite P2PKH-Adresse an eine Multisig im Hintergrund weiter. Nachteil: bei laufenden Gebühren fast idiotisch, wenn nur kleine Beträge ausgegeben werden. (Ja, ich könnte Code schreiben, um zu sammeln, bis der ausgegebene Betrag >= TX-Gebühren ...)

Gibt es eine einfache (intelligentere) Möglichkeit, Bitcoin-Zahlungen auf einer Website zu erhalten, die mit der Bedingung verbunden sind, dass sie nur mit mehreren Unterschriften ausgegeben werden?

Es gibt keine Möglichkeit, von einem Multisig auszugeben, ohne das Skript zu kennen, genauso wie es keine Möglichkeit gibt, von einem öffentlichen Schlüssel auszugeben, ohne den geheimen Schlüssel zu kennen.

Antworten (3)

Wo sehen Sie, dass Multisig-Adressen das Einlösungsskript haben müssen, um sie zu bezahlen? Das Einlöseskript ist nur für Ausgaben von einer Multisig-Adresse erforderlich, es ist nicht erforderlich, wenn Sie an eine ausgeben. Multisig-Adressen (auch bekannt als P2SH-Adressen) beginnen mit einer 3. Ihr Anwendungsfall scheint nichts Besonderes zu erfordern, nur ein typisches m-of-n-Multisig, das viele Wallets können.

Ja, danke! Ich hatte in meinem ersten Aufzählungspunkt eine falsche Annahme. Ich muss dem Absender mitteilen, dass er mir Geld an meine „3xxx“-Adresse (eine P2SH-Adresse) senden soll. Ich stelle kein Einlösungsskript zur Verfügung, ich stelle den Hash eines Einlösungsskripts bereit, der Base58check-codiert mit dem Präfix „05“ ist: base58check.Encode("05", RIPEMD160(SHA256(redeemScript))) Die Brieftasche des Absenders muss wissen, dass es P2PKH (OP_DUP, OP_HASH, PUBKEYHASH, OP_EQUALVERIFY, OP_CHKSIG) nicht verwenden kann, wie ich in meinem obigen Beispiel angenommen habe. Das Wallet muss die P2SH-Logik (OP_HASH160, P2SHAddress, OP_EQUAL) im Pubkey-Skript verwenden.
und was auf dem Stack passiert, ist hier gut beschrieben: bitcoin.stackexchange.com/questions/42521/…

Wollen Sie damit sagen, dass es schwierig ist, weil der Benutzer seine eigene Transaktion manuell signieren müsste? P2SH ist nicht wirklich auf einer "typischen" Benutzerebene. Damit Multisig wie beabsichtigt funktioniert, wird davon ausgegangen, dass jeder potenzielle Unterzeichner weiß, wie eine Transaktion zu unterzeichnen ist. Eine Website, die von ihren Benutzern verlangen würde, ihre eigenen P2SH-Transaktionen zu unterzeichnen, hätte eine ziemlich kleine Zielgruppe. Abgesehen von der Erstellung Ihrer eigenen nativen Desktop-App, die das Multisig-Signieren für den durchschnittlichen Benutzer vereinfacht, bin ich mir nicht sicher, welche anderen Optionen Sie hätten.

Yup, Multisig "wie es ist" hat einen besseren Anwendungsfall für Treuhanddienste, bei denen sich jede Partei kennt. Bei meinem Website-Modell würden die Nutzer keinen Vertrag mit meinem Unternehmen abschließen, sie würden nur gerne Geld ausgeben. Ich habe versucht, die gesammelten Gelder zu sichern, damit niemand damit davonlaufen kann. Vielleicht ergibt sich eine elegante Lösung, wenn der Blitz eintrifft (Gebührensenkung).

Ich glaube, ich habe einen Weg gefunden, das zu tun, was ich brauche. Ich biete einen QR-Code mit der Adresse und dem Einlösungsskript an, jeweils in einer eigenen Zeile. Ich verstehe, dass die Brieftaschen es möglicherweise nicht verstehen, und es gibt keine "automatische" Erstellung der Transaktion. Aber es ist ein Schritt in die richtige Richtung, ausreichend für mich.