lnurlcash-conformance 0.11.1 → 0.12.0
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 +21 -0
- package/README.md +1 -1
- package/llms.txt +2 -1
- package/package.json +1 -1
- package/runner/index.mjs +9 -7
- package/vectors/index.json +2 -1
- package/vectors/nostr-seed.json +57 -57
- package/vectors/note-url.json +6 -6
- package/vectors/part2.json +396 -398
- package/vectors/spec-vectors.json +142 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ 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.12.0 - 2026-09-16
|
|
8
|
+
|
|
9
|
+
**`ck1` now carries a BIP-340 Schnorr ownership proof.** This follows the
|
|
10
|
+
current LUD-25 draft and is intentionally incompatible with the former
|
|
11
|
+
recoverable-ECDSA bearer encoding.
|
|
12
|
+
|
|
13
|
+
- `ck1` is bech32m over the note's 32-byte x-only public key followed by a
|
|
14
|
+
64-byte Schnorr signature over the raw UTF-8 bytes of `LNURLcash`.
|
|
15
|
+
- Part 2 and Nostr-seed vectors have been regenerated. Their self-checks
|
|
16
|
+
verify the embedded key and Schnorr proof independently; `cs1` remains an
|
|
17
|
+
amount-bearing recoverable-ECDSA mint certificate.
|
|
18
|
+
- The live grader now spends its Part 2 probe with the new 96-byte `ck1`.
|
|
19
|
+
- Address proof vectors use Schnorr signatures over their raw UTF-8 messages,
|
|
20
|
+
matching the draft while address-management design remains under review.
|
|
21
|
+
- Part 2's address branch is now the literal `m/139'/d1/d2/d3/d4` path the
|
|
22
|
+
draft specifies, with no separate `m/139'/1'` purpose. The earlier hop only
|
|
23
|
+
existed to dodge a collision with a reference-wallet extension that
|
|
24
|
+
deterministically derived Part 1 secrets off the same root; that extension
|
|
25
|
+
is gone, so there is nothing left to collide with. Adds `spec-vectors.json`,
|
|
26
|
+
transcribing LUD-25's own published "Test Vectors" section.
|
|
27
|
+
|
|
7
28
|
## 0.11.1 - 2026-09-15
|
|
8
29
|
|
|
9
30
|
- Unsigned plain-hash Part 1 mutation outputs now pass the live grader cleanly
|
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ for (const c of cases) {
|
|
|
48
48
|
| `signature.json` | offline verification, both recovery-id orderings, malformed input |
|
|
49
49
|
| `derivation.json` | deterministic note secrets from a BIP39 seed |
|
|
50
50
|
| `cash-derivation.json` | LUD-25's seed-recoverable note secrets under `m/139'`, with BIP-32's own vector 1 |
|
|
51
|
-
| `part2.json` | Part 2: `cp1
|
|
51
|
+
| `part2.json` | Part 2: `cp1`, 96-byte-payload Schnorr `ck1`, amount-bearing recoverable-ECDSA `cs1`, `cx1`, the per-note key tweak, ownership proofs and mint certificates, on the reference wallet's `m/139'/1'` address path |
|
|
52
52
|
| `bech32.json` | LUD-01 encoding, round trips, corrupted checksums |
|
|
53
53
|
| `url-admission.json` | which URLs may be fetched, and why `data:` must never be |
|
|
54
54
|
| `input-resolution.json` | bech32, LUD-17, Lightning Addresses, bare domains |
|
package/llms.txt
CHANGED
|
@@ -13,7 +13,8 @@ vectors/index.json:
|
|
|
13
13
|
signature.json offline verification, both recovery-id orderings
|
|
14
14
|
derivation.json deterministic note secrets from a BIP39 seed
|
|
15
15
|
cash-derivation.json LUD-25 m/139' note secrets, plus BIP-32 vector 1
|
|
16
|
-
part2.json Part 2: cp1
|
|
16
|
+
part2.json Part 2: cp1, ck1=pubkey||BIP340 Schnorr sig, cs1=recoverable ECDSA certificate,
|
|
17
|
+
cx1, the note-key tweak, ownership proofs and certificates;
|
|
17
18
|
address path is the reference wallet's m/139'/1'/d1..d4 (not the text's)
|
|
18
19
|
bech32.json LUD-01 encoding
|
|
19
20
|
url-admission.json which URLs may be fetched (https, or http to loopback/.onion)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lnurlcash-conformance",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
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
|
@@ -53,9 +53,10 @@ const verifySignature = (k1, amountMsat, signatureHex, pubkeyHex) => {
|
|
|
53
53
|
const verifyCertificate = (pubkeyHex32, amountMsat, sig, mintPubkeyHex) =>
|
|
54
54
|
recoversTo(signedMessageDigest(`LNURLcash:${amountMsat}:${pubkeyHex32}`), sig, mintPubkeyHex)
|
|
55
55
|
|
|
56
|
-
// Part 2's bech32m strings: cp1 (32-byte key), ck1
|
|
57
|
-
// signature)
|
|
58
|
-
//
|
|
56
|
+
// Part 2's bech32m strings: cp1 (32-byte key), ck1 (32-byte key plus 64-byte
|
|
57
|
+
// Schnorr signature), and cs1 (65-byte recoverable ECDSA signature). cs1 has
|
|
58
|
+
// a variable HRP: "cs" plus the amount under BOLT-11's amount rules. Longer
|
|
59
|
+
// than BIP-173's 90 characters by design.
|
|
59
60
|
const BECH32M_LIMIT = 200
|
|
60
61
|
const encodeCash = (hrp, bytes) => bech32m.encode(hrp, bech32m.toWords(bytes), BECH32M_LIMIT)
|
|
61
62
|
const decodeCash = (hrp, value, length) => {
|
|
@@ -89,11 +90,12 @@ const decodeCertificate = value => {
|
|
|
89
90
|
return signature ? {amountMsat, signature} : null
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
// The bearer secret of a cp1 note:
|
|
93
|
-
//
|
|
93
|
+
// The bearer secret of a cp1 note: its x-only key followed by a BIP-340
|
|
94
|
+
// Schnorr signature over the raw UTF-8 bytes of "LNURLcash".
|
|
94
95
|
const ownershipProof = secretKey => {
|
|
95
|
-
const
|
|
96
|
-
|
|
96
|
+
const pubkey = schnorr.getPublicKey(secretKey)
|
|
97
|
+
const signature = schnorr.sign(utf8ToBytes('LNURLcash'), secretKey)
|
|
98
|
+
return encodeCash('ck', new Uint8Array([...pubkey, ...signature]))
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
// LUD-17: lnurlw://host/path is https://host/path, or http:// when the host
|
package/vectors/index.json
CHANGED
package/vectors/nostr-seed.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 1,
|
|
3
3
|
"spec": "LUD-25 draft (lnurl/luds#301)",
|
|
4
4
|
"extension": true,
|
|
5
|
-
"description": "An extension, not LUD-25: a Part 2 address branch rooted in a Nostr identity key, for a holder with no BIP39 words. seed = HMAC-SHA256(key = identity (the 32-byte secret key), msg = utf8(\"LNURLcash/nostr-seed\")); the branch is then the reference wallet's m/139'/
|
|
5
|
+
"description": "An extension, not LUD-25: a Part 2 address branch rooted in a Nostr identity key, for a holder with no BIP39 words. seed = HMAC-SHA256(key = identity (the 32-byte secret key), msg = utf8(\"LNURLcash/nostr-seed\")); the branch is then the reference wallet's m/139'/d1..d4 from that seed exactly as in part2.json, and every note field means what it means there. identityPubkey is the identity's x-only public key, the npub a lightning address belongs to. heartwood-esp32 derives this on the device and lnurlcash-kit exports it (deriveNostrAddressNode); a mint sees an ordinary cx1.",
|
|
6
6
|
"label": "LNURLcash/nostr-seed",
|
|
7
7
|
"cases": [
|
|
8
8
|
{
|
|
@@ -10,29 +10,29 @@
|
|
|
10
10
|
"identityPubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
|
|
11
11
|
"host": "moneyer.dev",
|
|
12
12
|
"seed": "3ae0ea260b8066e219db88cf06b3ea9a170104875f3ea70a8434a2bc478ea121",
|
|
13
|
-
"addressNode": "
|
|
14
|
-
"cx1": "
|
|
13
|
+
"addressNode": "348c4d86dbf210b834616ba9788ed14703994851d33afe69c3db2e894837d7604a09e82ce5fb759d28682b1b0f02dfa3e817d08936bd0904fd6d8aa454e4a0c4",
|
|
14
|
+
"cx1": "cx1zykmf4qhmtgy8f99megdvcxfydz7gsafv3zawfr25gngaz25nrqy5z0g9njlkava9p5zkxc0qt0686qh6zynd0gfqn7kmz4y2nj2p3qfra8js",
|
|
15
15
|
"notes": [
|
|
16
16
|
{
|
|
17
17
|
"index": 0,
|
|
18
|
-
"noteSecretKey": "
|
|
19
|
-
"notePubkey": "
|
|
20
|
-
"cp1": "
|
|
21
|
-
"ck1": "
|
|
18
|
+
"noteSecretKey": "c5f3dcde2580c0aedb53e10cdd0feafc922ae5ee5eb062a0eb8383d1a86a0f2c",
|
|
19
|
+
"notePubkey": "81924875f77724b1e44fb737143d53b5633c63f989c49ed936f504ec8a7765d4",
|
|
20
|
+
"cp1": "cp1sxfysa0hwujtrez0kum3g02nk43nccle38zfakfk75zweznhvh2qq5776a",
|
|
21
|
+
"ck1": "ck1sxfysa0hwujtrez0kum3g02nk43nccle38zfakfk75zweznhvh2vc2fjcpd26dgewjlmms72vwuryhv8pcjd3fxy5cf0j7el7a3yv7z8wzaslapkk63t8el8mre9j3ujf8auyn75we4s3fkcfgwuvwdwvg6mtk7w"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"index": 1,
|
|
25
|
-
"noteSecretKey": "
|
|
26
|
-
"notePubkey": "
|
|
27
|
-
"cp1": "
|
|
28
|
-
"ck1": "
|
|
25
|
+
"noteSecretKey": "75bb52bf9a2d02a10b29f19878117ce67433f582c794b34191e431d427f49f6c",
|
|
26
|
+
"notePubkey": "0f250aa687954aa1fb076b14b0b983a0cac6ce352cab53c91cdebc9a480da527",
|
|
27
|
+
"cp1": "cp1pujs4f58j492r7c8dv2tpwvr5r9vdn349j448jgum67f5jqd55nschpuxm",
|
|
28
|
+
"ck1": "ck1pujs4f58j492r7c8dv2tpwvr5r9vdn349j448jgum67f5jqd55nsmc8ld0udlhzwmjqpgpru86flf7ctqkle2q7fpk2ejd2yw3mmwaf2vmen3nd4lxhj5eafq32y366jln93hsva83uy7x5jgmmj5pxlkuhlqkju"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"index": 7,
|
|
32
|
-
"noteSecretKey": "
|
|
33
|
-
"notePubkey": "
|
|
34
|
-
"cp1": "
|
|
35
|
-
"ck1": "
|
|
32
|
+
"noteSecretKey": "5f7ac44acc23178d3cb365cc6da8d646eaf99af226476aca34381c0b667086ea",
|
|
33
|
+
"notePubkey": "f34d90da258cac365d31a133fe9fa38a23d2f157e67f2bcc5c738134d134d3c2",
|
|
34
|
+
"cp1": "cp17dxepk393jkrvhf35yela8ar3g3a9u2hueljhnzuwwqnf5f560pq8mq7n6",
|
|
35
|
+
"ck1": "ck17dxepk393jkrvhf35yela8ar3g3a9u2hueljhnzuwwqnf5f560pwmpvkw3y748nnxvre09fqwkd2dfuus5hq6hrnphawsv3mdjjh0y4y6en0gtt9pdf9ypazf3t2wwdql9khnyfu2w0sykaxzec5uc5n9v077het"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
},
|
|
@@ -41,29 +41,29 @@
|
|
|
41
41
|
"identityPubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
|
|
42
42
|
"host": "mint.example",
|
|
43
43
|
"seed": "3ae0ea260b8066e219db88cf06b3ea9a170104875f3ea70a8434a2bc478ea121",
|
|
44
|
-
"addressNode": "
|
|
45
|
-
"cx1": "
|
|
44
|
+
"addressNode": "e113d66606250f23d2c6146faf3bc1d694c3410aeb896a7f8ce1a337afc4b5046723d34610415f6f19c3e349d321f1b8ee4e9e7c7e219f58e7a9c766b91eb2fb",
|
|
45
|
+
"cx1": "cx148dp7xtvqt8dcf4k4fzpeqj07cs9ysphhrry75sc0r45z9x7jl4kwg7ngcgyzhm0r8p7xjwny8cm3mjwne78ugvltrn6n3mxhy0t97cpvxjhf",
|
|
46
46
|
"notes": [
|
|
47
47
|
{
|
|
48
48
|
"index": 0,
|
|
49
|
-
"noteSecretKey": "
|
|
50
|
-
"notePubkey": "
|
|
51
|
-
"cp1": "
|
|
52
|
-
"ck1": "
|
|
49
|
+
"noteSecretKey": "24c3ee1fe8d0e22aa35dcaf638480f105b3715a262baed54a756b88a97482805",
|
|
50
|
+
"notePubkey": "94bda00d55228848f2caac0708f0f4be7a2f4fdf72f77e1161ddcd99d58bcf65",
|
|
51
|
+
"cp1": "cp1jj76qr24y2yy3uk24srs3u85heaz7n7lwtmhuytpmhxen4vteajs2kejep",
|
|
52
|
+
"ck1": "ck1jj76qr24y2yy3uk24srs3u85heaz7n7lwtmhuytpmhxen4vteaj5tawnqkvv5srymr4tggxh8lgjyczykzegdh7l9wks2tfm7s92e9evvxt47jax4p7hywucgv909qvr9wev5538x8c3vfqt2fg7e3tduq85n0ch"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"index": 1,
|
|
56
|
-
"noteSecretKey": "
|
|
57
|
-
"notePubkey": "
|
|
58
|
-
"cp1": "
|
|
59
|
-
"ck1": "
|
|
56
|
+
"noteSecretKey": "3a5abd58c3a4b79b93fa3ba9ff1e87db28474d867e0326ad1707cc32a2988636",
|
|
57
|
+
"notePubkey": "d17d3afc667214872105b69825485940c9a1ab35cb792eef4ab907d37da296c4",
|
|
58
|
+
"cp1": "cp1697n4lrxwg2gwgg9k6vz2jzegry6r2e4edujam62hyraxldzjmzq794p6h",
|
|
59
|
+
"ck1": "ck1697n4lrxwg2gwgg9k6vz2jzegry6r2e4edujam62hyraxldzjmzzdf3fc5kf9stnzrz9vmlgu77w74cf5d06ls9c3afu9fy928tfm60ajc7qxr079ucvp0d5da00xa2k87vmj3g6djtq2e539wwgw3zvqvqk44q9"
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
"index": 7,
|
|
63
|
-
"noteSecretKey": "
|
|
64
|
-
"notePubkey": "
|
|
65
|
-
"cp1": "
|
|
66
|
-
"ck1": "
|
|
63
|
+
"noteSecretKey": "a8111935a495aaaadf4106d3598f26e4cdc8d90a28f936b4e304e2476928cb9e",
|
|
64
|
+
"notePubkey": "17d8d60f42390c25ec9d5960a0f14b330043b6c15ccbc0aa3d9f55b09f51d0a9",
|
|
65
|
+
"cp1": "cp1zlvdvr6z8yxztmyat9s2pu2txvqy8dkptn9up23ana2mp8636z5ss572x9",
|
|
66
|
+
"ck1": "ck1zlvdvr6z8yxztmyat9s2pu2txvqy8dkptn9up23ana2mp8636z5700g92drdgpmrcck94ukp0rv205lt9dr3q8n5me075t8vfr8pmquxeh2q2zyajthm50cu94njcg3ca04sxph29ry0czclncxpdrefxctmphza"
|
|
67
67
|
}
|
|
68
68
|
]
|
|
69
69
|
},
|
|
@@ -72,29 +72,29 @@
|
|
|
72
72
|
"identityPubkey": "99e98a193119f2a8adbe6c7da81d3cd64a25742cc49f51f4ec0da44b22bf09bf",
|
|
73
73
|
"host": "moneyer.dev",
|
|
74
74
|
"seed": "efd666778ca0baac6648f11f4b3c428655a1a380caa89309a4d18ae1529f0999",
|
|
75
|
-
"addressNode": "
|
|
76
|
-
"cx1": "
|
|
75
|
+
"addressNode": "bf754968c89fe2690752d3907cccdf0de31c7d88d91d0e6949cb15758bf2ff33df2d47acb7ea6947efb7f4cd3b1efab328ba0d19991ed162a10c59e6f0902bde",
|
|
76
|
+
"cx1": "cx1q65z0dnsxqhdhkqfv8zmzmfqj35pupz3mw6psarpsq4mhq72kqxa7t284jm75628a7mlfnfmrmatx296p5vej8k3v2ssck0x7zgzhhs70pesc",
|
|
77
77
|
"notes": [
|
|
78
78
|
{
|
|
79
79
|
"index": 0,
|
|
80
|
-
"noteSecretKey": "
|
|
81
|
-
"notePubkey": "
|
|
82
|
-
"cp1": "
|
|
83
|
-
"ck1": "
|
|
80
|
+
"noteSecretKey": "53186a2bd0d7b7eb363f1dc977d70dff851dbd18fcc969b39054c48a31363114",
|
|
81
|
+
"notePubkey": "abe507aba03bf0ff8076aff524240381a87c8ea6960f5b3564e53dd9c490e40c",
|
|
82
|
+
"cp1": "cp140js02aq80c0lqrk4l6jgfqrsx58er4xjc84kdtyu57an3ysusxqlsn468",
|
|
83
|
+
"ck1": "ck140js02aq80c0lqrk4l6jgfqrsx58er4xjc84kdtyu57an3ysusxvjqnkk0xdf85m9a3q7p89ay6v4mphecxzfq88wu50u82vu7ka63l75cncccevldg75yasm4lu0w4p7n977u36n234jd9kyaumznzz65wp7ve6"
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
"index": 1,
|
|
87
|
-
"noteSecretKey": "
|
|
88
|
-
"notePubkey": "
|
|
89
|
-
"cp1": "
|
|
90
|
-
"ck1": "
|
|
87
|
+
"noteSecretKey": "647bcb7f67cd8df4f922d6a8e4599875fdbc4557f0d954dadd8deb2abcdc6f85",
|
|
88
|
+
"notePubkey": "ef02ae8326f63e9e08735ee6efe49400fdea7fc3209fbaad634059e40240ec31",
|
|
89
|
+
"cp1": "cp1aup2aqex7clfuzrntmnwley5qr775l7ryz0m4ttrgpv7gqjqascsl32t6c",
|
|
90
|
+
"ck1": "ck1aup2aqex7clfuzrntmnwley5qr775l7ryz0m4ttrgpv7gqjqasclk0a4tf6ckf7gpzwdfflrknq97vpknmzupjy5g9ud502rmnvvrl7zjkpspf9hnygqlqxekte6gu0t40dcnms6s6t70c8lfn39g6jwwu4r5xye"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"index": 7,
|
|
94
|
-
"noteSecretKey": "
|
|
95
|
-
"notePubkey": "
|
|
96
|
-
"cp1": "
|
|
97
|
-
"ck1": "
|
|
94
|
+
"noteSecretKey": "8e9f822bac3fa15bf844d5a8089ed5dca5ea8e4dfcb2656db3d6f3c649e2552a",
|
|
95
|
+
"notePubkey": "b7cbcd61baa0bbb11d27f03b933c0be652a44aecc64df90eefdc68182fb02345",
|
|
96
|
+
"cp1": "cp1kl9u6cd65zamz8f87qaex0qtuef2gjhvcexljrh0m35pstasydzsqakw2c",
|
|
97
|
+
"ck1": "ck1kl9u6cd65zamz8f87qaex0qtuef2gjhvcexljrh0m35pstasydz552pn8mu9u3ahmks9wxrutq570dya0cz4l3jdtju3rwgzzdhqcvmdekf8l6rysty2wd6065t5tr7kdy5a9y9fea9lvx0ag6kjch842qmfp2ss"
|
|
98
98
|
}
|
|
99
99
|
]
|
|
100
100
|
},
|
|
@@ -103,29 +103,29 @@
|
|
|
103
103
|
"identityPubkey": "99e98a193119f2a8adbe6c7da81d3cd64a25742cc49f51f4ec0da44b22bf09bf",
|
|
104
104
|
"host": "127.0.0.1:8899",
|
|
105
105
|
"seed": "efd666778ca0baac6648f11f4b3c428655a1a380caa89309a4d18ae1529f0999",
|
|
106
|
-
"addressNode": "
|
|
107
|
-
"cx1": "
|
|
106
|
+
"addressNode": "4dd8ced68171efb3d313f08aa29914887265f31039572447232b1e264335226a992ef8f9f093546f70831e9c8d02b9935a51c6dcf6b309dea75f5de81dfe794c",
|
|
107
|
+
"cx1": "cx17fp2k94gqgnh9qkrxz6eqfku4tk2ql8tcx8sk9uk0um4lxyfu66fjthcl8cfx4r0wzp3a8ydq2uexkj3cmw0dvcfm6n47h0grhl8jnq57myzr",
|
|
108
108
|
"notes": [
|
|
109
109
|
{
|
|
110
110
|
"index": 0,
|
|
111
|
-
"noteSecretKey": "
|
|
112
|
-
"notePubkey": "
|
|
113
|
-
"cp1": "
|
|
114
|
-
"ck1": "
|
|
111
|
+
"noteSecretKey": "bb9aa4eb4dbd769f27bd6193e6ba061e523d7b23c4f34b6fc5e065eaca8c62d9",
|
|
112
|
+
"notePubkey": "48a749e2ae61bbc17d2855ae58b1b86c6520cf19f1a8fcca27d7e3c1e4679656",
|
|
113
|
+
"cp1": "cp1fzn5nc4wvxauzlfg2kh93vdcd3jjpnce7x50ej386l3urer8jetqv5d2g5",
|
|
114
|
+
"ck1": "ck1fzn5nc4wvxauzlfg2kh93vdcd3jjpnce7x50ej386l3urer8jet2heflrprv99f3fn2hacezrcwvjrll5n77r5ayy0pqh0cst5r8mj8zr0ntst4a6zf58x0v673qy6pjvwz35cerdtf4vxskv6wwp7cmguqzhj8n"
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
"index": 1,
|
|
118
|
-
"noteSecretKey": "
|
|
119
|
-
"notePubkey": "
|
|
120
|
-
"cp1": "
|
|
121
|
-
"ck1": "
|
|
118
|
+
"noteSecretKey": "d927b683c5903e3835c6536fd182123517366c753b3703ba222ee9f6671e9b3b",
|
|
119
|
+
"notePubkey": "9a0d62bf33af3e6961dd32a9dd77fdd2eddfe40a1041ae9b4a0dfa834f5f6849",
|
|
120
|
+
"cp1": "cp1ngxk90en4ulxjcwax25a6ala6tkaleq2zpq6ax62phagxn6ldpysv0ugap",
|
|
121
|
+
"ck1": "ck1ngxk90en4ulxjcwax25a6ala6tkaleq2zpq6ax62phagxn6ldpyn3m00qgm0n260d70t2x7e95uk4nmpt088qa0nkpqkqmd0unwmq60ze6mm740sapygxdlaje4gqlrygqkscfunh7cva9g95gudzwhgas2f7f9l"
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"index": 7,
|
|
125
|
-
"noteSecretKey": "
|
|
126
|
-
"notePubkey": "
|
|
127
|
-
"cp1": "
|
|
128
|
-
"ck1": "
|
|
125
|
+
"noteSecretKey": "380b2d0880d914df24f8fc3965695684086718bd9dd0ae8abdf578173c81f9ae",
|
|
126
|
+
"notePubkey": "d14213f7827fbb561e7cc4b686dc5894db25f1cdf37bd2aa9f8f8419a80b7c4d",
|
|
127
|
+
"cp1": "cp169pp8auz07a4v8nucjmgdhzcjndjtuwd7daa925l37zpn2qt03xsawyu6y",
|
|
128
|
+
"ck1": "ck169pp8auz07a4v8nucjmgdhzcjndjtuwd7daa925l37zpn2qt03xjzudtknh5t0zedhrt78qvmf0ud3fs3n8zuaasmll44qs0zwmqqtg8w69l2ng85pgw6mkrrg80jscycq0z9xyfxq7khs7ply44wr86fsjgussv"
|
|
129
129
|
}
|
|
130
130
|
]
|
|
131
131
|
}
|
package/vectors/note-url.json
CHANGED
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"signature": "ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab"
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
"url": "https://mint.example/w?k1=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&sig=
|
|
26
|
+
"url": "https://mint.example/w?k1=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&sig=cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
27
27
|
"k1": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
28
28
|
"declaredAmountMsat": 21000,
|
|
29
|
-
"signature": "
|
|
29
|
+
"signature": "cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
30
30
|
"why": "an amount-bearing cs1 carries the declared amount without a duplicate amount query parameter"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
@@ -90,8 +90,8 @@
|
|
|
90
90
|
"url": "https://mint.example/w?k1=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&amount=21000",
|
|
91
91
|
"k1": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
92
92
|
"amountMsat": 21000,
|
|
93
|
-
"signature": "
|
|
94
|
-
"expect": "https://mint.example/w?k1=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&sig=
|
|
93
|
+
"signature": "cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
94
|
+
"expect": "https://mint.example/w?k1=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&sig=cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
95
95
|
"why": "the cs1 already carries amount_msat, so the current reference wallet omits the duplicate amount parameter"
|
|
96
96
|
}
|
|
97
97
|
],
|
|
@@ -106,8 +106,8 @@
|
|
|
106
106
|
{
|
|
107
107
|
"url": "https://mint.example/w?k1=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&amount=21000",
|
|
108
108
|
"amountMsat": 21000,
|
|
109
|
-
"signature": "
|
|
110
|
-
"expect": "https://mint.example/w?sig=
|
|
109
|
+
"signature": "cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
110
|
+
"expect": "https://mint.example/w?sig=cs210n14dvflf6u89wxrhp52zgu22ds0cdgegxh4d36p52z6cxydm5r200hq7y3rfrj8d32jpjuguptzhq7zy9l9mjzw4kzwfm9ahku82r58mcpr3lz8j",
|
|
111
111
|
"why": "a secret-free mirror also avoids duplicating the amount already encoded in cs1"
|
|
112
112
|
}
|
|
113
113
|
]
|