Most Lightning payments fail at least once before succeeding. Good software treats failure as information, not as a dead end.
Why this matters
Naive “try once and show error” UX makes Lightning feel broken. Smart retries with fee budgets make it feel instant.
Failure classes
- Temporary channel imbalance / unknown liquidity
- Expiry too tight
- Fee insufficient
- Permanent: unknown peer, invalid invoice, exhausted expiry
Loading diagram…
Worked mental model
Re-read the diagrams in this lesson once out loud in plain language. If you cannot explain the flow to a friend without jargon, pause and revisit Mastering Bitcoin / Mastering Lightning chapters linked in Resources. Chapter references are intentional, not decorative.
Hands-on habit
Every protocol idea should be paired with one local experiment:
- Reproduce the happy path on regtest (or Polar for Lightning)
- Break it on purpose (wrong fee, expired invoice, offline peer)
- Write down what error you saw and which layer produced it (wallet, node, mempool, peer)
That habit turns reading into builder instinct.
Glossary check
Pick three terms from this lesson and define them in one sentence each without opening notes. Weak definitions mean the lesson is not finished yet.
Resource order
Use Resources in order: narrative book chapter first, then BIP/BOLT for precision, then implementation docs for commands. Jumping straight to RPC flags without the mental model creates brittle knowledge.
Next steps
Implementation deep dives: start with LND’s APIs and auth model.