2018-05-17 07:08:11 +02:00
|
|
|
#ifndef LIGHTNING_GOSSIPD_GOSSIP_CONSTANTS_H
|
|
|
|
#define LIGHTNING_GOSSIPD_GOSSIP_CONSTANTS_H
|
2019-09-18 03:05:05 +02:00
|
|
|
#include <common/utils.h>
|
2018-05-17 07:08:11 +02:00
|
|
|
|
|
|
|
/* BOLT #4:
|
|
|
|
*
|
|
|
|
* - Length: the maximum route length is limited to 20 hops.
|
|
|
|
*...
|
|
|
|
* 1. type: `onion_packet`
|
|
|
|
* 2. data:
|
2019-07-16 01:20:37 +02:00
|
|
|
* * [`byte`:`version`]
|
|
|
|
* * [`point`:`public_key`]
|
|
|
|
* * [`1300*byte`:`hops_data`]
|
2018-05-17 07:08:11 +02:00
|
|
|
*/
|
|
|
|
#define ROUTING_MAX_HOPS 20
|
|
|
|
|
|
|
|
/* BOLT #7:
|
|
|
|
*
|
|
|
|
* The `flags` bitfield...individual bits:
|
|
|
|
*...
|
|
|
|
* | 0 | `direction` | Direction this update refers to. |
|
|
|
|
* | 1 | `disable` | Disable the channel. |
|
|
|
|
*/
|
|
|
|
#define ROUTING_FLAGS_DIRECTION (1 << 0)
|
|
|
|
#define ROUTING_FLAGS_DISABLED (1 << 1)
|
|
|
|
|
2018-09-22 02:34:03 +02:00
|
|
|
/* BOLT #7:
|
|
|
|
*
|
|
|
|
* The `message_flags` bitfield is used to indicate the presence of optional
|
|
|
|
* fields in the `channel_update` message:
|
|
|
|
* | Bit Position | Name | Field |
|
|
|
|
* | ------------- | ------------------------- | -------------------- |
|
|
|
|
* | 0 | `option_channel_htlc_max` | `htlc_maximum_msat` |
|
|
|
|
*/
|
|
|
|
#define ROUTING_OPT_HTLC_MAX_MSAT (1 << 0)
|
|
|
|
|
2018-05-17 07:08:11 +02:00
|
|
|
/* BOLT #7:
|
|
|
|
*
|
|
|
|
* - MUST NOT send `announcement_signatures` messages until `funding_locked`
|
|
|
|
* has been sent AND the funding transaction has at least six confirmations.
|
|
|
|
*/
|
|
|
|
#define ANNOUNCE_MIN_DEPTH 6
|
|
|
|
|
2019-09-18 03:05:05 +02:00
|
|
|
/* Gossip timing constants. These can be overridden in --enable-developer
|
|
|
|
* configurations with --dev-fast-gossip, otherwise the argument is ignored */
|
|
|
|
#define DEV_FAST_GOSSIP(dev_fast_gossip_flag, fast, normal) \
|
|
|
|
IFDEV((dev_fast_gossip_flag) ? (fast) : (normal), (normal))
|
|
|
|
|
|
|
|
/* How close we can generate gossip msgs (5 minutes) */
|
|
|
|
#define GOSSIP_MIN_INTERVAL(dev_fast_gossip_flag) \
|
|
|
|
DEV_FAST_GOSSIP(dev_fast_gossip_flag, 5, 300)
|
|
|
|
|
|
|
|
/* BOLT #7:
|
|
|
|
*
|
|
|
|
* - SHOULD flush outgoing gossip messages once every 60 seconds,
|
|
|
|
* independently of the arrival times of the messages.
|
|
|
|
*/
|
|
|
|
#define GOSSIP_FLUSH_INTERVAL(dev_fast_gossip_flag) \
|
|
|
|
DEV_FAST_GOSSIP(dev_fast_gossip_flag, 1, 60)
|
|
|
|
|
|
|
|
/* BOLT #7:
|
|
|
|
*
|
|
|
|
* A node:
|
|
|
|
* - if a channel's latest `channel_update`s `timestamp` is older than two weeks
|
|
|
|
* (1209600 seconds):
|
|
|
|
* - MAY prune the channel.
|
|
|
|
* - MAY ignore the channel.
|
|
|
|
*/
|
|
|
|
#define GOSSIP_PRUNE_INTERVAL(dev_fast_gossip_flag) \
|
|
|
|
DEV_FAST_GOSSIP(dev_fast_gossip_flag, 90, 1209600)
|
|
|
|
|
|
|
|
/* How long after seeing lockin until we announce the channel. */
|
|
|
|
#define GOSSIP_ANNOUNCE_DELAY(dev_fast_gossip_flag) \
|
|
|
|
DEV_FAST_GOSSIP(dev_fast_gossip_flag, 1, 60)
|
|
|
|
|
|
|
|
/* How long before deadline should we send refresh update? 1 day normally */
|
|
|
|
#define GOSSIP_BEFORE_DEADLINE(dev_fast_gossip_flag) \
|
|
|
|
DEV_FAST_GOSSIP(dev_fast_gossip_flag, 30, 24*60*60)
|
|
|
|
|
2018-05-17 07:08:11 +02:00
|
|
|
#endif /* LIGHTNING_GOSSIPD_GOSSIP_CONSTANTS_H */
|