Skip to content

Say what a node operator decides, and whether cheapest is the real answer - #17

Merged
hotpixelgroup merged 1 commit into
mainfrom
routing-roles-and-cheapest
Aug 26, 2026
Merged

hotpixelgroup merged 1 commit into
mainfrom
routing-roles-and-cheapest

Conversation

@hotpixelgroup

Copy link
Copy Markdown
Owner

Two questions the routing quest raised without answering.

Who chooses the hops

The curriculum said route selection happens in the sender's wallet and left it there, which invites the reasonable inference that running a node means picking paths. It doesn't.

  • Paying: your software chooses, in the moment, and never asks you
  • Forwarding: you cannot choose to be on a route at all. You advertise terms and wait. Overcharging doesn't earn more, it just stops the traffic, and you find out slowly by seeing nothing happen
  • Being paid: you can hint (routing hints, blinded paths) but not choose

What actually needs judgment is channels, decided once and lasting months, not routes, decided in a moment and never surfaced.

Is it really the cheapest?

Automatically, yes. Cheapest, roughly, and BOLT #7 is unusually candid about why not. Fee and cltv_expiry_delta both matter, and:

the relationship between these two attributes is unclear, as it depends on the reliability of the nodes involved

The spec is telling implementers there's no formula, because the missing input is how trustworthy a stranger is. It then recommends two things that cost more on purpose: a shadow route so hops can't infer their distance from the recipient (Quest #5's privacy argument, paid for in a worse route), and diversification to avoid depending on any single node.

Real wallets add failure memory, liquidity guesses, a configurable fee ceiling and retries on top, so the route you pay through is the first one that worked, not the first one costed.

Also

Three more entries in the question index pointing at both stops. New excerpt verified verbatim against the pinned spec (5/5 lines).

147 tests green; lint, build, typecheck clean; no em dashes.

🤖 Generated with Claude Code

…swer

Two questions the routing quest raised without answering.

The first is who chooses the hops. The curriculum said route selection
happens in the sender's wallet and left it there, which invites the
reasonable inference that running a node means picking paths. It does
not. Three roles, three answers: paying, your software chooses and never
asks you; forwarding, you cannot choose to be on a route at all and can
only advertise terms and wait; being paid, you can hint through routing
hints and blinded paths but not choose. What actually needs judgment is
channels, decided once and lasting months, not routes, decided in a
moment and never surfaced.

The second is whether the cheapest path is what you get. Automatically,
yes. Cheapest, roughly, and BOLT #7 is unusually candid about why not:
fee and cltv_expiry_delta both matter and "the relationship between these
two attributes is unclear, as it depends on the reliability of the nodes
involved". It then recommends two things that cost more on purpose, a
shadow route to stop hops inferring their distance from the recipient,
and diversification to avoid depending on any single node. Real wallets
add failure memory, liquidity guesses, a configurable fee ceiling and
retries on top, so the route you pay through is the first one that
worked rather than the first one costed.

Three more entries in the question index point at both stops.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@hotpixelgroup
hotpixelgroup merged commit d5f2541 into main Aug 26, 2026
1 check passed
@hotpixelgroup
hotpixelgroup deleted the routing-roles-and-cheapest branch August 26, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant