Good morning Joao and Bastien,

I believe the `feeadjuster` plugin for C-Lightning, created by Darosior, 
already does what you want to do, without a specs change.

* We already know that nodes prefer low-fee routes over high-fee routes.
* `feeadjuster` adjusts our channel feerate according to balance:
  * It makes fees low if we own most of the funds in the channel.
  * It makes fees high if we own almost none of the funds in the channel.
* Thus, `feeadjuster` signals "use this channel!" if it has high capacity in 
that direction, and signals "do not use this channel!" if it has low capacity 
in that direction.

I believe this is sufficient to achieve your goal, without requiring 
substantial changes to existing algorithms and implementations.

(CLBOSS, also a C-Lightning plugin, implements similar logic as one of the many 
things it does, with some differing details but with substantially the same 
fee-adjustment curve)

I believe concerns on false signaling are unfounded, at least with the limited 
channel fee signalling that `feeadjuster`/CLBOSS use.
I can signal a low feerate, but if I do not have sufficient capacity anyway 
when the inevitable flood of payments wanting to take advantage of the lower 
fees arrives, then I gain no advantage anyway.
Rather, some amount of honesty would be better for me.

Regards,
ZmnSCPxj



> Hello Bastien!
>
> Firstly I'd like to thank you for the time you took to read the paper, it's 
> been hard to get some quality reviews.
> Your feedback made me think and reach the following conclusions:
> Let's assume node A is sending information to its peer, node B, with the goal 
> of attracting more business (increasing the number of payments that are 
> routed through it). In LDR this would mean A would want to announce to B that 
> it belongs to larger volume routes than the ones it actually does.
> Let's say A and B shared channel state is (A: 1, B: 4).
> A shares a channel with C, state (A: 2, C: 3).
> B also shares a channel with C, state (B: 3, C: 6).
> A could dishonestly share with B knowing a path to C with capacity 4 BTC 
> although it only has 2 currently available. By doing this A would effectively 
> change B's routing preferences for payments to C, making B's routing table go 
> from:
>
> Destination | Next Hop | Capacity
>        C                A                 2
>        C                C                 3
>
> ...to:
>
> Destination | Next Hop | Capacity
>        C                A                 4
>        C                C                 3
>
> Meaning B now thinks payments to C with volume in the [3, 4] BTC range can 
> only be routed through A and payments to C in the [0, 3] BTC range can be 
> routed to A or directly to C. What does this information change and how does 
> it affect honest nodes?
> Larger [3, 4] BTC payments are not within the capacity provided by the path 
> that goes directly to C and would immediately fail when the payment is made 
> in the LN layer using the path that goes through A. This breaks the incentive 
> to, at least for payments in this volume range, share the invalid 
> information. The cheating nodes would not be putting honest nodes out of 
> business nor increasing the number of payments that go through them.
> The problem starts when the cheating node fakes directly competing for routes 
> within the capacity range provided by honest nodes and not by them ([2, 3] 
> BTC range for the example). Although this could not be used to collect more 
> fees because payments would eventually fail in the LN layer and the fees 
> wouldn't be able to be collected, it could certainly be used to "put honest 
> nodes out of work", stealing routing paths that would otherwise belong to 
> them.
> I think the solution lies in the way in which a node chooses the next best 
> hop for a certain destination. I started by proposing the following (section 
> 3.1.2):
>
> >The ”best next hop” for a certain payment destination is defined as being 
> >the hop with the lowest fee from the group of next hops for that destination 
> >where the maximum volume allowed is bigger than the payment’s volume.
>
> I propose changing it to:
>
> >The ”best next hop” for a certain payment destination is defined as being a 
> >random hop taken from the group of next hops for that destination where the 
> >maximum volume allowed is higher than the payment’s volume.
>
> Which would diminish the incentive attacking nodes have to share fake gossip 
> by not allowing them to set themselves as first in line to be chosen as next 
> hop. A maximum fee that a node is willing to pay would also need to be set,
> Also, keep in mind that the capacity the maximum path capacity can lie about 
> is limited by the capacity of his biggest channel, available in the 
> blockchain. 
>
> PS: I adapted Figure 5 from your trampoline routing presentation, hope that's 
> ok!
>
> Kind regards,
> João Valente
>
> On Mon, 30 Nov 2020 at 08:36, Bastien TEINTURIER <bast...@acinq.fr> wrote:
>
> > Hi Joao,
> >
> > Thanks for the time you spent on this, the paper is clear on the trade-offs 
> > (sacrificing some privacy for
> > efficiency).
> >
> > My main negative feedback here is that you seem to assume that nodes will 
> > honestly cooperate.
> > It feels to me that nodes can cheat and gossip biased or invalid 
> > information to their peers in order to
> > attract more payments through their nodes (and collect more fees or put 
> > honest routing nodes out of
> > business).
> >
> > Is that something you've thought about?
> >
> > Cheers,
> > Bastien
> >
> > Le dim. 29 nov. 2020 à 00:46, João Valente <jvalent...@gmail.com> a écrit :
> >
> > > Hey!
> > >
> > > I've been working on this new concept for routing in the lightning 
> > > network. It leverages the use of the information nodes have on the 
> > > distribution of funds in their channels to try and maximize the 
> > > probability of success for a payment.
> > > Each node shares with his neighbours the information it has about the 
> > > distribution of funds in its own neighbourhood through the form of a 
> > > routing table. As nodes receive new tables they'll be updating their own 
> > > locally maintained tables with the new information, periodically sharing 
> > > them with their neighbours.
> > > Routing tables associate destination addresses (representing nodes in the 
> > > network) to the next hop in the maximum capacity path to these nodes.
> > > If a new payment is to be made a payment probe is forwarded by the payer 
> > > and through every node in the path, collects the path information along 
> > > the way, and reaches the payee who returns it to the payer. The payer can 
> > > then use this knowledge and confidently use the discovered path to route 
> > > LN payments through.
> > >
> > > I wrote a 10 page paper about the subject and would love to get some 
> > > feedback:
> > > https://drive.google.com/file/d/1dahW0X-N59138ZbY-4odpXjpDnX4Gb7Z/view?usp=sharing
> > >
> > > Cheers,
> > > João Valente
> > > _______________________________________________
> > > Lightning-dev mailing list
> > > Lightning-dev@lists.linuxfoundation.org
> > > https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev


_______________________________________________
Lightning-dev mailing list
Lightning-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev

Reply via email to