Skip to content

Commit d64deac

Browse files
committed
refactor: share logic between ScriptPubKeyToUniv and ScriptToUniv
1 parent 8721638 commit d64deac

File tree

4 files changed

+13
-25
lines changed

4 files changed

+13
-25
lines changed

src/core_io.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ UniValue ValueFromAmount(const CAmount amount);
4444
std::string FormatScript(const CScript& script);
4545
std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags = 0);
4646
std::string SighashToStr(unsigned char sighash_type);
47-
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex);
48-
void ScriptToUniv(const CScript& script, UniValue& out, bool include_address);
47+
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex, bool include_address = true);
48+
void ScriptToUniv(const CScript& script, UniValue& out);
4949
void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue& entry, bool include_hex = true, int serialize_flags = 0, const CTxUndo* txundo = nullptr);
5050

5151
#endif // BITCOIN_CORE_IO_H

src/core_write.cpp

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -141,22 +141,12 @@ std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags)
141141
return HexStr(ssTx);
142142
}
143143

144-
void ScriptToUniv(const CScript& script, UniValue& out, bool include_address)
144+
void ScriptToUniv(const CScript& script, UniValue& out)
145145
{
146-
out.pushKV("asm", ScriptToAsmStr(script));
147-
out.pushKV("hex", HexStr(script));
148-
149-
std::vector<std::vector<unsigned char>> solns;
150-
TxoutType type = Solver(script, solns);
151-
out.pushKV("type", GetTxnOutputType(type));
152-
153-
CTxDestination address;
154-
if (include_address && ExtractDestination(script, address) && type != TxoutType::PUBKEY) {
155-
out.pushKV("address", EncodeDestination(address));
156-
}
146+
ScriptPubKeyToUniv(script, out, /* fIncludeHex */ true, /* include_address */ false);
157147
}
158148

159-
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex)
149+
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex, bool include_address)
160150
{
161151
CTxDestination address;
162152

@@ -165,9 +155,9 @@ void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool fInclud
165155
out.pushKV("hex", HexStr(scriptPubKey));
166156

167157
std::vector<std::vector<unsigned char>> solns;
168-
TxoutType type = Solver(scriptPubKey, solns);
158+
const TxoutType type{Solver(scriptPubKey, solns)};
169159

170-
if (ExtractDestination(scriptPubKey, address) && type != TxoutType::PUBKEY) {
160+
if (include_address && ExtractDestination(scriptPubKey, address) && type != TxoutType::PUBKEY) {
171161
out.pushKV("address", EncodeDestination(address));
172162
}
173163
out.pushKV("type", GetTxnOutputType(type));

src/rpc/rawtransaction.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,7 @@ static RPCHelpMan decodepsbt()
11611161
txout = input.witness_utxo;
11621162

11631163
UniValue o(UniValue::VOBJ);
1164-
ScriptToUniv(txout.scriptPubKey, o, true);
1164+
ScriptPubKeyToUniv(txout.scriptPubKey, o, /* fIncludeHex */ true);
11651165

11661166
UniValue out(UniValue::VOBJ);
11671167
out.pushKV("amount", ValueFromAmount(txout.nValue));
@@ -1208,12 +1208,12 @@ static RPCHelpMan decodepsbt()
12081208
// Redeem script and witness script
12091209
if (!input.redeem_script.empty()) {
12101210
UniValue r(UniValue::VOBJ);
1211-
ScriptToUniv(input.redeem_script, r, false);
1211+
ScriptToUniv(input.redeem_script, r);
12121212
in.pushKV("redeem_script", r);
12131213
}
12141214
if (!input.witness_script.empty()) {
12151215
UniValue r(UniValue::VOBJ);
1216-
ScriptToUniv(input.witness_script, r, false);
1216+
ScriptToUniv(input.witness_script, r);
12171217
in.pushKV("witness_script", r);
12181218
}
12191219

@@ -1268,12 +1268,12 @@ static RPCHelpMan decodepsbt()
12681268
// Redeem script and witness script
12691269
if (!output.redeem_script.empty()) {
12701270
UniValue r(UniValue::VOBJ);
1271-
ScriptToUniv(output.redeem_script, r, false);
1271+
ScriptToUniv(output.redeem_script, r);
12721272
out.pushKV("redeem_script", r);
12731273
}
12741274
if (!output.witness_script.empty()) {
12751275
UniValue r(UniValue::VOBJ);
1276-
ScriptToUniv(output.witness_script, r, false);
1276+
ScriptToUniv(output.witness_script, r);
12771277
out.pushKV("witness_script", r);
12781278
}
12791279

src/test/fuzz/script.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,7 @@ FUZZ_TARGET_INIT(script, initialize_script)
113113
UniValue o2(UniValue::VOBJ);
114114
ScriptPubKeyToUniv(script, o2, false);
115115
UniValue o3(UniValue::VOBJ);
116-
ScriptToUniv(script, o3, true);
117-
UniValue o4(UniValue::VOBJ);
118-
ScriptToUniv(script, o4, false);
116+
ScriptToUniv(script, o3);
119117

120118
{
121119
const std::vector<uint8_t> bytes = ConsumeRandomLengthByteVector(fuzzed_data_provider);

0 commit comments

Comments
 (0)