Fehler beim Senden der Transaktion: "Signature is found in scriptCode"

Ich versuche, eine Transaktion mit scriptSig zu senden:OP_PUSHDATA<Sig> OP_PUSHDATA<Data1> OP_PUSHDATA<Data2> OP_PUSHDATA<Data3> OP_PUSHDATA<RedeemScript>

Aber ich bekomme Fehler:

Mandatory-Script-Verify-Flag-Failed (Signatur befindet sich in scriptCode)

Warum erhalte ich diesen Fehler? Was ist falsch?

Rohtransaktion:

020000000001012f15356f4dfb7f48a91a72f5ff1071f72cb5fe4acc29e98ff5ae17a008a01dba000000007C160014ac09dd336a6fc10034fc44dcb706855668921ce7141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a246d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4aacffffffff01c005d9010000000017a914738292fc46dd7af803bd56035d0988af96a3168187024830450221009108d4e65a34fb50cd3283b6386a679f0dfc2b5fe97e3b3c3f6b8320814b3a2902204631daf2bb93605c9e079750092f304966b69fe28ce7701f4bc677714bca23af012102ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4a00000000

{
  "result": {
    "txid": "441cf52028ee0acc8b4076681c7fd46dad03501be62c6b0050ca59090fa52973",
    "hash": "dad2b4c56556b74d87243149ca3384ce04584d3bd8d21d80e291c4f9eed7e3f8",
    "version": 2,
    "size": 317,
    "vsize": 235,
    "locktime": 0,
    "vin": [
      {
        "txid": "ba1da008a017aef58fe929cc4afeb52cf77110fff5721aa9487ffb4d6f35152f",
        "vout": 0,
        "scriptSig": {
          "asm": "0014ac09dd336a6fc10034fc44dcb706855668921ce7 1f8b0800ffc1765400038d78055c545df3ff5d4a 1f8b0800ffc1765400038d78055c545df3ff5d4a 1f8b0800ffc1765400038d78055c545df3ff5d4a 6d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4a OP_CHECKSIG",
          "hex": "160014ac09dd336a6fc10034fc44dcb706855668921ce7141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a246d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4aac"
        },
        "txinwitness": [
          "30450221009108d4e65a34fb50cd3283b6386a679f0dfc2b5fe97e3b3c3f6b8320814b3a2902204631daf2bb93605c9e079750092f304966b69fe28ce7701f4bc677714bca23af01",
          "02ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4a"
        ],
        "sequence": 4294967295
      }
    ],
    "vout": [
      {
        "value": 0.31,
        "n": 0,
        "scriptPubKey": {
          "asm": "OP_HASH160 738292fc46dd7af803bd56035d0988af96a31681 OP_EQUAL",
          "hex": "a914738292fc46dd7af803bd56035d0988af96a3168187",
          "reqSigs": 1,
          "type": "scripthash",
          "addresses": [
            "2N3mz7o8v3YT4arXdQ5p8So6q3FUGjhUpEE"
          ]
        }
      }
    ]
  },
  "error": null,
  "id": "curltext"
}

Antworten (1)

Was Sie ausgeben, ist eine P2SH-Ausgabe. Um diese auszugeben, muss das letzte Element der ScriptSig das Skript sein (codiert mit einem Push-Opcode, nicht das Skript selbst), das diese P2SH-Adresse erzeugt, wenn es gehasht wird.

Siehe BIP16 , insbesondere Regel Nr. 1.

Die Validierung schlägt fehl, wenn in der scriptSig andere Vorgänge als „Push-Daten“-Vorgänge vorhanden sind

versuchen zu folgen: Das Redeemscript ist die letzte PUSHDATA-Struktur (246d6d2202ad ...), die als letztes Element in der Rohtransaktion von OP im "asm" -Wert von "vin" angezeigt wird. Dieser Hex-Wert wäre sha256'd und ricemd160'd. Dies sollte das Äquivalent des Hashs sein, den wir in der Finanzierungstransaktion als TX_Out[0] ("141a75cd53e9..." als Teil des OP_Hash160 <Hash> OP_Equal) sehen? (Wenn ich versuche, dieser Logik zu folgen, erhalte ich unterschiedliche Hashes. Vielleicht ist das bereitgestellte Einlöseskript falsch?)