From bcd632f2ae17b55de455adb7531cc56a48941725 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 7 Aug 2020 11:01:47 +0930 Subject: [PATCH] listfunds: add "redeemscript" field. You'd need this if you ever wanted to make your own PSBT. Signed-off-by: Rusty Russell Changelog-Added: `listfunds` now has a `redeemscript` field for p2sh-wrapped outputs. --- doc/lightning-listfunds.7 | 2 ++ doc/lightning-listfunds.7.md | 1 + wallet/walletrpc.c | 8 ++++++++ 3 files changed, 11 insertions(+) diff --git a/doc/lightning-listfunds.7 b/doc/lightning-listfunds.7 index 21d8d0bc8..26876c087 100644 --- a/doc/lightning-listfunds.7 +++ b/doc/lightning-listfunds.7 @@ -35,6 +35,8 @@ appended) .IP \[bu] \fIscriptpubkey\fR (the ScriptPubkey of the output, in hex) .IP \[bu] +\fIredeemscript\fR (the redeemscript of the output, in hex, only if it's p2sh-wrapped) +.IP \[bu] \fIstatus\fR (whether \fIunconfirmed\fR, \fIconfirmed\fR, or \fIspent\fR) .IP \[bu] \fIreserved\fR (whether this is UTXO is currently reserved for an in-flight tx) diff --git a/doc/lightning-listfunds.7.md b/doc/lightning-listfunds.7.md index f17985e0d..9262b8617 100644 --- a/doc/lightning-listfunds.7.md +++ b/doc/lightning-listfunds.7.md @@ -28,6 +28,7 @@ Each entry in *outputs* will include: appended) - *address* - *scriptpubkey* (the ScriptPubkey of the output, in hex) +- *redeemscript* (the redeemscript of the output, in hex, only if it's p2sh-wrapped) - *status* (whether *unconfirmed*, *confirmed*, or *spent*) - *reserved* (whether this is UTXO is currently reserved for an in-flight tx) diff --git a/wallet/walletrpc.c b/wallet/walletrpc.c index 566eb1c24..e47e09fcc 100644 --- a/wallet/walletrpc.c +++ b/wallet/walletrpc.c @@ -868,6 +868,14 @@ static void json_add_utxo(struct json_stream *response, json_add_amount_sat_compat(response, utxo->amount, "value", "amount_msat"); + if (utxo->is_p2sh) { + struct pubkey key; + bip32_pubkey(wallet->bip32_base, &key, utxo->keyindex); + + json_add_hex_talarr(response, "redeemscript", + bitcoin_redeem_p2sh_p2wpkh(tmpctx, &key)); + } + json_add_hex_talarr(response, "scriptpubkey", utxo->scriptPubkey); out = encode_scriptpubkey_to_addr(tmpctx, chainparams, utxo->scriptPubkey);