ElementsProject / lightning

Core Lightning ā€” Lightning Network implementation focusing on spec compliance and performance
Other
2.81k stars 889 forks source link

CLN: Research Project on CLN Pay Plugin #7219

Open vincenzopalazzo opened 4 months ago

vincenzopalazzo commented 4 months ago

Posting here just for accountability due that it is my own project and not affiliate with Blockstream


Description

The pay command is central to the Core Lightning implementation, and routing is fundamental to the Lightning Network.

Currently, many users are encountering issues with the Core Lightning pay command, for example:

This project proposes to revisit the fundamentals and aims to achieve the following steps:


Difficulty: Hard Requirements: Design Patterns, Coding Skills, Fearlessness in the face of failure Pre-Requisites: Have been involved in some of the related projects in core lightning or plugins in general. Mentor: @vincenzopalazzo (find all the contacts in the github profile, use them to ask not the issue thread)


Leave a šŸ‘šŸ¼ or OFC šŸ‘ŽšŸ¼ if it is a bad idea

cdecker commented 4 months ago

Sorry, I'm not following what you are proposing on a very concrete level. These all sound like things that are either already in pay (direct_pay_override_paymod for example), or sound like an outer loop around multiple pay implementations.

As it stands I'm not seeing the need to start a separate pay plugin, rather we should be applying all these things, or fix the existing implementation in the pay plugin.

vincenzopalazzo commented 4 months ago

Mh not sure if I get the problem here @cdecker

The goal of the project is to get some interested people in this graph research, that is not required to deal with a complex codebase like the pay command.

These all sound like things that are either already in pay (direct_pay_override_paymod for example)

Mh in fact the approach is a "Back to the basic" approach, and also idk if you can set direct_pay_override_paymod from the command line like cln pay <bolt> --force-algo direct or something like that. But it required to hack the code, or at least is what I understand, so please feel free to correct me.

In addition, I do not think there is any way to get information about the route that core lightning is using, except look at the log, but looking at the log making extremely difficult testing.

I'm not seeing the need to start a separate pay plugin, rather we should be applying all these things, or fix the existing implementation in the pay plugin.

I do not think that fixing or extending a very complex part of our code like pay is a nice summer of bitcoin project that can get any real attraction. This sounds more like a full-time job that needs to be done by someone with experience. For sure the person who will take this project can fix our problem with pay command, but this is a follow-up step. Maybe, I am wrong and someone fix/improves the pay plugin and prove that it was a peace of cake