Litecoin - обязательное-скрипт-проверки-флаг-ошибка (подпись должна быть нулевой для неудачной операции CHECK(MULTI)SIG)

У меня есть необработанная транзакция вручную с использованием битовой библиотеки , чтобы отправить транзакцию с использованием тестовой сети Litecoin. После настройки платы и других сетевых переменных я получил следующую ошибку, указанную в теме поста. Эта транзакция не является мультиподписной. Это шестнадцатеричное значение необработанной транзакции.

0100000001d0e0112dd6bf2b44c44895d5363f2d2b940d4aff8d7fc2852a4c751e90200a5e000000006b483045022100ac91b8da716668553088da2da32c596a03973fffcbc36d2a7f3ecb8e93c3de07022040b7015c065e74d6f5fc30c9458c0631ddfb2d72feae3bb699c6ce835cd0ba54012102d41b76393d5f82b1856343623974684ff2bf03b26ec6bc2d0391ae0768cd9ebdffffffff0200286bee000000001976a914df918d7a0efe546d0284e217a3a322bb09f37f3988acb0a69a3b000000001976a914f2ebf3c5642abf069b4197a08e116937503d13e488ac00000000

После декодирования этого шестнадцатеричного кода получается следующее:

{
  "txid": "2915435fbfb199670280d564b948d5a52fb4002f238f2980effef10818a84fc5",
  "hash": "2915435fbfb199670280d564b948d5a52fb4002f238f2980effef10818a84fc5",
  "version": 1,
  "size": 226,
  "vsize": 226,
  "locktime": 0,
  "vin": [
    {
      "txid": "5e0a20901e754c2a85c27f8dff4a0d942b2d3f36d59548c4442bbfd62d11e0d0",
      "vout": 0,
      "scriptSig": {
        "asm": "3045022100ac91b8da716668553088da2da32c596a03973fffcbc36d2a7f3ecb8e93c3de07022040b7015c065e74d6f5fc30c9458c0631ddfb2d72feae3bb699c6ce835cd0ba54[ALL] 02d41b76393d5f82b1856343623974684ff2bf03b26ec6bc2d0391ae0768cd9ebd",
        "hex": "483045022100ac91b8da716668553088da2da32c596a03973fffcbc36d2a7f3ecb8e93c3de07022040b7015c065e74d6f5fc30c9458c0631ddfb2d72feae3bb699c6ce835cd0ba54012102d41b76393d5f82b1856343623974684ff2bf03b26ec6bc2d0391ae0768cd9ebd"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 40.00000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 df918d7a0efe546d0284e217a3a322bb09f37f39 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914df918d7a0efe546d0284e217a3a322bb09f37f3988ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "n1u5M1NRi1VGDrAQujjzaRhRsfWBtvsVLA"
        ]
      }
    }, 
    {
      "value": 9.99990960,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 f2ebf3c5642abf069b4197a08e116937503d13e4 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914f2ebf3c5642abf069b4197a08e116937503d13e488ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "n3fQUj2SSLcuAQjeL97WWuLm3n5DvjNYA8"
        ]
      }
    }
  ]
}

Заранее спасибо! :)

Ответы (1)

Я не уверен на 100%, относится ли это и к Litecoin, так как это клон Bitcoin. Но я понимаю, что схема подписи такая же... Так что должна быть возможность использовать openssl или любую библиотеку ECDSA для проверки подписи. Поэтому необходимо создать двойное море беззнакового tx в соответствии с этими шагами в ответе амаклина :

1) Удалить сценарий ввода из транзакции

2) Замените его pubkeyscript предыдущего TX

3) Добавить SIGHASH_ALL

4) Дважды хэшируйте с помощью SHA256.

Я пытаюсь воспроизвести его и получаю следующие значения:

sig:         3045022100ac91b8da716668553088da2da32c596a03973fffcbc36d2a7f3ecb8e93c3de07022040b7015c065e74d6f5fc30c9458c0631ddfb2d72feae3bb699c6ce835cd0ba54 
pubkey:      02d41b76393d5f82b1856343623974684ff2bf03b26ec6bc2d0391ae0768cd9ebd 
double hash: c54fa81808f1feef80298f232f00b42fa5d548b964d580026799b1bf5f431529

Это возвращает ошибку проверки подписи. У этого может быть несколько основных причин... Вы сказали, "после корректировки комиссий и других сетевых переменных": комиссии связаны с суммами в структуре вывода, и они подписаны. В любое время что-то из подписанного tx изменяется, делает подпись недействительной. Это может быть основной причиной... Можем ли мы увидеть неподписанную транзакцию?