aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjnewbery <john@johnnewbery.com>2016-09-26 17:01:10 -0400
committerWladimir J. van der Laan <laanwj@gmail.com>2016-10-27 14:47:22 +0200
commit1d048b917b83489f9e56d8fab522475544b98793 (patch)
treef4d0b8c25dbb3173a90b3b10771a3117145e7b54
parentce0d817b9b59baa243c3ac0844a654704872aa2f (diff)
downloadbitcoin-1d048b917b83489f9e56d8fab522475544b98793.tar.xz
Don't return the address of a P2SH of a P2SH.
Github-Pull: #8845 Rebased-From: d51f18246165b580761af824f1bb4a49b6908f28
-rw-r--r--src/rpc/rawtransaction.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp
index 3270cd384f..b2bbb8b3ed 100644
--- a/src/rpc/rawtransaction.cpp
+++ b/src/rpc/rawtransaction.cpp
@@ -535,7 +535,7 @@ UniValue decodescript(const UniValue& params, bool fHelp)
" \"address\" (string) bitcoin address\n"
" ,...\n"
" ],\n"
- " \"p2sh\",\"address\" (string) script address\n"
+ " \"p2sh\",\"address\" (string) address of P2SH script wrapping this redeem script (not returned if the script is already a P2SH).\n"
"}\n"
"\nExamples:\n"
+ HelpExampleCli("decodescript", "\"hexstring\"")
@@ -554,7 +554,15 @@ UniValue decodescript(const UniValue& params, bool fHelp)
}
ScriptPubKeyToJSON(script, r, false);
- r.push_back(Pair("p2sh", CBitcoinAddress(CScriptID(script)).ToString()));
+ UniValue type;
+ type = find_value(r, "type");
+
+ if (type.isStr() && type.get_str() != "scripthash") {
+ // P2SH cannot be wrapped in a P2SH. If this script is already a P2SH,
+ // don't return the address for a P2SH of the P2SH.
+ r.push_back(Pair("p2sh", CBitcoinAddress(CScriptID(script)).ToString()));
+ }
+
return r;
}