core-lightning/close_tx.c
Rusty Russell 23f9c7c209 permute_tx: don't save permutation map.
We no longer need it anywhere.  This simplifies things to the point where
we might as well just not include dust outputs as we go, rather than
explicitly removing them, which gets rid of remove_dust.c as well.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-08-18 14:23:46 +09:30

44 lines
1.3 KiB
C

#include "bitcoin/script.h"
#include "bitcoin/tx.h"
#include "close_tx.h"
#include "permute_tx.h"
#include "protobuf_convert.h"
struct bitcoin_tx *create_close_tx(secp256k1_context *secpctx,
const tal_t *ctx,
const u8 *our_script,
const u8 *their_script,
const struct sha256_double *anchor_txid,
unsigned int anchor_index,
u64 anchor_satoshis,
uint64_t to_us, uint64_t to_them)
{
struct bitcoin_tx *tx;
/* Now create close tx: one input, two outputs. */
tx = bitcoin_tx(ctx, 1, 2);
/* Our input spends the anchor tx output. */
tx->input[0].txid = *anchor_txid;
tx->input[0].index = anchor_index;
tx->input[0].amount = tal_dup(tx->input, u64, &anchor_satoshis);
/* One output is to us. */
tx->output[0].amount = to_us;
tx->output[0].script = tal_dup_arr(tx, u8,
our_script, tal_count(our_script), 0);
tx->output[0].script_length = tal_count(tx->output[0].script);
/* Other output is to them. */
tx->output[1].amount = to_them;
tx->output[1].script = tal_dup_arr(tx, u8,
their_script, tal_count(their_script),
0);
tx->output[1].script_length = tal_count(tx->output[1].script);
assert(tx->output[0].amount + tx->output[1].amount <= anchor_satoshis);
permute_outputs(tx->output, 2);
return tx;
}