lnurlcash-conformance 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/runner/index.mjs +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@ Semantic versioning. While the LUD-25 draft is unmerged, `0.x` minor bumps
|
|
|
4
4
|
may add or tighten checks that a previously-passing mint now fails; pin an
|
|
5
5
|
exact version if you gate CI on the grade.
|
|
6
6
|
|
|
7
|
+
## 0.11.1 - 2026-09-15
|
|
8
|
+
|
|
9
|
+
- Unsigned plain-hash Part 1 mutation outputs now pass the live grader cleanly
|
|
10
|
+
instead of producing an interoperability warning. Any optional legacy
|
|
11
|
+
signature that is returned must still verify; Part 2 `cp1` outputs still
|
|
12
|
+
require an amount-bearing `cs1` certificate.
|
|
13
|
+
|
|
7
14
|
## 0.11.0 - 2026-09-15
|
|
8
15
|
|
|
9
16
|
**Amount-bearing certificates and internal-transfer discovery.** Part 2 now
|
package/README.md
CHANGED
|
@@ -95,7 +95,7 @@ must survive:
|
|
|
95
95
|
| `--echoWrongK1` | answers the informational GET with a different `k1` |
|
|
96
96
|
| `--lieAboutValue=N` | reports a `maxWithdrawable` it never signed |
|
|
97
97
|
| `--signatureLayout=leading` | emits the recovery id at the other end |
|
|
98
|
-
| `--signatures=false` | issues no Part 1 signatures.
|
|
98
|
+
| `--signatures=false` | issues no optional Part 1 signatures. Unsigned plain-hash outputs are conforming; Part 2 `cp1` outputs still require certificates |
|
|
99
99
|
| `--serverGeneratedSecrets` | hands back a secret it generated — the exposure `h` exists to close |
|
|
100
100
|
| `--meltNeverSettles` | holds every melt in flight, so notes stay `pending` |
|
|
101
101
|
| `--meltAlwaysFails` | fails every payment, restoring the note |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lnurlcash-conformance",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Language-neutral conformance vectors, an adversarial mock mint, and a grader for LNURLcash (LUD-25) implementations",
|
|
5
5
|
"author": "TheCryptoDonkey",
|
|
6
6
|
"license": "MIT",
|
package/runner/index.mjs
CHANGED
|
@@ -1205,12 +1205,12 @@ export const gradeNote = async (noteUrl, report, options = {}) => {
|
|
|
1205
1205
|
: 'the signature does not verify against the advertised mintPubkey and amount'
|
|
1206
1206
|
|
|
1207
1207
|
await report.check('a legacy hash mutation signature verifies when present', async () => {
|
|
1208
|
-
//
|
|
1209
|
-
//
|
|
1210
|
-
//
|
|
1211
|
-
//
|
|
1208
|
+
// Part 1 signatures are optional: a plain hash has no public note
|
|
1209
|
+
// identifier to certify without disclosing its bearer secret. Older
|
|
1210
|
+
// SERVICE implementations may still return one, and every signature
|
|
1211
|
+
// that is present must verify.
|
|
1212
1212
|
if (currentSig === null) {
|
|
1213
|
-
|
|
1213
|
+
return 'unsigned legacy Part 1 output accepted'
|
|
1214
1214
|
}
|
|
1215
1215
|
assert(info.mintPubkey, 'a sig with no mintPubkey advertised verifies against nothing')
|
|
1216
1216
|
assert(isCompressedPubkey(info.mintPubkey), 'mintPubkey is not a 33-byte compressed secp256k1 key')
|