Configuration option to specify "fronting nodes" for routehints/blinded paths.#8490
Open
rustyrussell wants to merge 12 commits intoElementsProject:masterfrom
Open
Configuration option to specify "fronting nodes" for routehints/blinded paths.#8490rustyrussell wants to merge 12 commits intoElementsProject:masterfrom
rustyrussell wants to merge 12 commits intoElementsProject:masterfrom
Conversation
49e4d09 to
4b63d13
Compare
endothermicdev
previously requested changes
Nov 14, 2025
Collaborator
endothermicdev
left a comment
There was a problem hiding this comment.
Looks good to me pending the gossmap initialization and blackbox test typos. I'm not sure how to best prevent footguns with this feature, but I'm sure we'll find some as we go.
tests/test_invoices.py
Outdated
| # l1 -> l2 -> l3 | ||
| # \ / | ||
| # l4 | ||
| # Nodes will front for offers if they don't have an advertized address. |
Collaborator
There was a problem hiding this comment.
Suggested change
| # Nodes will front for offers if they don't have an advertized address. | |
| # Nodes will not front for offers if they don't have an advertized address. |
tests/test_invoices.py
Outdated
| offer_front_l2 = l4.rpc.offer("any", "frontl2", fronting_nodes=[l2.info['id']])['bolt12'] | ||
| assert only_one(l1.rpc.decode(offer_front_l2)['offer_paths'])['first_node_id'] == l2.info['id'] | ||
| offer_front_l2l3 = l4.rpc.offer("any", "frontl2l3", fronting_nodes=[l2.info['id'], l3.info['id']])['bolt12'] | ||
| assert [p['first_node_id'] for p in l1.rpc.decode(offer_front_l2)['offer_paths']] == [l2.info['id'], l3.info['id']] |
Collaborator
There was a problem hiding this comment.
Suggested change
| assert [p['first_node_id'] for p in l1.rpc.decode(offer_front_l2)['offer_paths']] == [l2.info['id'], l3.info['id']] | |
| assert [p['first_node_id'] for p in l1.rpc.decode(offer_front_l2l3)['offer_paths']] == [l2.info['id'], l3.info['id']] |
f8b6399 to
4b62fdc
Compare
4b62fdc to
5040657
Compare
5040657 to
092b2e7
Compare
I ran `uv run make update-mocks` and many mocks vanished. But that broke MacOS (and maybe other archs) which doesn't support function sections and no longer linked. If this proves problematic, we might end up generating mocks properly: 1. Use #include "mocks-sphinx-xor_cipher_stream_gen.c" 2. Generate those separate files as necessary. 3. Don't commit them, build them locally. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
If a plugin exits early, we will not exit with ret == plugins: return from this function and we will exit because ld->exit_code is set. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Added: libplugin: support for options which accumulate if specified more than once ("multi": true).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Added: Config: `payment-fronting-node` option to specify neighbor node(s) to use for all bolt11 invoices, bolt12 offers, invoices and invoice_requests.
We use all the fronting nodes when creating invoices. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
092b2e7 to
83a260a
Compare
This is how modern plugins do it, and it has the benefit of not requiring extra code for memleak tracking. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
We use all the fronting nodes when creating offers. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
… set. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
The next commit makes us honor these when issuing a payment. Changelog-Added: JSON-RPC: `offer` now has a `fronting_nodes` option to specify neighbors for payer to use to fetch invoices and make payments. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
… for invoice_request. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
83a260a to
9a7794d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Useful to force all traffic via another node.