Why B 1 medium-severity failure caps the grade at B: accepts P2PK locks with duplicated tags .
Failed 1
Malformed lock (duplicate tag) rejected NUT-11
Medium · caps at B
Accepted a P2PK secret with two locktime tags. NUT-11 says a duplicated tag makes the secret malformed and it MUST be rejected. Wallets and mints that read different copies of the tag disagree on when the refund key can spend, so a refund could open earlier than the receiver expects.
Known issue in the mint software. Nutshell versions before 0.21.0 accept duplicated spending-condition tags. Fixed in Nutshell 0.21.0; upgrading the mint fixes it.
Nutshell PR #1008 Request and response POST /v1/swap
{
"inputs": "[1 proofs, 2 sat]",
"outputs": "[1 outputs]"
}
200 (3235 ms)
{
"signatures": "[1 signatures]"
} Passed 26 Keys 4 passed All public keys are valid curve points NUT-01 64 keys across 1 keysets Every amount has its own key NUT-01 No key is reused across amounts or keysets Keyset IDs match their keys NUT-02 1 keyset ID(s) re-derived and matched At least one active keyset NUT-02 sat: 00a551c045e0… fee 100 ppk
Forgery 1 passed Rejects forged ecash NUT-03 Forged proof refused (10001)
Info 3 passed Mint is served over HTTPS — HTTPS in use Info endpoint is well formed NUT-06 'Voltz Mint' running Nutshell/0.20.3 Claimed NUT endpoints respond NUT-06 Every probed claim answered
DLEQ 3 passed DLEQ proofs valid on mint NUT-12 7 DLEQ proof(s) verified DLEQ proofs valid on swap NUT-12 5 DLEQ proof(s) verified DLEQ proofs valid on melt_change NUT-12 4 DLEQ proof(s) verified
Issuing 2 passed Paid quote issues the full amount NUT-04 Paid 64, received 64 in 7 signatures Quote cannot be minted twice NUT-04 Second mint on the same quote refused (20002)
Spending 5 passed Rejects outputs worth more than inputs NUT-03 Swap creating 1 sat out of nothing refused (11000) Swap at the advertised fee succeeds NUT-02 1 inputs, 100 ppk → 1 sat fee, accepted Rejects double spends NUT-03 Re-spending used proofs refused (11001) Rejects the same proof twice in one request NUT-03 Duplicated input refused (11007) Spent proofs are reported as spent NUT-07 All spent proofs report SPENT
Locks 6 passed P2PK lock enforced NUT-11 Refused: no signature, empty witness, signature from the wrong key; accepted: signature from the locking key P2PK 2-of-2 multisig enforced NUT-11 Refused: 1 of 2 signatures, the same key signing twice; accepted: 2 of 2 signatures Refund key blocked before locktime NUT-11 Refused: refund key before locktime; accepted: locking key Refund key works after locktime NUT-11 Refund key spent the expired lock HTLC hash lock enforced NUT-14 Refused: no preimage, wrong preimage; accepted: correct preimage HTLC receiver signature enforced NUT-14 Refused: preimage without the receiver's signature, preimage with the wrong signature; accepted: preimage and receiver signature
Payouts 2 passed Melt pays the invoice NUT-05 Melt state: PAID (fee_reserve 0) Overpaid fees are returned NUT-08 Overpaid by 15 sat (internal payment, no Lightning fee); 15 sat returned as change