mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 14:42:40 +01:00
onchaind: remove chainparams args in favor of global.
Otherwise this creates noise for the next patch which switches the initial `struct bitcoin_tx` into a `struct tx_parts`. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
48f397ee19
commit
abba59057c
2 changed files with 42 additions and 71 deletions
|
@ -120,8 +120,6 @@ struct tracked_output {
|
|||
/* If it is resolved. */
|
||||
struct resolution *resolved;
|
||||
|
||||
const struct chainparams *chainparams;
|
||||
|
||||
/* stashed so we can pass it along to the coin ledger */
|
||||
struct sha256 payment_hash;
|
||||
};
|
||||
|
@ -606,7 +604,7 @@ static struct bitcoin_tx *tx_to_us(const tal_t *ctx,
|
|||
u8 *msg;
|
||||
u8 **witness;
|
||||
|
||||
tx = bitcoin_tx(ctx, out->chainparams, 1, 1, locktime);
|
||||
tx = bitcoin_tx(ctx, chainparams, 1, 1, locktime);
|
||||
bitcoin_tx_add_input(tx, &out->txid, out->outnum, to_self_delay,
|
||||
out->sat, NULL);
|
||||
|
||||
|
@ -701,8 +699,7 @@ static void hsm_get_per_commitment_point(struct pubkey *per_commitment_point)
|
|||
}
|
||||
|
||||
static struct tracked_output *
|
||||
new_tracked_output(const struct chainparams *chainparams,
|
||||
struct tracked_output ***outs,
|
||||
new_tracked_output(struct tracked_output ***outs,
|
||||
const struct bitcoin_txid *txid,
|
||||
u32 tx_blockheight,
|
||||
enum tx_type tx_type,
|
||||
|
@ -730,7 +727,6 @@ new_tracked_output(const struct chainparams *chainparams,
|
|||
out->output_type = output_type;
|
||||
out->proposal = NULL;
|
||||
out->resolved = NULL;
|
||||
out->chainparams = chainparams;
|
||||
if (htlc)
|
||||
out->htlc = *htlc;
|
||||
out->wscript = tal_steal(out, wscript);
|
||||
|
@ -1239,8 +1235,7 @@ static void handle_htlc_onchain_fulfill(struct tracked_output *out,
|
|||
&preimage)));
|
||||
}
|
||||
|
||||
static void resolve_htlc_tx(const struct chainparams *chainparams,
|
||||
struct tracked_output ***outs,
|
||||
static void resolve_htlc_tx(struct tracked_output ***outs,
|
||||
size_t out_index,
|
||||
const struct tx_parts *htlc_tx,
|
||||
u32 tx_blockheight,
|
||||
|
@ -1268,7 +1263,7 @@ static void resolve_htlc_tx(const struct chainparams *chainparams,
|
|||
asset = wally_tx_output_get_amount(htlc_tx->outputs[0]);
|
||||
assert(amount_asset_is_main(&asset));
|
||||
amt = amount_asset_to_sat(&asset);
|
||||
out = new_tracked_output(chainparams, outs, &htlc_tx->txid,
|
||||
out = new_tracked_output(outs, &htlc_tx->txid,
|
||||
tx_blockheight,
|
||||
(*outs)[out_index]->resolved->tx_type,
|
||||
0, amt,
|
||||
|
@ -1300,8 +1295,7 @@ static void resolve_htlc_tx(const struct chainparams *chainparams,
|
|||
* - MUST *resolve* the _remote node's HTLC-success transaction_ by spending it
|
||||
* using the revocation private key.
|
||||
*/
|
||||
static void steal_htlc_tx(const struct chainparams *chainparams,
|
||||
struct tracked_output *out,
|
||||
static void steal_htlc_tx(struct tracked_output *out,
|
||||
struct tracked_output ***outs,
|
||||
const struct tx_parts *htlc_tx,
|
||||
u32 htlc_tx_blockheight,
|
||||
|
@ -1322,7 +1316,7 @@ static void steal_htlc_tx(const struct chainparams *chainparams,
|
|||
assert(amount_asset_is_main(&asset));
|
||||
htlc_out_amt = amount_asset_to_sat(&asset);
|
||||
|
||||
htlc_out = new_tracked_output(chainparams, outs,
|
||||
htlc_out = new_tracked_output(outs,
|
||||
&htlc_tx->txid, htlc_tx_blockheight,
|
||||
htlc_tx_type,
|
||||
/* htlc tx's only have 1 output */
|
||||
|
@ -1380,8 +1374,7 @@ static void onchain_annotate_txin(const struct bitcoin_txid *txid, u32 innum,
|
|||
}
|
||||
|
||||
/* An output has been spent: see if it resolves something we care about. */
|
||||
static void output_spent(const struct chainparams *chainparams,
|
||||
struct tracked_output ***outs,
|
||||
static void output_spent(struct tracked_output ***outs,
|
||||
const struct tx_parts *tx_parts,
|
||||
u32 input_num,
|
||||
u32 tx_blockheight,
|
||||
|
@ -1401,7 +1394,7 @@ static void output_spent(const struct chainparams *chainparams,
|
|||
/* If it's our htlc tx, we need to resolve that, too. */
|
||||
if (out->resolved->tx_type == OUR_HTLC_SUCCESS_TX
|
||||
|| out->resolved->tx_type == OUR_HTLC_TIMEOUT_TX)
|
||||
resolve_htlc_tx(chainparams, outs, i, tx_parts,
|
||||
resolve_htlc_tx(outs, i, tx_parts,
|
||||
tx_blockheight, is_replay);
|
||||
|
||||
if (!is_replay)
|
||||
|
@ -1423,7 +1416,7 @@ static void output_spent(const struct chainparams *chainparams,
|
|||
case THEIR_HTLC:
|
||||
if (out->tx_type == THEIR_REVOKED_UNILATERAL) {
|
||||
/* we've actually got a 'new' output here */
|
||||
steal_htlc_tx(chainparams, out, outs, tx_parts,
|
||||
steal_htlc_tx(out, outs, tx_parts,
|
||||
tx_blockheight, THEIR_HTLC_TIMEOUT_TO_THEM,
|
||||
is_replay);
|
||||
} else {
|
||||
|
@ -1452,7 +1445,7 @@ static void output_spent(const struct chainparams *chainparams,
|
|||
*/
|
||||
handle_htlc_onchain_fulfill(out, tx_parts);
|
||||
if (out->tx_type == THEIR_REVOKED_UNILATERAL) {
|
||||
steal_htlc_tx(chainparams, out, outs, tx_parts,
|
||||
steal_htlc_tx(out, outs, tx_parts,
|
||||
tx_blockheight, OUR_HTLC_FULFILL_TO_THEM,
|
||||
is_replay);
|
||||
} else {
|
||||
|
@ -1617,8 +1610,7 @@ static void tx_new_depth(struct tracked_output **outs,
|
|||
* - MUST NOT *resolve* the output by spending it.
|
||||
*/
|
||||
/* Master makes sure we only get told preimages once other node is committed. */
|
||||
static void handle_preimage(const struct chainparams *chainparams,
|
||||
struct tracked_output **outs,
|
||||
static void handle_preimage(struct tracked_output **outs,
|
||||
const struct preimage *preimage,
|
||||
bool is_replay)
|
||||
{
|
||||
|
@ -1676,8 +1668,7 @@ static void handle_preimage(const struct chainparams *chainparams,
|
|||
type_to_string(tmpctx,
|
||||
struct amount_sat,
|
||||
&outs[i]->sat));
|
||||
tx = htlc_success_tx(outs[i],
|
||||
chainparams,
|
||||
tx = htlc_success_tx(outs[i], chainparams,
|
||||
&outs[i]->txid,
|
||||
outs[i]->outnum,
|
||||
htlc_amount,
|
||||
|
@ -1783,8 +1774,7 @@ static bool handle_dev_memleak(struct tracked_output **outs, const u8 *msg)
|
|||
* - MUST monitor the blockchain for transactions that spend any output that
|
||||
* is NOT *irrevocably resolved*.
|
||||
*/
|
||||
static void wait_for_resolved(const struct chainparams *chainparams,
|
||||
struct tracked_output **outs)
|
||||
static void wait_for_resolved(struct tracked_output **outs)
|
||||
{
|
||||
billboard_update(outs);
|
||||
|
||||
|
@ -1803,9 +1793,9 @@ static void wait_for_resolved(const struct chainparams *chainparams,
|
|||
tx_new_depth(outs, &txid, depth, is_replay);
|
||||
else if (fromwire_onchain_spent(msg, msg, &tx_parts, &input_num,
|
||||
&tx_blockheight, &is_replay)) {
|
||||
output_spent(chainparams, &outs, tx_parts, input_num, tx_blockheight, is_replay);
|
||||
output_spent(&outs, tx_parts, input_num, tx_blockheight, is_replay);
|
||||
} else if (fromwire_onchain_known_preimage(msg, &preimage, &is_replay))
|
||||
handle_preimage(chainparams, outs, &preimage, is_replay);
|
||||
handle_preimage(outs, &preimage, is_replay);
|
||||
else if (!handle_dev_memleak(outs, msg))
|
||||
master_badmsg(-1, msg);
|
||||
|
||||
|
@ -1825,8 +1815,7 @@ static void init_reply(const char *what)
|
|||
peer_billboard(true, what);
|
||||
}
|
||||
|
||||
static void handle_mutual_close(const struct chainparams *chainparams,
|
||||
const struct bitcoin_txid *txid,
|
||||
static void handle_mutual_close(const struct bitcoin_txid *txid,
|
||||
struct tracked_output **outs,
|
||||
const struct bitcoin_tx *tx,
|
||||
u32 tx_blockheight,
|
||||
|
@ -1863,7 +1852,7 @@ static void handle_mutual_close(const struct chainparams *chainparams,
|
|||
our_out, our_outnum);
|
||||
}
|
||||
|
||||
wait_for_resolved(chainparams, outs);
|
||||
wait_for_resolved(outs);
|
||||
}
|
||||
|
||||
static u8 **derive_htlc_scripts(const struct htlc_stub *htlcs, enum side side)
|
||||
|
@ -1893,8 +1882,7 @@ static u8 **derive_htlc_scripts(const struct htlc_stub *htlcs, enum side side)
|
|||
return htlc_scripts;
|
||||
}
|
||||
|
||||
static size_t resolve_our_htlc_ourcommit(const struct chainparams *chainparams,
|
||||
struct tracked_output *out,
|
||||
static size_t resolve_our_htlc_ourcommit(struct tracked_output *out,
|
||||
const size_t *matches,
|
||||
const struct htlc_stub *htlcs,
|
||||
u8 **htlc_scripts,
|
||||
|
@ -2239,7 +2227,7 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
status_debug("OUTPUT %zu is a fee output", i);
|
||||
/* An empty script simply means that that this is a
|
||||
* fee output. */
|
||||
out = new_tracked_output(tx->chainparams, &outs,
|
||||
out = new_tracked_output(&outs,
|
||||
txid, tx_blockheight,
|
||||
OUR_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2264,8 +2252,7 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
* node's `to_self_delay` field) before spending
|
||||
* the output.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
OUR_UNILATERAL, i,
|
||||
amt,
|
||||
DELAYED_OUTPUT_TO_US,
|
||||
|
@ -2305,8 +2292,7 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
* node, as `to_remote` is considered *resolved*
|
||||
* by the commitment transaction itself.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
OUR_UNILATERAL, i,
|
||||
amt,
|
||||
OUTPUT_TO_THEM,
|
||||
|
@ -2333,8 +2319,7 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
* in [HTLC Output Handling: Local Commitment,
|
||||
* Local Offers]
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
OUR_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2342,15 +2327,13 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
NULL, NULL,
|
||||
remote_htlc_sigs);
|
||||
/* Tells us which htlc to use */
|
||||
which_htlc = resolve_our_htlc_ourcommit(tx->chainparams,
|
||||
out, matches,
|
||||
which_htlc = resolve_our_htlc_ourcommit(out, matches,
|
||||
htlcs,
|
||||
htlc_scripts,
|
||||
is_replay);
|
||||
add_amt(&our_outs, amt);
|
||||
} else {
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
OUR_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2386,7 +2369,7 @@ static void handle_our_unilateral(const struct bitcoin_tx *tx,
|
|||
outs[0]->sat,
|
||||
their_outs, our_outs);
|
||||
|
||||
wait_for_resolved(tx->chainparams, outs);
|
||||
wait_for_resolved(outs);
|
||||
}
|
||||
|
||||
/* We produce individual penalty txs. It's less efficient, but avoids them
|
||||
|
@ -2648,8 +2631,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
(oscript == NULL || tal_bytelen(oscript) == 0)) {
|
||||
/* An empty script simply means that that this is a
|
||||
* fee output. */
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_REVOKED_UNILATERAL, i,
|
||||
amt,
|
||||
ELEMENTS_FEE,
|
||||
|
@ -2668,8 +2650,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
* - Note: this output is considered *resolved* by
|
||||
* the commitment transaction itself.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_REVOKED_UNILATERAL,
|
||||
i, amt,
|
||||
OUTPUT_TO_US, NULL, NULL, NULL);
|
||||
|
@ -2694,8 +2675,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
* - MUST *resolve* the _remote node's main output_ by
|
||||
* spending it using the revocation private key.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_REVOKED_UNILATERAL, i,
|
||||
amt,
|
||||
DELAYED_CHEAT_OUTPUT_TO_THEM,
|
||||
|
@ -2723,8 +2703,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
* * spend the *commitment tx* once the HTLC timeout has passed.
|
||||
* * spend the *HTLC-success tx*, if the remote node has published it.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
THEIR_REVOKED_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2735,8 +2714,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
steal_htlc(out, is_replay);
|
||||
add_amt(&total_outs, amt);
|
||||
} else {
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
THEIR_REVOKED_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2769,7 +2747,7 @@ static void handle_their_cheat(const struct bitcoin_tx *tx,
|
|||
if (!is_replay)
|
||||
update_ledger_chain_fees(txid, tx_blockheight, fee_cost);
|
||||
|
||||
wait_for_resolved(tx->chainparams, outs);
|
||||
wait_for_resolved(outs);
|
||||
}
|
||||
|
||||
static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
||||
|
@ -2904,8 +2882,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
(oscript == NULL || tal_bytelen(oscript) == 0)) {
|
||||
/* An empty script simply means that that this is a
|
||||
* fee output. */
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_UNILATERAL, i,
|
||||
amt,
|
||||
ELEMENTS_FEE,
|
||||
|
@ -2921,8 +2898,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
* - Note: `to_remote` is considered *resolved* by the
|
||||
* commitment transaction itself.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_UNILATERAL,
|
||||
i, amt,
|
||||
OUTPUT_TO_US, NULL, NULL, NULL);
|
||||
|
@ -2950,8 +2926,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
* - Note: `to_local` is considered *resolved* by the
|
||||
* commitment transaction itself.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
THEIR_UNILATERAL, i,
|
||||
amt,
|
||||
DELAYED_OUTPUT_TO_THEM,
|
||||
|
@ -2974,8 +2949,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
* [HTLC Output Handling: Remote Commitment,
|
||||
* Local Offers]
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
THEIR_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -2989,8 +2963,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
is_replay);
|
||||
add_amt(&our_outs, amt);
|
||||
} else {
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid,
|
||||
out = new_tracked_output(&outs, txid,
|
||||
tx_blockheight,
|
||||
THEIR_UNILATERAL, i,
|
||||
amt,
|
||||
|
@ -3020,7 +2993,7 @@ static void handle_their_unilateral(const struct bitcoin_tx *tx,
|
|||
outs[0]->sat,
|
||||
their_outs, our_outs);
|
||||
|
||||
wait_for_resolved(tx->chainparams, outs);
|
||||
wait_for_resolved(outs);
|
||||
}
|
||||
|
||||
static void update_ledger_unknown(const struct bitcoin_txid *txid,
|
||||
|
@ -3131,8 +3104,7 @@ static void handle_unknown_commitment(const struct bitcoin_tx *tx,
|
|||
* - Note: `to_remote` is considered *resolved* by the
|
||||
* commitment transaction itself.
|
||||
*/
|
||||
out = new_tracked_output(tx->chainparams,
|
||||
&outs, txid, tx_blockheight,
|
||||
out = new_tracked_output(&outs, txid, tx_blockheight,
|
||||
UNKNOWN_UNILATERAL,
|
||||
i, amt,
|
||||
OUTPUT_TO_US, NULL, NULL, NULL);
|
||||
|
@ -3181,7 +3153,7 @@ search_done:
|
|||
wire_sync_write(REQ_FD, take(msg));
|
||||
}
|
||||
|
||||
wait_for_resolved(tx->chainparams, outs);
|
||||
wait_for_resolved(outs);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
@ -3275,7 +3247,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
outs = tal_arr(ctx, struct tracked_output *, 0);
|
||||
bitcoin_tx_input_get_txid(tx, 0, &tmptxid);
|
||||
new_tracked_output(tx->chainparams, &outs, &tmptxid,
|
||||
new_tracked_output(&outs, &tmptxid,
|
||||
0, /* We don't care about funding blockheight */
|
||||
FUNDING_TRANSACTION,
|
||||
tx->wtx->inputs[0].index,
|
||||
|
@ -3300,7 +3272,7 @@ int main(int argc, char *argv[])
|
|||
* [BOLT #2: Channel Close](02-peer-protocol.md#channel-close)).
|
||||
*/
|
||||
if (is_mutual_close(tx, scriptpubkey[LOCAL], scriptpubkey[REMOTE], &mutual_outnum))
|
||||
handle_mutual_close(tx->chainparams, &txid, outs, tx,
|
||||
handle_mutual_close(&txid, outs, tx,
|
||||
tx_blockheight, mutual_outnum, open_is_replay);
|
||||
else {
|
||||
/* BOLT #5:
|
||||
|
|
|
@ -405,8 +405,7 @@ int main(int argc, char *argv[])
|
|||
min_possible_feerate = 10992;
|
||||
max_possible_feerate = 15370;
|
||||
|
||||
size_t ret = resolve_our_htlc_ourcommit(chainparams_by_bip173("bc"),
|
||||
out,
|
||||
size_t ret = resolve_our_htlc_ourcommit(out,
|
||||
matches,
|
||||
htlcs,
|
||||
htlc_scripts,
|
||||
|
|
Loading…
Add table
Reference in a new issue