mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-20 15:44:21 +01:00
Move funding.[ch] to daemon/channel.[ch].
It's a more logical name, and a more logical place. We change "funding" to "channel" in the remaining exposed symbols, too. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
2
Makefile
2
Makefile
@@ -43,7 +43,6 @@ CORE_SRC := \
|
|||||||
close_tx.c \
|
close_tx.c \
|
||||||
commit_tx.c \
|
commit_tx.c \
|
||||||
find_p2sh_out.c \
|
find_p2sh_out.c \
|
||||||
funding.c \
|
|
||||||
lightning.pb-c.c \
|
lightning.pb-c.c \
|
||||||
opt_bits.c \
|
opt_bits.c \
|
||||||
permute_tx.c \
|
permute_tx.c \
|
||||||
@@ -154,7 +153,6 @@ BITCOIN_HEADERS := bitcoin/address.h \
|
|||||||
CORE_HEADERS := close_tx.h \
|
CORE_HEADERS := close_tx.h \
|
||||||
commit_tx.h \
|
commit_tx.h \
|
||||||
find_p2sh_out.h \
|
find_p2sh_out.h \
|
||||||
funding.h \
|
|
||||||
names.h \
|
names.h \
|
||||||
opt_bits.h \
|
opt_bits.h \
|
||||||
overflows.h \
|
overflows.h \
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include "bitcoin/shadouble.h"
|
#include "bitcoin/shadouble.h"
|
||||||
#include "bitcoin/tx.h"
|
#include "bitcoin/tx.h"
|
||||||
#include "commit_tx.h"
|
#include "commit_tx.h"
|
||||||
#include "funding.h"
|
#include "daemon/channel.h"
|
||||||
#include "overflows.h"
|
#include "overflows.h"
|
||||||
#include "permute_tx.h"
|
#include "permute_tx.h"
|
||||||
#include "remove_dust.h"
|
#include "remove_dust.h"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef LIGHTNING_COMMIT_TX_H
|
#ifndef LIGHTNING_COMMIT_TX_H
|
||||||
#define LIGHTNING_COMMIT_TX_H
|
#define LIGHTNING_COMMIT_TX_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "funding.h"
|
#include "daemon/channel.h"
|
||||||
|
|
||||||
struct channel_state;
|
struct channel_state;
|
||||||
struct sha256_double;
|
struct sha256_double;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ DAEMON_LIB_OBJS := $(DAEMON_LIB_SRC:.c=.o)
|
|||||||
DAEMON_SRC := \
|
DAEMON_SRC := \
|
||||||
daemon/bitcoind.c \
|
daemon/bitcoind.c \
|
||||||
daemon/chaintopology.c \
|
daemon/chaintopology.c \
|
||||||
|
daemon/channel.c \
|
||||||
daemon/controlled_time.c \
|
daemon/controlled_time.c \
|
||||||
daemon/cryptopkt.c \
|
daemon/cryptopkt.c \
|
||||||
daemon/dns.c \
|
daemon/dns.c \
|
||||||
@@ -46,6 +47,7 @@ DAEMON_JSMN_HEADERS := daemon/jsmn/jsmn.h
|
|||||||
DAEMON_HEADERS := \
|
DAEMON_HEADERS := \
|
||||||
daemon/bitcoind.h \
|
daemon/bitcoind.h \
|
||||||
daemon/chaintopology.h \
|
daemon/chaintopology.h \
|
||||||
|
daemon/channel.h \
|
||||||
daemon/configdir.h \
|
daemon/configdir.h \
|
||||||
daemon/controlled_time.h \
|
daemon/controlled_time.h \
|
||||||
daemon/cryptopkt.h \
|
daemon/cryptopkt.h \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "funding.h"
|
#include "channel.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ccan/array_size/array_size.h>
|
#include <ccan/array_size/array_size.h>
|
||||||
#include <ccan/mem/mem.h>
|
#include <ccan/mem/mem.h>
|
||||||
@@ -127,7 +127,7 @@ static bool change_funding(uint64_t anchor_satoshis,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct channel_state *initial_funding(const tal_t *ctx,
|
struct channel_state *initial_cstate(const tal_t *ctx,
|
||||||
uint64_t anchor_satoshis,
|
uint64_t anchor_satoshis,
|
||||||
uint32_t fee_rate,
|
uint32_t fee_rate,
|
||||||
enum channel_side funding)
|
enum channel_side funding)
|
||||||
@@ -211,7 +211,7 @@ bool force_fee(struct channel_state *cstate, uint64_t fee)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add a HTLC to @creator if it can afford it. */
|
/* Add a HTLC to @creator if it can afford it. */
|
||||||
struct channel_htlc *funding_add_htlc(struct channel_state *cstate,
|
struct channel_htlc *cstate_add_htlc(struct channel_state *cstate,
|
||||||
u32 msatoshis,
|
u32 msatoshis,
|
||||||
const struct abs_locktime *expiry,
|
const struct abs_locktime *expiry,
|
||||||
const struct sha256 *rhash,
|
const struct sha256 *rhash,
|
||||||
@@ -286,21 +286,21 @@ static void remove_htlc(struct channel_state *cstate,
|
|||||||
cstate->changes++;
|
cstate->changes++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void funding_fail_htlc(struct channel_state *cstate,
|
void cstate_fail_htlc(struct channel_state *cstate,
|
||||||
struct channel_htlc *htlc,
|
struct channel_htlc *htlc,
|
||||||
enum channel_side side)
|
enum channel_side side)
|
||||||
{
|
{
|
||||||
remove_htlc(cstate, side, side, htlc);
|
remove_htlc(cstate, side, side, htlc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void funding_fulfill_htlc(struct channel_state *cstate,
|
void cstate_fulfill_htlc(struct channel_state *cstate,
|
||||||
struct channel_htlc *htlc,
|
struct channel_htlc *htlc,
|
||||||
enum channel_side side)
|
enum channel_side side)
|
||||||
{
|
{
|
||||||
remove_htlc(cstate, side, !side, htlc);
|
remove_htlc(cstate, side, !side, htlc);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t funding_find_htlc(const struct channel_state *cstate,
|
size_t cstate_find_htlc(const struct channel_state *cstate,
|
||||||
const struct sha256 *rhash,
|
const struct sha256 *rhash,
|
||||||
enum channel_side side)
|
enum channel_side side)
|
||||||
{
|
{
|
||||||
@@ -313,7 +313,7 @@ size_t funding_find_htlc(const struct channel_state *cstate,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct channel_htlc *funding_htlc_by_id(const struct channel_state *cstate,
|
struct channel_htlc *cstate_htlc_by_id(const struct channel_state *cstate,
|
||||||
uint64_t id,
|
uint64_t id,
|
||||||
enum channel_side side)
|
enum channel_side side)
|
||||||
{
|
{
|
||||||
@@ -326,7 +326,7 @@ struct channel_htlc *funding_htlc_by_id(const struct channel_state *cstate,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct channel_state *copy_funding(const tal_t *ctx,
|
struct channel_state *copy_cstate(const tal_t *ctx,
|
||||||
const struct channel_state *cstate)
|
const struct channel_state *cstate)
|
||||||
{
|
{
|
||||||
struct channel_state *cs = tal_dup(ctx, struct channel_state, cstate);
|
struct channel_state *cs = tal_dup(ctx, struct channel_state, cstate);
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef LIGHTNING_FUNDING_H
|
#ifndef LIGHTNING_DAEMON_CHANNEL_H
|
||||||
#define LIGHTNING_FUNDING_H
|
#define LIGHTNING_DAEMON_CHANNEL_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "bitcoin/locktime.h"
|
#include "bitcoin/locktime.h"
|
||||||
#include <ccan/crypto/sha256/sha256.h>
|
#include <ccan/crypto/sha256/sha256.h>
|
||||||
@@ -39,7 +39,7 @@ struct channel_state {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initial_funding: Given initial fees and funding anchor, what is initial state?
|
* initial_cstate: Given initial fees and funding anchor, what is initial state?
|
||||||
* @ctx: tal context to allocate return value from.
|
* @ctx: tal context to allocate return value from.
|
||||||
* @anchor_satoshis: The anchor amount.
|
* @anchor_satoshis: The anchor amount.
|
||||||
* @fee_rate: amount to pay in fees per kb (in satoshi).
|
* @fee_rate: amount to pay in fees per kb (in satoshi).
|
||||||
@@ -47,21 +47,21 @@ struct channel_state {
|
|||||||
*
|
*
|
||||||
* Returns state, or NULL if malformed.
|
* Returns state, or NULL if malformed.
|
||||||
*/
|
*/
|
||||||
struct channel_state *initial_funding(const tal_t *ctx,
|
struct channel_state *initial_cstate(const tal_t *ctx,
|
||||||
uint64_t anchor_satoshis,
|
uint64_t anchor_satoshis,
|
||||||
uint32_t fee_rate,
|
uint32_t fee_rate,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* copy_funding: Make a deep copy of channel_state
|
* copy_cstate: Make a deep copy of channel_state
|
||||||
* @ctx: tal context to allocate return value from.
|
* @ctx: tal context to allocate return value from.
|
||||||
* @cstate: state to copy.
|
* @cstate: state to copy.
|
||||||
*/
|
*/
|
||||||
struct channel_state *copy_funding(const tal_t *ctx,
|
struct channel_state *copy_cstate(const tal_t *ctx,
|
||||||
const struct channel_state *cstate);
|
const struct channel_state *cstate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* funding_add_htlc: append an HTLC to cstate if it can afford it
|
* cstate_add_htlc: append an HTLC to cstate if it can afford it
|
||||||
* @cstate: The channel state
|
* @cstate: The channel state
|
||||||
* @msatoshis: Millisatoshi going into a HTLC
|
* @msatoshis: Millisatoshi going into a HTLC
|
||||||
* @expiry: time it expires
|
* @expiry: time it expires
|
||||||
@@ -77,7 +77,7 @@ struct channel_state *copy_funding(const tal_t *ctx,
|
|||||||
* fee_msat are adjusted accordingly; &cstate->side[dir].htlcs[<last>]
|
* fee_msat are adjusted accordingly; &cstate->side[dir].htlcs[<last>]
|
||||||
* is returned.
|
* is returned.
|
||||||
*/
|
*/
|
||||||
struct channel_htlc *funding_add_htlc(struct channel_state *cstate,
|
struct channel_htlc *cstate_add_htlc(struct channel_state *cstate,
|
||||||
u32 msatoshis,
|
u32 msatoshis,
|
||||||
const struct abs_locktime *expiry,
|
const struct abs_locktime *expiry,
|
||||||
const struct sha256 *rhash,
|
const struct sha256 *rhash,
|
||||||
@@ -86,7 +86,7 @@ struct channel_htlc *funding_add_htlc(struct channel_state *cstate,
|
|||||||
size_t routing_len,
|
size_t routing_len,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
/**
|
/**
|
||||||
* funding_fail_htlc: remove an HTLC, funds to the side which offered it.
|
* cstate_fail_htlc: remove an HTLC, funds to the side which offered it.
|
||||||
* @cstate: The channel state
|
* @cstate: The channel state
|
||||||
* @htlc: the htlc in cstate->side[dir].htlcs[].
|
* @htlc: the htlc in cstate->side[dir].htlcs[].
|
||||||
* @side: OURS or THEIRS
|
* @side: OURS or THEIRS
|
||||||
@@ -94,12 +94,12 @@ struct channel_htlc *funding_add_htlc(struct channel_state *cstate,
|
|||||||
* This will remove the @index'th entry in cstate->side[dir].htlcs[], and credit
|
* This will remove the @index'th entry in cstate->side[dir].htlcs[], and credit
|
||||||
* the value of the HTLC (back) to cstate->side[dir].
|
* the value of the HTLC (back) to cstate->side[dir].
|
||||||
*/
|
*/
|
||||||
void funding_fail_htlc(struct channel_state *cstate,
|
void cstate_fail_htlc(struct channel_state *cstate,
|
||||||
struct channel_htlc *htlc,
|
struct channel_htlc *htlc,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* funding_fulfill_htlc: remove an HTLC, funds to side which accepted it.
|
* cstate_fulfill_htlc: remove an HTLC, funds to side which accepted it.
|
||||||
* @cstate: The channel state
|
* @cstate: The channel state
|
||||||
* @htlc: the htlc in cstate->side[dir].htlcs[].
|
* @htlc: the htlc in cstate->side[dir].htlcs[].
|
||||||
* @side: OURS or THEIRS
|
* @side: OURS or THEIRS
|
||||||
@@ -107,7 +107,7 @@ void funding_fail_htlc(struct channel_state *cstate,
|
|||||||
* This will remove the @index'th entry in cstate->side[dir].htlcs[], and credit
|
* This will remove the @index'th entry in cstate->side[dir].htlcs[], and credit
|
||||||
* the value of the HTLC to cstate->side[!dir].
|
* the value of the HTLC to cstate->side[!dir].
|
||||||
*/
|
*/
|
||||||
void funding_fulfill_htlc(struct channel_state *cstate,
|
void cstate_fulfill_htlc(struct channel_state *cstate,
|
||||||
struct channel_htlc *htlc,
|
struct channel_htlc *htlc,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
|
|
||||||
@@ -130,26 +130,26 @@ void adjust_fee(struct channel_state *cstate, uint32_t fee_rate);
|
|||||||
bool force_fee(struct channel_state *cstate, uint64_t fee);
|
bool force_fee(struct channel_state *cstate, uint64_t fee);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* funding_find_htlc: find an HTLC on this side of the channel.
|
* cstate_find_htlc: find an HTLC on this side of the channel.
|
||||||
* @cstate: The channel state
|
* @cstate: The channel state
|
||||||
* @rhash: hash of redeem secret
|
* @rhash: hash of redeem secret
|
||||||
* @side: OURS or THEIRS
|
* @side: OURS or THEIRS
|
||||||
*
|
*
|
||||||
* Returns a number < tal_count(cstate->side[dir].htlcs), or -1 on fail.
|
* Returns a number < tal_count(cstate->side[dir].htlcs), or -1 on fail.
|
||||||
*/
|
*/
|
||||||
size_t funding_find_htlc(const struct channel_state *cstate,
|
size_t cstate_find_htlc(const struct channel_state *cstate,
|
||||||
const struct sha256 *rhash,
|
const struct sha256 *rhash,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* funding_htlc_by_id: find an HTLC on this side of the channel by ID.
|
* cstate_htlc_by_id: find an HTLC on this side of the channel by ID.
|
||||||
* @cstate: The channel state
|
* @cstate: The channel state
|
||||||
* @id: id for HTLC.
|
* @id: id for HTLC.
|
||||||
* @side: OURS or THEIRS
|
* @side: OURS or THEIRS
|
||||||
*
|
*
|
||||||
* Returns a pointer into cstate->side[@side].htlcs, or NULL.
|
* Returns a pointer into cstate->side[@side].htlcs, or NULL.
|
||||||
*/
|
*/
|
||||||
struct channel_htlc *funding_htlc_by_id(const struct channel_state *cstate,
|
struct channel_htlc *cstate_htlc_by_id(const struct channel_state *cstate,
|
||||||
uint64_t id,
|
uint64_t id,
|
||||||
enum channel_side side);
|
enum channel_side side);
|
||||||
|
|
||||||
@@ -169,4 +169,4 @@ uint64_t fee_by_feerate(size_t txsize, uint32_t fee_rate);
|
|||||||
*/
|
*/
|
||||||
bool is_dust_amount(uint64_t satoshis);
|
bool is_dust_amount(uint64_t satoshis);
|
||||||
|
|
||||||
#endif /* LIGHTNING_FUNDING_H */
|
#endif /* LIGHTNING_DAEMON_CHANNEL_H */
|
||||||
@@ -198,7 +198,7 @@ void queue_pkt_htlc_add(struct peer *peer,
|
|||||||
* The sending node MUST add the HTLC addition to the unacked
|
* The sending node MUST add the HTLC addition to the unacked
|
||||||
* changeset for its remote commitment
|
* changeset for its remote commitment
|
||||||
*/
|
*/
|
||||||
htlc = funding_add_htlc(peer->remote.staging_cstate,
|
htlc = cstate_add_htlc(peer->remote.staging_cstate,
|
||||||
msatoshis, &locktime, rhash, id,
|
msatoshis, &locktime, rhash, id,
|
||||||
route, tal_count(route), OURS);
|
route, tal_count(route), OURS);
|
||||||
if (!htlc)
|
if (!htlc)
|
||||||
@@ -230,9 +230,9 @@ void queue_pkt_htlc_fulfill(struct peer *peer, u64 id, const struct rval *r)
|
|||||||
* The sending node MUST add the HTLC fulfill/fail to the
|
* The sending node MUST add the HTLC fulfill/fail to the
|
||||||
* unacked changeset for its remote commitment
|
* unacked changeset for its remote commitment
|
||||||
*/
|
*/
|
||||||
htlc = funding_htlc_by_id(peer->remote.staging_cstate, f->id, THEIRS);
|
htlc = cstate_htlc_by_id(peer->remote.staging_cstate, f->id, THEIRS);
|
||||||
assert(htlc);
|
assert(htlc);
|
||||||
funding_fulfill_htlc(peer->remote.staging_cstate, htlc, THEIRS);
|
cstate_fulfill_htlc(peer->remote.staging_cstate, htlc, THEIRS);
|
||||||
|
|
||||||
stage.fulfill.fulfill = HTLC_FULFILL;
|
stage.fulfill.fulfill = HTLC_FULFILL;
|
||||||
stage.fulfill.id = f->id;
|
stage.fulfill.id = f->id;
|
||||||
@@ -262,9 +262,9 @@ void queue_pkt_htlc_fail(struct peer *peer, u64 id)
|
|||||||
* The sending node MUST add the HTLC fulfill/fail to the
|
* The sending node MUST add the HTLC fulfill/fail to the
|
||||||
* unacked changeset for its remote commitment
|
* unacked changeset for its remote commitment
|
||||||
*/
|
*/
|
||||||
htlc = funding_htlc_by_id(peer->remote.staging_cstate, f->id, THEIRS);
|
htlc = cstate_htlc_by_id(peer->remote.staging_cstate, f->id, THEIRS);
|
||||||
assert(htlc);
|
assert(htlc);
|
||||||
funding_fail_htlc(peer->remote.staging_cstate, htlc, THEIRS);
|
cstate_fail_htlc(peer->remote.staging_cstate, htlc, THEIRS);
|
||||||
|
|
||||||
stage.fail.fail = HTLC_FAIL;
|
stage.fail.fail = HTLC_FAIL;
|
||||||
stage.fail.id = f->id;
|
stage.fail.id = f->id;
|
||||||
@@ -289,7 +289,7 @@ void queue_pkt_commit(struct peer *peer)
|
|||||||
* A sending node MUST apply all remote acked and unacked
|
* A sending node MUST apply all remote acked and unacked
|
||||||
* changes except unacked fee changes to the remote commitment
|
* changes except unacked fee changes to the remote commitment
|
||||||
* before generating `sig`. */
|
* before generating `sig`. */
|
||||||
ci->cstate = copy_funding(ci, peer->remote.staging_cstate);
|
ci->cstate = copy_cstate(ci, peer->remote.staging_cstate);
|
||||||
ci->tx = create_commit_tx(ci,
|
ci->tx = create_commit_tx(ci,
|
||||||
&peer->local.finalkey,
|
&peer->local.finalkey,
|
||||||
&peer->remote.finalkey,
|
&peer->remote.finalkey,
|
||||||
@@ -343,12 +343,12 @@ static void apply_changeset(struct peer *peer,
|
|||||||
for (i = 0; i < num_changes; i++) {
|
for (i = 0; i < num_changes; i++) {
|
||||||
switch (changes[i].type) {
|
switch (changes[i].type) {
|
||||||
case HTLC_ADD:
|
case HTLC_ADD:
|
||||||
htlc = funding_htlc_by_id(which->staging_cstate,
|
htlc = cstate_htlc_by_id(which->staging_cstate,
|
||||||
changes[i].add.htlc.id, side);
|
changes[i].add.htlc.id, side);
|
||||||
if (htlc)
|
if (htlc)
|
||||||
fatal("Can't add duplicate HTLC id %"PRIu64,
|
fatal("Can't add duplicate HTLC id %"PRIu64,
|
||||||
changes[i].add.htlc.id);
|
changes[i].add.htlc.id);
|
||||||
if (!funding_add_htlc(which->staging_cstate,
|
if (!cstate_add_htlc(which->staging_cstate,
|
||||||
changes[i].add.htlc.msatoshis,
|
changes[i].add.htlc.msatoshis,
|
||||||
&changes[i].add.htlc.expiry,
|
&changes[i].add.htlc.expiry,
|
||||||
&changes[i].add.htlc.rhash,
|
&changes[i].add.htlc.rhash,
|
||||||
@@ -360,20 +360,20 @@ static void apply_changeset(struct peer *peer,
|
|||||||
side == OURS ? "ours" : "theirs");
|
side == OURS ? "ours" : "theirs");
|
||||||
continue;
|
continue;
|
||||||
case HTLC_FAIL:
|
case HTLC_FAIL:
|
||||||
htlc = funding_htlc_by_id(which->staging_cstate,
|
htlc = cstate_htlc_by_id(which->staging_cstate,
|
||||||
changes[i].fail.id, !side);
|
changes[i].fail.id, !side);
|
||||||
if (!htlc)
|
if (!htlc)
|
||||||
fatal("Can't fail non-exisent HTLC id %"PRIu64,
|
fatal("Can't fail non-exisent HTLC id %"PRIu64,
|
||||||
changes[i].fail.id);
|
changes[i].fail.id);
|
||||||
funding_fail_htlc(which->staging_cstate, htlc, !side);
|
cstate_fail_htlc(which->staging_cstate, htlc, !side);
|
||||||
continue;
|
continue;
|
||||||
case HTLC_FULFILL:
|
case HTLC_FULFILL:
|
||||||
htlc = funding_htlc_by_id(which->staging_cstate,
|
htlc = cstate_htlc_by_id(which->staging_cstate,
|
||||||
changes[i].fulfill.id, !side);
|
changes[i].fulfill.id, !side);
|
||||||
if (!htlc)
|
if (!htlc)
|
||||||
fatal("Can't fulfill non-exisent HTLC id %"PRIu64,
|
fatal("Can't fulfill non-exisent HTLC id %"PRIu64,
|
||||||
changes[i].fulfill.id);
|
changes[i].fulfill.id);
|
||||||
funding_fulfill_htlc(which->staging_cstate, htlc, !side);
|
cstate_fulfill_htlc(which->staging_cstate, htlc, !side);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
abort();
|
abort();
|
||||||
@@ -647,13 +647,13 @@ Pkt *accept_pkt_htlc_add(struct peer *peer, const Pkt *pkt)
|
|||||||
/* Note that it's not *our* problem if they do this, it's
|
/* Note that it's not *our* problem if they do this, it's
|
||||||
* theirs (future confusion). Nonetheless, we detect and
|
* theirs (future confusion). Nonetheless, we detect and
|
||||||
* error for them. */
|
* error for them. */
|
||||||
if (funding_htlc_by_id(peer->remote.staging_cstate, u->id, THEIRS)
|
if (cstate_htlc_by_id(peer->remote.staging_cstate, u->id, THEIRS)
|
||||||
|| funding_htlc_by_id(peer->remote.commit->cstate, u->id, THEIRS)) {
|
|| cstate_htlc_by_id(peer->remote.commit->cstate, u->id, THEIRS)) {
|
||||||
return pkt_err(peer, "HTLC id %"PRIu64" clashes for you", u->id);
|
return pkt_err(peer, "HTLC id %"PRIu64" clashes for you", u->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (funding_htlc_by_id(peer->local.staging_cstate, u->id, THEIRS)
|
if (cstate_htlc_by_id(peer->local.staging_cstate, u->id, THEIRS)
|
||||||
|| funding_htlc_by_id(peer->local.commit->cstate, u->id, THEIRS)) {
|
|| cstate_htlc_by_id(peer->local.commit->cstate, u->id, THEIRS)) {
|
||||||
return pkt_err(peer, "HTLC id %"PRIu64" clashes for you", u->id);
|
return pkt_err(peer, "HTLC id %"PRIu64" clashes for you", u->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +661,7 @@ Pkt *accept_pkt_htlc_add(struct peer *peer, const Pkt *pkt)
|
|||||||
*
|
*
|
||||||
* ...and the receiving node MUST add the HTLC addition to the
|
* ...and the receiving node MUST add the HTLC addition to the
|
||||||
* unacked changeset for its local commitment. */
|
* unacked changeset for its local commitment. */
|
||||||
htlc = funding_add_htlc(peer->local.staging_cstate,
|
htlc = cstate_add_htlc(peer->local.staging_cstate,
|
||||||
u->amount_msat, &expiry, &rhash, u->id,
|
u->amount_msat, &expiry, &rhash, u->id,
|
||||||
u->route->info.data, u->route->info.len,
|
u->route->info.data, u->route->info.len,
|
||||||
THEIRS);
|
THEIRS);
|
||||||
@@ -701,12 +701,12 @@ static Pkt *find_commited_htlc(struct peer *peer, uint64_t id,
|
|||||||
* current commitment transaction, and MUST fail the
|
* current commitment transaction, and MUST fail the
|
||||||
* connection if it does not.
|
* connection if it does not.
|
||||||
*/
|
*/
|
||||||
htlc = funding_htlc_by_id(peer->local.commit->cstate, id, OURS);
|
htlc = cstate_htlc_by_id(peer->local.commit->cstate, id, OURS);
|
||||||
if (!htlc)
|
if (!htlc)
|
||||||
return pkt_err(peer, "Did not find HTLC %"PRIu64, id);
|
return pkt_err(peer, "Did not find HTLC %"PRIu64, id);
|
||||||
|
|
||||||
/* They must not fail/fulfill twice, so it should be in staging, too. */
|
/* They must not fail/fulfill twice, so it should be in staging, too. */
|
||||||
*local_htlc = funding_htlc_by_id(peer->local.staging_cstate, id, OURS);
|
*local_htlc = cstate_htlc_by_id(peer->local.staging_cstate, id, OURS);
|
||||||
if (!*local_htlc)
|
if (!*local_htlc)
|
||||||
return pkt_err(peer, "Already removed HTLC %"PRIu64, id);
|
return pkt_err(peer, "Already removed HTLC %"PRIu64, id);
|
||||||
|
|
||||||
@@ -726,7 +726,7 @@ Pkt *accept_pkt_htlc_fail(struct peer *peer, const Pkt *pkt)
|
|||||||
|
|
||||||
/* FIXME: Save reason. */
|
/* FIXME: Save reason. */
|
||||||
|
|
||||||
funding_fail_htlc(peer->local.staging_cstate, htlc, OURS);
|
cstate_fail_htlc(peer->local.staging_cstate, htlc, OURS);
|
||||||
|
|
||||||
/* BOLT #2:
|
/* BOLT #2:
|
||||||
*
|
*
|
||||||
@@ -764,7 +764,7 @@ Pkt *accept_pkt_htlc_fulfill(struct peer *peer, const Pkt *pkt)
|
|||||||
* ... and the receiving node MUST add the HTLC fulfill/fail
|
* ... and the receiving node MUST add the HTLC fulfill/fail
|
||||||
* to the unacked changeset for its local commitment.
|
* to the unacked changeset for its local commitment.
|
||||||
*/
|
*/
|
||||||
funding_fulfill_htlc(peer->local.staging_cstate, htlc, OURS);
|
cstate_fulfill_htlc(peer->local.staging_cstate, htlc, OURS);
|
||||||
|
|
||||||
stage.fulfill.fulfill = HTLC_FULFILL;
|
stage.fulfill.fulfill = HTLC_FULFILL;
|
||||||
stage.fulfill.id = f->id;
|
stage.fulfill.id = f->id;
|
||||||
@@ -790,7 +790,7 @@ Pkt *accept_pkt_commit(struct peer *peer, const Pkt *pkt)
|
|||||||
* changes except unacked fee changes to the local commitment
|
* changes except unacked fee changes to the local commitment
|
||||||
*/
|
*/
|
||||||
/* (We already applied them to staging_cstate as we went) */
|
/* (We already applied them to staging_cstate as we went) */
|
||||||
ci->cstate = copy_funding(ci, peer->local.staging_cstate);
|
ci->cstate = copy_cstate(ci, peer->local.staging_cstate);
|
||||||
ci->tx = create_commit_tx(ci,
|
ci->tx = create_commit_tx(ci,
|
||||||
&peer->local.finalkey,
|
&peer->local.finalkey,
|
||||||
&peer->remote.finalkey,
|
&peer->remote.finalkey,
|
||||||
|
|||||||
@@ -602,8 +602,8 @@ static bool command_htlc_add(struct peer *peer, u64 msatoshis,
|
|||||||
* A node MUST NOT offer `amount_msat` it cannot pay for in
|
* A node MUST NOT offer `amount_msat` it cannot pay for in
|
||||||
* both commitment transactions at the current `fee_rate`
|
* both commitment transactions at the current `fee_rate`
|
||||||
*/
|
*/
|
||||||
cstate = copy_funding(peer, peer->remote.staging_cstate);
|
cstate = copy_cstate(peer, peer->remote.staging_cstate);
|
||||||
if (!funding_add_htlc(cstate, msatoshis,
|
if (!cstate_add_htlc(cstate, msatoshis,
|
||||||
&locktime, rhash, peer->htlc_id_counter,
|
&locktime, rhash, peer->htlc_id_counter,
|
||||||
route, tal_count(route),
|
route, tal_count(route),
|
||||||
OURS)) {
|
OURS)) {
|
||||||
@@ -614,8 +614,8 @@ static bool command_htlc_add(struct peer *peer, u64 msatoshis,
|
|||||||
}
|
}
|
||||||
tal_free(cstate);
|
tal_free(cstate);
|
||||||
|
|
||||||
cstate = copy_funding(peer, peer->local.staging_cstate);
|
cstate = copy_cstate(peer, peer->local.staging_cstate);
|
||||||
if (!funding_add_htlc(cstate, msatoshis,
|
if (!cstate_add_htlc(cstate, msatoshis,
|
||||||
&locktime, rhash, peer->htlc_id_counter,
|
&locktime, rhash, peer->htlc_id_counter,
|
||||||
route, tal_count(route),
|
route, tal_count(route),
|
||||||
OURS)) {
|
OURS)) {
|
||||||
@@ -2359,35 +2359,35 @@ void peer_both_committed_to(struct peer *peer,
|
|||||||
type = "ADD";
|
type = "ADD";
|
||||||
htlc_id = changes[i].add.htlc.id;
|
htlc_id = changes[i].add.htlc.id;
|
||||||
owner = owner_name(side);
|
owner = owner_name(side);
|
||||||
assert(funding_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
assert(cstate_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
||||||
side));
|
side));
|
||||||
assert(funding_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
assert(cstate_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
||||||
side));
|
side));
|
||||||
goto print;
|
goto print;
|
||||||
case HTLC_FAIL:
|
case HTLC_FAIL:
|
||||||
type = "FAIL";
|
type = "FAIL";
|
||||||
htlc_id = changes[i].fail.id;
|
htlc_id = changes[i].fail.id;
|
||||||
owner = owner_name(!side);
|
owner = owner_name(!side);
|
||||||
assert(!funding_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
assert(!cstate_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
||||||
!side));
|
!side));
|
||||||
assert(!funding_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
assert(!cstate_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
||||||
!side));
|
!side));
|
||||||
assert(funding_htlc_by_id(peer->remote.commit->prev->cstate,
|
assert(cstate_htlc_by_id(peer->remote.commit->prev->cstate,
|
||||||
htlc_id, !side)
|
htlc_id, !side)
|
||||||
|| funding_htlc_by_id(peer->local.commit->prev->cstate,
|
|| cstate_htlc_by_id(peer->local.commit->prev->cstate,
|
||||||
htlc_id, !side));
|
htlc_id, !side));
|
||||||
goto print;
|
goto print;
|
||||||
case HTLC_FULFILL:
|
case HTLC_FULFILL:
|
||||||
type = "FULFILL";
|
type = "FULFILL";
|
||||||
htlc_id = changes[i].fulfill.id;
|
htlc_id = changes[i].fulfill.id;
|
||||||
owner = owner_name(!side);
|
owner = owner_name(!side);
|
||||||
assert(!funding_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
assert(!cstate_htlc_by_id(peer->remote.commit->cstate, htlc_id,
|
||||||
!side));
|
!side));
|
||||||
assert(!funding_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
assert(!cstate_htlc_by_id(peer->local.commit->cstate, htlc_id,
|
||||||
!side));
|
!side));
|
||||||
assert(funding_htlc_by_id(peer->remote.commit->prev->cstate,
|
assert(cstate_htlc_by_id(peer->remote.commit->prev->cstate,
|
||||||
htlc_id, !side)
|
htlc_id, !side)
|
||||||
|| funding_htlc_by_id(peer->local.commit->prev->cstate,
|
|| cstate_htlc_by_id(peer->local.commit->prev->cstate,
|
||||||
htlc_id, !side));
|
htlc_id, !side));
|
||||||
goto print;
|
goto print;
|
||||||
}
|
}
|
||||||
@@ -2424,7 +2424,7 @@ bool setup_first_commit(struct peer *peer)
|
|||||||
assert(!peer->remote.commit->tx);
|
assert(!peer->remote.commit->tx);
|
||||||
|
|
||||||
/* Revocation hashes already filled in, from pkt_open */
|
/* Revocation hashes already filled in, from pkt_open */
|
||||||
peer->local.commit->cstate = initial_funding(peer,
|
peer->local.commit->cstate = initial_cstate(peer,
|
||||||
peer->anchor.satoshis,
|
peer->anchor.satoshis,
|
||||||
peer->local.commit_fee_rate,
|
peer->local.commit_fee_rate,
|
||||||
peer->local.offer_anchor
|
peer->local.offer_anchor
|
||||||
@@ -2433,7 +2433,7 @@ bool setup_first_commit(struct peer *peer)
|
|||||||
if (!peer->local.commit->cstate)
|
if (!peer->local.commit->cstate)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
peer->remote.commit->cstate = initial_funding(peer,
|
peer->remote.commit->cstate = initial_cstate(peer,
|
||||||
peer->anchor.satoshis,
|
peer->anchor.satoshis,
|
||||||
peer->remote.commit_fee_rate,
|
peer->remote.commit_fee_rate,
|
||||||
peer->local.offer_anchor
|
peer->local.offer_anchor
|
||||||
@@ -2468,8 +2468,8 @@ bool setup_first_commit(struct peer *peer)
|
|||||||
THEIRS,
|
THEIRS,
|
||||||
&peer->remote.commit->map);
|
&peer->remote.commit->map);
|
||||||
|
|
||||||
peer->local.staging_cstate = copy_funding(peer, peer->local.commit->cstate);
|
peer->local.staging_cstate = copy_cstate(peer, peer->local.commit->cstate);
|
||||||
peer->remote.staging_cstate = copy_funding(peer, peer->remote.commit->cstate);
|
peer->remote.staging_cstate = copy_cstate(peer, peer->remote.commit->cstate);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2652,10 +2652,10 @@ static size_t find_their_committed_htlc(struct peer *peer,
|
|||||||
const struct sha256 *rhash)
|
const struct sha256 *rhash)
|
||||||
{
|
{
|
||||||
/* Must be in last committed cstate. */
|
/* Must be in last committed cstate. */
|
||||||
if (funding_find_htlc(peer->remote.commit->cstate, rhash, THEIRS) == -1)
|
if (cstate_find_htlc(peer->remote.commit->cstate, rhash, THEIRS) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return funding_find_htlc(peer->remote.staging_cstate, rhash, THEIRS);
|
return cstate_find_htlc(peer->remote.staging_cstate, rhash, THEIRS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void json_fulfillhtlc(struct command *cmd,
|
static void json_fulfillhtlc(struct command *cmd,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#include "bitcoin/pubkey.h"
|
#include "bitcoin/pubkey.h"
|
||||||
#include "bitcoin/script.h"
|
#include "bitcoin/script.h"
|
||||||
#include "bitcoin/shadouble.h"
|
#include "bitcoin/shadouble.h"
|
||||||
#include "funding.h"
|
#include "channel.h"
|
||||||
#include "lightning.pb-c.h"
|
#include "lightning.pb-c.h"
|
||||||
#include "netaddr.h"
|
#include "netaddr.h"
|
||||||
#include "protobuf_convert.h"
|
#include "protobuf_convert.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user