Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
f579c33
Add NUT-Exchange: mint-atomic multi-asset exchange
joemphilips Jul 22, 2026
ab4b4fb
Fix Prettier formatting
joemphilips Jul 23, 2026
ff68756
NUT-Exchange: two-case atomic exchange, simplified
joemphilips Jul 23, 2026
27f0bf7
NUT-Exchange: restore on-mint expiry; refund only after expiry
joemphilips Jul 23, 2026
f52fa5f
NUT-Exchange: trim redundancy, fix two-class shape and refund gaps
joemphilips Jul 24, 2026
13854bb
NUT-Exchange: prettier formatting
joemphilips Jul 25, 2026
9bd0838
NUT-Exchange: remove redundant receive_keyset tag from PAY_TO_UNLOCK
joemphilips Jul 26, 2026
79893ff
NUT-Exchange: make request_digest optional (MAY, not MUST)
joemphilips Jul 26, 2026
20cda70
NUT-Exchange: change outputs, alt_outputs, min_output_amount, refund …
joemphilips Jul 27, 2026
068b275
Fix P0s: per-proof nonce, decimal-string amounts, field names
joemphilips Jul 27, 2026
5b09b8c
Sync P0 fixes: decimal-string amounts everywhere, field names, max_al…
joemphilips Jul 27, 2026
d314344
Add NUT-Exchange-partial-fill: pool-based FAK authorization
joemphilips Jul 27, 2026
a92a408
Address review notes: remove FAK framing, mandate powers-of-2, expand…
joemphilips Jul 27, 2026
122198e
Apply codex fix plan: all P0s + user notes resolved
joemphilips Jul 27, 2026
9b23df8
NUT-Exchange-partial-fill: apply codex-reviewed fixes (P0/P1)
joemphilips Jul 27, 2026
0350a51
Add coordinator authentication + pin canonical serialization
joemphilips Jul 29, 2026
e3de7f6
NUT-Exchange: per-input condition validation replaces the every-input…
joemphilips Aug 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 53 additions & 38 deletions error_codes.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,56 @@
# NUT Errors

| Code | Description | Relevant nuts |
| ----- | ----------------------------------------------- | ------------------------------------------------------ |
| 10001 | Proof verification failed | [NUT-03][03], [NUT-05][05] |
| 11001 | Proofs already spent | [NUT-03][03], [NUT-05][05] |
| 11002 | Proofs are pending | [NUT-03][03], [NUT-05][05] |
| 11003 | Outputs already signed | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11004 | Outputs are pending | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11005 | Transaction is not balanced (inputs != outputs) | [NUT-02][02], [NUT-03][03], [NUT-05][05] |
| 11006 | Amount outside of limit range | [NUT-04][04], [NUT-05][05] |
| 11007 | Duplicate inputs provided | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11008 | Duplicate outputs provided | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11009 | Inputs/Outputs of multiple units | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11010 | Inputs and outputs not of same unit | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11011 | Amountless invoice is not supported | [NUT-05][05] |
| 11012 | Amount in request does not equal invoice | [NUT-05][05] |
| 11013 | Unit in request is not supported | [NUT-04][04], [NUT-05][05] |
| 11014 | Max inputs exceeded | [NUT-03][03], [NUT-05][05] |
| 11015 | Max outputs exceeded | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11016 | Duplicate quote IDs provided | [NUT-29][29] |
| 11017 | Max batch size exceeded | [NUT-29][29] |
| 12001 | Keyset is not known | [NUT-02][02], [NUT-04][04] |
| 12002 | Keyset is inactive, cannot sign messages | [NUT-02][02], [NUT-03][03], [NUT-04][04] |
| 12003 | Keyset has expired | [NUT-02][02], [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 20001 | Quote request is not paid | [NUT-04][04] |
| 20002 | Quote has already been issued | [NUT-04][04] |
| 20003 | Minting is disabled | [NUT-04][04] |
| 20004 | Lightning payment failed | [NUT-05][05] |
| 20005 | Quote is pending | [NUT-04][04], [NUT-05][05], [NUT-29][29] |
| 20006 | Invoice already paid | [NUT-05][05] |
| 20007 | Quote is expired | [NUT-04][04], [NUT-05][05] |
| 20008 | Signature for mint request invalid | [NUT-20][20] |
| 20009 | Pubkey required for mint quote | [NUT-20][20] |
| 30001 | Endpoint requires clear auth | [NUT-21][21] |
| 30002 | Clear authentication failed | [NUT-21][21] |
| 31001 | Endpoint requires blind auth | [NUT-22][22] |
| 31002 | Blind authentication failed | [NUT-22][22] |
| 31003 | Maximum BAT mint amount exceeded | [NUT-22][22] |
| 31004 | BAT mint rate limit exceeded | [NUT-22][22] |
| Code | Description | Relevant nuts |
| ----- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| 10001 | Proof verification failed | [NUT-03][03], [NUT-05][05] |
| 11001 | Proofs already spent | [NUT-03][03], [NUT-05][05] |
| 11002 | Proofs are pending | [NUT-03][03], [NUT-05][05] |
| 11003 | Outputs already signed | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11004 | Outputs are pending | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11005 | Transaction is not balanced (inputs != outputs) | [NUT-02][02], [NUT-03][03], [NUT-05][05] |
| 11006 | Amount outside of limit range | [NUT-04][04], [NUT-05][05] |
| 11007 | Duplicate inputs provided | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11008 | Duplicate outputs provided | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11009 | Inputs/Outputs of multiple units | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11010 | Inputs and outputs not of same unit | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11011 | Amountless invoice is not supported | [NUT-05][05] |
| 11012 | Amount in request does not equal invoice | [NUT-05][05] |
| 11013 | Unit in request is not supported | [NUT-04][04], [NUT-05][05] |
| 11014 | Max inputs exceeded | [NUT-03][03], [NUT-05][05] |
| 11015 | Max outputs exceeded | [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 11016 | Duplicate quote IDs provided | [NUT-29][29] |
| 11017 | Max batch size exceeded | [NUT-29][29] |
| 12001 | Keyset is not known | [NUT-02][02], [NUT-04][04] |
| 12002 | Keyset is inactive, cannot sign messages | [NUT-02][02], [NUT-03][03], [NUT-04][04] |
| 12003 | Keyset has expired | [NUT-02][02], [NUT-03][03], [NUT-04][04], [NUT-05][05] |
| 20001 | Quote request is not paid | [NUT-04][04] |
| 20002 | Quote has already been issued | [NUT-04][04] |
| 20003 | Minting is disabled | [NUT-04][04] |
| 20004 | Lightning payment failed | [NUT-05][05] |
| 20005 | Quote is pending | [NUT-04][04], [NUT-05][05], [NUT-29][29] |
| 20006 | Invoice already paid | [NUT-05][05] |
| 20007 | Quote is expired | [NUT-04][04], [NUT-05][05] |
| 20008 | Signature for mint request invalid | [NUT-20][20] |
| 20009 | Pubkey required for mint quote | [NUT-20][20] |
| 30001 | Endpoint requires clear auth | [NUT-21][21] |
| 30002 | Clear authentication failed | [NUT-21][21] |
| 31001 | Endpoint requires blind auth | [NUT-22][22] |
| 31002 | Blind authentication failed | [NUT-22][22] |
| 31003 | Maximum BAT mint amount exceeded | [NUT-22][22] |
| 31004 | BAT mint rate limit exceeded | [NUT-22][22] |
| 15001 | Unsupported or malformed `PAY_TO_UNLOCK` condition | [NUT-Exchange][exchange] |
| 15003 | Receive-output commitment (`H_recv`) mismatch | [NUT-Exchange][exchange] |
| 15004 | Offer/receive keyset relationship violated | [NUT-Exchange][exchange] |
| 15005 | Exchange settlement submitted after `expiry` | [NUT-Exchange][exchange] |
| 15006 | Refund submitted before `expiry` | [NUT-Exchange][exchange] |
| 15007 | Refund signature missing or invalid | [NUT-Exchange][exchange] |
| 15009 | Exchange request exceeds advertised limits | [NUT-Exchange][exchange] |
| 15010 | Conflicting request or reused input (idempotency) | [NUT-Exchange][exchange] |
| 15011 | Pool manifest hash (`H_manifest`) mismatch | [NUT-Exchange-partial-fill][partial-fill] |
| 15012 | Pool selection does not match `outputs` | [NUT-Exchange-partial-fill][partial-fill] |
| 15013 | Pool role/keyset or two-class consistency violated | [NUT-Exchange-partial-fill][partial-fill] |
| 15014 | Pool policy violation (rate/min/max/overflow) | [NUT-Exchange-partial-fill][partial-fill] |
| 15015 | Coordinator authorization failed (key disagreement / missing, invalid, or unexpected `coordinator_sig`) | [NUT-Exchange][exchange] |

[00]: 00.md
[01]: 01.md
Expand All @@ -56,3 +69,5 @@
[21]: 21.md
[22]: 22.md
[29]: 29.md
[exchange]: exchange.md
[partial-fill]: exchange-partial-fill.md
Loading