diff --git a/lightningd/lightningd.h b/lightningd/lightningd.h index 25223be46..d3f9b0682 100644 --- a/lightningd/lightningd.h +++ b/lightningd/lightningd.h @@ -20,15 +20,9 @@ struct config { /* How long do we let them lock up our funds? (blocks) */ u32 locktime_max; - /* How many blocks before we expect to see anchor?. */ - u32 anchor_onchain_wait; - /* How many confirms until we consider an anchor "settled". */ u32 anchor_confirms; - /* How long will we accept them waiting? */ - u32 anchor_confirms_max; - /* Maximum percent of fee rate we'll accept. */ u32 commitment_fee_max_percent; @@ -44,9 +38,6 @@ struct config { /* Minimum CLTV if we're the final hop.*/ u32 cltv_final; - /* Maximum time for an expiring HTLC (blocks). */ - u32 max_htlc_expiry; - /* Fee rates. */ u32 fee_base; s32 fee_per_satoshi; diff --git a/lightningd/opening_control.c b/lightningd/opening_control.c index 77f101fd5..254fb0438 100644 --- a/lightningd/opening_control.c +++ b/lightningd/opening_control.c @@ -624,12 +624,10 @@ new_uncommitted_channel(struct lightningd *ld, static void channel_config(struct lightningd *ld, struct channel_config *ours, u32 *max_to_self_delay, - u32 *max_minimum_depth, u64 *min_effective_htlc_capacity_msat) { /* FIXME: depend on feerate. */ *max_to_self_delay = ld->config.locktime_max; - *max_minimum_depth = ld->config.anchor_confirms_max; /* This is 1c at $1000/BTC */ *min_effective_htlc_capacity_msat = 1000000; @@ -678,7 +676,7 @@ u8 *peer_accept_channel(const tal_t *ctx, const struct channel_id *channel_id, const u8 *open_msg) { - u32 max_to_self_delay, max_minimum_depth; + u32 max_to_self_delay; u64 min_effective_htlc_capacity_msat; u8 *msg; struct uncommitted_channel *uc; @@ -723,7 +721,7 @@ u8 *peer_accept_channel(const tal_t *ctx, uc->minimum_depth = ld->config.anchor_confirms; channel_config(ld, &uc->our_config, - &max_to_self_delay, &max_minimum_depth, + &max_to_self_delay, &min_effective_htlc_capacity_msat); msg = towire_opening_init(uc, get_chainparams(ld)->index, @@ -751,7 +749,7 @@ static void peer_offer_channel(struct lightningd *ld, int peer_fd, int gossip_fd) { u8 *msg; - u32 max_to_self_delay, max_minimum_depth; + u32 max_to_self_delay; u64 min_effective_htlc_capacity_msat; /* Remove from list, it's not pending any more. */ @@ -793,7 +791,7 @@ static void peer_offer_channel(struct lightningd *ld, } channel_config(ld, &fc->uc->our_config, - &max_to_self_delay, &max_minimum_depth, + &max_to_self_delay, &min_effective_htlc_capacity_msat); msg = towire_opening_init(fc, @@ -807,7 +805,6 @@ static void peer_offer_channel(struct lightningd *ld, msg = towire_opening_funder(fc, fc->wtx.amount, fc->push_msat, get_feerate(ld->topology, FEERATE_NORMAL), - max_minimum_depth, fc->wtx.change, fc->wtx.change_key_index, fc->channel_flags, fc->wtx.utxos, diff --git a/lightningd/options.c b/lightningd/options.c index b429524b3..3dc6d4161 100644 --- a/lightningd/options.c +++ b/lightningd/options.c @@ -304,15 +304,9 @@ static void config_register_opts(struct lightningd *ld) opt_register_arg("--max-locktime-blocks", opt_set_u32, opt_show_u32, &ld->config.locktime_max, "Maximum blocks a peer can lock up our funds"); - opt_register_arg("--anchor-onchain", opt_set_u32, opt_show_u32, - &ld->config.anchor_onchain_wait, - "Blocks before we give up on pending anchor transaction"); opt_register_arg("--anchor-confirms", opt_set_u32, opt_show_u32, &ld->config.anchor_confirms, "Confirmations required for anchor transaction"); - opt_register_arg("--max-anchor-confirms", opt_set_u32, opt_show_u32, - &ld->config.anchor_confirms_max, - "Maximum confirmations other side can wait for anchor transaction"); opt_register_arg("--commit-fee-min=", opt_set_u32, opt_show_u32, &ld->config.commitment_fee_min_percent, "Minimum percentage of fee to accept for commitment"); @@ -331,9 +325,6 @@ static void config_register_opts(struct lightningd *ld) opt_register_arg("--cltv-final", opt_set_u32, opt_show_u32, &ld->config.cltv_final, "Number of blocks for final ctlv_expiry"); - opt_register_arg("--max-htlc-expiry", opt_set_u32, opt_show_u32, - &ld->config.max_htlc_expiry, - "Maximum number of blocks to accept an HTLC before expiry"); opt_register_arg("--commit-time", opt_set_time, opt_show_time, &ld->config.commit_time, "Time after changes before sending out COMMIT"); @@ -447,6 +438,11 @@ static void dev_register_opts(struct lightningd *ld) opt_register_arg("--dev-override-fee-rates", opt_set_fee_rates, NULL, ld->topology, "Force a specific rates (immediate/normal/slow) in satoshis per kw regardless of estimated fees"); + + opt_register_arg( + "--dev-channel-update-interval=", opt_set_u32, opt_show_u32, + &ld->config.channel_update_interval, + "Time in seconds between channel updates for our own channels."); } #endif @@ -454,18 +450,12 @@ static const struct config testnet_config = { /* 6 blocks to catch cheating attempts. */ .locktime_blocks = 6, - /* They can have up to 3 days. */ - .locktime_max = 3 * 6 * 24, - - /* Testnet can have long runs of empty blocks. */ - .anchor_onchain_wait = 100, + /* They can have up to 5 days. */ + .locktime_max = 5 * 6 * 24, /* We're fairly trusting, under normal circumstances. */ .anchor_confirms = 1, - /* More than 10 confirms seems overkill. */ - .anchor_confirms_max = 10, - /* Testnet fees are crazy, allow infinite feerange. */ .commitment_fee_min_percent = 0, .commitment_fee_max_percent = 0, @@ -477,9 +467,6 @@ static const struct config testnet_config = { .cltv_expiry_delta = 6, .cltv_final = 6, - /* Don't lock up channel for more than 5 days. */ - .max_htlc_expiry = 5 * 6 * 24, - /* Send commit 10msec after receiving; almost immediately. */ .commit_time = TIME_FROM_MSEC(10), @@ -507,18 +494,12 @@ static const struct config mainnet_config = { /* ~one day to catch cheating attempts. */ .locktime_blocks = 6 * 24, - /* They can have up to 3 days. */ - .locktime_max = 3 * 6 * 24, - - /* You should get in within 10 blocks. */ - .anchor_onchain_wait = 10, + /* They can have up to 5 days. */ + .locktime_max = 5 * 6 * 24, /* We're fairly trusting, under normal circumstances. */ .anchor_confirms = 3, - /* More than 10 confirms seems overkill. */ - .anchor_confirms_max = 10, - /* Insist between 2 and 20 times the 2-block fee. */ .commitment_fee_min_percent = 200, .commitment_fee_max_percent = 2000, @@ -538,9 +519,6 @@ static const struct config mainnet_config = { * worst case for the terminal node C lower at `2R+G+S` blocks */ .cltv_final = 8, - /* Don't lock up channel for more than 5 days. */ - .max_htlc_expiry = 5 * 6 * 24, - /* Send commit 10msec after receiving; almost immediately. */ .commit_time = TIME_FROM_MSEC(10), @@ -739,11 +717,6 @@ void register_opts(struct lightningd *ld) &ld->pidfile, "Specify pid file"); - opt_register_arg( - "--channel-update-interval=", opt_set_u32, opt_show_u32, - &ld->config.channel_update_interval, - "Time in seconds between channel updates for our own channels."); - opt_register_logging(ld); opt_register_version(); diff --git a/lightningd/peer_htlcs.c b/lightningd/peer_htlcs.c index 242310cea..3dbfc49ad 100644 --- a/lightningd/peer_htlcs.c +++ b/lightningd/peer_htlcs.c @@ -490,12 +490,12 @@ static void forward_htlc(struct htlc_in *hin, * 1. type: 21 (`expiry_too_far`) */ if (get_block_height(ld->topology) - + ld->config.max_htlc_expiry < outgoing_cltv_value) { + + ld->config.locktime_max < outgoing_cltv_value) { log_debug(hin->key.channel->log, "Expiry cltv %u too far from current %u + max %u", outgoing_cltv_value, get_block_height(ld->topology), - ld->config.max_htlc_expiry); + ld->config.locktime_max); failcode = WIRE_EXPIRY_TOO_FAR; goto fail; } diff --git a/openingd/opening.c b/openingd/opening.c index eb0c3ba56..4bb4e46a4 100644 --- a/openingd/opening.c +++ b/openingd/opening.c @@ -242,7 +242,6 @@ static u8 *opening_read_peer_msg(struct state *state) static u8 *funder_channel(struct state *state, const struct pubkey *our_funding_pubkey, const struct basepoints *ours, - u32 max_minimum_depth, u64 change_satoshis, u32 change_keyindex, u8 channel_flags, struct utxo **utxos, @@ -352,10 +351,10 @@ static u8 *funder_channel(struct state *state, * Other fields have the same requirements as their counterparts in * `open_channel`. */ - if (minimum_depth > max_minimum_depth) + if (minimum_depth > 10) negotiation_failed(state, "minimum_depth %u larger than %u", - minimum_depth, max_minimum_depth); + minimum_depth, 10); /* BOLT #2: * @@ -800,7 +799,7 @@ int main(int argc, char *argv[]) struct privkey seed; struct basepoints our_points; struct pubkey our_funding_pubkey; - u32 minimum_depth, max_minimum_depth; + u32 minimum_depth; u32 min_feerate, max_feerate; u64 change_satoshis; u32 change_keyindex; @@ -849,11 +848,11 @@ int main(int argc, char *argv[]) if (fromwire_opening_funder(state, msg, &state->funding_satoshis, &state->push_msat, - &state->feerate_per_kw, &max_minimum_depth, + &state->feerate_per_kw, &change_satoshis, &change_keyindex, &channel_flags, &utxos, &bip32_base)) { msg = funder_channel(state, &our_funding_pubkey, &our_points, - max_minimum_depth, change_satoshis, + change_satoshis, change_keyindex, channel_flags, utxos, &bip32_base); peer_billboard(false, diff --git a/openingd/opening_wire.csv b/openingd/opening_wire.csv index c55bc3edd..a9c16cd0f 100644 --- a/openingd/opening_wire.csv +++ b/openingd/opening_wire.csv @@ -19,7 +19,6 @@ opening_funder,6001 opening_funder,,funding_satoshis,u64 opening_funder,,push_msat,u64 opening_funder,,feerate_per_kw,u32 -opening_funder,,max_minimum_depth,u32 opening_funder,,change_satoshis,u64 opening_funder,,change_keyindex,u32 opening_funder,,channel_flags,u8 diff --git a/tests/test_gossip.py b/tests/test_gossip.py index e595d863d..d84c32ad3 100644 --- a/tests/test_gossip.py +++ b/tests/test_gossip.py @@ -9,11 +9,11 @@ import unittest DEVELOPER = os.getenv("DEVELOPER", "0") == "1" -@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1 for --dev-broadcast-interval") +@unittest.skipIf(not DEVELOPER, "needs --dev-broadcast-interval, --dev-channelupdate-interval") def test_gossip_pruning(node_factory, bitcoind): """ Create channel and see it being updated in time before pruning """ - opts = {'channel-update-interval': 5} + opts = {'dev-channel-update-interval': 5} l1, l2, l3 = node_factory.get_nodes(3, opts) l1.rpc.connect(l2.info['id'], 'localhost', l2.port) diff --git a/tests/test_lightningd.py b/tests/test_lightningd.py index 58ab65e7f..d654e70de 100644 --- a/tests/test_lightningd.py +++ b/tests/test_lightningd.py @@ -3623,7 +3623,7 @@ class LightningDTests(BaseLightningDTests): """Add some funds, fund a channel without enough funds""" # Previous runs with same bitcoind can leave funds! l1 = self.node_factory.get_node(random_hsm=True) - max_locktime = 3 * 6 * 24 + max_locktime = 5 * 6 * 24 l2 = self.node_factory.get_node(options={'locktime-blocks': max_locktime + 1}) l1.rpc.connect(l2.info['id'], 'localhost', l2.port)