Repository: lightningnetwork/lnd
Pull request #9316 (2024-11-27 17:33:42)

routing: fix mc blinded path behaviour.
Because we hot swap the target public key when sending to a
blinded path we need to penalize all nodes after the introduction
point. 

Approach changed, see comment below.
~~We could also just penalize the first node after the introduction node, however that would mean we would do a bit of more pathfinding work and only fail after considering the rest of the blinded path. I think it is not super critical to have this bit more data persistent in memory.~~


coderabbitai[bot]: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: skip review by coderabbit.ai -->

> [!IMPORTANT]
> ## Review skipped
> 
> Auto reviews are limited to specific labels.
> 
> <details>
> <summary>:label: Labels to auto review (1)</summary>
> 
> * llm-review
> 
> </details>
> 
> Please check the settings in the CodeRabbit UI or the `.coderabbit.yaml` file in this repository. To trigger a single review, invoke the `@coderabbitai review` command.
> 
> You can disable this status message by setting the `reviews.review_status` to `false` in the CodeRabbit configuration file.

<!-- end of auto-generated comment: skip review by coderabbit.ai -->

<!-- tips_start -->

---

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
ziggie1984: maybe we should add an itest ?
ziggie1984: After a discussion with Elle we decided to only punish the first PubKey after the intropoint and create an issue which makes sure blinded route mc data is not persistent in the db but rather only held in memory and removed as soon as the payment is done.
ziggie1984: come logs of the problem, so the problem is the wrong channel-pair is punished and we will always use the same path:

```
2024-11-29 18:06:59.843 [DBG] CRTR: Sending HTLC attempt(id=22159, total_amt=103302 mSAT, first_hop_amt={103302}) for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:06:59.848 [DBG] CRTR: Attempt 22159 for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323 successfully sent to switch, route: 944480488325120 (103302 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:06:59.848 [DBG] CRTR: Collecting result for attempt 22159 in payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:06:59.848 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=22159)->(Chan ID=859:1:0, HTLC ID=2832)
2024-11-29 18:06:59.848 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2832, amt=103302 mSAT, expiry=1234, hash=45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.849 [DBG] HSWC: Subscribing to result for attemptID=22159
2024-11-29 18:06:59.855 [DBG] CRTR: Payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=96698 mSAT
2024-11-29 18:06:59.909 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=22159) from mailbox
2024-11-29 18:06:59.909 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.919 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=2c97ddc578a4d2e3f07b9e70d7e697e9cec2d05219327567c21f1209cfc0a32b, next_point=03f2c7beb2228589d6572dd74d5179f29045d1dace74542e3b07fcbc0780a8bd7a) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.922 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.936 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=9e6001271edd5c1ef00a4cad685bd74a77bcbe990e3389a02d17cdff55730606, next_point=030d406edba90c6255a737210b2a9d0c15ca360722572dbff0aeebc90c394bdef2) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.971 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2832, reason=8a8c7e056ee2bcd7d30ac1e3a5d35e822cda06eb5b4dbaef74a25b4fce87f20f7a2b17ac7fa4f7634d74541acaa7e4da8ba59fd2937882b7c6adc1536afd92891829a1a0844836df0e91938463e6b8af9ab39d7b5be237cffe349f34d259565d4bec314c5c849c2a35b1bd4383c293331acce0ea97b570f84fc7b5b693b2aa0396125d1493f976da6d22ccd34c93a54ff5576f6d65cbe441b42a93b0478cf8c0d6ef0f9850ee2a7d30da3deee5538d9c75df3d87c09e2b9e369fb1ca109e623bb540e90807f6079f8879a021c304f08514a3c1d5ffda1001fe80d9594f20a7798355caf64795daa4b10ea0dd70caae3afdd57c1ff5120f2c08f1afa68a8c3413775ac3787390041fe5bba3cb048ebbe0056ff7ae89d52190dd69acfe1f6d6a45424f86d0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.980 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.986 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=54b4eab854449ef6904f9341ae08ccbdd8ab50bf1aef622dbc92e359c6fbb30a, next_point=0291f85235a104a71f4f6d28f5d3c84891fb7ecf73acf41272c39c41db221e4c91) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:06:59.991 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.020 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=acc9500344d5b22efd9b81364614872d3da7d9c913a31f747c5d62d33862b42a, next_point=02cb98e9c08c48977025b28f86c1adf59b984e26d7e6c903f69cc21238d87b34db) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.033 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:07:00.033 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2832
2024-11-29 18:07:00.033 [DBG] HSWC: Closed completed FAIL circuit for 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: (0:0:0, 22159) <-> (859:1:0, 2832)
2024-11-29 18:07:00.033 [DBG] HSWC: Storing result for attemptID=22159
2024-11-29 18:07:00.037 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=22159
2024-11-29 18:07:00.038 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=103302 mSAT
2024-11-29 18:07:00.041 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=22159) with keystone=(Chan ID=859:1:0, HTLC ID=2832)
2024-11-29 18:07:00.041 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [103302 mSAT-0 mSAT]
2024-11-29 18:07:00.041 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=025dcebc849966e84634e26e3b7d8ada5d5344c31ce22e00351abc53b62133926f -> 03b06f2a53e4c8a0b3aa47627ed94e6082cdbb256a8b1b22fe72ccdbddbaf41242, amt=0 mSAT
2024-11-29 18:07:00.041 [DBG] CRTR: Setting 025dcebc849966e84634e26e3b7d8ada5d5344c31ce22e00351abc53b62133926f->03b06f2a53e4c8a0b3aa47627ed94e6082cdbb256a8b1b22fe72ccdbddbaf41242 range to [0 mSAT-0 mSAT]
2024-11-29 18:07:00.041 [WRN] CRTR: Attempt 22159 for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323 failed: InvalidBlinding@1
2024-11-29 18:07:00.045 [DBG] HSWC: Closed FAIL circuit for 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: (0:0:0, 22159) <-> (859:1:0, 2832)
2024-11-29 18:07:00.070 [DBG] CRTR: Result collected for attempt 22159 in payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.077 [DBG] CRTR: Payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: status=In Flight, active_shards=0, rem_value=100000 mSAT, fee_limit=100000 mSAT
2024-11-29 18:07:00.077 [DBG] CRTR: PaymentSession(45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323): pathfinding for amt=100000 mSAT
2024-11-29 18:07:00.078 [DBG] CRTR: Pathfinding absolute attempt cost: 100.1 sats
2024-11-29 18:07:00.078 [DBG] CRTR: Amount 103302 mSAT not in range for edge 930186837164032
2024-11-29 18:07:00.078 [DBG] CRTR: Found route: probability=0.10260039450125205, hops=4, fee=3302 mSAT
2024-11-29 18:07:00.078 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=1.301458ms
2024-11-29 18:07:00.097 [DBG] CRTR: Sending HTLC attempt(id=22160, total_amt=103302 mSAT, first_hop_amt={103302}) for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.101 [DBG] CRTR: Attempt 22160 for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323 successfully sent to switch, route: 944480488325120 (103302 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:07:00.101 [DBG] CRTR: Collecting result for attempt 22160 in payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.101 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=22160)->(Chan ID=859:1:0, HTLC ID=2833)
2024-11-29 18:07:00.101 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2833, amt=103302 mSAT, expiry=1234, hash=45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.102 [DBG] HSWC: Subscribing to result for attemptID=22160
2024-11-29 18:07:00.108 [DBG] CRTR: Payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=96698 mSAT
2024-11-29 18:07:00.165 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=22160) from mailbox
2024-11-29 18:07:00.165 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.172 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=37cb1e59328780705a8b4e7a7870be79b17a526cb4ebeffbaf1b6f8f28e3021d, next_point=03fee998e5dea699f15229d814bd01394d0f56dd0842b1c39a5562d4b1b4509ec5) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.176 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.193 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=26cd749974fe3e8089e17430817c2cd14606fa737d7d320ade7ba05cdbb6d80f, next_point=037ea15d8aeb3deaf3cc2da0bd012b586fce0645c9dacd2428540afa06fdb5d9be) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.232 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2833, reason=26253d6b296e96c88db54ac9cad31690e3ad87c247a7f78035bed0b124ac6fbfee9670af265ffe918e48af0a0b45dd24844a03c9c8375a3927c78face47ec467314ec439d81a991d7c11c571d5d673837249945cf9f3fe01e3e8d73916f21b8b4a253bcaa455da0c75a1eab53f8312bd834519329e1c144358709cc83d924a463bae587d4dd4678360c3cabd3e2d1605cf8f68959c5bd5228a4821e0d5887addf6d66858ab00be56904ec7114317796de04dce3d699a4cd79a40b55f0adf510c8ed80f637ca227dd14f80ca42d41182d6aa4c60ef2891bd9378512d2d6b7852bc3e0fd8690be9dce51858ad5ebdbc53be366dfa2dab218f1bffb06b059d773f6c6865b9f4fd8d19e8d262969339eabe232b7080dd4054863b73da196c7ba47941fd80f40) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.239 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.245 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=60f29f300c087c0ecd6f93dea9d9c1ea30e748fe0ecaf81a8b7fa95da7f7d4b9, next_point=035e2f0cdd3dda825d21f891c6a500afb15c8e5af9a4834f7707e62df9af267c00) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.250 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.278 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=818596a2c2e3f352e266db6988465aea23051ce8538789987bb46228c2ec0692, next_point=021ea5ee870b77dd81c108dfd92bad11bdd24a6aaf62c5105c7f6973763ef97c7f) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:07:00.292 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:07:00.292 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2833
2024-11-29 18:07:00.292 [DBG] HSWC: Closed completed FAIL circuit for 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: (0:0:0, 22160) <-> (859:1:0, 2833)
2024-11-29 18:07:00.292 [DBG] HSWC: Storing result for attemptID=22160
2024-11-29 18:07:00.296 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=22160
2024-11-29 18:07:00.297 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=103302 mSAT
2024-11-29 18:07:00.300 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=22160) with keystone=(Chan ID=859:1:0, HTLC ID=2833)
2024-11-29 18:07:00.300 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [103302 mSAT-0 mSAT]
2024-11-29 18:07:00.300 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=025dcebc849966e84634e26e3b7d8ada5d5344c31ce22e00351abc53b62133926f -> 03b06f2a53e4c8a0b3aa47627ed94e6082cdbb256a8b1b22fe72ccdbddbaf41242, amt=0 mSAT
2024-11-29 18:07:00.300 [DBG] CRTR: Setting 025dcebc849966e84634e26e3b7d8ada5d5344c31ce22e00351abc53b62133926f->03b06f2a53e4c8a0b3aa47627ed94e6082cdbb256a8b1b22fe72ccdbddbaf41242 range to [0 mSAT-0 mSAT]
2024-11-29 18:07:00.300 [WRN] CRTR: Attempt 22160 for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323 failed: InvalidBlinding@1
2024-11-29 18:07:00.303 [DBG] HSWC: Closed FAIL circuit for 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: (0:0:0, 22160) <-> (859:1:0, 2833)
2024-11-29 18:07:00.324 [DBG] CRTR: Result collected for attempt 22160 in payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.331 [DBG] CRTR: Payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323: status=In Flight, active_shards=0, rem_value=100000 mSAT, fee_limit=100000 mSAT
2024-11-29 18:07:00.331 [DBG] CRTR: PaymentSession(45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323): pathfinding for amt=100000 mSAT
2024-11-29 18:07:00.331 [DBG] CRTR: Pathfinding absolute attempt cost: 100.1 sats
2024-11-29 18:07:00.331 [DBG] CRTR: Amount 103302 mSAT not in range for edge 930186837164032
2024-11-29 18:07:00.331 [DBG] CRTR: Found route: probability=0.10260033668913819, hops=4, fee=3302 mSAT
2024-11-29 18:07:00.331 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=166.584µs
2024-11-29 18:07:00.348 [DBG] CRTR: Sending HTLC attempt(id=22161, total_amt=103302 mSAT, first_hop_amt={103302}) for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.352 [DBG] CRTR: Attempt 22161 for payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323 successfully sent to switch, route: 944480488325120 (103302 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:07:00.352 [DBG] CRTR: Collecting result for attempt 22161 in payment 45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323
2024-11-29 18:07:00.352 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=22161)->(Chan ID=859:1:0, HTLC ID=2834)
2024-11-29 18:07:00.352 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2834, amt=103302 mSAT, expiry=1234, hash=45f1fdda6f8d45a7206fa7d7081fd115ea56964a010ac172e1815364ddd91323, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
```
ziggie1984: same for a bigger amount:


```
| INVALID_ONION_BLINDING @ 2nd hop |        0.031 |        0.446 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        0.455 |        0.823 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        0.838 |        1.191 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        1.200 |        1.550 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        1.555 |        1.906 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        1.922 |        2.295 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        2.312 |        2.651 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        2.666 |        3.033 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        3.050 |        3.404 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        3.420 |        3.766 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        3.782 |        4.119 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 2nd hop |        4.134 |        6.078 | 5000         | 4.332 |     1314 | 964271697625088 | My Lightning ☇->alice->03dd7d->02a8cf->033948 |
| INVALID_ONION_BLINDING @ 1st hop |        6.089 |        6.313 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        6.324 |        6.578 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        6.594 |        6.831 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        6.849 |        7.096 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        7.112 |        7.323 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        7.341 |        7.561 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        7.569 |        7.778 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        7.795 |        8.007 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        8.025 |        8.231 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        8.248 |        8.467 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        8.487 |        8.703 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        8.721 |        8.931 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        8.939 |        9.219 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948                 |
| INVALID_ONION_BLINDING @ 1st hop |        9.237 |        9.465 | 5000         | 3.327 |     1234 | 944480488325120 | alice->03dd7d->02a8cf->033948
```


```2024-11-29 18:13:01.313 [DBG] CRTR: Sending HTLC attempt(id=23017, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.324 [DBG] CRTR: Attempt 23017 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:01.324 [DBG] CRTR: Collecting result for attempt 23017 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.324 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23017)->(Chan ID=859:1:0, HTLC ID=2841)
2024-11-29 18:13:01.324 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2841, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.325 [DBG] HSWC: Subscribing to result for attemptID=23017
2024-11-29 18:13:01.325 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=246673 mSAT
2024-11-29 18:13:01.387 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=23017) from mailbox
2024-11-29 18:13:01.387 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.394 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=84368afe2dfc73669997f266be120f04bc90f6c9938f4d250c17ae4cec3135de, next_point=031d628ab856c71d3c6881f9518643bef570b81b63589f06af18f475283e15f992) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.398 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.413 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=0d9fab2d2c6eb46cf7468f1ddc4d15ffe5a7394443d541dbc87467ae09fc1aff, next_point=0272657022a2e9a85d488dedf0603f3ace3de2a5142c2a9fdf10db7fa81f394d93) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.462 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2841, reason=1d5c3fdce1b1d3c237b898b93caacd55ca2be6a59b75aed3eb8f071ea795bf243111177fd5426f2e4ae411d247a3e3c9311aa5a67481190c40ddf2794abc4b24973c5e1def5a52b1fa5303ccfeace9ea1563e54b71fe80d7c3cc8cf625d34869d2e076fe7e7ea46142d6a93e15ba1b0f1ef3818fda0c6069afec7b13677d46e91e6f68bd0945090fb103b8a41c1e90979d277094e6f49cded62d48bebacce345efe60b384e498b715169faab6f2520ed4fc81963e12fd82037fa95bafc502ef197e21a42e9ddb4088ace9665cb9d271851ed0cf8c6d060683de845e7f7dc202012af489831cc2054271c674990e73d5df3ed82070b7f0540c780bf7d42a52b293be982e17454032a5ef2b89a2bec65435da3bedcdf66c26ca431bbcef2f746588134812f) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.469 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.474 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=60808f959b03d6ed0a45a1965ca5b6bdcea2b013d5fd98eec926aa5911d63f4a, next_point=0387f341f2da1ff1f2548e60a3133c17160806213315267bfcda6b16978c67a169) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.480 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.500 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=3b433beff07ddf04ff48ee8b3e9791b58ca4bf765ba7cf2b4026753b9e610f35, next_point=02f625966df33b65fc145983423c2e62cae7c8323b6a4a3c8c0bf0da7e9614ea0e) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.517 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:13:01.517 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2841
2024-11-29 18:13:01.518 [DBG] HSWC: Closed completed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23017) <-> (859:1:0, 2841)
2024-11-29 18:13:01.518 [DBG] HSWC: Storing result for attemptID=23017
2024-11-29 18:13:01.522 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=23017
2024-11-29 18:13:01.523 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=5003327 mSAT
2024-11-29 18:13:01.527 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [5003327 mSAT-0 mSAT]
2024-11-29 18:13:01.527 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=23017) with keystone=(Chan ID=859:1:0, HTLC ID=2841)
2024-11-29 18:13:01.527 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae -> 03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298, amt=0 mSAT
2024-11-29 18:13:01.527 [DBG] CRTR: Setting 02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae->03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298 range to [0 mSAT-0 mSAT]
2024-11-29 18:13:01.527 [WRN] CRTR: Attempt 23017 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 failed: InvalidBlinding@1
2024-11-29 18:13:01.533 [DBG] CRTR: Result collected for attempt 23017 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.534 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=0, rem_value=5000000 mSAT, fee_limit=250000 mSAT
2024-11-29 18:13:01.534 [DBG] CRTR: PaymentSession(8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7): pathfinding for amt=5000000 mSAT
2024-11-29 18:13:01.534 [DBG] CRTR: Pathfinding absolute attempt cost: 105 sats
2024-11-29 18:13:01.534 [DBG] CRTR: Amount 5003327 mSAT not in range for edge 930186837164032
2024-11-29 18:13:01.534 [DBG] CRTR: Found route: probability=0.05130812580074241, hops=4, fee=3327 mSAT
2024-11-29 18:13:01.534 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=185.917µs
2024-11-29 18:13:01.540 [DBG] CRTR: Sending HTLC attempt(id=23018, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.544 [DBG] CRTR: Attempt 23018 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:01.544 [DBG] CRTR: Collecting result for attempt 23018 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.545 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23018)->(Chan ID=859:1:0, HTLC ID=2842)
2024-11-29 18:13:01.545 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2842, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.547 [DBG] HSWC: Subscribing to result for attemptID=23018
2024-11-29 18:13:01.547 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=246673 mSAT
2024-11-29 18:13:01.550 [DBG] HSWC: Closed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23017) <-> (859:1:0, 2841)
2024-11-29 18:13:01.608 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=23018) from mailbox
2024-11-29 18:13:01.608 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.616 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=ba1cd17b76dfd8233520e1a6df32fb9a646336a9a5e244e109a96ed1f48b6df1, next_point=026a23761cf393611bd36d87e405b4230e2e867e5f5bf48886f6b70b9c23054c12) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.622 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.637 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=2f6b422d4946a26e57309a388c21aec202d4931bee068a2704db3d031b5c557c, next_point=02cf2d50d0df4b96efaa0c940552984061979fbb580dfe792b0ba956da70077bef) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.680 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2842, reason=90ef779f64e7efa7b62b3a7f060132d507d8831107032623b6cffa31eff71c22b30609476d938707e44c91d3f866c6f2b478a8661d297906b5beebcd819c5d3c63314d759e9c419ac89ba6fe883e2d3aaecdbfc8f2156420bea4548ad106288ef47635b1d7e5327c1533e872642919957d72203aa2c35c2e802d2438a7dae2e2dea227e7d340e560b3352cfce372aad40722f4c4de947ceb2a8c861c89865abb77cf6791a5076e7fdd0d341bb478c2f08241aafaf27a39a040eceb6fd90da8d5f9de5d0db6537ad7df07b548ee7002e0ac0f15d81f21b893f6891ca8c79a1800462eb2b725519404d9627bd1f0b961af569778c875d12d4f89498fe7209be5a70c5dea2c1eef4ea57dee29229f3c65353174b229195aa166fc1c085ce907412e1f2743f0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.686 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.692 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=a4d760919783a8993531070c17f66d111fcdd33205a6efc330359738ff1d13ed, next_point=03a44ba80a6fc36dbfee3d0abcbbd7f31f18b2cb2cf5994e28e464a98a4e84cdce) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.698 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.721 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=59ee5cda2c4cbf665d5a320c6f4626abea923c20b458a5271b34542ee4c18215, next_point=0384edf11f03aa7409deefa30574a2fb1eed264bc547c7a95fd4f2878592c7de98) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.735 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:13:01.735 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2842
2024-11-29 18:13:01.735 [DBG] HSWC: Closed completed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23018) <-> (859:1:0, 2842)
2024-11-29 18:13:01.735 [DBG] HSWC: Storing result for attemptID=23018
2024-11-29 18:13:01.740 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=23018
2024-11-29 18:13:01.741 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=5003327 mSAT
2024-11-29 18:13:01.744 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=23018) with keystone=(Chan ID=859:1:0, HTLC ID=2842)
2024-11-29 18:13:01.744 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [5003327 mSAT-0 mSAT]
2024-11-29 18:13:01.744 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae -> 03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298, amt=0 mSAT
2024-11-29 18:13:01.744 [DBG] CRTR: Setting 02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae->03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298 range to [0 mSAT-0 mSAT]
2024-11-29 18:13:01.744 [WRN] CRTR: Attempt 23018 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 failed: InvalidBlinding@1
2024-11-29 18:13:01.749 [DBG] HSWC: Closed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23018) <-> (859:1:0, 2842)
2024-11-29 18:13:01.759 [DBG] CRTR: Result collected for attempt 23018 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.760 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=0, rem_value=5000000 mSAT, fee_limit=250000 mSAT
2024-11-29 18:13:01.760 [DBG] CRTR: PaymentSession(8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7): pathfinding for amt=5000000 mSAT
2024-11-29 18:13:01.760 [DBG] CRTR: Pathfinding absolute attempt cost: 105 sats
2024-11-29 18:13:01.760 [DBG] CRTR: Amount 5003327 mSAT not in range for edge 930186837164032
2024-11-29 18:13:01.760 [DBG] CRTR: Found route: probability=0.05130928445199554, hops=4, fee=3327 mSAT
2024-11-29 18:13:01.760 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=218.583µs
2024-11-29 18:13:01.764 [DBG] CRTR: Sending HTLC attempt(id=23019, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.768 [DBG] CRTR: Attempt 23019 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:01.768 [DBG] CRTR: Collecting result for attempt 23019 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.768 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23019)->(Chan ID=859:1:0, HTLC ID=2843)
2024-11-29 18:13:01.768 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2843, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.769 [DBG] HSWC: Subscribing to result for attemptID=23019
2024-11-29 18:13:01.769 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=246673 mSAT
2024-11-29 18:13:01.830 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=23019) from mailbox
2024-11-29 18:13:01.830 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.838 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=6c64bdc41ecde0ab729102adf9802a1d91b6e067400450ca115e8933f62ca3f3, next_point=031d50bdae43898323d8b80345851e34eec1be701f6bfd115d43fd58971400acec) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.843 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.856 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=1ab1b9b7cc2f763c102ce75fa6f1452ed59a684460ae7e55cb5e4f3cb525b419, next_point=0313d1f85cdef6957eebd715d742321b1209ce6df8fce79804f6cdfa42eda98746) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.906 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2843, reason=32c9ec5c961feed37e8dec5478a7058199fd8b0bcce92fd88bce7cab99eba2e05ca9bef3d3eacb852230c43b85b7a9cd09ed588f57d1ccba28c67391c10b7b9176322851059fd0de27650e6aad85caebe145619bc5d06f59bebd94a147baed78800d1da34a97a99644be947488d09994f63e7fadde3789c5424910d754a7da7bc26d6e0e6a9d94319126168120b95a2be33a5b44a23a3584e52aa9a5c597e9aeed67a813fe0216c5da10208305b5676cece49ce3ab16b2f1db0e039ae192681fb87eff6af9146335b6174747b79a148ccd5f5abda2d633b1cac9a1659ac42c49235b30602b80cbed6f5faa746e71b912f1fdff55c26f86ffd64fc849cf5c40a21b726e77e9bca8e2c264f3e294523203f699d9cba2ffc14572aa4ef5f246d7b2e67af4f2) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.914 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.919 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=bcfcecd8ceec76a34112eae079cf5a81e644cf5614f1b919c58a3a2ffa8ce808, next_point=02a5e3301b5b478bac85a5467cf63d741ce18bae86127e4420246e35086deb2a7c) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.924 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.951 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=3cd27556690efe8f2e484cddb763ae0e469e5fb5611bd0eb8420e4fd9bfa2832, next_point=03096b29a9996ff630df5292d4d41141d3fcf4062d3a6fe86ab79c0567f120cacc) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:01.965 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:13:01.965 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2843
2024-11-29 18:13:01.965 [DBG] HSWC: Closed completed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23019) <-> (859:1:0, 2843)
2024-11-29 18:13:01.965 [DBG] HSWC: Storing result for attemptID=23019
2024-11-29 18:13:01.969 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=23019
2024-11-29 18:13:01.970 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae -> 03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298, amt=0 mSAT
2024-11-29 18:13:01.973 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=23019) with keystone=(Chan ID=859:1:0, HTLC ID=2843)
2024-11-29 18:13:01.973 [DBG] CRTR: Setting 02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae->03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298 range to [0 mSAT-0 mSAT]
2024-11-29 18:13:01.973 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=5003327 mSAT
2024-11-29 18:13:01.973 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [5003327 mSAT-0 mSAT]
2024-11-29 18:13:01.973 [WRN] CRTR: Attempt 23019 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 failed: InvalidBlinding@1
2024-11-29 18:13:01.977 [DBG] HSWC: Closed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23019) <-> (859:1:0, 2843)
2024-11-29 18:13:01.989 [DBG] CRTR: Result collected for attempt 23019 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:01.990 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=0, rem_value=5000000 mSAT, fee_limit=250000 mSAT
2024-11-29 18:13:01.990 [DBG] CRTR: PaymentSession(8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7): pathfinding for amt=5000000 mSAT
2024-11-29 18:13:01.990 [DBG] CRTR: Pathfinding absolute attempt cost: 105 sats
2024-11-29 18:13:01.991 [DBG] CRTR: Amount 5003327 mSAT not in range for edge 930186837164032
2024-11-29 18:13:01.991 [DBG] CRTR: Found route: probability=0.05131042760025676, hops=4, fee=3327 mSAT
2024-11-29 18:13:01.991 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=204.292µs
2024-11-29 18:13:01.997 [DBG] CRTR: Sending HTLC attempt(id=23020, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.001 [DBG] CRTR: Attempt 23020 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:02.001 [DBG] CRTR: Collecting result for attempt 23020 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.001 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23020)->(Chan ID=859:1:0, HTLC ID=2844)
2024-11-29 18:13:02.001 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2844, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.002 [DBG] HSWC: Subscribing to result for attemptID=23020
2024-11-29 18:13:02.003 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=246673 mSAT
2024-11-29 18:13:02.058 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=23020) from mailbox
2024-11-29 18:13:02.058 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.063 [DBG] CRTR: Stored mission control results: 5 added, 0 deleted
2024-11-29 18:13:02.067 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=0149918c0b1eaa79453c4e8928134b9b29fbb8961b95eab381d7a635af5b7727, next_point=036504da0224ff8d43e38cc3312ff71baa9846c3cfcb958cb3c2b8787476be6f43) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.072 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.085 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=7d7dc370684112852752fb766647a676a493619c4fc2ff02a6091955500725f0, next_point=02a2536b89b5b58a678ef85983ff3f4d29212caa49b548ab9a011bee4bcd151121) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.129 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2844, reason=ee3fa6ff25b893c2b35ef420fd471dcbc166b334decc53441605743d557e14234489cea7e069e24fd2b2dbe22897635587a85a156db5be0979dd04f38be7da21c5acb51809568b0ee512365f42751d4f9ce14a4bed38215c804d80ebf48c7c0da48fe760b1fde01bceb2801c016af5e9e696fe4e5b66a2d35fdff05ee96ac5a80196b7e00a9570f47557a21900da1e0c40118cb0a42d88657515062336a023242df2fc79b942ad4a8f9281e01909fe38ee5705e9837e808693607515cc8061c8c3445c5b89a936c99ec68f23d80093417910d0f8a85c54709cd799fccefdee9359f6f7ebdbc1c807917a616033e8287ea58789df6a82cf8b084aaf131d847620ae5592a4b357a138ebe2d0b0deb0806d14e5f5ddb666e63e37e34de3ba3e4edf7c1b5431) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.137 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.143 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=5e789cfa1da7199da0375d28f48f97a38553469044c4a4c99e45b3fea8282fd2, next_point=0326cefdecd315ffead5443cd306b3cbbf0c2b32681e12d7b9e80ae096f296d1f1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.148 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.176 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=c1f34281b7554b9506c22a3575ec1b6256f2f53357e00ffc317c5755b955b708, next_point=036c8ffa195907135c8a27ea6a747edc44ae1ea7158bf185e8a4cd1f5f186328e0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.188 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:13:02.188 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2844
2024-11-29 18:13:02.188 [DBG] HSWC: Closed completed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23020) <-> (859:1:0, 2844)
2024-11-29 18:13:02.188 [DBG] HSWC: Storing result for attemptID=23020
2024-11-29 18:13:02.193 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=23020
2024-11-29 18:13:02.194 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=5003327 mSAT
2024-11-29 18:13:02.194 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [5003327 mSAT-0 mSAT]
2024-11-29 18:13:02.197 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=23020) with keystone=(Chan ID=859:1:0, HTLC ID=2844)
2024-11-29 18:13:02.197 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae -> 03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298, amt=0 mSAT
2024-11-29 18:13:02.197 [DBG] CRTR: Setting 02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae->03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298 range to [0 mSAT-0 mSAT]
2024-11-29 18:13:02.197 [WRN] CRTR: Attempt 23020 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 failed: InvalidBlinding@1
2024-11-29 18:13:02.201 [DBG] HSWC: Closed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23020) <-> (859:1:0, 2844)
2024-11-29 18:13:02.212 [DBG] CRTR: Result collected for attempt 23020 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.213 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=0, rem_value=5000000 mSAT, fee_limit=250000 mSAT
2024-11-29 18:13:02.213 [DBG] CRTR: PaymentSession(8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7): pathfinding for amt=5000000 mSAT
2024-11-29 18:13:02.214 [DBG] CRTR: Pathfinding absolute attempt cost: 105 sats
2024-11-29 18:13:02.214 [DBG] CRTR: Amount 5003327 mSAT not in range for edge 930186837164032
2024-11-29 18:13:02.214 [DBG] CRTR: Found route: probability=0.051311526219394415, hops=4, fee=3327 mSAT
2024-11-29 18:13:02.214 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=375.75µs
2024-11-29 18:13:02.220 [DBG] CRTR: Sending HTLC attempt(id=23021, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.225 [DBG] CRTR: Attempt 23021 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:02.225 [DBG] CRTR: Collecting result for attempt 23021 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.225 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23021)->(Chan ID=859:1:0, HTLC ID=2845)
2024-11-29 18:13:02.225 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2845, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.226 [DBG] HSWC: Subscribing to result for attemptID=23021
2024-11-29 18:13:02.226 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=1, rem_value=0 mSAT, fee_limit=246673 mSAT
2024-11-29 18:13:02.286 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): removing Add packet (Chan ID=0:0:0, HTLC ID=23021) from mailbox
2024-11-29 18:13:02.286 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.296 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=87944b98fe28ae8ea3641394a79f7c05e2b96718a1bbbeb3c8e1f0b9a598850f, next_point=02ebb6f64a75b7ea527d830aaf3b1ce26a775eeca272e8c74aee59c0afe08d48db) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.301 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=1) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.313 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=addccc4878c423f1ee9dca15b20a5e313b40bdccbae6d149d5fd2d4f76f2e4e6, next_point=021b0872458f59041455beb80443fd3d975a3aebc26057f9562e7bc0e962975063) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.366 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received UpdateFailHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2845, reason=ffa55dfa51a9a874ca6f29b9b0878431b0f730656340a1589ad59e35bc21b274d2b6caed905b604e88cb1ea632010458941a3be1f457cfee09170e5664c842898c18f7ba7ba861d0f209a67fd2cabf71086728935fd361d04692584d840e99e5554a8c795fe18b9a0006373f5335bdfc29cdd545b76bb819995918b188188e8b41d2d2fefe50897b9afa33a25c3904a4b62c2d78aa09f9be577847972569e4f5c209c182bdfa7880cd428614d4db1cdc95c25a61aa86c58d98c6804360e8c46f025961a69e2e73897361c116a2f9764c992a24f95f7ff7acf592213f7726ce8642dc64c6cd4f6094097c154332d9ae99853f2378770af0b09734f730293d6013578554a4550ff64c837f7522a1bd7f0c1f426dddef3f0bdb28aa033605ae83ce930cfde8) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.377 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.382 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=70e2280be3aa6ca8eae0201659a7f98bf35658b257156c74edda15563b35eecf, next_point=0289538931338c494fd26b9fc1a918ce93f639df8315ed928640ebd02677725648) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.388 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending CommitSig(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, num_htlcs=0) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.411 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Received RevokeAndAck(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, rev=adf2a7cf052772c6d3548f0dd6b9841ae5b9c7ad8b02b1eb329388ee3fcdb491, next_point=0246417197bb1116205396d9ef9e20a1b16cbdeeba2beafe78e3b19187ab589f3b) from 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.425 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): settle-fail-filter: count=1, filter=[0]
2024-11-29 18:13:02.425 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): Failed to send HTLC with ID=2845
2024-11-29 18:13:02.425 [DBG] HSWC: Closed completed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23021) <-> (859:1:0, 2845)
2024-11-29 18:13:02.425 [DBG] HSWC: Storing result for attemptID=23021
2024-11-29 18:13:02.429 [DBG] HSWC: Received network result *lnwire.UpdateFailHTLC for attemptID=23021
2024-11-29 18:13:02.430 [DBG] CRTR: [default]: Reporting pair success to Mission Control: pair=02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73 -> 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c, amt=5003327 mSAT
2024-11-29 18:13:02.433 [DBG] HSWC: Tearing down circuit with FAIL pkt, removing circuit=(Chan ID=0:0:0, HTLC ID=23021) with keystone=(Chan ID=859:1:0, HTLC ID=2845)
2024-11-29 18:13:02.433 [DBG] CRTR: Setting 02f945e7cca9aaa586ae01f775d3f9fbee4a31ea21e46198efc5812aa085c46d73->034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c range to [5003327 mSAT-0 mSAT]
2024-11-29 18:13:02.433 [DBG] CRTR: [default]: Reporting pair failure to Mission Control: pair=02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae -> 03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298, amt=0 mSAT
2024-11-29 18:13:02.433 [DBG] CRTR: Setting 02a8cffc7a9e20b88c8449e9c7af8c27bd4914823027a9072f9a225edbde19efae->03394891d80c82fdc080aa6215e68d0218f73cb5cc2c3423bd5312493a2197b298 range to [0 mSAT-0 mSAT]
2024-11-29 18:13:02.433 [WRN] CRTR: Attempt 23021 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 failed: InvalidBlinding@1
2024-11-29 18:13:02.438 [DBG] HSWC: Closed FAIL circuit for 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: (0:0:0, 23021) <-> (859:1:0, 2845)
2024-11-29 18:13:02.451 [DBG] CRTR: Result collected for attempt 23021 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.453 [DBG] CRTR: Payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7: status=In Flight, active_shards=0, rem_value=5000000 mSAT, fee_limit=250000 mSAT
2024-11-29 18:13:02.453 [DBG] CRTR: PaymentSession(8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7): pathfinding for amt=5000000 mSAT
2024-11-29 18:13:02.453 [DBG] CRTR: Pathfinding absolute attempt cost: 105 sats
2024-11-29 18:13:02.453 [DBG] CRTR: Amount 5003327 mSAT not in range for edge 930186837164032
2024-11-29 18:13:02.453 [DBG] CRTR: Found route: probability=0.051312721468216325, hops=4, fee=3327 mSAT
2024-11-29 18:13:02.453 [DBG] CRTR: Pathfinding perf metrics: nodes=8, edges=19, time=203.333µs
2024-11-29 18:13:02.459 [DBG] CRTR: Sending HTLC attempt(id=23022, total_amt=5003327 mSAT, first_hop_amt={5003327}) for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.463 [DBG] CRTR: Attempt 23022 for payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7 successfully sent to switch, route: 944480488325120 (5003327 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT) -> 0 (0 mSAT), cltv 1234
2024-11-29 18:13:02.463 [DBG] HSWC: ChannelLink(4d371e0439980326339f0510e2701973235ecd878e2c37566219c5d059ce4a1b:0): queueing keystone of ADD open circuit: (Chan ID=0:0:0, HTLC ID=23022)->(Chan ID=859:1:0, HTLC ID=2846)
2024-11-29 18:13:02.463 [DBG] CRTR: Collecting result for attempt 23022 in payment 8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7
2024-11-29 18:13:02.463 [DBG] PEER: Peer(034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c): Sending UpdateAddHTLC(chan_id=1b4ace59d0c5196256372c8e87cd5e23731970e210059f3326039839041e374d, id=2846, amt=5003327 mSAT, expiry=1234, hash=8215fba00d55634060aaced78b5a3f34a7cb6eeac2daaf981f4902e5570d17d7, blinding_point=, custom_records=map[106823:[0]]) to 034d11a4129c8c73856c41d0c5afb5108a635ba852ead2ca2a253b01534638bd2c@127.0.0.1:9739
2024-11-29 18:13:02.464 [DBG] HSWC: Subscribing to result for attemptID=23022
```
ziggie1984: After discussions with @bitromortac we decided to change the approach:

We are going to introduce a static target key (via a nums Point) so that no node can come up with the corresponding private key to create valid routes. When searching for paths or reporting an error in a blinded route we will use this key to persist the change. This will make it easy for us to clear the current MC-Store from blinded path data when we introduce the new blinded path logic where we won't persist blinded path MC data.
ziggie1984: After trying to implement the option of a static target public key, I realised we cannot do this because the problem are rpc calls like SendToRoute. We do not want to swap out the public key for predefined routes, because there is no MPP payment happening. So we should keep it as is, and refactor the whole logic of Mission Control results in another PR.

Moreover because it came up in a discussion, I added a testcase where the blinded path has duplicated hops, to make sure the pathfinding logic can handle this case. Blinded routes can have duplicated hops we can either abort the payment when parsing the invoice, but because we currently don't do it a testcase was created to verify that this does not cause any trouble with the pathfinding logic.
bitromortac: > Moreover because it came up in a discussion, I added a testcase where the blinded path has duplicated hops, to make sure the pathfinding logic can handle this case. Blinded routes can have duplicated hops we can either abort the payment when parsing the invoice, but because we currently don't do it a testcase was created to verify that this does not cause any trouble with the pathfinding logic.

Nice :pray:!

In the current state of the PR, where we penalize the hop starting at the introduction node, this will penalize the introduction node (as the "node probability" will start to decline if the starting node of the hop accrues a lot of failures). We originally tried to avoid that to not disincentivize nodes from routing blinded payments.

So the problem is that we can't penalize the first hop after the intro node, because we don't want the intro node to get penalized for its service and we can't penalize the last hop because the target node pubkey was replaced.

I think that the conclusive fix is to append a dummy hop (real target, dummy target) to the blinded paths and search a path to the dummy target. When penalizing we would then keep the penalization as is, using the real blinded route's last hop. This is then also compatible with somebody doing external pathfinding, using mission control data produced by `SendToRoute`?
ziggie1984: > I think that the conclusive fix is to append a dummy hop (real target, dummy target) to the blinded paths and search a path to the dummy target. When penalizing we would then keep the penalization as is, using the real blinded route's last hop. This is then also compatible with somebody doing external pathfinding, using mission control data produced by SendToRoute?

Ahh ok did not think about this, will come up with the dummy hop solution then.
ziggie1984: The approach changed now, we are still penalizing the last hop but when sending a payment we add a NUMS Target key for blinded paths and as soon as the route is found before create the final route we drop it again. The CI passed lmk what you think, thank you @bitromortac for the ideas 🙏

Patch:
diff --git a/docs/release-notes/release-notes-0.18.4.md b/docs/release-notes/release-notes-0.18.4.md
index ab72c01c3..e52dbc3d1 100644
--- a/docs/release-notes/release-notes-0.18.4.md
+++ b/docs/release-notes/release-notes-0.18.4.md
@@ -26,6 +26,9 @@
 * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9324) to prevent
   potential deadlocks when LND depends on external components (e.g. aux
   components, hooks).
+  
+* [Make sure blinded payment failures are handled correctly in the mission
+controller](https://github.com/lightningnetwork/lnd/pull/9316).
 
 # New Features
 
@@ -121,4 +124,5 @@ types in a series of changes:
 * George Tsagkarelis
 * Olaoluwa Osuntokun
 * Oliver Gugger
+* Ziggie
 
diff --git a/docs/release-notes/release-notes-0.19.0.md b/docs/release-notes/release-notes-0.19.0.md
index ee0b0c136..6f91a8fc8 100644
--- a/docs/release-notes/release-notes-0.19.0.md
+++ b/docs/release-notes/release-notes-0.19.0.md
@@ -60,7 +60,7 @@
 * [Make the contract resolutions for the channel arbitrator optional](
   https://github.com/lightningnetwork/lnd/pull/9253)
 
-  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9322) that caused
+* [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9322) that caused
     estimateroutefee to ignore the default payment timeout.
 
 # New Features
@@ -80,7 +80,7 @@
 ## RPC Additions
 
 * [Add a new rpc endpoint](https://github.com/lightningnetwork/lnd/pull/8843)
-  `BumpForceCloseFee` which moves the functionality soley available in the
+  `BumpForceCloseFee` which moves the functionality solely available in the
   `lncli` to LND hence making it more universal.
 
 * [The `walletrpc.FundPsbt` RPC method now has an option to specify the fee as
diff --git a/fn/func.go b/fn/func.go
deleted file mode 100644
index d4e77aa5d..000000000
--- a/fn/func.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package fn
-
-// Copyable is a generic interface for a type that's able to return a deep copy
-// of itself.
-type Copyable[T any] interface {
-	Copy() T
-}
-
-// CopyAll creates a new slice where each item of the slice is a deep copy of
-// the elements of the input slice.
-func CopyAll[T Copyable[T]](xs []T) []T {
-	newItems := make([]T, len(xs))
-	for i := range xs {
-		newItems[i] = xs[i].Copy()
-	}
-
-	return newItems
-}
-
-// CopyableErr is a generic interface for a type that's able to return a deep copy
-// of itself. This is identical to Copyable, but should be used in cases where
-// the copy method can return an error.
-type CopyableErr[T any] interface {
-	Copy() (T, error)
-}
-
-// CopyAllErr creates a new slice where each item of the slice is a deep copy of
-// the elements of the input slice. This is identical to CopyAll, but should be
-// used in cases where the copy method can return an error.
-func CopyAllErr[T CopyableErr[T]](xs []T) ([]T, error) {
-	var err error
-
-	newItems := make([]T, len(xs))
-	for i := range xs {
-		newItems[i], err = xs[i].Copy()
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	return newItems, nil
-}
diff --git a/input/script_utils.go b/input/script_utils.go
index 000efe958..90e368dd1 100644
--- a/input/script_utils.go
+++ b/input/script_utils.go
@@ -29,9 +29,9 @@ var (
 	SequenceLockTimeSeconds = uint32(1 << 22)
 )
 
-// mustParsePubKey parses a hex encoded public key string into a public key and
+// MustParsePubKey parses a hex encoded public key string into a public key and
 // panic if parsing fails.
-func mustParsePubKey(pubStr string) btcec.PublicKey {
+func MustParsePubKey(pubStr string) btcec.PublicKey {
 	pubBytes, err := hex.DecodeString(pubStr)
 	if err != nil {
 		panic(err)
@@ -55,7 +55,7 @@ var (
 	// https://github.com/lightninglabs/lightning-node-connect/tree/
 	// master/mailbox/numsgen, with the seed phrase "Lightning Simple
 	// Taproot".
-	TaprootNUMSKey = mustParsePubKey(TaprootNUMSHex)
+	TaprootNUMSKey = MustParsePubKey(TaprootNUMSHex)
 )
 
 // Signature is an interface for objects that can populate signatures during
diff --git a/routing/blinding.go b/routing/blinding.go
index 0c27e8743..a343c15da 100644
--- a/routing/blinding.go
+++ b/routing/blinding.go
@@ -1,17 +1,27 @@
 package routing
 
 import (
+	"bytes"
 	"errors"
 	"fmt"
 
 	"github.com/btcsuite/btcd/btcec/v2"
+	"github.com/decred/dcrd/dcrec/secp256k1/v4"
 	sphinx "github.com/lightningnetwork/lightning-onion"
-	"github.com/lightningnetwork/lnd/fn/v2"
 	"github.com/lightningnetwork/lnd/graph/db/models"
+	"github.com/lightningnetwork/lnd/input"
 	"github.com/lightningnetwork/lnd/lnwire"
 	"github.com/lightningnetwork/lnd/routing/route"
 )
 
+// BlindedPathNUMSHex is the hex encoded version of the blinded path target
+// NUMs key (in compressed format) which has no known private key.
+// This was generated using the following script:
+// https://github.com/lightninglabs/lightning-node-connect/tree/master/
+// mailbox/numsgen, with the seed phrase "Lightning Blinded Path".
+const BlindedPathNUMSHex = "02667a98ef82ecb522f803b17a74f14508a48b25258f9831" +
+	"dd6e95f5e299dfd54e"
+
 var (
 	// ErrNoBlindedPath is returned when the blinded path in a blinded
 	// payment is missing.
@@ -25,6 +35,14 @@ var (
 	// ErrHTLCRestrictions is returned when a blinded path has invalid
 	// HTLC maximum and minimum values.
 	ErrHTLCRestrictions = errors.New("invalid htlc minimum and maximum")
+
+	// BlindedPathNUMSKey is a NUMS key (nothing up my sleeves number) that
+	// has no known private key.
+	BlindedPathNUMSKey = input.MustParsePubKey(BlindedPathNUMSHex)
+
+	// CompressedBlindedPathNUMSKey is the compressed version of the
+	// BlindedPathNUMSKey.
+	CompressedBlindedPathNUMSKey = BlindedPathNUMSKey.SerializeCompressed()
 )
 
 // BlindedPaymentPathSet groups the data we need to handle sending to a set of
@@ -70,7 +88,9 @@ type BlindedPaymentPathSet struct {
 }
 
 // NewBlindedPaymentPathSet constructs a new BlindedPaymentPathSet from a set of
-// BlindedPayments.
+// BlindedPayments. For blinded paths which have more than one single hop a
+// dummy hop via a NUMS key is appeneded to allow for MPP path finding via
+// multiple blinded paths.
 func NewBlindedPaymentPathSet(paths []*BlindedPayment) (*BlindedPaymentPathSet,
 	error) {
 
@@ -103,36 +123,53 @@ func NewBlindedPaymentPathSet(paths []*BlindedPayment) (*BlindedPaymentPathSet,
 		}
 	}
 
-	// Derive an ephemeral target priv key that will be injected into each
-	// blinded path final hop.
-	targetPriv, err := btcec.NewPrivateKey()
-	if err != nil {
-		return nil, err
+	// Deep copy the paths to avoid mutating the original paths.
+	pathSet := make([]*BlindedPayment, len(paths))
+	for i, path := range paths {
+		pathSet[i] = path.deepCopy()
 	}
-	targetPub := targetPriv.PubKey()
 
-	var (
-		pathSet        = paths
-		finalCLTVDelta uint16
-	)
-	// If any provided blinded path only has a single hop (ie, the
-	// destination node is also the introduction node), then we discard all
-	// other paths since we know the real pub key of the destination node.
-	// We also then set the final CLTV delta to the path's delta since
-	// there are no other edge hints that will account for it. For a single
-	// hop path, there is also no need for the pseudo target pub key
-	// replacement, so our target pub key in this case just remains the
-	// real introduction node ID.
-	for _, path := range paths {
-		if len(path.BlindedPath.BlindedHops) != 1 {
-			continue
+	// For blinded paths we use the NUMS key as a target if the blinded
+	// path has more hops than just the introduction node.
+	targetPub := &BlindedPathNUMSKey
+
+	var finalCLTVDelta uint16
+
+	// In case the paths do NOT include a single hop route we append a
+	// dummy hop via a NUMS key to allow for MPP path finding via multiple
+	// blinded paths. A unified target is needed to use all blinded paths
+	// during the payment lifecycle. A dummy hop is solely added for the
+	// path finding process and is removed after the path is found. This
+	// ensures that we still populate the mission control with the correct
+	// data and also respect these mc entries when looking for a path.
+	for _, path := range pathSet {
+		pathLength := len(path.BlindedPath.BlindedHops)
+
+		// If any provided blinded path only has a single hop (ie, the
+		// destination node is also the introduction node), then we
+		// discard all other paths since we know the real pub key of the
+		// destination node. We also then set the final CLTV delta to
+		// the path's delta since there are no other edge hints that
+		// will account for it.
+		if pathLength == 1 {
+			pathSet = []*BlindedPayment{path}
+			finalCLTVDelta = path.CltvExpiryDelta
+			targetPub = path.BlindedPath.IntroductionPoint
+
+			break
 		}
 
-		pathSet = []*BlindedPayment{path}
-		finalCLTVDelta = path.CltvExpiryDelta
-		targetPub = path.BlindedPath.IntroductionPoint
-
-		break
+		lastHop := path.BlindedPath.BlindedHops[pathLength-1]
+		path.BlindedPath.BlindedHops = append(
+			path.BlindedPath.BlindedHops,
+			&sphinx.BlindedHopInfo{
+				BlindedNodePub: &BlindedPathNUMSKey,
+				// We add the last hop's cipher text so that
+				// the payload size of the final hop is equal
+				// to the real last hop.
+				CipherText: lastHop.CipherText,
+			},
+		)
 	}
 
 	return &BlindedPaymentPathSet{
@@ -198,21 +235,33 @@ func (s *BlindedPaymentPathSet) FinalCLTVDelta() uint16 {
 // LargestLastHopPayloadPath returns the BlindedPayment in the set that has the
 // largest last-hop payload. This is to be used for onion size estimation in
 // path finding.
-func (s *BlindedPaymentPathSet) LargestLastHopPayloadPath() *BlindedPayment {
+func (s *BlindedPaymentPathSet) LargestLastHopPayloadPath() (*BlindedPayment,
+	error) {
+
 	var (
 		largestPath *BlindedPayment
 		currentMax  int
 	)
+
+	if len(s.paths) == 0 {
+		return nil, fmt.Errorf("no blinded paths in the set")
+	}
+
+	// We set the largest path to make sure we always return a path even
+	// if the cipher text is empty.
+	largestPath = s.paths[0]
+
 	for _, path := range s.paths {
 		numHops := len(path.BlindedPath.BlindedHops)
 		lastHop := path.BlindedPath.BlindedHops[numHops-1]
 
 		if len(lastHop.CipherText) > currentMax {
 			largestPath = path
+			currentMax = len(lastHop.CipherText)
 		}
 	}
 
-	return largestPath
+	return largestPath, nil
 }
 
 // ToRouteHints converts the blinded path payment set into a RouteHints map so
@@ -222,7 +271,7 @@ func (s *BlindedPaymentPathSet) ToRouteHints() (RouteHints, error) {
 	hints := make(RouteHints)
 
 	for _, path := range s.paths {
-		pathHints, err := path.toRouteHints(fn.Some(s.targetPubKey))
+		pathHints, err := path.toRouteHints()
 		if err != nil {
 			return nil, err
 		}
@@ -239,6 +288,12 @@ func (s *BlindedPaymentPathSet) ToRouteHints() (RouteHints, error) {
 	return hints, nil
 }
 
+// IsBlindedRouteNUMSTargetKey returns true if the given public key is the
+// NUMS key used as a target for blinded path final hops.
+func IsBlindedRouteNUMSTargetKey(pk []byte) bool {
+	return bytes.Equal(pk, CompressedBlindedPathNUMSKey)
+}
+
 // BlindedPayment provides the path and payment parameters required to send a
 // payment along a blinded path.
 type BlindedPayment struct {
@@ -291,6 +346,22 @@ func (b *BlindedPayment) Validate() error {
 			b.HtlcMaximum, b.HtlcMinimum)
 	}
 
+	for _, hop := range b.BlindedPath.BlindedHops {
+		// The first hop of the blinded path does not necessarily have
+		// blinded node pub key because it is the introduction point.
+		if hop.BlindedNodePub == nil {
+			continue
+		}
+
+		if IsBlindedRouteNUMSTargetKey(
+			hop.BlindedNodePub.SerializeCompressed(),
+		) {
+
+			return fmt.Errorf("blinded path cannot include NUMS "+
+				"key: %s", BlindedPathNUMSHex)
+		}
+	}
+
 	return nil
 }
 
@@ -301,11 +372,8 @@ func (b *BlindedPayment) Validate() error {
 // effectively the final_cltv_delta for the receiving introduction node). In
 // the case of multiple blinded hops, CLTV delta is fully accounted for in the
 // hints (both for intermediate hops and the final_cltv_delta for the receiving
-// node). The pseudoTarget, if provided,  will be used to override the pub key
-// of the destination node in the path.
-func (b *BlindedPayment) toRouteHints(
-	pseudoTarget fn.Option[*btcec.PublicKey]) (RouteHints, error) {
-
+// node).
+func (b *BlindedPayment) toRouteHints() (RouteHints, error) {
 	// If we just have a single hop in our blinded route, it just contains
 	// an introduction node (this is a valid path according to the spec).
 	// Since we have the un-blinded node ID for the introduction node, we
@@ -393,16 +461,77 @@ func (b *BlindedPayment) toRouteHints(
 		hints[fromNode] = []AdditionalEdge{lastEdge}
 	}
 
-	pseudoTarget.WhenSome(func(key *btcec.PublicKey) {
-		// For the very last hop on the path, switch out the ToNodePub
-		// for the pseudo target pub key.
-		lastEdge.policy.ToNodePubKey = func() route.Vertex {
-			return route.NewVertex(key)
+	return hints, nil
+}
+
+// deepCopy returns a deep copy of the BlindedPayment.
+func (b *BlindedPayment) deepCopy() *BlindedPayment {
+	if b == nil {
+		return nil
+	}
+
+	cpyPayment := &BlindedPayment{
+		BaseFee:             b.BaseFee,
+		ProportionalFeeRate: b.ProportionalFeeRate,
+		CltvExpiryDelta:     b.CltvExpiryDelta,
+		HtlcMinimum:         b.HtlcMinimum,
+		HtlcMaximum:         b.HtlcMaximum,
+	}
+
+	// Deep copy the BlindedPath if it exists
+	if b.BlindedPath != nil {
+		cpyPayment.BlindedPath = &sphinx.BlindedPath{
+			BlindedHops: make([]*sphinx.BlindedHopInfo,
+				len(b.BlindedPath.BlindedHops)),
 		}
 
-		// Then override the final hint with this updated edge.
-		hints[fromNode] = []AdditionalEdge{lastEdge}
-	})
+		if b.BlindedPath.IntroductionPoint != nil {
+			cpyPayment.BlindedPath.IntroductionPoint =
+				copyPublicKey(b.BlindedPath.IntroductionPoint)
+		}
 
-	return hints, nil
+		if b.BlindedPath.BlindingPoint != nil {
+			cpyPayment.BlindedPath.BlindingPoint =
+				copyPublicKey(b.BlindedPath.BlindingPoint)
+		}
+
+		// Copy each blinded hop info.
+		for i, hop := range b.BlindedPath.BlindedHops {
+			if hop == nil {
+				continue
+			}
+
+			cpyHop := &sphinx.BlindedHopInfo{
+				CipherText: hop.CipherText,
+			}
+
+			if hop.BlindedNodePub != nil {
+				cpyHop.BlindedNodePub =
+					copyPublicKey(hop.BlindedNodePub)
+			}
+
+			cpyHop.CipherText = make([]byte, len(hop.CipherText))
+			copy(cpyHop.CipherText, hop.CipherText)
+
+			cpyPayment.BlindedPath.BlindedHops[i] = cpyHop
+		}
+	}
+
+	// Deep copy the Features if they exist
+	if b.Features != nil {
+		cpyPayment.Features = b.Features.Clone()
+	}
+
+	return cpyPayment
+}
+
+// copyPublicKey makes a deep copy of a public key.
+//
+// TODO(ziggie): Remove this function if this is available in the btcec library.
+func copyPublicKey(pk *btcec.PublicKey) *btcec.PublicKey {
+	var result secp256k1.JacobianPoint
+	pk.AsJacobian(&result)
+	result.ToAffine()
+
+	return btcec.NewPublicKey(&result.X, &result.Y)
 }
diff --git a/routing/pathfind.go b/routing/pathfind.go
index 80f4b1e68..3f1d0ba09 100644
--- a/routing/pathfind.go
+++ b/routing/pathfind.go
@@ -158,6 +158,32 @@ func newRoute(sourceVertex route.Vertex,
 	)
 
 	pathLength := len(pathEdges)
+
+	// When paying to a blinded route we might have appended a dummy hop at
+	// the end to make MPP payments possible via all paths of the blinded
+	// route set. We always append a dummy hop when the internal pathfiner
+	// looks for a route to a blinded path which is at least one hop long
+	// (excluding the introduction point). We add this dummy hop so that
+	// we search for a universal target but also respect potential mc
+	// entries which might already be present for a particular blinded path.
+	// However when constructing the Sphinx packet we need to remove this
+	// dummy hop again which we do here.
+	//
+	// NOTE: The path length is always at least 1 because there must be one
+	// edge from the source to the destination. However we check for > 0
+	// just for robustness here.
+	if blindedPathSet != nil && pathLength > 0 {
+		finalBlindedPubKey := pathEdges[pathLength-1].policy.
+			ToNodePubKey()
+
+		if IsBlindedRouteNUMSTargetKey(finalBlindedPubKey[:]) {
+			// If the last hop is the NUMS key for blinded paths, we
+			// remove the dummy hop from the route.
+			pathEdges = pathEdges[:pathLength-1]
+			pathLength--
+		}
+	}
+
 	for i := pathLength - 1; i >= 0; i-- {
 		// Now we'll start to calculate the items within the per-hop
 		// payload for the hop this edge is leading to.
@@ -319,10 +345,6 @@ func newRoute(sourceVertex route.Vertex,
 			dataIndex      = 0
 
 			blindedPath = blindedPayment.BlindedPath
-			numHops     = len(blindedPath.BlindedHops)
-			realFinal   = blindedPath.BlindedHops[numHops-1].
-					BlindedNodePub
-
 			introVertex = route.NewVertex(
 				blindedPath.IntroductionPoint,
 			)
@@ -350,11 +372,6 @@ func newRoute(sourceVertex route.Vertex,
 			if i != len(hops)-1 {
 				hop.AmtToForward = 0
 				hop.OutgoingTimeLock = 0
-			} else {
-				// For the final hop, we swap out the pub key
-				// bytes to the original destination node pub
-				// key for that payment path.
-				hop.PubKeyBytes = route.NewVertex(realFinal)
 			}
 
 			dataIndex++
@@ -683,7 +700,10 @@ func findPath(g *graphParams, r *RestrictParams, cfg *PathFindingConfig,
 
 	// The payload size of the final hop differ from intermediate hops
 	// and depends on whether the destination is blinded or not.
-	lastHopPayloadSize := lastHopPayloadSize(r, finalHtlcExpiry, amt)
+	lastHopPayloadSize, err := lastHopPayloadSize(r, finalHtlcExpiry, amt)
+	if err != nil {
+		return nil, 0, err
+	}
 
 	// We can't always assume that the end destination is publicly
 	// advertised to the network so we'll manually include the target node.
@@ -901,6 +921,13 @@ func findPath(g *graphParams, r *RestrictParams, cfg *PathFindingConfig,
 		// included. If we are coming from the source hop, the payload
 		// size is zero, because the original htlc isn't in the onion
 		// blob.
+		//
+		// NOTE: For blinded paths with the NUMS key as the last hop,
+		// the payload size accounts for this dummy hop which is of
+		// the same size as the real last hop. So we account for a
+		// bigger size than the route is however we accept this
+		// little inaccuracy here because we are over estimating by
+		// 1 hop.
 		var payloadSize uint64
 		if fromVertex != source {
 			// In case the unifiedEdge does not have a payload size
@@ -1409,11 +1436,15 @@ func getProbabilityBasedDist(weight int64, probability float64,
 // It depends on the tlv types which are present and also whether the hop is
 // part of a blinded route or not.
 func lastHopPayloadSize(r *RestrictParams, finalHtlcExpiry int32,
-	amount lnwire.MilliSatoshi) uint64 {
+	amount lnwire.MilliSatoshi) (uint64, error) {
 
 	if r.BlindedPaymentPathSet != nil {
-		paymentPath := r.BlindedPaymentPathSet.
+		paymentPath, err := r.BlindedPaymentPathSet.
 			LargestLastHopPayloadPath()
+		if err != nil {
+			return 0, err
+		}
+
 		blindedPath := paymentPath.BlindedPath.BlindedHops
 		blindedPoint := paymentPath.BlindedPath.BlindingPoint
 
@@ -1428,7 +1459,7 @@ func lastHopPayloadSize(r *RestrictParams, finalHtlcExpiry int32,
 		}
 
 		// The final hop does not have a short chanID set.
-		return finalHop.PayloadSize(0)
+		return finalHop.PayloadSize(0), nil
 	}
 
 	var mpp *record.MPP
@@ -1454,7 +1485,7 @@ func lastHopPayloadSize(r *RestrictParams, finalHtlcExpiry int32,
 	}
 
 	// The final hop does not have a short chanID set.
-	return finalHop.PayloadSize(0)
+	return finalHop.PayloadSize(0), nil
 }
 
 // overflowSafeAdd adds two MilliSatoshi values and returns the result. If an
diff --git a/routing/result_interpretation.go b/routing/result_interpretation.go
index bc1749dfb..60dd22c43 100644
--- a/routing/result_interpretation.go
+++ b/routing/result_interpretation.go
@@ -100,8 +100,27 @@ func interpretResult(rt *mcRoute,
 
 // processSuccess processes a successful payment attempt.
 func (i *interpretedResult) processSuccess(route *mcRoute) {
-	// For successes, all nodes must have acted in the right way. Therefore
-	// we mark all of them with a success result.
+	// For successes, all nodes must have acted in the right way.
+	// Therefore we mark all of them with a success result. However we need
+	// to handle the blinded route part separately because for intermediate
+	// blinded nodes the amount field is set to zero so we use the receiver
+	// amount.
+	introIdx, isBlinded := introductionPointIndex(route)
+	if isBlinded {
+		// Report success for all the pairs until the introduction
+		// point.
+		i.successPairRange(route, 0, introIdx-1)
+
+		// Handle the blinded route part.
+		//
+		// NOTE: The introIdx index here does describe the node after
+		// the introduction point.
+		i.markBlindedRouteSuccess(route, introIdx)
+
+		return
+	}
+
+	// Mark nodes as successful in the non-blinded case of the payment.
 	i.successPairRange(route, 0, len(route.hops.Val)-1)
 }
 
@@ -517,11 +536,22 @@ func (i *interpretedResult) processPaymentOutcomeIntermediate(route *mcRoute,
 		if introIdx == len(route.hops.Val)-1 {
 			i.finalFailureReason = &reasonError
 		} else {
-			// If there are other hops between the recipient and
-			// introduction node, then we just penalize the last
-			// hop in the blinded route to minimize the storage of
-			// results for ephemeral keys.
-			i.failPairBalance(route, len(route.hops.Val)-1)
+			// We penalize the final hop of the blinded route which
+			// is sufficient to not reuse this route again and is
+			// also more memory efficient because the other hops
+			// of the blinded path are ephemeral and will only be
+			// used in conjunction with the final hop. Moreover we
+			// don't want to punish the introduction node because
+			// the blinded failure does not necessarily mean that
+			// the introduction node was at fault.
+			//
+			// TODO(ziggie): Make sure we only keep mc data for
+			// blinded paths, in both the success and failure case,
+			// in memory during the time of the payment and remove
+			// it afterwards. Blinded paths and their blinded hop
+			// keys are always changing per blinded route so there
+			// is no point in persisting this data.
+			i.failBlindedRoute(route)
 		}
 
 	// In all other cases, we penalize the reporting node. These are all
@@ -828,6 +858,41 @@ func (i *interpretedResult) successPairRange(rt *mcRoute, fromIdx, toIdx int) {
 	}
 }
 
+// failBlindedRoute marks a blinded route as failed for the specific amount to
+// send by only punishing the last pair.
+func (i *interpretedResult) failBlindedRoute(rt *mcRoute) {
+	// We fail the last pair of the route, in order to fail the complete
+	// blinded route. This is because the combination of ephemeral pubkeys
+	// is unique to the route. We fail the last pair in order to not punish
+	// the introduction node, since we don't want to disincentivize them
+	// from providing that service.
+	pair, _ := getPair(rt, len(rt.hops.Val)-1)
+
+	// Since all the hops along a blinded path don't have any amount set, we
+	// extract the minimal amount to punish from the value that is tried to
+	// be sent to the receiver.
+	amt := rt.hops.Val[len(rt.hops.Val)-1].amtToFwd.Val
+
+	i.pairResults[pair] = failPairResult(amt)
+}
+
+// markBlindedRouteSuccess marks the hops of the blinded route AFTER the
+// introduction node as successful.
+//
+// NOTE: The introIdx must be the index of the first hop of the blinded route
+// AFTER the introduction node.
+func (i *interpretedResult) markBlindedRouteSuccess(rt *mcRoute, introIdx int) {
+	// For blinded hops we do not have the forwarding amount so we take the
+	// minimal amount which went through the route by looking at the last
+	// hop.
+	successAmt := rt.hops.Val[len(rt.hops.Val)-1].amtToFwd.Val
+	for idx := introIdx; idx < len(rt.hops.Val); idx++ {
+		pair, _ := getPair(rt, idx)
+
+		i.pairResults[pair] = successPairResult(successAmt)
+	}
+}
+
 // getPair returns a node pair from the route and the amount passed between that
 // pair.
 func getPair(rt *mcRoute, channelIdx int) (DirectedNodePair,


Test patch:
diff --git a/routing/blinding_test.go b/routing/blinding_test.go
index 8f83f7fd8..0a8846adb 100644
--- a/routing/blinding_test.go
+++ b/routing/blinding_test.go
@@ -2,11 +2,11 @@ package routing
 
 import (
 	"bytes"
+	"reflect"
 	"testing"
 
 	"github.com/btcsuite/btcd/btcec/v2"
 	sphinx "github.com/lightningnetwork/lightning-onion"
-	"github.com/lightningnetwork/lnd/fn/v2"
 	"github.com/lightningnetwork/lnd/graph/db/models"
 	"github.com/lightningnetwork/lnd/lnwire"
 	"github.com/lightningnetwork/lnd/routing/route"
@@ -129,7 +129,7 @@ func TestBlindedPaymentToHints(t *testing.T) {
 		HtlcMaximum:         htlcMax,
 		Features:            features,
 	}
-	hints, err := blindedPayment.toRouteHints(fn.None[*btcec.PublicKey]())
+	hints, err := blindedPayment.toRouteHints()
 	require.NoError(t, err)
 	require.Nil(t, hints)
 
@@ -184,7 +184,7 @@ func TestBlindedPaymentToHints(t *testing.T) {
 		},
 	}
 
-	actual, err := blindedPayment.toRouteHints(fn.None[*btcec.PublicKey]())
+	actual, err := blindedPayment.toRouteHints()
 	require.NoError(t, err)
 
 	require.Equal(t, len(expected), len(actual))
@@ -218,3 +218,63 @@ func TestBlindedPaymentToHints(t *testing.T) {
 		require.Equal(t, expectedHint[0], actualHint[0])
 	}
 }
+
+// TestBlindedPaymentDeepCopy tests the deep copy method of the BLindedPayment
+// struct.
+//
+// TODO(ziggie): Make this a property test instead.
+func TestBlindedPaymentDeepCopy(t *testing.T) {
+	_, pkBlind1 := btcec.PrivKeyFromBytes([]byte{1})
+	_, blindingPoint := btcec.PrivKeyFromBytes([]byte{2})
+	_, pkBlind2 := btcec.PrivKeyFromBytes([]byte{3})
+
+	// Create a test BlindedPayment with non-nil fields
+	original := &BlindedPayment{
+		BaseFee:             1000,
+		ProportionalFeeRate: 2000,
+		CltvExpiryDelta:     144,
+		HtlcMinimum:         1000,
+		HtlcMaximum:         1000000,
+		Features:            lnwire.NewFeatureVector(nil, nil),
+		BlindedPath: &sphinx.BlindedPath{
+			IntroductionPoint: pkBlind1,
+			BlindingPoint:     blindingPoint,
+			BlindedHops: []*sphinx.BlindedHopInfo{
+				{
+					BlindedNodePub: pkBlind2,
+					CipherText:     []byte("test cipher"),
+				},
+			},
+		},
+	}
+
+	// Make a deep copy
+	cpyPayment := original.deepCopy()
+
+	// Test 1: Verify the copy is not the same pointer
+	if cpyPayment == original {
+		t.Fatal("deepCopy returned same pointer")
+	}
+
+	// Verify all fields are equal
+	if !reflect.DeepEqual(original, cpyPayment) {
+		t.Fatal("copy is not equal to original")
+	}
+
+	// Modify the copy and verify it doesn't affect the original
+	cpyPayment.BaseFee = 2000
+	cpyPayment.BlindedPath.BlindedHops[0].CipherText = []byte("modified")
+
+	require.NotEqual(t, original.BaseFee, cpyPayment.BaseFee)
+
+	require.NotEqual(
+		t,
+		original.BlindedPath.BlindedHops[0].CipherText,
+		cpyPayment.BlindedPath.BlindedHops[0].CipherText,
+	)
+
+	// Verify nil handling.
+	var nilPayment *BlindedPayment
+	nilCopy := nilPayment.deepCopy()
+	require.Nil(t, nilCopy)
+}
diff --git a/routing/pathfind_test.go b/routing/pathfind_test.go
index c463b8135..f91d95d6b 100644
--- a/routing/pathfind_test.go
+++ b/routing/pathfind_test.go
@@ -765,6 +765,9 @@ func TestPathFinding(t *testing.T) {
 	}, {
 		name: "path finding with additional edges",
 		fn:   runPathFindingWithAdditionalEdges,
+	}, {
+		name: "path finding with duplicate blinded hop",
+		fn:   runPathFindingWithBlindedPathDuplicateHop,
 	}, {
 		name: "path finding with redundant additional edges",
 		fn:   runPathFindingWithRedundantAdditionalEdges,
@@ -1265,6 +1268,107 @@ func runPathFindingWithAdditionalEdges(t *testing.T, useCache bool) {
 	assertExpectedPath(t, graph.aliasMap, path, "songoku", "doge")
 }
 
+// runPathFindingWithBlindedPathDuplicateHop tests that in case a blinded path
+// has duplicate hops that the path finding algorithm does not fail or behave
+// incorrectly. This can happen because the creator of the blinded path can
+// specify the same hop multiple times and this will only be detected at the
+// forwarding nodes, so it is important that we can handle this case.
+func runPathFindingWithBlindedPathDuplicateHop(t *testing.T, useCache bool) {
+	graph, err := parseTestGraph(t, useCache, basicGraphFilePath)
+	require.NoError(t, err, "unable to create graph")
+
+	sourceNode, err := graph.graph.SourceNode()
+	require.NoError(t, err, "unable to fetch source node")
+
+	paymentAmt := lnwire.NewMSatFromSatoshis(100)
+
+	songokuPubKeyBytes := graph.aliasMap["songoku"]
+	songokuPubKey, err := btcec.ParsePubKey(songokuPubKeyBytes[:])
+	require.NoError(t, err, "unable to parse public key from bytes")
+
+	_, pkb1 := btcec.PrivKeyFromBytes([]byte{2})
+	_, pkb2 := btcec.PrivKeyFromBytes([]byte{3})
+	_, blindedPoint := btcec.PrivKeyFromBytes([]byte{5})
+
+	sizeEncryptedData := 100
+	cipherText := bytes.Repeat(
+		[]byte{1}, sizeEncryptedData,
+	)
+
+	vb1 := route.NewVertex(pkb1)
+	vb2 := route.NewVertex(pkb2)
+
+	// Payments to blinded paths always pay to the NUMS target key.
+	dummyTarget := route.NewVertex(&BlindedPathNUMSKey)
+
+	graph.aliasMap["pkb1"] = vb1
+	graph.aliasMap["pkb2"] = vb2
+	graph.aliasMap["dummyTarget"] = dummyTarget
+
+	// Create a blinded payment with duplicate hops and make sure the
+	// path finding algorithm can cope with that. We add blinded hop 2
+	// 3 times. The path finding algorithm should create a path with a
+	// single hop to pkb2 (the first entry).
+	blindedPayment := &BlindedPayment{
+		BlindedPath: &sphinx.BlindedPath{
+			IntroductionPoint: songokuPubKey,
+			BlindingPoint:     blindedPoint,
+			BlindedHops: []*sphinx.BlindedHopInfo{
+				{
+					CipherText: cipherText,
+				},
+				{
+					BlindedNodePub: pkb2,
+					CipherText:     cipherText,
+				},
+				{
+					BlindedNodePub: pkb1,
+					CipherText:     cipherText,
+				},
+				{
+					BlindedNodePub: pkb2,
+					CipherText:     cipherText,
+				},
+				{
+					BlindedNodePub: &BlindedPathNUMSKey,
+					CipherText:     cipherText,
+				},
+				{
+					BlindedNodePub: pkb2,
+					CipherText:     cipherText,
+				},
+			},
+		},
+		HtlcMinimum:     1,
+		HtlcMaximum:     100_000_000,
+		CltvExpiryDelta: 140,
+	}
+
+	blindedPath, err := blindedPayment.toRouteHints()
+	require.NoError(t, err)
+
+	find := func(r *RestrictParams) (
+		[]*unifiedEdge, error) {
+
+		return dbFindPath(
+			graph.graph, blindedPath, &mockBandwidthHints{},
+			r, testPathFindingConfig,
+			sourceNode.PubKeyBytes, dummyTarget, paymentAmt,
+			0, 0,
+		)
+	}
+
+	// We should now be able to find a path however not the chained path
+	// of the blinded hops.
+	path, err := find(noRestrictions)
+	require.NoError(t, err, "unable to create route to blinded path")
+
+	// The path should represent the following hops:
+	//	source node -> songoku -> pkb2 -> dummyTarget
+	assertExpectedPath(t, graph.aliasMap, path, "songoku", "pkb2",
+		"dummyTarget")
+}
+
 // runPathFindingWithRedundantAdditionalEdges asserts that we are able to find
 // paths to nodes ignoring additional edges that are already known by self node.
 func runPathFindingWithRedundantAdditionalEdges(t *testing.T, useCache bool) {
@@ -3284,9 +3388,7 @@ func TestBlindedRouteConstruction(t *testing.T) {
 	// that make up the graph we'll give to route construction. The hints
 	// map is keyed by source node, so we can retrieve our blinded edges
 	// accordingly.
-	blindedEdges, err := blindedPayment.toRouteHints(
-		fn.None[*btcec.PublicKey](),
-	)
+	blindedEdges, err := blindedPayment.toRouteHints()
 	require.NoError(t, err)
 
 	carolDaveEdge := blindedEdges[carolVertex][0]
@@ -3415,32 +3517,48 @@ func TestLastHopPayloadSize(t *testing.T) {
 		customRecords = map[uint64][]byte{
 			record.CustomTypeStart: {1, 2, 3},
 		}
-		sizeEncryptedData = 100
-		encrypedData      = bytes.Repeat(
-			[]byte{1}, sizeEncryptedData,
+
+		encrypedDataSmall = bytes.Repeat(
+			[]byte{1}, 5,
 		)
-		_, blindedPoint       = btcec.PrivKeyFromBytes([]byte{5})
-		paymentAddr           = &[32]byte{1}
-		ampOptions            = &AMPOptions{}
-		amtToForward          = lnwire.MilliSatoshi(10000)
-		finalHopExpiry  int32 = 144
+		encrypedDataLarge = bytes.Repeat(
+			[]byte{1}, 100,
+		)
+		_, blindedPoint          = btcec.PrivKeyFromBytes([]byte{5})
+		paymentAddr              = &[32]byte{1}
+		ampOptions               = &AMPOptions{}
+		amtToForward             = lnwire.MilliSatoshi(10000)
+		emptyEncryptedData       = []byte{}
+		finalHopExpiry     int32 = 144
 
 		oneHopPath = &sphinx.BlindedPath{
 			BlindedHops: []*sphinx.BlindedHopInfo{
 				{
-					CipherText: encrypedData,
+					CipherText: emptyEncryptedData,
+				},
+			},
+			BlindingPoint: blindedPoint,
+		}
+
+		twoHopPathSmallHopSize = &sphinx.BlindedPath{
+			BlindedHops: []*sphinx.BlindedHopInfo{
+				{
+					CipherText: encrypedDataLarge,
+				},
+				{
+					CipherText: encrypedDataLarge,
 				},
 			},
 			BlindingPoint: blindedPoint,
 		}
 
-		twoHopPath = &sphinx.BlindedPath{
+		twoHopPathLargeHopSize = &sphinx.BlindedPath{
 			BlindedHops: []*sphinx.BlindedHopInfo{
 				{
-					CipherText: encrypedData,
+					CipherText: encrypedDataSmall,
 				},
 				{
-					CipherText: encrypedData,
+					CipherText: encrypedDataSmall,
 				},
 			},
 			BlindingPoint: blindedPoint,
@@ -3453,15 +3571,19 @@ func TestLastHopPayloadSize(t *testing.T) {
 	require.NoError(t, err)
 
 	twoHopBlindedPayment, err := NewBlindedPaymentPathSet(
-		[]*BlindedPayment{{BlindedPath: twoHopPath}},
+		[]*BlindedPayment{
+			{BlindedPath: twoHopPathLargeHopSize},
+			{BlindedPath: twoHopPathSmallHopSize},
+		},
 	)
 	require.NoError(t, err)
 
 	testCases := []struct {
-		name           string
-		restrictions   *RestrictParams
-		finalHopExpiry int32
-		amount         lnwire.MilliSatoshi
+		name                  string
+		restrictions          *RestrictParams
+		finalHopExpiry        int32
+		amount                lnwire.MilliSatoshi
+		expectedEncryptedData []byte
 	}{
 		{
 			name: "Non blinded final hop",
@@ -3479,16 +3601,18 @@ func TestLastHopPayloadSize(t *testing.T) {
 			restrictions: &RestrictParams{
 				BlindedPaymentPathSet: oneHopBlindedPayment,
 			},
-			amount:         amtToForward,
-			finalHopExpiry: finalHopExpiry,
+			amount:                amtToForward,
+			finalHopExpiry:        finalHopExpiry,
+			expectedEncryptedData: emptyEncryptedData,
 		},
 		{
 			name: "Blinded final hop of a two hop payment",
 			restrictions: &RestrictParams{
 				BlindedPaymentPathSet: twoHopBlindedPayment,
 			},
-			amount:         amtToForward,
-			finalHopExpiry: finalHopExpiry,
+			amount:                amtToForward,
+			finalHopExpiry:        finalHopExpiry,
+			expectedEncryptedData: encrypedDataLarge,
 		},
 	}
 
@@ -3512,16 +3636,23 @@ func TestLastHopPayloadSize(t *testing.T) {
 
 			var finalHop route.Hop
 			if tc.restrictions.BlindedPaymentPathSet != nil {
-				path := tc.restrictions.BlindedPaymentPathSet.
-					LargestLastHopPayloadPath()
+				bPSet := tc.restrictions.BlindedPaymentPathSet
+				path, err := bPSet.LargestLastHopPayloadPath()
+				require.NotNil(t, path)
+
+				require.NoError(t, err)
+
 				blindedPath := path.BlindedPath.BlindedHops
 				blindedPoint := path.BlindedPath.BlindingPoint
+				lastHop := blindedPath[len(blindedPath)-1]
+				require.Equal(t, lastHop.CipherText,
+					tc.expectedEncryptedData)
 
 				//nolint:ll
 				finalHop = route.Hop{
 					AmtToForward:     tc.amount,
 					OutgoingTimeLock: uint32(tc.finalHopExpiry),
-					EncryptedData:    blindedPath[len(blindedPath)-1].CipherText,
+					EncryptedData:    lastHop.CipherText,
 				}
 				if len(blindedPath) == 1 {
 					finalHop.BlindingPoint = blindedPoint
@@ -3541,11 +3672,11 @@ func TestLastHopPayloadSize(t *testing.T) {
 			payLoad, err := createHopPayload(finalHop, 0, true)
 			require.NoErrorf(t, err, "failed to create hop payload")
 
-			expectedPayloadSize := lastHopPayloadSize(
+			expectedPayloadSize, err := lastHopPayloadSize(
 				tc.restrictions, tc.finalHopExpiry,
 				tc.amount,
 			)
-
+			require.NoError(t, err)
 			require.Equal(
 				t, expectedPayloadSize,
 				uint64(payLoad.NumBytes()),
diff --git a/routing/result_interpretation_test.go b/routing/result_interpretation_test.go
index 8c67bdeea..a0c3e9062 100644
--- a/routing/result_interpretation_test.go
+++ b/routing/result_interpretation_test.go
@@ -96,13 +96,17 @@ var (
 				AmtToForward: 99,
 			},
 			{
-				PubKeyBytes:   hops[2],
-				AmtToForward:  95,
+				PubKeyBytes: hops[2],
+				// Intermediate blinded hops don't have an
+				// amount set.
+				AmtToForward:  0,
 				BlindingPoint: genTestPubKey(),
 			},
 			{
-				PubKeyBytes:  hops[3],
-				AmtToForward: 88,
+				PubKeyBytes: hops[3],
+				// Intermediate blinded hops don't have an
+				// amount set.
+				AmtToForward: 0,
 			},
 			{
 				PubKeyBytes:  hops[4],
@@ -122,8 +126,10 @@ var (
 				AmtToForward: 99,
 			},
 			{
-				PubKeyBytes:   hops[2],
-				AmtToForward:  95,
+				PubKeyBytes: hops[2],
+				// Intermediate blinded hops don't have an
+				// amount set.
+				AmtToForward:  0,
 				BlindingPoint: genTestPubKey(),
 			},
 			{
@@ -140,13 +146,17 @@ var (
 		TotalAmount:  100,
 		Hops: []*route.Hop{
 			{
-				PubKeyBytes:   hops[1],
-				AmtToForward:  90,
+				PubKeyBytes: hops[1],
+				// Intermediate blinded hops don't have an
+				// amount set.
+				AmtToForward:  0,
 				BlindingPoint: genTestPubKey(),
 			},
 			{
-				PubKeyBytes:  hops[2],
-				AmtToForward: 75,
+				PubKeyBytes: hops[2],
+				// Intermediate blinded hops don't have an
+				// amount set.
+				AmtToForward: 0,
 			},
 			{
 				PubKeyBytes:  hops[3],
@@ -552,7 +562,12 @@ var resultTestCases = []resultTestCase{
 			pairResults: map[DirectedNodePair]pairResult{
 				getTestPair(0, 1): successPairResult(100),
 				getTestPair(1, 2): successPairResult(99),
-				getTestPair(3, 4): failPairResult(88),
+
+				// The amount for the last hop is always the
+				// receiver amount because the amount to forward
+				// is always set to 0 for intermediate blinded
+				// hops.
+				getTestPair(3, 4): failPairResult(77),
 			},
 		},
 	},
@@ -567,7 +582,12 @@ var resultTestCases = []resultTestCase{
 		expectedResult: &interpretedResult{
 			pairResults: map[DirectedNodePair]pairResult{
 				getTestPair(0, 1): successPairResult(100),
-				getTestPair(2, 3): failPairResult(75),
+
+				// The amount for the last hop is always the
+				// receiver amount because the amount to forward
+				// is always set to 0 for intermediate blinded
+				// hops.
+				getTestPair(2, 3): failPairResult(58),
 			},
 		},
 	},
@@ -682,6 +702,25 @@ var resultTestCases = []resultTestCase{
 			finalFailureReason: &reasonError,
 		},
 	},
+	// Test a multi-hop blinded route and that in a success case the amounts
+	// for the blinded route part are correctly set to the receiver amount.
+	{
+		name:    "blinded multi-hop success",
+		route:   blindedMultiToIntroduction,
+		success: true,
+		expectedResult: &interpretedResult{
+			pairResults: map[DirectedNodePair]pairResult{
+				getTestPair(0, 1): successPairResult(100),
+
+				// For the route blinded part of the route the
+				// success amount is determined by the receiver
+				// amount because the intermediate blinded hops
+				// set the forwarded amount to 0.
+				getTestPair(1, 2): successPairResult(58),
+				getTestPair(2, 3): successPairResult(58),
+			},
+		},
+	},
 }
 
 // TestResultInterpretation executes a list of test cases that test the result