Feature Request: Support #pickhardtpayments
C-Otto opened this issue · 0 comments
C-Otto commented
Support #pickhardtpayments as described in https://github.com/renepickhardt/mpp-splitter/blob/master/Minimal%20Linearized%20min%20cost%20flow%20example%20for%20MPP.ipynb.
- compute MPP based on flow information
- combine probability and fees in cost function
- optimize N (number of piecewise linear approximations)
- what if capacity % N != 0?
- use different values for N depending on channel size?
- what if amount % quantization != 0?
- what if amount < quantization?
- limit graph to zero base fee channels
-
add support for non-zero base fee channels(moved to #31) - consider max_htlc for channels
- make use of mission control information (see #7)
- send out MPP
- add payment loop (deal with failed parts of MPP, try those again) (blocked by lightningnetwork/lnd#5746)
- make N, quantization, ... configurable (see #5)
-
add switch to ignore fees of local channels (for outgoing payments)(moved to #33) - solve startup issues wrt. OR tools native library loader
- solve pitest issues wrt. OR tools native library loader
- what if there are several parallel channels and the flow picks an amount that is more than each individual channel's capacity?
- combine parallel channels?
- add known liquidity for local channels
- do not forget about disabled/broken channels straight away (set upper bound to 1 instead of 0?)
- fail everything on first INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS failure
- document middleware requirement
- fix "upper bound" vs. "in flight"
- handle failures:
- INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS = 1;
- INCORRECT_PAYMENT_AMOUNT = 2;
- FINAL_INCORRECT_CLTV_EXPIRY = 3;
- FINAL_INCORRECT_HTLC_AMOUNT = 4;
- FINAL_EXPIRY_TOO_SOON = 5;
- INVALID_REALM = 6;
- EXPIRY_TOO_SOON = 7;
- INVALID_ONION_VERSION = 8;
- INVALID_ONION_HMAC = 9;
- INVALID_ONION_KEY = 10;
- AMOUNT_BELOW_MINIMUM = 11;
- FEE_INSUFFICIENT = 12;
- INCORRECT_CLTV_EXPIRY = 13;
- CHANNEL_DISABLED = 14;
- TEMPORARY_CHANNEL_FAILURE = 15;
- REQUIRED_NODE_FEATURE_MISSING = 16;
- REQUIRED_CHANNEL_FEATURE_MISSING = 17;
- UNKNOWN_NEXT_PEER = 18;
- TEMPORARY_NODE_FAILURE = 19;
- PERMANENT_NODE_FAILURE = 20;
- PERMANENT_CHANNEL_FAILURE = 21;
- EXPIRY_TOO_FAR = 22;
- MPP_TIMEOUT = 23;
- INVALID_ONION_PAYLOAD = 24;
- other/unknown