Übertragung von Nicht-Standard-Transaktionsskripten

Ich entwickle eine Anwendung auf der Bitcoin-Blockchain und verwende Ausgabetransaktionsskripte, die nicht dem Standard der klassischen Zahlungsmethoden entsprechen. Trotzdem funktioniert auf Tesnet alles einwandfrei, aber ich habe kürzlich auf der Bitcoin-Site Folgendes gelesen:

Geben Sie hier die Bildbeschreibung ein

Anscheinend lockert Tesnet also einige Beschränkungen für Transaktionsskripte, aber es spezifiziert nicht viel mehr. Also, jetzt habe ich keine Möglichkeit zu wissen, ob solche Ausgabetransaktionsskripte im Mainnet akzeptiert werden könnten, außer indem ich einige Bitcoins mit Geld kaufe, das ich wirklich nicht habe, und ich fange auch an, mich zu fragen, was der Zweck ist das Testnetz, wenn sein Verhalten nicht das des realen Netzes widerspiegelt, und, noch schlimmer, was ist der Zweck einer Skriptsprache mit so vielen Anweisungen, wenn Sie tatsächlich nur einige davon verwenden können. Kann mir jemand nähere Informationen zu all dem geben? Vielen Dank im Voraus.

Antworten (2)

Standardausgabeskripte werden durch IsStandard() definiert (das Solver() aufruft, um den eigentlichen Skriptabgleich durchzuführen). Die Standardausgabeskripte lauten wie folgt:

  • P2PKH
  • P2PK
  • P2SH
  • P2WPKH
  • P2WSH
  • Ein Skript, das mit einem OP_RETURN beginnt und nur maximal 80 Byte Daten auf den Stack schiebt
  • Bares Multisig bis zu einem 3-von-3-Multisig

Jedes andere Skript ist nicht standardmäßig und die gesamte Transaktion wird als nicht standardmäßig zurückgewiesen.


Anstatt zu versuchen, ein nicht standardmäßiges Ausgabeskript einzufügen, können Sie stattdessen P2SH oder P2WSH verwenden. Ihr Ausgabeskript wird zum Einlösungsskript oder Zeugenskript, das alles sein kann. Mit P2SH und P2WSH können Sie genau die gleichen Dinge tun, als ob sich das Skript in einem Ausgabeskript befände.

Wenn Sie immer noch darauf bestehen, dass Ihr nicht standardmäßiges Skript in der Ausgabe enthalten ist, müssen Sie einen Miner finden und ihm Ihre Transaktion auf andere Weise geben, damit Ihre Transaktion gesendet und abgebaut werden kann. Nicht standardmäßige Transaktionen werden nicht weitergeleitet und die meisten Knoten akzeptieren sie nicht. Sie müssen Ihre Transaktion einem Miner geben, der nicht standardmäßige Transaktionen akzeptiert, und es ist sehr wahrscheinlich, dass Sie dies außerhalb des Bandes tun müssen, dh über eine Form der Kommunikation, die nicht das P2P-Netzwerk ist.

Vielen Dank für Ihre erschöpfende Antwort. Die Tatsache, dass ich P2SH nicht verwenden kann, liegt daran, dass das Einlöseskript dem Absender (damit er den Hash in das Ausgabeskript aufnehmen kann) und dem Empfänger bekannt sein muss. In meiner Einstellung ist das Einlöseskript stattdessen nur dem Absender bekannt.
Das macht nicht wirklich Sinn. Woher weiß der Empfänger, dass er bezahlt wird, wenn er nicht weiß, nach welchem ​​Ausgabeskript er suchen soll?

Sie können Ihre nicht standardmäßigen Ausgabeskripts jederzeit in p2sh/p2wsh-Ausgabeskripts einpacken, die als Standard erkannt und von Knoten im Netzwerk weitergegeben werden.

Tatsache ist, dass ich P2SH nicht verwenden kann, weil ich mein nicht standardmäßiges Skript in ein Ausgabeskript einfügen muss. Bei P2SH muss ich es in ein Eingabeskript einfügen.
Was meinst du mit "Ich möchte, dass mein Nicht-Standard-Skript in ein Ausgabeskript eingefügt wird"??? Sie können heute nicht Ihr beliebiges Skript in die Transaktionsausgaben einfügen. Aber Sie können die GLEICHEN Ziele mit p2sh/p2wsh erreichen - sie wurden für diesen Fall entworfen/implementiert!
Ja, das habe ich mir schon gedacht. Testnet erlaubt mir jedoch, dies zu tun.