Skip to content

Commit 828a094

Browse files
mjdietzxfanquake
authored andcommitted
refactor: merge ScriptPubKeyToUniv & ScriptToUniv into one function
1 parent 74b011b commit 828a094

File tree

6 files changed

+17
-23
lines changed

6 files changed

+17
-23
lines changed

src/core_io.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ UniValue ValueFromAmount(const CAmount amount);
5353
std::string FormatScript(const CScript& script);
5454
std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags = 0);
5555
std::string SighashToStr(unsigned char sighash_type);
56-
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool include_hex, bool include_address = true);
57-
void ScriptToUniv(const CScript& script, UniValue& out);
56+
void ScriptToUniv(const CScript& script, UniValue& out, bool include_hex = true, bool include_address = false);
5857
void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue& entry, bool include_hex = true, int serialize_flags = 0, const CTxUndo* txundo = nullptr, TxVerbosity verbosity = TxVerbosity::SHOW_DETAILS);
5958

6059
#endif // BITCOIN_CORE_IO_H

src/core_write.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -143,25 +143,22 @@ std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags)
143143
return HexStr(ssTx);
144144
}
145145

146-
void ScriptToUniv(const CScript& script, UniValue& out)
147-
{
148-
ScriptPubKeyToUniv(script, out, /* include_hex */ true, /* include_address */ false);
149-
}
150-
151-
void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool include_hex, bool include_address)
146+
void ScriptToUniv(const CScript& script, UniValue& out, bool include_hex, bool include_address)
152147
{
153148
CTxDestination address;
154149

155-
out.pushKV("asm", ScriptToAsmStr(scriptPubKey));
150+
out.pushKV("asm", ScriptToAsmStr(script));
156151
if (include_address) {
157-
out.pushKV("desc", InferDescriptor(scriptPubKey, DUMMY_SIGNING_PROVIDER)->ToString());
152+
out.pushKV("desc", InferDescriptor(script, DUMMY_SIGNING_PROVIDER)->ToString());
153+
}
154+
if (include_hex) {
155+
out.pushKV("hex", HexStr(script));
158156
}
159-
if (include_hex) out.pushKV("hex", HexStr(scriptPubKey));
160157

161158
std::vector<std::vector<unsigned char>> solns;
162-
const TxoutType type{Solver(scriptPubKey, solns)};
159+
const TxoutType type{Solver(script, solns)};
163160

164-
if (include_address && ExtractDestination(scriptPubKey, address) && type != TxoutType::PUBKEY) {
161+
if (include_address && ExtractDestination(script, address) && type != TxoutType::PUBKEY) {
165162
out.pushKV("address", EncodeDestination(address));
166163
}
167164
out.pushKV("type", GetTxnOutputType(type));
@@ -215,7 +212,7 @@ void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue& entry,
215212

216213
if (verbosity == TxVerbosity::SHOW_DETAILS_AND_PREVOUT) {
217214
UniValue o_script_pub_key(UniValue::VOBJ);
218-
ScriptPubKeyToUniv(prev_txout.scriptPubKey, o_script_pub_key, /*include_hex=*/ true);
215+
ScriptToUniv(prev_txout.scriptPubKey, /*out=*/o_script_pub_key, /*include_hex=*/true, /*include_address=*/true);
219216

220217
UniValue p(UniValue::VOBJ);
221218
p.pushKV("generated", bool(prev_coin.fCoinBase));
@@ -240,7 +237,7 @@ void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue& entry,
240237
out.pushKV("n", (int64_t)i);
241238

242239
UniValue o(UniValue::VOBJ);
243-
ScriptPubKeyToUniv(txout.scriptPubKey, o, true);
240+
ScriptToUniv(txout.scriptPubKey, /*out=*/o, /*include_hex=*/true, /*include_address=*/true);
244241
out.pushKV("scriptPubKey", o);
245242
vout.push_back(out);
246243

src/rest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,7 @@ static bool rest_getutxos(const std::any& context, HTTPRequest* req, const std::
855855

856856
// include the script in a json output
857857
UniValue o(UniValue::VOBJ);
858-
ScriptPubKeyToUniv(coin.out.scriptPubKey, o, true);
858+
ScriptToUniv(coin.out.scriptPubKey, /*out=*/o, /*include_hex=*/true, /*include_address=*/true);
859859
utxo.pushKV("scriptPubKey", o);
860860
utxos.push_back(utxo);
861861
}

src/rpc/blockchain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ static RPCHelpMan gettxout()
10261026
}
10271027
ret.pushKV("value", ValueFromAmount(coin.out.nValue));
10281028
UniValue o(UniValue::VOBJ);
1029-
ScriptPubKeyToUniv(coin.out.scriptPubKey, o, true);
1029+
ScriptToUniv(coin.out.scriptPubKey, /*out=*/o, /*include_hex=*/true, /*include_address=*/true);
10301030
ret.pushKV("scriptPubKey", o);
10311031
ret.pushKV("coinbase", (bool)coin.fCoinBase);
10321032

src/rpc/rawtransaction.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ static RPCHelpMan decodescript()
435435
} else {
436436
// Empty scripts are valid
437437
}
438-
ScriptPubKeyToUniv(script, r, /* include_hex */ false);
438+
ScriptToUniv(script, /*out=*/r, /*include_hex=*/false, /*include_address=*/true);
439439

440440
std::vector<std::vector<unsigned char>> solutions_data;
441441
const TxoutType which_type{Solver(script, solutions_data)};
@@ -512,7 +512,7 @@ static RPCHelpMan decodescript()
512512
// Scripts that are not fit for P2WPKH are encoded as P2WSH.
513513
segwitScr = GetScriptForDestination(WitnessV0ScriptHash(script));
514514
}
515-
ScriptPubKeyToUniv(segwitScr, sr, /* include_hex */ true);
515+
ScriptToUniv(segwitScr, /*out=*/sr, /*include_hex=*/true, /*include_address=*/true);
516516
sr.pushKV("p2sh-segwit", EncodeDestination(ScriptHash(segwitScr)));
517517
r.pushKV("segwit", sr);
518518
}
@@ -956,7 +956,7 @@ static RPCHelpMan decodepsbt()
956956
txout = input.witness_utxo;
957957

958958
UniValue o(UniValue::VOBJ);
959-
ScriptPubKeyToUniv(txout.scriptPubKey, o, /* include_hex */ true);
959+
ScriptToUniv(txout.scriptPubKey, /*out=*/o, /*include_hex=*/true, /*include_address=*/true);
960960

961961
UniValue out(UniValue::VOBJ);
962962
out.pushKV("amount", ValueFromAmount(txout.nValue));

src/test/fuzz/script_format.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,5 @@ FUZZ_TARGET_INIT(script_format, initialize_script_format)
2929
(void)ScriptToAsmStr(script, /*fAttemptSighashDecode=*/fuzzed_data_provider.ConsumeBool());
3030

3131
UniValue o1(UniValue::VOBJ);
32-
ScriptPubKeyToUniv(script, o1, /*include_hex=*/fuzzed_data_provider.ConsumeBool());
33-
UniValue o3(UniValue::VOBJ);
34-
ScriptToUniv(script, o3);
32+
ScriptToUniv(script, /*out=*/o1, /*include_hex=*/fuzzed_data_provider.ConsumeBool(), /*include_address=*/fuzzed_data_provider.ConsumeBool());
3533
}

0 commit comments

Comments
 (0)