Browse Source

bitcoin/tx: add helper to write blob of data.

We do this a lot.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 9 years ago
parent
commit
ee5f0e3ea6
  1. 17
      bitcoin/tx.c

17
bitcoin/tx.c

@ -55,13 +55,20 @@ static void add_le64(u64 v,
add(&l, sizeof(l), addp); add(&l, sizeof(l), addp);
} }
static void add_varint_blob(const void *blob, varint_t len,
void (*add)(const void *, size_t, void *),
void *addp)
{
add_varint(len, add, addp);
add(blob, len, addp);
}
static void add_tx_input(const struct bitcoin_tx_input *input, static void add_tx_input(const struct bitcoin_tx_input *input,
void (*add)(const void *, size_t, void *), void *addp) void (*add)(const void *, size_t, void *), void *addp)
{ {
add(&input->txid, sizeof(input->txid), addp); add(&input->txid, sizeof(input->txid), addp);
add_le32(input->index, add, addp); add_le32(input->index, add, addp);
add_varint(input->script_length, add, addp); add_varint_blob(input->script, input->script_length, add, addp);
add(input->script, input->script_length, addp);
add_le32(input->sequence_number, add, addp); add_le32(input->sequence_number, add, addp);
} }
@ -69,8 +76,7 @@ static void add_tx_output(const struct bitcoin_tx_output *output,
void (*add)(const void *, size_t, void *), void *addp) void (*add)(const void *, size_t, void *), void *addp)
{ {
add_le64(output->amount, add, addp); add_le64(output->amount, add, addp);
add_varint(output->script_length, add, addp); add_varint_blob(output->script, output->script_length, add, addp);
add(output->script, output->script_length, addp);
} }
/* BIP 141: /* BIP 141:
@ -79,8 +85,7 @@ static void add_tx_output(const struct bitcoin_tx_output *output,
static void add_witness(const u8 *witness, static void add_witness(const u8 *witness,
void (*add)(const void *, size_t, void *), void *addp) void (*add)(const void *, size_t, void *), void *addp)
{ {
add_varint(tal_count(witness), add, addp); add_varint_blob(witness, tal_count(witness), add, addp);
add(witness, tal_count(witness), addp);
} }
/* BIP144: /* BIP144:

Loading…
Cancel
Save