shohu / c0ban

c0ban source tree
MIT License
0 stars 0 forks source link

Pass signlogic for fundrawtransaction.py #54

Closed shohu closed 6 years ago

shohu commented 6 years ago
# test/functional/fundrawtransaction.py
2018-07-11 05:16:07.491000 TestFramework (INFO): Initializing test directory /tmp/testb2kwqe1x
2018-07-11 05:16:38.026000 TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/c0ban/test/functional/test_framework/test_framework.py", line 120, in main
    self.run_test()
  File "test/functional/fundrawtransaction.py", line 614, in run_test
    assert(signedtx["complete"])
AssertionError
2018-07-11 05:16:38.032000 TestFramework (INFO): Stopping nodes
2018-07-11 05:16:40.235000 TestFramework (WARNING): Not cleaning up dir /tmp/testb2kwqe1x
2018-07-11 05:16:40.235000 TestFramework (ERROR): Test failed. Test logging available at /tmp/testb2kwqe1x/test_framework.log
shohu commented 6 years ago
(Pdb) p signedtx
{'hex': '0200000002719d91f892fc177509c1fa6786a45e7562fe8418e89607cf5dc2fae80f3116c4000000006a4730440220153977fa2a023d761081a05360805e34035b39118c258e6ed0de8be06878f23d022011df50a5c18de8fe565bbc6ffab9a551d5d4bd7d8d62135fab2e860032703aa0412103c0fd6e47613203edfc98fe3a9eca8fb8fb7f6f77b9812696ff37183ee6fb99a9feffffff94a7c6e6e9b1c389ca0a7e169731d0acd6e9a2f4d52b6ad9d35bc85dbcaa259d0100000000feffffff028a5e16e4cc0000001976a91468bb1003b827c3f15f33b4a3b048bbe0c5ccaf3888ac00c0dfe8000800001976a914f7d96da687d04253a236cf045d7bc433d204149b88ac00000000', 
'complete': False, 
'errors': [
    {'txid': '9d25aabc5dc85bd3d96a2bd5f4a2e9d6acd03197167e0aca89c3b1e9e6c6a794',
     'sequence': 4294967294,
     'scriptSig': '', 
     'witness': [], 
     'error': 'Operation not valid with the current stack size', 
     'vout': 1}
]}
        case SCRIPT_ERR_INVALID_STACK_OPERATION:
            return "Operation not valid with the current stack size";
UniValue signrawtransaction(const JSONRPCRequest& request)
{
 :
        ScriptError serror = SCRIPT_ERR_OK;
        if (!VerifyScript(
                txin.scriptSig, prevPubKey, &txin.scriptWitness, STANDARD_SCRIPT_VERIFY_FLAGS,
                TransactionSignatureChecker(&txConst, i, amount), &serror)) {
            TxInErrorToJSON(txin, vErrors, ScriptErrorString(serror));
        }
bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CScriptWitness* witness, unsigned int flags, const BaseSignatureChecker& checker, ScriptError* serror)
{
    static const CScriptWitness emptyWitness;
    if (witness == nullptr) {
        witness = &emptyWitness;
    }
    bool hadWitness = false;

    set_error(serror, SCRIPT_ERR_UNKNOWN_ERROR);

    // If FORKID is enabled, we also ensure strict encoding.
    if (flags & SCRIPT_ENABLE_SIGHASH_FORKID) {
        flags |= SCRIPT_VERIFY_STRICTENC;
    }

    LogPrintf("INNNNNNNNN VerifyScript 1 \n");
    if ((flags & SCRIPT_VERIFY_SIGPUSHONLY) != 0 && !scriptSig.IsPushOnly()) {
        return set_error(serror, SCRIPT_ERR_SIG_PUSHONLY);
    }

        LogPrintf("INNNNNNNNN VerifyScript 2 \n");
    std::vector<std::vector<unsigned char> > stack, stackCopy;
    if (!EvalScript(stack, scriptSig, flags, checker, SIGVERSION_BASE, serror)) {
        // serror is set
        LogPrintf("INNNNNNNNN VerifyScript 2.3 \n");
        return false;
    }
    if (flags & SCRIPT_VERIFY_P2SH)
        stackCopy = stack;
    if (!EvalScript(stack, scriptPubKey, flags, checker, SIGVERSION_BASE, serror)) {
        // serror is set
        LogPrintf("INNNNNNNNN VerifyScript 2.5 \n");
        return false;
    }
    if (stack.empty()) {
        LogPrintf("INNNNNNNNN VerifyScript 2.7 \n");
        return set_error(serror, SCRIPT_ERR_EVAL_FALSE);
    }
    if (CastToBool(stack.back()) == false) {
        LogPrintf("INNNNNNNNN VerifyScript 2.9 \n");
        return set_error(serror, SCRIPT_ERR_EVAL_FALSE);
    }

    // Bare witness programs
    LogPrintf("INNNNNNNNN VerifyScript 3 \n");
    int witnessversion;
    std::vector<unsigned char> witnessprogram;
    if (flags & SCRIPT_VERIFY_WITNESS) {
        if (scriptPubKey.IsWitnessProgram(witnessversion, witnessprogram)) {
            hadWitness = true;
            if (scriptSig.size() != 0) {
                // The scriptSig must be _exactly_ CScript(), otherwise we reintroduce malleability.
                return set_error(serror, SCRIPT_ERR_WITNESS_MALLEATED);
            }
            if (!VerifyWitnessProgram(*witness, witnessversion, witnessprogram, flags, checker, serror)) {
                return false;
            }
            // Bypass the cleanstack check at the end. The actual stack is obviously not clean
            // for witness programs.
            stack.resize(1);
        }
    }

    LogPrintf("INNNNNNNNN VerifyScript 4 \n");
    // Additional validation for spend-to-script-hash transactions:
    if ((flags & SCRIPT_VERIFY_P2SH) && scriptPubKey.IsPayToScriptHash())
    {
        // scriptSig must be literals-only or validation fails
        if (!scriptSig.IsPushOnly())
            return set_error(serror, SCRIPT_ERR_SIG_PUSHONLY);

        // Restore stack.
        swap(stack, stackCopy);

        // stack cannot be empty here, because if it was the
        // P2SH  HASH <> EQUAL  scriptPubKey would be evaluated with
        // an empty stack and the EvalScript above would return false.
        assert(!stack.empty());

        const valtype& pubKeySerialized = stack.back();
        CScript pubKey2(pubKeySerialized.begin(), pubKeySerialized.end());
        popstack(stack);

        if (!EvalScript(stack, pubKey2, flags, checker, SIGVERSION_BASE, serror))
            // serror is set
            return false;
        if (stack.empty())
            return set_error(serror, SCRIPT_ERR_EVAL_FALSE);
        if (!CastToBool(stack.back()))
            return set_error(serror, SCRIPT_ERR_EVAL_FALSE);

        // P2SH witness program
        if (flags & SCRIPT_VERIFY_WITNESS) {
            if (pubKey2.IsWitnessProgram(witnessversion, witnessprogram)) {
                hadWitness = true;
                if (scriptSig != CScript() << std::vector<unsigned char>(pubKey2.begin(), pubKey2.end())) {
                    // The scriptSig must be _exactly_ a single push of the redeemScript. Otherwise we
                    // reintroduce malleability.
                    return set_error(serror, SCRIPT_ERR_WITNESS_MALLEATED_P2SH);
                }
                if (!VerifyWitnessProgram(*witness, witnessversion, witnessprogram, flags, checker, serror)) {
                    return false;
                }
                // Bypass the cleanstack check at the end. The actual stack is obviously not clean
                // for witness programs.
                stack.resize(1);
            }
        }
    }

    LogPrintf("INNNNNNNNN VerifyScript 5 \n");

    // The CLEANSTACK check is only performed after potential P2SH evaluation,
    // as the non-P2SH evaluation of a P2SH script will obviously not result in
    // a clean stack (the P2SH inputs remain). The same holds for witness evaluation.
    if ((flags & SCRIPT_VERIFY_CLEANSTACK) != 0) {
        // Disallow CLEANSTACK without P2SH, as otherwise a switch CLEANSTACK->P2SH+CLEANSTACK
        // would be possible, which is not a softfork (and P2SH should be one).
        assert((flags & SCRIPT_VERIFY_P2SH) != 0);
        assert((flags & SCRIPT_VERIFY_WITNESS) != 0);
        if (stack.size() != 1) {
            return set_error(serror, SCRIPT_ERR_CLEANSTACK);
        }
    }

    LogPrintf("INNNNNNNNN VerifyScript 6 \n");

    if (flags & SCRIPT_VERIFY_WITNESS) {
        // We can't check for correct unexpected witness data if P2SH was off, so require
        // that WITNESS implies P2SH. Otherwise, going from WITNESS->P2SH+WITNESS would be
        // possible, which is not a softfork.
        assert((flags & SCRIPT_VERIFY_P2SH) != 0);
        if (!hadWitness && !witness->IsNull()) {
            return set_error(serror, SCRIPT_ERR_WITNESS_UNEXPECTED);
        }
    }

    return set_success(serror);
}
shohu commented 6 years ago

debug.log

2018-07-12 08:27:24.014719 ThreadRPCServer method=signrawtransaction
2018-07-12 08:27:24.014843 INNNNNNNNN VerifyScript 1
2018-07-12 08:27:24.014867 INNNNNNNNN VerifyScript 2
2018-07-12 08:27:24.014886 INNNNNNNNN EvalScript opcode = 0076
2018-07-12 08:27:24.014909 INNNNNNNNN OP_DUP SCRIPT_ERR_INVALID_STACK_OPERATION
2018-07-12 08:27:24.014924 INNNNNNNNN VerifyScript 2.5
2018-07-12 08:27:24.015074 INNNNNNNNN VerifyScript 1
2018-07-12 08:27:24.015095 INNNNNNNNN VerifyScript 2
2018-07-12 08:27:24.015112 INNNNNNNNN EvalScript opcode = 0047
2018-07-12 08:27:24.015129 INNNNNNNNN EvalScript opcode = 0021
2018-07-12 08:27:24.015146 INNNNNNNNN EvalScript opcode = 0076
2018-07-12 08:27:24.015164 INNNNNNNNN EvalScript opcode = 00a9
2018-07-12 08:27:24.015183 INNNNNNNNN EvalScript opcode = 0014
2018-07-12 08:27:24.015199 INNNNNNNNN EvalScript opcode = 0088
2018-07-12 08:27:24.015214 INNNNNNNNN EvalScript opcode = 00ac
2018-07-12 08:27:24.015228 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-12 08:27:24.015240 INNNNNNNNN CheckSignatureEncoding 1
2018-07-12 08:27:24.015365 INNNNNNNNN VerifyScript 3
2018-07-12 08:27:24.015381 INNNNNNNNN VerifyScript 4
2018-07-12 08:27:24.015393 INNNNNNNNN VerifyScript 5
2018-07-12 08:27:24.015405 INNNNNNNNN VerifyScript 6
2018-07-12 08:27:24.015420 INNNNNNNNN VerifyScript 1
2018-07-12 08:27:24.015435 INNNNNNNNN VerifyScript 2
2018-07-12 08:27:24.015452 INNNNNNNNN EvalScript opcode = 0047
2018-07-12 08:27:24.015469 INNNNNNNNN EvalScript opcode = 0021
2018-07-12 08:27:24.015485 INNNNNNNNN EvalScript opcode = 0076
2018-07-12 08:27:24.015501 INNNNNNNNN EvalScript opcode = 00a9
2018-07-12 08:27:24.015519 INNNNNNNNN EvalScript opcode = 0014
2018-07-12 08:27:24.015552 INNNNNNNNN EvalScript opcode = 0088
2018-07-12 08:27:24.015565 INNNNNNNNN EvalScript opcode = 00ac
2018-07-12 08:27:24.015578 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-12 08:27:24.015591 INNNNNNNNN CheckSignatureEncoding 1
2018-07-12 08:27:24.015707 INNNNNNNNN VerifyScript 3
2018-07-12 08:27:24.015721 INNNNNNNNN VerifyScript 4
2018-07-12 08:27:24.015736 INNNNNNNNN VerifyScript 5
2018-07-12 08:27:24.015751 INNNNNNNNN VerifyScript 6
shohu commented 6 years ago

what is fundrawtransaction.  -> collect tx what is OP_DUP.  -> duplicate stack data what is normal scryptpub check logic

shohu commented 6 years ago

sign logic source

(Pdb) self.nodes[0].decoderawtransaction(result["hex"])
{
  "size": 160, 
  "vsize": 160, 
  "vin": [
    {"sequence": 4294967294, 
     "txid": "5cc3099f634ee26b42d4f15baf238da578c070e7f7f36ba91e90d8826de60a69", 
     "vout": 1, 
     "scriptSig": {"hex": ", "asm": "}
    },
    {"sequence": 4294967294, 
     "txid": "3144f33bb4df9cfab0e6c0a4d202c947d9497c6610b91f0fb090370dbdea1c83", 
     "vout": 1, 
     "scriptSig": {"hex": ", "asm": "}}], 
     "locktime": 0, 
     "hash": "a68ec860a58a5e112e34bec8ff845d22eade44983ba533e6965f8cd66e9a999e", 
     "version": 2, 
     "txid": "a68ec860a58a5e112e34bec8ff845d22eade44983ba533e6965f8cd66e9a999e", 
     "vout": [
        {"scriptPubKey": 
            {"reqSigs": 1, 
             "hex": "76a914240eddd67907d4ec2b7cd600ae7e28d78cd26acb88ac", 
             "asm": "OP_DUP OP_HASH160 240eddd67907d4ec2b7cd600ae7e28d78cd26acb OP_EQUALVERIFY OP_CHECKSIG", 
             "addresses": ["miocRuWfRy2RLbqF9FFyqhxeLKyAfcT6fg"], 
             "type": "pubkeyhash"
            }, 
            "value": Decimal("88000.00000000"), 
            "n": 0
        }, 
        {"scriptPubKey": 
            {"reqSigs": 1, 
             "hex": "76a914bb412f8e240bcafb03a961effd1e181e9fda877a88ac", 
             "asm": "OP_DUP OP_HASH160 bb412f8e240bcafb03a961effd1e181e9fda877a OP_EQUALVERIFY OP_CHECKSIG", 
             "addresses": ["mxb4k7UhnnHWFcEtvuGYo6h5zojweqJM6o"], 
             "type": "pubkeyhash"
            }, 
            "value": Decimal("8799.99999626"), 
            "n": 1
        }
    ]
}
(Pdb) self.nodes[0].decoderawtransaction(signedtx["hex"])
{'size': 266, 
 'vsize': 266, 
 'vin': [
    {'sequence': 4294967294, 
     'txid': '5cc3099f634ee26b42d4f15baf238da578c070e7f7f36ba91e90d8826de60a69', 
     'vout': 1, 
     'scriptSig': 
        {'hex': '47304402202298244264ec17df24c2b664d46112ff1f3d1da3d15da94c50bf0bb0f37e79900220651770d04d2d73edfd9038cf66af5bb05a8aaf7e26387c54889ee3cb57782b0341210211f64be1d78afd4721d90c9721adbdc9b7e6cf209b092be3e3b1685f649d7bc4', 
         'asm': '304402202298244264ec17df24c2b664d46112ff1f3d1da3d15da94c50bf0bb0f37e79900220651770d04d2d73edfd9038cf66af5bb05a8aaf7e26387c54889ee3cb57782b03[ALL|FORKID] 0211f64be1d78afd4721d90c9721adbdc9b7e6cf209b092be3e3b1685f649d7bc4'
        }
    }, 
    {'sequence': 4294967294, 
     'txid': '3144f33bb4df9cfab0e6c0a4d202c947d9497c6610b91f0fb090370dbdea1c83', 
     'vout': 1, 
     'scriptSig': {'hex': '', 'asm': ''}
    }
 ], 
 'locktime': 0, 
 'hash': '77fc43ee5eaa77f190fd022751642d8965be0ce0501ec4d03e5f39d5b36f245a', 
 'version': 2, 
 'txid': '77fc43ee5eaa77f190fd022751642d8965be0ce0501ec4d03e5f39d5b36f245a', 
 'vout': [
    {'scriptPubKey': 
        {'reqSigs': 1, 
         'hex': '76a914240eddd67907d4ec2b7cd600ae7e28d78cd26acb88ac', 
         'asm': 'OP_DUP OP_HASH160 240eddd67907d4ec2b7cd600ae7e28d78cd26acb OP_EQUALVERIFY OP_CHECKSIG', 
         'addresses': ['miocRuWfRy2RLbqF9FFyqhxeLKyAfcT6fg'], 
         'type': 'pubkeyhash'
        }, 
        'value': Decimal('88000.00000000'), 
        'n': 0
    }, 
    {'scriptPubKey': 
        {'reqSigs': 1, 
         'hex': '76a914bb412f8e240bcafb03a961effd1e181e9fda877a88ac', 
         'asm': 'OP_DUP OP_HASH160 bb412f8e240bcafb03a961effd1e181e9fda877a OP_EQUALVERIFY OP_CHECKSIG', 
         'addresses': ['mxb4k7UhnnHWFcEtvuGYo6h5zojweqJM6o'], 
         'type': 'pubkeyhash'
        }, 
        'value': Decimal('8799.99999626'), 
        'n': 1
    }
 ]
}

no sign logic

{'hash': '8c71bd38c870ffe6ec4d5d576593c4a3b5e65f6da3a754b0a028e6038de96b82', 
 'locktime': 0, 
  'vin': [
    {'txid': 'ac14d77ecdf2a0ce69b80c46f5a0ba0a3672be5bbc946faa89f791e0523b582b', 
     'scriptSig': 
        {'hex': '47304402202b157434a25140aec9c756d72e22d09df9ed91b074009c3273d85b389dea7bac022023c8fbdaab0043068e255aaa2fdad98e410347d529ea1c5a7a1d7d8698def54d012103a5964c1ae10db3eedc5519ce2addf6f132b0e0eba025922a031fa33085fabf5f', 
         'asm': '304402202b157434a25140aec9c756d72e22d09df9ed91b074009c3273d85b389dea7bac022023c8fbdaab0043068e255aaa2fdad98e410347d529ea1c5a7a1d7d8698def54d[ALL] 03a5964c1ae10db3eedc5519ce2addf6f132b0e0eba025922a031fa33085fabf5f'
        }, 
        'vout': 1, 
        'sequence': 4294967294
    }, 
    {'txid': '6bdf889e5caeb1ac19e3e647915dfe399253f8432433469caf5d336033e89bc4', 
     'scriptSig': 
        {'hex': '', 
         'asm': ''
        }, 
        'vout': 0, 
        'sequence': 4294967294
    }
  ], 
  'vout': [
    {'value': Decimal('8799.99999626'), 
     'scriptPubKey': 
        {'hex': '76a9148698d4995e535da96d6d70a644bcf230d773aadf88ac', 
         'asm': 'OP_DUP OP_HASH160 8698d4995e535da96d6d70a644bcf230d773aadf OP_EQUALVERIFY OP_CHECKSIG', 
         'reqSigs': 1, 
         'addresses': ['msndvc7SvxNBQ1n7VYyPKfEd5yGo4N9uQ6'], 
         'type': 'pubkeyhash'
        }, 
        'n': 0
    }, 
    {'value': Decimal('88000.00000000'), 
     'scriptPubKey': 
        {'hex': '76a914694ada827701c56f088cccfe597c2c0c1ab16fcd88ac', 
         'asm': 'OP_DUP OP_HASH160 694ada827701c56f088cccfe597c2c0c1ab16fcd OP_EQUALVERIFY OP_CHECKSIG', 
         'reqSigs': 1, 
         'addresses': ['mq7gv7TwJ7xZEptXeZXhM4GjnuhgeMpz9H'], 
         'type': 'pubkeyhash'}, 
         'n': 1
    }
  ], 
  'size': 266, 
  'version': 2, 
  'txid': '8c71bd38c870ffe6ec4d5d576593c4a3b5e65f6da3a754b0a028e6038de96b82', 
  'vsize': 266
 }
shohu commented 6 years ago

sign

node3

2018-07-13 03:04:14.342405 Received a POST request for / from 127.0.0.1:34300
2018-07-13 03:04:14.342534 ThreadRPCServer method=signrawtransaction
2018-07-13 03:04:14.342842 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:14.342867 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:14.342886 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:04:14.342907 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.342925 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:04:14.342942 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.342959 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:14.342977 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:04:14.342994 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:04:14.343010 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.343024 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:04:14.343038 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:04:14.343049 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-13 03:04:14.343064 INNNNNNNNN CheckSignatureEncoding 1
2018-07-13 03:04:14.343191 INNNNNNNNN VerifyScript 3
2018-07-13 03:04:14.343209 INNNNNNNNN VerifyScript 4
2018-07-13 03:04:14.343225 INNNNNNNNN VerifyScript 5
2018-07-13 03:04:14.343240 INNNNNNNNN VerifyScript 6
2018-07-13 03:04:14.343257 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:14.343273 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:14.343289 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:04:14.343305 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.343322 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:04:14.343337 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.343363 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:14.343379 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:04:14.343395 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:04:14.343410 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:14.343427 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:04:14.343444 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:04:14.343459 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-13 03:04:14.343475 INNNNNNNNN CheckSignatureEncoding 1
2018-07-13 03:04:14.343593 INNNNNNNNN VerifyScript 3
2018-07-13 03:04:14.343611 INNNNNNNNN VerifyScript 4
2018-07-13 03:04:14.343626 INNNNNNNNN VerifyScript 5
2018-07-13 03:04:14.343642 INNNNNNNNN VerifyScript 6
2018-07-13 03:04:14.343666 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:14.343678 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:14.343694 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:14.343708 INNNNNNNNN OP_DUP SCRIPT_ERR_INVALID_STACK_OPERATION
2018-07-13 03:04:14.343722 INNNNNNNNN VerifyScript 2.5
2018-07-13 03:04:14.343733 INNNNNNNNN sign VerifyScript error

node0

2018-07-13 03:04:55.176115 Received a POST request for / from 127.0.0.1:42890
2018-07-13 03:04:55.176228 ThreadRPCServer method=signrawtransaction
2018-07-13 03:04:55.176508 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:55.176545 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:55.176641 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:55.176662 INNNNNNNNN OP_DUP SCRIPT_ERR_INVALID_STACK_OPERATION
2018-07-13 03:04:55.176732 INNNNNNNNN VerifyScript 2.5
2018-07-13 03:04:55.176757 INNNNNNNNN sign VerifyScript error
2018-07-13 03:04:55.176936 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:55.177000 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:55.177021 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:04:55.177036 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177048 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:04:55.177060 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177073 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:55.177085 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:04:55.177100 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:04:55.177114 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177127 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:04:55.177141 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:04:55.177154 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-13 03:04:55.177167 INNNNNNNNN CheckSignatureEncoding 1
2018-07-13 03:04:55.177278 INNNNNNNNN VerifyScript 3
2018-07-13 03:04:55.177294 INNNNNNNNN VerifyScript 4
2018-07-13 03:04:55.177308 INNNNNNNNN VerifyScript 5
2018-07-13 03:04:55.177335 INNNNNNNNN VerifyScript 6
2018-07-13 03:04:55.177350 INNNNNNNNN VerifyScript 1
2018-07-13 03:04:55.177363 INNNNNNNNN VerifyScript 2
2018-07-13 03:04:55.177377 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:04:55.177390 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177403 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:04:55.177416 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177429 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:04:55.177444 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:04:55.177458 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:04:55.177468 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:04:55.177478 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:04:55.177488 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:04:55.177500 INNNNNNNNN OP_CHECKSIG || OP_CHECKSIGVERIFY
2018-07-13 03:04:55.177513 INNNNNNNNN CheckSignatureEncoding 1
2018-07-13 03:04:55.177619 INNNNNNNNN VerifyScript 3
2018-07-13 03:04:55.177634 INNNNNNNNN VerifyScript 4
2018-07-13 03:04:55.177647 INNNNNNNNN VerifyScript 5
2018-07-13 03:04:55.177659 INNNNNNNNN VerifyScript 6
shohu commented 6 years ago

No Sign

node3

2018-07-13 03:07:54.066153 ThreadRPCServer method=signrawtransaction
2018-07-13 03:07:54.066318 INNNNNNNNN VerifyScript 1
2018-07-13 03:07:54.066345 INNNNNNNNN VerifyScript 2
2018-07-13 03:07:54.066360 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:07:54.066377 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066392 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:07:54.066411 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066426 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:07:54.066440 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:07:54.066456 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:07:54.066469 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066483 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:07:54.066497 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:07:54.066599 INNNNNNNNN VerifyScript 3
2018-07-13 03:07:54.066613 INNNNNNNNN VerifyScript 4
2018-07-13 03:07:54.066627 INNNNNNNNN VerifyScript 5
2018-07-13 03:07:54.066640 INNNNNNNNN VerifyScript 6
2018-07-13 03:07:54.066655 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:07:54.066669 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066683 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:07:54.066696 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066711 INNNNNNNNN VerifyScript 1
2018-07-13 03:07:54.066725 INNNNNNNNN VerifyScript 2
2018-07-13 03:07:54.066738 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:07:54.066751 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066765 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:07:54.066778 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066791 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:07:54.066805 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:07:54.066820 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:07:54.066833 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:07:54.066847 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:07:54.066860 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:07:54.066957 INNNNNNNNN VerifyScript 3
2018-07-13 03:07:54.066972 INNNNNNNNN VerifyScript 4
2018-07-13 03:07:54.066985 INNNNNNNNN VerifyScript 5
2018-07-13 03:07:54.066998 INNNNNNNNN VerifyScript 6
2018-07-13 03:07:54.067019 INNNNNNNNN VerifyScript 1
2018-07-13 03:07:54.067033 INNNNNNNNN VerifyScript 2
2018-07-13 03:07:54.067047 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:07:54.067060 INNNNNNNNN OP_DUP SCRIPT_ERR_INVALID_STACK_OPERATION
2018-07-13 03:07:54.067073 INNNNNNNNN VerifyScript 2.5

node0

2018-07-13 03:08:42.376164 Received a POST request for / from 127.0.0.1:35510
2018-07-13 03:08:42.376554 ThreadRPCServer method=signrawtransaction
2018-07-13 03:08:42.376127 Adding fixed seed nodes as DNS doesn't seem to be available.
2018-07-13 03:08:42.376789 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:08:42.376820 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.376836 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:08:42.376850 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.376876 INNNNNNNNN VerifyScript 1
2018-07-13 03:08:42.376894 INNNNNNNNN VerifyScript 2
2018-07-13 03:08:42.376910 INNNNNNNNN EvalScript opcode = 0048
2018-07-13 03:08:42.376926 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.376941 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:08:42.376956 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.376970 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:08:42.376985 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:08:42.377010 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:08:42.377024 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377039 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:08:42.377052 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:08:42.377196 INNNNNNNNN VerifyScript 3
2018-07-13 03:08:42.377214 INNNNNNNNN VerifyScript 4
2018-07-13 03:08:42.377226 INNNNNNNNN VerifyScript 5
2018-07-13 03:08:42.377240 INNNNNNNNN VerifyScript 6
2018-07-13 03:08:42.377413 INNNNNNNNN VerifyScript 1
2018-07-13 03:08:42.377432 INNNNNNNNN VerifyScript 2
2018-07-13 03:08:42.377445 INNNNNNNNN EvalScript opcode = 0047
2018-07-13 03:08:42.377460 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377474 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:08:42.377486 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377497 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:08:42.377512 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:08:42.377529 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:08:42.377542 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377556 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:08:42.377570 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:08:42.377694 INNNNNNNNN VerifyScript 3
2018-07-13 03:08:42.377707 INNNNNNNNN VerifyScript 4
2018-07-13 03:08:42.377720 INNNNNNNNN VerifyScript 5
2018-07-13 03:08:42.377730 INNNNNNNNN VerifyScript 6
2018-07-13 03:08:42.377746 INNNNNNNNN EvalScript opcode = 0047
2018-07-13 03:08:42.377762 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377778 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:08:42.377791 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377803 INNNNNNNNN VerifyScript 1
2018-07-13 03:08:42.377817 INNNNNNNNN VerifyScript 2
2018-07-13 03:08:42.377832 INNNNNNNNN EvalScript opcode = 0047
2018-07-13 03:08:42.377846 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377860 INNNNNNNNN EvalScript opcode = 0021
2018-07-13 03:08:42.377873 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377886 INNNNNNNNN EvalScript opcode = 0076
2018-07-13 03:08:42.377913 INNNNNNNNN EvalScript opcode = 00a9
2018-07-13 03:08:42.377932 INNNNNNNNN EvalScript opcode = 0014
2018-07-13 03:08:42.377945 INNNNNNNNN EvalScript push_back(vchPushValue)
2018-07-13 03:08:42.377958 INNNNNNNNN EvalScript opcode = 0088
2018-07-13 03:08:42.377971 INNNNNNNNN EvalScript opcode = 00ac
2018-07-13 03:08:42.378083 INNNNNNNNN VerifyScript 3
2018-07-13 03:08:42.378100 INNNNNNNNN VerifyScript 4
2018-07-13 03:08:42.378111 INNNNNNNNN VerifyScript 5
2018-07-13 03:08:42.378125 INNNNNNNNN VerifyScript 6
shohu commented 6 years ago

I found a leak of transplant work. I passed this test 👍

# test/functional/fundrawtransaction.py
2018-07-13 04:43:26.191000 TestFramework (INFO): Initializing test directory /tmp/testnllzxex1
2018-07-13 04:43:54.256000 TestFramework (INFO): Stopping nodes
2018-07-13 04:43:56.595000 TestFramework (INFO): Cleaning up
2018-07-13 04:43:56.601000 TestFramework (INFO): Tests successful