diff options
author | Peter Todd <pete@petertodd.org> | 2013-10-24 04:32:35 -0400 |
---|---|---|
committer | Peter Todd <pete@petertodd.org> | 2013-10-24 04:32:35 -0400 |
commit | 22de68dffc1e94c5b06b7e512140c42290cb4f5d (patch) | |
tree | 9f723331f610480aa0af80aff36411bc2a3c6b95 /src/script.cpp | |
parent | 125bdead3e9be9a6ce23129409612a4d8501980b (diff) |
Relay OP_RETURN TxOut as standard transaction type
Also fix decoderawtransaction to not show reqSigs or addresses for
nulldata txouts. (Previous version also left reqSigs uninitialized
mistakenly)
Diffstat (limited to 'src/script.cpp')
-rw-r--r-- | src/script.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/script.cpp b/src/script.cpp index 63f632795a..ec9e9d61de 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -1195,7 +1195,7 @@ bool CheckSig(vector<unsigned char> vchSig, const vector<unsigned char> &vchPubK bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, vector<vector<unsigned char> >& vSolutionsRet) { // Templates - static map<txnouttype, CScript> mTemplates; + static multimap<txnouttype, CScript> mTemplates; if (mTemplates.empty()) { // Standard tx, sender provides pubkey, receiver adds signature @@ -1209,6 +1209,7 @@ bool Solver(const CScript& scriptPubKey, txnouttype& typeRet, vector<vector<unsi // Empty, provably prunable, data-carrying output mTemplates.insert(make_pair(TX_NULL_DATA, CScript() << OP_RETURN << OP_SMALLDATA)); + mTemplates.insert(make_pair(TX_NULL_DATA, CScript() << OP_RETURN)); } // Shortcut for pay-to-script-hash, which are more constrained than the other types: @@ -1392,9 +1393,8 @@ int ScriptSigArgsExpected(txnouttype t, const std::vector<std::vector<unsigned c switch (t) { case TX_NONSTANDARD: - return -1; case TX_NULL_DATA: - return 1; + return -1; case TX_PUBKEY: return 1; case TX_PUBKEYHASH: @@ -1532,8 +1532,10 @@ bool ExtractDestinations(const CScript& scriptPubKey, txnouttype& typeRet, vecto vector<valtype> vSolutions; if (!Solver(scriptPubKey, typeRet, vSolutions)) return false; - if (typeRet == TX_NULL_DATA) - return true; + if (typeRet == TX_NULL_DATA){ + // This is data, not addresses + return false; + } if (typeRet == TX_MULTISIG) { |