Это сломало мой клиент BTW, но я установил это уже, и я знаю, что это не может быть отменено больше, так что я только интересно ..
Из того, что я понимаю, используя SIGHASH_SINGLE, который имеет больше выходов, чем входов не имеет никакого смысла - так что код даже печатает ошибку, то:
Код:
неподписанных INT ноут = NIN;
если (ноут >= TxTmp.vout.size ())
{
Е ("ОШИБКА: SignatureHash (): Nout =% d вне диапазона \ п", Nout);
возвращает 1;
}
Обычно, когда есть ошибка где-то при выполнении сценария, он просто не может - но здесь, несмотря на печати ошибки, она по-прежнему принимает транзакцию, используя хэш-значение 1, а затем проверки подписи для такого хэша.если (ноут >= TxTmp.vout.size ())
{
Е ("ОШИБКА: SignatureHash (): Nout =% d вне диапазона \ п", Nout);
возвращает 1;
}
Так что с ним?
Является ли это как кто-то просто игнорировать этот кусок кода - или это "ошибка => хэш = 1" по дизайну?
РЕДАКТИРОВАТЬ:
Если вы не знаете, что я имею в виду, проверяет эти три Txs:
Код:
315ac7d4c26d69668129cc352851d9389b4a6868f1509c6c8b66bead11e2619f
dbf38261224ebff0c455c405e2435cfc69adb6b8a42d7b10674d9a4eb0464dca
de744408e4198c0a39310c8106d1830206e8d8a5392bcf715c9b5ec97d784edd
dbf38261224ebff0c455c405e2435cfc69adb6b8a42d7b10674d9a4eb0464dca
de744408e4198c0a39310c8106d1830206e8d8a5392bcf715c9b5ec97d784edd