diff --git a/lightningd/gossip_control.c b/lightningd/gossip_control.c index 864dc7a8c..164c5ea75 100644 --- a/lightningd/gossip_control.c +++ b/lightningd/gossip_control.c @@ -81,6 +81,7 @@ static void got_txout(struct bitcoind *bitcoind, static void get_txout(struct subd *gossip, const u8 *msg) { struct short_channel_id *scid = tal(gossip, struct short_channel_id); + struct outpoint *op; if (!fromwire_gossip_get_txout(msg, scid)) fatal("Gossip gave bad GOSSIP_GET_TXOUT message %s", @@ -88,11 +89,19 @@ static void get_txout(struct subd *gossip, const u8 *msg) /* FIXME: Block less than 6 deep? */ - bitcoind_getoutput(gossip->ld->topology->bitcoind, - short_channel_id_blocknum(scid), - short_channel_id_txnum(scid), - short_channel_id_outnum(scid), - got_txout, scid); + op = wallet_outpoint_for_scid(gossip->ld->wallet, scid, scid); + + if (op) { + subd_send_msg(gossip, towire_gossip_get_txout_reply( + scid, scid, op->scriptpubkey)); + tal_free(scid); + } else { + bitcoind_getoutput(gossip->ld->topology->bitcoind, + short_channel_id_blocknum(scid), + short_channel_id_txnum(scid), + short_channel_id_outnum(scid), + got_txout, scid); + } } static unsigned gossip_msg(struct subd *gossip, const u8 *msg, const int *fds)