Christian Decker
5 years ago
committed by
Rusty Russell
3 changed files with 68 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||||
|
#include <assert.h> |
||||
|
#include <common/penalty_base.h> |
||||
|
#include <wire/wire.h> |
||||
|
|
||||
|
/* txout must be within tx! */ |
||||
|
struct penalty_base *penalty_base_new(const tal_t *ctx, |
||||
|
u64 commitment_num, |
||||
|
const struct bitcoin_tx *tx, |
||||
|
const struct wally_tx_output *txout) |
||||
|
{ |
||||
|
struct penalty_base *pbase = tal(ctx, struct penalty_base); |
||||
|
|
||||
|
pbase->commitment_num = commitment_num; |
||||
|
bitcoin_txid(tx, &pbase->txid); |
||||
|
pbase->outnum = txout - tx->wtx->outputs; |
||||
|
assert(pbase->outnum < tx->wtx->num_outputs); |
||||
|
pbase->amount.satoshis = txout->satoshi; /* Raw: from wally_tx_output */ |
||||
|
|
||||
|
return pbase; |
||||
|
} |
||||
|
|
||||
|
void towire_penalty_base(u8 **pptr, const struct penalty_base *pbase) |
||||
|
{ |
||||
|
towire_u64(pptr, pbase->commitment_num); |
||||
|
towire_bitcoin_txid(pptr, &pbase->txid); |
||||
|
towire_u32(pptr, pbase->outnum); |
||||
|
towire_amount_sat(pptr, pbase->amount); |
||||
|
} |
||||
|
|
||||
|
void fromwire_penalty_base(const u8 **pptr, size_t *max, |
||||
|
struct penalty_base *pbase) |
||||
|
{ |
||||
|
pbase->commitment_num = fromwire_u64(pptr, max); |
||||
|
fromwire_bitcoin_txid(pptr, max, &pbase->txid); |
||||
|
pbase->outnum = fromwire_u32(pptr, max); |
||||
|
pbase->amount = fromwire_amount_sat(pptr, max); |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
#ifndef LIGHTNING_COMMON_PENALTY_BASE_H |
||||
|
#define LIGHTNING_COMMON_PENALTY_BASE_H |
||||
|
#include "config.h" |
||||
|
#include <bitcoin/tx.h> |
||||
|
#include <ccan/short_types/short_types.h> |
||||
|
#include <common/amount.h> |
||||
|
|
||||
|
/* To create a penalty, all we need are these. */ |
||||
|
struct penalty_base { |
||||
|
/* The remote commitment index. */ |
||||
|
u64 commitment_num; |
||||
|
/* The remote commitment txid. */ |
||||
|
struct bitcoin_txid txid; |
||||
|
/* The remote commitment's "to-local" output. */ |
||||
|
u32 outnum; |
||||
|
/* The amount of the remote commitment's "to-local" output. */ |
||||
|
struct amount_sat amount; |
||||
|
}; |
||||
|
|
||||
|
/* txout must be within tx! */ |
||||
|
struct penalty_base *penalty_base_new(const tal_t *ctx, |
||||
|
u64 commitment_num, |
||||
|
const struct bitcoin_tx *tx, |
||||
|
const struct wally_tx_output *txout); |
||||
|
|
||||
|
void towire_penalty_base(u8 **pptr, const struct penalty_base *pbase); |
||||
|
void fromwire_penalty_base(const u8 **ptr, size_t *max, |
||||
|
struct penalty_base *pbase); |
||||
|
|
||||
|
#endif /* LIGHTNING_COMMON_PENALTY_BASE_H */ |
Loading…
Reference in new issue