@openzeppelin/guardian-client 0.14.5 → 0.14.8
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/README.md +43 -0
- package/dist/conversion.d.ts +3 -2
- package/dist/conversion.d.ts.map +1 -1
- package/dist/conversion.js +12 -0
- package/dist/conversion.js.map +1 -1
- package/dist/http.d.ts +22 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +55 -4
- package/dist/http.js.map +1 -1
- package/dist/http.test.js +179 -0
- package/dist/http.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/server-types.d.ts +10 -0
- package/dist/server-types.d.ts.map +1 -1
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/conversion.ts +15 -0
- package/src/http.test.ts +220 -0
- package/src/http.ts +72 -3
- package/src/index.ts +2 -0
- package/src/server-types.ts +12 -0
- package/src/types.ts +33 -0
package/README.md
CHANGED
|
@@ -69,6 +69,49 @@ console.log('Commitment:', state.commitment);
|
|
|
69
69
|
console.log('State data:', state.state_json.data);
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
### Look Up An Account By Key Commitment
|
|
73
|
+
|
|
74
|
+
When a wallet only holds a signing key, it cannot derive the account ID
|
|
75
|
+
directly. The Guardian server exposes `GET /state/lookup` so the wallet
|
|
76
|
+
can ask "which account(s) authorize this commitment?" and proceed with
|
|
77
|
+
the existing recovery flow.
|
|
78
|
+
|
|
79
|
+
The signer used here MUST implement `signLookupMessage`, which signs the
|
|
80
|
+
domain-separated `LookupAuthMessage::to_word(timestampMs, keyCommitment)`
|
|
81
|
+
digest. The canonical implementation lives in
|
|
82
|
+
`@openzeppelin/miden-multisig-client` (which has access to the Miden SDK's
|
|
83
|
+
RPO256); this package keeps the digest computation out of its zero-dependency
|
|
84
|
+
surface.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
88
|
+
|
|
89
|
+
if (result.accounts.length === 0) {
|
|
90
|
+
console.log('No account authorizes this commitment with this operator.');
|
|
91
|
+
} else {
|
|
92
|
+
for (const { accountId } of result.accounts) {
|
|
93
|
+
console.log('Recovered account:', accountId);
|
|
94
|
+
// Continue with the existing /state flow:
|
|
95
|
+
const state = await client.getState(accountId);
|
|
96
|
+
// ... register a new key via the existing delta/proposal flow.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For a higher-level helper that composes lookup + state fetch, see
|
|
102
|
+
`recoverByKey` in `@openzeppelin/miden-multisig-client`.
|
|
103
|
+
|
|
104
|
+
#### Auth shape
|
|
105
|
+
|
|
106
|
+
The lookup endpoint accepts the same `x-pubkey` / `x-signature` /
|
|
107
|
+
`x-timestamp` headers as per-account requests for wire-format consistency,
|
|
108
|
+
but identity is derived from the signature itself: Falcon signatures embed
|
|
109
|
+
the public key, ECDSA signatures recover it via the recovery byte. The
|
|
110
|
+
server then requires the derived key to commit to the queried
|
|
111
|
+
`key_commitment`. This means the lookup endpoint works with wallet signers
|
|
112
|
+
that only expose a 32-byte commitment as `publicKey` (e.g., the Miden
|
|
113
|
+
browser wallet) — the signature is what proves possession.
|
|
114
|
+
|
|
72
115
|
### Work with Delta Proposals
|
|
73
116
|
|
|
74
117
|
```typescript
|
package/dist/conversion.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CosignerSignature, ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaStatus, ExecutionDelta, ProposalSignature, ProposalMetadata, SignProposalRequest, StateObject } from './types.js';
|
|
2
|
-
import type { ServerCosignerSignature, ServerConfigureRequest, ServerConfigureResponse, ServerDeltaObject, ServerDeltaProposalRequest, ServerDeltaStatus, ServerExecutionDelta, ServerProposalSignature, ServerProposalMetadata, ServerSignProposalRequest, ServerStateObject } from './server-types.js';
|
|
1
|
+
import type { CosignerSignature, ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaStatus, ExecutionDelta, LookupResponse, ProposalSignature, ProposalMetadata, SignProposalRequest, StateObject } from './types.js';
|
|
2
|
+
import type { ServerCosignerSignature, ServerConfigureRequest, ServerConfigureResponse, ServerDeltaObject, ServerDeltaProposalRequest, ServerDeltaStatus, ServerExecutionDelta, ServerLookupResponse, ServerProposalSignature, ServerProposalMetadata, ServerSignProposalRequest, ServerStateObject } from './server-types.js';
|
|
3
3
|
export declare function fromServerSignature(signature: ServerProposalSignature): ProposalSignature;
|
|
4
4
|
export declare function fromServerCosignerSignature(server: ServerCosignerSignature): CosignerSignature;
|
|
5
5
|
export declare function fromServerDeltaStatus(server: ServerDeltaStatus): DeltaStatus;
|
|
@@ -7,6 +7,7 @@ export declare function fromServerProposalMetadata(server: ServerProposalMetadat
|
|
|
7
7
|
export declare function fromServerDeltaObject(server: ServerDeltaObject): DeltaObject;
|
|
8
8
|
export declare function fromServerStateObject(server: ServerStateObject): StateObject;
|
|
9
9
|
export declare function fromServerConfigureResponse(server: ServerConfigureResponse): ConfigureResponse;
|
|
10
|
+
export declare function fromServerLookupResponse(server: ServerLookupResponse): LookupResponse;
|
|
10
11
|
export declare function toServerSignature(sig: ProposalSignature): ServerProposalSignature;
|
|
11
12
|
export declare function toServerCosignerSignature(sig: CosignerSignature): ServerCosignerSignature;
|
|
12
13
|
export declare function toServerDeltaStatus(status: DeltaStatus): ServerDeltaStatus;
|
package/dist/conversion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AA2B3B,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,uBAAuB,GAAG,iBAAiB,CASzF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAgB5E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AA2B3B,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,uBAAuB,GAAG,iBAAiB,CASzF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAgB5E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAkB3F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAqB5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAS5E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAO9F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAOrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CASjF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CAMzF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAgB1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,sBAAsB,CAkBvF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,sBAAsB,CAMtF;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,oBAAoB,GAAG,0BAA0B,CAalG;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,yBAAyB,CAM/F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,oBAAoB,CAUlF"}
|
package/dist/conversion.js
CHANGED
|
@@ -50,6 +50,8 @@ export function fromServerProposalMetadata(server) {
|
|
|
50
50
|
newGuardianPubkey: server.new_guardian_pubkey,
|
|
51
51
|
newGuardianEndpoint: server.new_guardian_endpoint,
|
|
52
52
|
noteIds: server.note_ids,
|
|
53
|
+
consumeNotesMetadataVersion: server.consume_notes_metadata_version,
|
|
54
|
+
consumeNotesNotes: server.consume_notes_notes,
|
|
53
55
|
recipientId: server.recipient_id,
|
|
54
56
|
faucetId: server.faucet_id,
|
|
55
57
|
amount: server.amount,
|
|
@@ -94,6 +96,14 @@ export function fromServerConfigureResponse(server) {
|
|
|
94
96
|
ackCommitment: server.ack_commitment,
|
|
95
97
|
};
|
|
96
98
|
}
|
|
99
|
+
export function fromServerLookupResponse(server) {
|
|
100
|
+
if (!server || !Array.isArray(server.accounts)) {
|
|
101
|
+
throw new Error('Malformed /state/lookup response: expected { accounts: [...] }');
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
accounts: server.accounts.map((entry) => ({ accountId: entry.account_id })),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
97
107
|
export function toServerSignature(sig) {
|
|
98
108
|
if (sig.scheme === 'ecdsa') {
|
|
99
109
|
return {
|
|
@@ -140,6 +150,8 @@ export function toServerProposalMetadata(meta) {
|
|
|
140
150
|
new_guardian_pubkey: meta.newGuardianPubkey,
|
|
141
151
|
new_guardian_endpoint: meta.newGuardianEndpoint,
|
|
142
152
|
note_ids: meta.noteIds,
|
|
153
|
+
consume_notes_metadata_version: meta.consumeNotesMetadataVersion,
|
|
154
|
+
consume_notes_notes: meta.consumeNotesNotes,
|
|
143
155
|
recipient_id: meta.recipientId,
|
|
144
156
|
faucet_id: meta.faucetId,
|
|
145
157
|
amount: meta.amount,
|
package/dist/conversion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AA2CA,SAAS,mBAAmB,CAAC,OAA2B;IAKtD,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACxF,MAAM,UAAU,GAAG,YAAY,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAkC;IACpE,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,UAAU;SAChC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA+B;IACzE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,WAAW;gBAC9B,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,2BAA2B,CAAC;aACpE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAA8B;IACvE,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,aAAa;QAClC,eAAe,EAAE,MAAM,CAAC,gBAAgB;QACxC,kBAAkB,EAAE,MAAM,CAAC,mBAAmB;QAC9C,iBAAiB,EAAE,MAAM,CAAC,kBAAkB;QAC5C,eAAe,EAAE,MAAM,CAAC,gBAAgB;QACxC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,iBAAiB,EAAE,MAAM,CAAC,mBAAmB;QAC7C,mBAAmB,EAAE,MAAM,CAAC,qBAAqB;QACjD,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,2BAA2B,EAAE,MAAM,CAAC,8BAA8B;QAClE,iBAAiB,EAAE,MAAM,CAAC,mBAAmB;QAC7C,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,aAAmC,CAAC,CAAC;IAE5G,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,aAAa,EAAE,MAAM,CAAC,cAAc;QACpC,YAAY,EAAE;YACZ,SAAS;YACT,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,QAAQ,EAAE,CAAC,CAAC,SAAS;gBACrB,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;YACH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACtE;QACD,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,UAAU,EAAE,MAAM,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA+B;IACzE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,aAAa,EAAE,MAAM,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAsB;IAC9D,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC;aAClE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC7D,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;QAC9E,gBAAgB,EAAE,IAAI,CAAC,eAAe;QACtC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB;QAC5C,kBAAkB,EAAE,IAAI,CAAC,iBAAiB;QAC1C,gBAAgB,EAAE,IAAI,CAAC,eAAe;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;QAC3C,qBAAqB,EAAE,IAAI,CAAC,mBAAmB;QAC/C,QAAQ,EAAE,IAAI,CAAC,OAAO;QACtB,8BAA8B,EAAE,IAAI,CAAC,2BAA2B;QAChE,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;QAC3C,YAAY,EAAE,IAAI,CAAC,WAAW;QAC9B,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAqB;IAC5D,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE;KACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAAyB;IACpE,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,aAAa,EAAE;YACb,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS;YACtC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClD,SAAS,EAAE,CAAC,CAAC,QAAQ;gBACrB,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;aAC1C,CAAC,CAAC;YACH,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACtG;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAwB;IAClE,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,cAAc;QACrC,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,OAAO,EAAE,KAAK,CAAC,MAAM;QACrB,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;KAC1C,CAAC;AACJ,CAAC"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaProposalResponse, ExecutionDelta, PubkeyResponse, PushDeltaResponse, SignProposalRequest, SignatureScheme, Signer, StateObject } from './types.js';
|
|
1
|
+
import type { ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaProposalResponse, ExecutionDelta, LookupResponse, PubkeyResponse, PushDeltaResponse, SignProposalRequest, SignatureScheme, Signer, StateObject } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Error thrown by the GUARDIAN HTTP client.
|
|
4
4
|
*/
|
|
@@ -16,10 +16,24 @@ export declare class GuardianHttpClient {
|
|
|
16
16
|
private readonly baseUrl;
|
|
17
17
|
private lastTimestamp;
|
|
18
18
|
constructor(baseUrl: string);
|
|
19
|
+
/**
|
|
20
|
+
* Monotonic timestamp for auth headers. Strictly increasing across calls
|
|
21
|
+
* within a single client instance so concurrent or rapid-fire requests
|
|
22
|
+
* never produce duplicate `x-timestamp` values.
|
|
23
|
+
*/
|
|
24
|
+
private nextTimestamp;
|
|
19
25
|
setSigner(signer: Signer): void;
|
|
20
26
|
getPubkey(scheme?: SignatureScheme): Promise<PubkeyResponse>;
|
|
21
27
|
configure(request: ConfigureRequest): Promise<ConfigureResponse>;
|
|
22
28
|
getState(accountId: string): Promise<StateObject>;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve a public-key commitment to the set of account IDs whose
|
|
31
|
+
* authorization set contains it. Authentication is by proof-of-possession:
|
|
32
|
+
* the configured signer MUST hold the private key behind `keyCommitmentHex`
|
|
33
|
+
* and implement `signLookupMessage`. Returns an empty list when the
|
|
34
|
+
* commitment is not authorized for any account.
|
|
35
|
+
*/
|
|
36
|
+
lookupAccountByKeyCommitment(keyCommitmentHex: string): Promise<LookupResponse>;
|
|
23
37
|
getDeltaProposals(accountId: string): Promise<DeltaObject[]>;
|
|
24
38
|
getDeltaProposal(accountId: string, commitment: string): Promise<DeltaObject>;
|
|
25
39
|
pushDeltaProposal(request: DeltaProposalRequest): Promise<DeltaProposalResponse>;
|
|
@@ -28,6 +42,13 @@ export declare class GuardianHttpClient {
|
|
|
28
42
|
getDelta(accountId: string, nonce: number): Promise<DeltaObject>;
|
|
29
43
|
getDeltaSince(accountId: string, fromNonce: number): Promise<DeltaObject>;
|
|
30
44
|
private fetch;
|
|
45
|
+
/**
|
|
46
|
+
* Authenticated fetch for the lookup endpoint. Cannot reuse
|
|
47
|
+
* `fetchAuthenticated`, which builds an `AuthRequestPayload` bound to an
|
|
48
|
+
* `accountId` (the value lookup is trying to discover). Digest construction
|
|
49
|
+
* is delegated to the signer's `signLookupMessage`.
|
|
50
|
+
*/
|
|
51
|
+
private fetchLookupAuthenticated;
|
|
31
52
|
private fetchAuthenticated;
|
|
32
53
|
}
|
|
33
54
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,WAAW,EACZ,MAAM,YAAY,CAAC;AAuBpB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAK/B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,MAAM;IAI3B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAU5D,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUhE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUvD;;;;;;OAMG;IACG,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU/E,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU5D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAU7E,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAahF,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAUrE,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiBhE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAiBjE,KAAK;IAkBnB;;;;;OAKG;YACW,wBAAwB;YAiCxB,kBAAkB;CAmCjC"}
|
package/dist/http.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RequestAuthPayload } from './auth-request.js';
|
|
2
|
-
import { fromServerConfigureResponse, fromServerDeltaObject, fromServerStateObject, toServerConfigureRequest, toServerDeltaProposalRequest, toServerExecutionDelta, toServerSignProposalRequest, } from './conversion.js';
|
|
2
|
+
import { fromServerConfigureResponse, fromServerDeltaObject, fromServerLookupResponse, fromServerStateObject, toServerConfigureRequest, toServerDeltaProposalRequest, toServerExecutionDelta, toServerSignProposalRequest, } from './conversion.js';
|
|
3
3
|
/**
|
|
4
4
|
* Error thrown by the GUARDIAN HTTP client.
|
|
5
5
|
*/
|
|
@@ -25,6 +25,17 @@ export class GuardianHttpClient {
|
|
|
25
25
|
constructor(baseUrl) {
|
|
26
26
|
this.baseUrl = baseUrl;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Monotonic timestamp for auth headers. Strictly increasing across calls
|
|
30
|
+
* within a single client instance so concurrent or rapid-fire requests
|
|
31
|
+
* never produce duplicate `x-timestamp` values.
|
|
32
|
+
*/
|
|
33
|
+
nextTimestamp() {
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
const ts = now > this.lastTimestamp ? now : this.lastTimestamp + 1;
|
|
36
|
+
this.lastTimestamp = ts;
|
|
37
|
+
return ts;
|
|
38
|
+
}
|
|
28
39
|
setSigner(signer) {
|
|
29
40
|
this.signer = signer;
|
|
30
41
|
}
|
|
@@ -55,6 +66,18 @@ export class GuardianHttpClient {
|
|
|
55
66
|
const server = (await response.json());
|
|
56
67
|
return fromServerStateObject(server);
|
|
57
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolve a public-key commitment to the set of account IDs whose
|
|
71
|
+
* authorization set contains it. Authentication is by proof-of-possession:
|
|
72
|
+
* the configured signer MUST hold the private key behind `keyCommitmentHex`
|
|
73
|
+
* and implement `signLookupMessage`. Returns an empty list when the
|
|
74
|
+
* commitment is not authorized for any account.
|
|
75
|
+
*/
|
|
76
|
+
async lookupAccountByKeyCommitment(keyCommitmentHex) {
|
|
77
|
+
const params = new URLSearchParams({ key_commitment: keyCommitmentHex });
|
|
78
|
+
const response = await this.fetchLookupAuthenticated(`/state/lookup?${params}`, { method: 'GET' }, keyCommitmentHex);
|
|
79
|
+
return fromServerLookupResponse((await response.json()));
|
|
80
|
+
}
|
|
58
81
|
async getDeltaProposals(accountId) {
|
|
59
82
|
const requestQuery = { account_id: accountId };
|
|
60
83
|
const params = new URLSearchParams(requestQuery);
|
|
@@ -157,13 +180,41 @@ export class GuardianHttpClient {
|
|
|
157
180
|
}
|
|
158
181
|
return response;
|
|
159
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Authenticated fetch for the lookup endpoint. Cannot reuse
|
|
185
|
+
* `fetchAuthenticated`, which builds an `AuthRequestPayload` bound to an
|
|
186
|
+
* `accountId` (the value lookup is trying to discover). Digest construction
|
|
187
|
+
* is delegated to the signer's `signLookupMessage`.
|
|
188
|
+
*/
|
|
189
|
+
async fetchLookupAuthenticated(path, init, keyCommitmentHex) {
|
|
190
|
+
if (!this.signer) {
|
|
191
|
+
throw new Error('No signer configured. Call setSigner() first.');
|
|
192
|
+
}
|
|
193
|
+
if (!this.signer.signLookupMessage) {
|
|
194
|
+
throw new Error('Signer does not implement signLookupMessage. Account recovery by key requires a ' +
|
|
195
|
+
'signer that produces signatures over LookupAuthMessage::to_word; the canonical ' +
|
|
196
|
+
'helper lives in @openzeppelin/miden-multisig-client.');
|
|
197
|
+
}
|
|
198
|
+
const timestamp = this.nextTimestamp();
|
|
199
|
+
const signature = await this.signer.signLookupMessage(keyCommitmentHex, timestamp);
|
|
200
|
+
return this.fetch(path, {
|
|
201
|
+
...init,
|
|
202
|
+
headers: {
|
|
203
|
+
...init.headers,
|
|
204
|
+
// Sent for API consistency with per-account requests; the server's
|
|
205
|
+
// lookup path derives the pubkey from the signature itself and
|
|
206
|
+
// ignores this header for verification.
|
|
207
|
+
'x-pubkey': this.signer.publicKey,
|
|
208
|
+
'x-signature': signature,
|
|
209
|
+
'x-timestamp': timestamp.toString(),
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}
|
|
160
213
|
async fetchAuthenticated(path, init, accountId, requestPayload, retries = 2) {
|
|
161
214
|
if (!this.signer) {
|
|
162
215
|
throw new Error('No signer configured. Call setSigner() first.');
|
|
163
216
|
}
|
|
164
|
-
const
|
|
165
|
-
const timestamp = now > this.lastTimestamp ? now : this.lastTimestamp + 1;
|
|
166
|
-
this.lastTimestamp = timestamp;
|
|
217
|
+
const timestamp = this.nextTimestamp();
|
|
167
218
|
const authPayload = RequestAuthPayload.fromRequest(requestPayload);
|
|
168
219
|
const signature = this.signer.signRequest
|
|
169
220
|
? await this.signer.signRequest(accountId, timestamp, authPayload)
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/http.test.js
CHANGED
|
@@ -476,6 +476,114 @@ describe('GuardianHttpClient', () => {
|
|
|
476
476
|
expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining('/delta/since?'), expect.objectContaining({ method: 'GET' }));
|
|
477
477
|
});
|
|
478
478
|
});
|
|
479
|
+
// --- lookupAccountByKeyCommitment -----
|
|
480
|
+
describe('lookupAccountByKeyCommitment', () => {
|
|
481
|
+
const keyCommitmentHex = '0x' + 'aa'.repeat(32);
|
|
482
|
+
function makeLookupSigner() {
|
|
483
|
+
return {
|
|
484
|
+
commitment: keyCommitmentHex,
|
|
485
|
+
publicKey: '0x' + 'bb'.repeat(897),
|
|
486
|
+
scheme: 'falcon',
|
|
487
|
+
signAccountIdWithTimestamp: vi.fn(),
|
|
488
|
+
signRequest: vi.fn(),
|
|
489
|
+
signCommitment: vi.fn(),
|
|
490
|
+
signLookupMessage: vi.fn().mockResolvedValue('0x' + 'cc'.repeat(762)),
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
it('returns the parsed accounts list on a happy path', async () => {
|
|
494
|
+
const signer = makeLookupSigner();
|
|
495
|
+
client.setSigner(signer);
|
|
496
|
+
mockFetch.mockResolvedValueOnce({
|
|
497
|
+
ok: true,
|
|
498
|
+
json: async () => ({
|
|
499
|
+
accounts: [{ account_id: '0x7bfb0f38b0fafa103f86a805594170' }],
|
|
500
|
+
}),
|
|
501
|
+
});
|
|
502
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
503
|
+
expect(result.accounts).toHaveLength(1);
|
|
504
|
+
expect(result.accounts[0].accountId).toBe('0x7bfb0f38b0fafa103f86a805594170');
|
|
505
|
+
expect(signer.signLookupMessage).toHaveBeenCalledTimes(1);
|
|
506
|
+
expect(signer.signLookupMessage).toHaveBeenCalledWith(keyCommitmentHex, expect.any(Number));
|
|
507
|
+
});
|
|
508
|
+
it('treats an empty list as a successful response, not an error', async () => {
|
|
509
|
+
const signer = makeLookupSigner();
|
|
510
|
+
client.setSigner(signer);
|
|
511
|
+
mockFetch.mockResolvedValueOnce({
|
|
512
|
+
ok: true,
|
|
513
|
+
json: async () => ({ accounts: [] }),
|
|
514
|
+
});
|
|
515
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
516
|
+
expect(result.accounts).toEqual([]);
|
|
517
|
+
});
|
|
518
|
+
it('returns multi-match results in order', async () => {
|
|
519
|
+
const signer = makeLookupSigner();
|
|
520
|
+
client.setSigner(signer);
|
|
521
|
+
mockFetch.mockResolvedValueOnce({
|
|
522
|
+
ok: true,
|
|
523
|
+
json: async () => ({
|
|
524
|
+
accounts: [
|
|
525
|
+
{ account_id: '0xaaa1' },
|
|
526
|
+
{ account_id: '0xbbb2' },
|
|
527
|
+
],
|
|
528
|
+
}),
|
|
529
|
+
});
|
|
530
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
531
|
+
expect(result.accounts.map((a) => a.accountId)).toEqual(['0xaaa1', '0xbbb2']);
|
|
532
|
+
});
|
|
533
|
+
it('attaches x-pubkey, x-signature, x-timestamp headers and uses /state/lookup with the query string', async () => {
|
|
534
|
+
const signer = makeLookupSigner();
|
|
535
|
+
client.setSigner(signer);
|
|
536
|
+
mockFetch.mockResolvedValueOnce({
|
|
537
|
+
ok: true,
|
|
538
|
+
json: async () => ({ accounts: [] }),
|
|
539
|
+
});
|
|
540
|
+
await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
541
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
542
|
+
const [url, init] = mockFetch.mock.calls[0];
|
|
543
|
+
expect(url).toBe(`http://localhost:3000/state/lookup?key_commitment=${encodeURIComponent(keyCommitmentHex)}`);
|
|
544
|
+
expect(init.method).toBe('GET');
|
|
545
|
+
expect(init.headers['x-pubkey']).toBe(signer.publicKey);
|
|
546
|
+
expect(init.headers['x-signature']).toMatch(/^0x/);
|
|
547
|
+
expect(init.headers['x-timestamp']).toMatch(/^\d+$/);
|
|
548
|
+
});
|
|
549
|
+
it('throws a clear error when no signer is configured', async () => {
|
|
550
|
+
// No setSigner() call.
|
|
551
|
+
await expect(client.lookupAccountByKeyCommitment(keyCommitmentHex)).rejects.toThrow(/No signer configured/);
|
|
552
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
553
|
+
});
|
|
554
|
+
it('throws a clear error when the signer does not implement signLookupMessage', async () => {
|
|
555
|
+
// Default mockSigner from the outer describe does NOT implement
|
|
556
|
+
// signLookupMessage — the HTTP client must reject up front rather than
|
|
557
|
+
// sending a request the server will reject.
|
|
558
|
+
client.setSigner(mockSigner);
|
|
559
|
+
await expect(client.lookupAccountByKeyCommitment(keyCommitmentHex)).rejects.toThrow(/signLookupMessage/);
|
|
560
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
561
|
+
});
|
|
562
|
+
it('propagates HTTP errors from the server through GuardianHttpError', async () => {
|
|
563
|
+
const signer = makeLookupSigner();
|
|
564
|
+
client.setSigner(signer);
|
|
565
|
+
mockFetch.mockResolvedValueOnce({
|
|
566
|
+
ok: false,
|
|
567
|
+
status: 401,
|
|
568
|
+
statusText: 'Unauthorized',
|
|
569
|
+
text: async () => '{"code":"authentication_failed","error":"..."}',
|
|
570
|
+
});
|
|
571
|
+
const err = await client
|
|
572
|
+
.lookupAccountByKeyCommitment(keyCommitmentHex)
|
|
573
|
+
.catch((e) => e);
|
|
574
|
+
expect(err).toBeInstanceOf(GuardianHttpError);
|
|
575
|
+
expect(err.status).toBe(401);
|
|
576
|
+
});
|
|
577
|
+
it('rejects malformed server responses (missing accounts array)', async () => {
|
|
578
|
+
const signer = makeLookupSigner();
|
|
579
|
+
client.setSigner(signer);
|
|
580
|
+
mockFetch.mockResolvedValueOnce({
|
|
581
|
+
ok: true,
|
|
582
|
+
json: async () => ({}),
|
|
583
|
+
});
|
|
584
|
+
await expect(client.lookupAccountByKeyCommitment(keyCommitmentHex)).rejects.toThrow(/Malformed/);
|
|
585
|
+
});
|
|
586
|
+
});
|
|
479
587
|
});
|
|
480
588
|
describe('GuardianHttpError', () => {
|
|
481
589
|
it('should create error with status, statusText, and body', () => {
|
|
@@ -489,5 +597,76 @@ describe('GuardianHttpError', () => {
|
|
|
489
597
|
expect(error.message).toContain('Not Found');
|
|
490
598
|
expect(error.name).toBe('GuardianHttpError');
|
|
491
599
|
});
|
|
600
|
+
describe('error envelope contract (account-paused path)', () => {
|
|
601
|
+
let client;
|
|
602
|
+
beforeEach(() => {
|
|
603
|
+
client = new GuardianHttpClient('http://localhost:3000');
|
|
604
|
+
mockFetch.mockReset();
|
|
605
|
+
});
|
|
606
|
+
it('surfaces 409 GUARDIAN_ACCOUNT_PAUSED with a parseable error envelope on pushDeltaProposal', async () => {
|
|
607
|
+
client.setSigner(mockSigner);
|
|
608
|
+
// The server's GuardianError::AccountPaused → IntoResponse contract.
|
|
609
|
+
// Locks client/server in lockstep: a regression to the legacy
|
|
610
|
+
// "(400, {delta: {account_id: 'error text'}})" shape would break this.
|
|
611
|
+
const envelope = {
|
|
612
|
+
success: false,
|
|
613
|
+
code: 'GUARDIAN_ACCOUNT_PAUSED',
|
|
614
|
+
error: 'Account is paused: compliance review',
|
|
615
|
+
paused_at: '2026-05-20T10:00:00Z',
|
|
616
|
+
paused_reason: 'compliance review',
|
|
617
|
+
};
|
|
618
|
+
mockFetch.mockResolvedValueOnce({
|
|
619
|
+
ok: false,
|
|
620
|
+
status: 409,
|
|
621
|
+
statusText: 'Conflict',
|
|
622
|
+
text: async () => JSON.stringify(envelope),
|
|
623
|
+
});
|
|
624
|
+
const request = {
|
|
625
|
+
accountId: '0x' + 'a'.repeat(30),
|
|
626
|
+
nonce: 1,
|
|
627
|
+
deltaPayload: { txSummary: { data: '' }, signatures: [] },
|
|
628
|
+
};
|
|
629
|
+
const error = await client
|
|
630
|
+
.pushDeltaProposal(request)
|
|
631
|
+
.catch((e) => e);
|
|
632
|
+
expect(error).toBeInstanceOf(GuardianHttpError);
|
|
633
|
+
expect(error.status).toBe(409);
|
|
634
|
+
const parsed = JSON.parse(error.body);
|
|
635
|
+
expect(parsed.success).toBe(false);
|
|
636
|
+
expect(parsed.code).toBe('GUARDIAN_ACCOUNT_PAUSED');
|
|
637
|
+
expect(typeof parsed.error).toBe('string');
|
|
638
|
+
expect(parsed.paused_at).toBe('2026-05-20T10:00:00Z');
|
|
639
|
+
expect(parsed.paused_reason).toBe('compliance review');
|
|
640
|
+
// Negative assertion: legacy "stuff error into delta.account_id" shape.
|
|
641
|
+
expect(parsed.delta).toBeUndefined();
|
|
642
|
+
});
|
|
643
|
+
it('surfaces 401 AUTHENTICATION_FAILED with a parseable error envelope', async () => {
|
|
644
|
+
client.setSigner(mockSigner);
|
|
645
|
+
const envelope = {
|
|
646
|
+
success: false,
|
|
647
|
+
code: 'authentication_failed',
|
|
648
|
+
error: 'Invalid signature',
|
|
649
|
+
};
|
|
650
|
+
mockFetch.mockResolvedValueOnce({
|
|
651
|
+
ok: false,
|
|
652
|
+
status: 401,
|
|
653
|
+
statusText: 'Unauthorized',
|
|
654
|
+
text: async () => JSON.stringify(envelope),
|
|
655
|
+
});
|
|
656
|
+
const error = await client
|
|
657
|
+
.pushDeltaProposal({
|
|
658
|
+
accountId: '0x' + 'a'.repeat(30),
|
|
659
|
+
nonce: 1,
|
|
660
|
+
deltaPayload: { txSummary: { data: '' }, signatures: [] },
|
|
661
|
+
})
|
|
662
|
+
.catch((e) => e);
|
|
663
|
+
expect(error).toBeInstanceOf(GuardianHttpError);
|
|
664
|
+
expect(error.status).toBe(401);
|
|
665
|
+
const parsed = JSON.parse(error.body);
|
|
666
|
+
expect(parsed.success).toBe(false);
|
|
667
|
+
expect(parsed.code).toBe('authentication_failed');
|
|
668
|
+
expect(parsed.delta).toBeUndefined();
|
|
669
|
+
});
|
|
670
|
+
});
|
|
492
671
|
});
|
|
493
672
|
//# sourceMappingURL=http.test.js.map
|
package/dist/http.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.test.js","sourceRoot":"","sources":["../src/http.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.test.js","sourceRoot":"","sources":["../src/http.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { GuardianHttpClient, GuardianHttpError } from './http.js';
|
|
2
2
|
export { RequestAuthPayload } from './auth-request.js';
|
|
3
|
-
export type { Signer, FalconSignature, EcdsaSignature, ProposalSignature, SignatureScheme, CosignerSignature, AuthConfig, DeltaStatus, DeltaObject, ExecutionDelta, StateObject, ProposalType, ProposalMetadata, ConfigureRequest, ConfigureResponse, PubkeyResponse, DeltaProposalRequest, DeltaProposalResponse, ProposalsResponse, SignProposalRequest, } from './types.js';
|
|
3
|
+
export type { Signer, FalconSignature, EcdsaSignature, ProposalSignature, SignatureScheme, CosignerSignature, AuthConfig, DeltaStatus, DeltaObject, ExecutionDelta, StateObject, ProposalType, ProposalMetadata, ConfigureRequest, ConfigureResponse, PubkeyResponse, DeltaProposalRequest, DeltaProposalResponse, ProposalsResponse, SignProposalRequest, LookupAccount, LookupResponse, } from './types.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,YAAY,EACV,MAAM,EACN,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,YAAY,EACV,MAAM,EACN,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/server-types.d.ts
CHANGED
|
@@ -40,6 +40,10 @@ export interface ServerProposalMetadata {
|
|
|
40
40
|
new_guardian_pubkey?: string;
|
|
41
41
|
new_guardian_endpoint?: string;
|
|
42
42
|
note_ids?: string[];
|
|
43
|
+
/** consume_notes metadata version (issue #229). Absent => v1. */
|
|
44
|
+
consume_notes_metadata_version?: number;
|
|
45
|
+
/** v2 embedded notes (base64), index-aligned with `note_ids`. */
|
|
46
|
+
consume_notes_notes?: string[];
|
|
43
47
|
recipient_id?: string;
|
|
44
48
|
faucet_id?: string;
|
|
45
49
|
amount?: string;
|
|
@@ -147,4 +151,10 @@ export interface ServerPubkeyResponse {
|
|
|
147
151
|
commitment: string;
|
|
148
152
|
pubkey?: string;
|
|
149
153
|
}
|
|
154
|
+
export interface ServerLookupAccount {
|
|
155
|
+
account_id: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ServerLookupResponse {
|
|
158
|
+
accounts: ServerLookupAccount[];
|
|
159
|
+
}
|
|
150
160
|
//# sourceMappingURL=server-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-types.d.ts","sourceRoot":"","sources":["../src/server-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-types.d.ts","sourceRoot":"","sources":["../src/server-types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,17 @@ export interface Signer {
|
|
|
6
6
|
signAccountIdWithTimestamp(accountId: string, timestamp: number): Promise<string> | string;
|
|
7
7
|
signRequest?(accountId: string, timestamp: number, requestPayload: RequestAuthPayload): Promise<string> | string;
|
|
8
8
|
signCommitment(commitmentHex: string): Promise<string> | string;
|
|
9
|
+
/**
|
|
10
|
+
* Sign the lookup-bound digest for `/state/lookup`. The implementation
|
|
11
|
+
* MUST sign `LookupAuthMessage::to_word(timestamp_ms, key_commitment)` —
|
|
12
|
+
* domain-separated from `AuthRequestMessage`. The canonical implementation
|
|
13
|
+
* lives in `@openzeppelin/miden-multisig-client/lookupAuth.ts`; this
|
|
14
|
+
* zero-dependency package does not pull in the Miden SDK to compute it.
|
|
15
|
+
*
|
|
16
|
+
* Optional: signers that do not implement it cause the HTTP client to
|
|
17
|
+
* throw a clear error rather than send a signature the server will reject.
|
|
18
|
+
*/
|
|
19
|
+
signLookupMessage?(keyCommitmentHex: string, timestampMs: number): Promise<string> | string;
|
|
9
20
|
}
|
|
10
21
|
export interface FalconSignature {
|
|
11
22
|
scheme: 'falcon';
|
|
@@ -59,6 +70,10 @@ export interface ProposalMetadata {
|
|
|
59
70
|
newGuardianPubkey?: string;
|
|
60
71
|
newGuardianEndpoint?: string;
|
|
61
72
|
noteIds?: string[];
|
|
73
|
+
/** consume_notes metadata version (issue #229). Absent => v1. */
|
|
74
|
+
consumeNotesMetadataVersion?: number;
|
|
75
|
+
/** v2 embedded notes (base64), index-aligned with `noteIds`. */
|
|
76
|
+
consumeNotesNotes?: string[];
|
|
62
77
|
recipientId?: string;
|
|
63
78
|
faucetId?: string;
|
|
64
79
|
amount?: string;
|
|
@@ -156,4 +171,16 @@ export interface PushDeltaResponse {
|
|
|
156
171
|
ackPubkey?: string;
|
|
157
172
|
ackScheme?: string;
|
|
158
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Single match in a `/state/lookup` response. Wrapped in its own type so the
|
|
176
|
+
* shape can be extended (role tags, per-account metadata) in a forward-
|
|
177
|
+
* compatible way — additive server fields will not break existing clients.
|
|
178
|
+
*/
|
|
179
|
+
export interface LookupAccount {
|
|
180
|
+
accountId: string;
|
|
181
|
+
}
|
|
182
|
+
/** Response shape for `lookupAccountByKeyCommitment`. */
|
|
183
|
+
export interface LookupResponse {
|
|
184
|
+
accounts: LookupAccount[];
|
|
185
|
+
}
|
|
159
186
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC3F,WAAW,CAAC,CACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5B,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/conversion.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
DeltaProposalRequest,
|
|
7
7
|
DeltaStatus,
|
|
8
8
|
ExecutionDelta,
|
|
9
|
+
LookupResponse,
|
|
9
10
|
ProposalSignature,
|
|
10
11
|
ProposalMetadata,
|
|
11
12
|
SignProposalRequest,
|
|
@@ -19,6 +20,7 @@ import type {
|
|
|
19
20
|
ServerDeltaProposalRequest,
|
|
20
21
|
ServerDeltaStatus,
|
|
21
22
|
ServerExecutionDelta,
|
|
23
|
+
ServerLookupResponse,
|
|
22
24
|
ServerProposalSignature,
|
|
23
25
|
ServerProposalMetadata,
|
|
24
26
|
ServerSignProposalRequest,
|
|
@@ -99,6 +101,8 @@ export function fromServerProposalMetadata(server: ServerProposalMetadata): Prop
|
|
|
99
101
|
newGuardianPubkey: server.new_guardian_pubkey,
|
|
100
102
|
newGuardianEndpoint: server.new_guardian_endpoint,
|
|
101
103
|
noteIds: server.note_ids,
|
|
104
|
+
consumeNotesMetadataVersion: server.consume_notes_metadata_version,
|
|
105
|
+
consumeNotesNotes: server.consume_notes_notes,
|
|
102
106
|
recipientId: server.recipient_id,
|
|
103
107
|
faucetId: server.faucet_id,
|
|
104
108
|
amount: server.amount,
|
|
@@ -148,6 +152,15 @@ export function fromServerConfigureResponse(server: ServerConfigureResponse): Co
|
|
|
148
152
|
};
|
|
149
153
|
}
|
|
150
154
|
|
|
155
|
+
export function fromServerLookupResponse(server: ServerLookupResponse): LookupResponse {
|
|
156
|
+
if (!server || !Array.isArray(server.accounts)) {
|
|
157
|
+
throw new Error('Malformed /state/lookup response: expected { accounts: [...] }');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
accounts: server.accounts.map((entry) => ({ accountId: entry.account_id })),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
151
164
|
export function toServerSignature(sig: ProposalSignature): ServerProposalSignature {
|
|
152
165
|
if (sig.scheme === 'ecdsa') {
|
|
153
166
|
return {
|
|
@@ -197,6 +210,8 @@ export function toServerProposalMetadata(meta: ProposalMetadata): ServerProposal
|
|
|
197
210
|
new_guardian_pubkey: meta.newGuardianPubkey,
|
|
198
211
|
new_guardian_endpoint: meta.newGuardianEndpoint,
|
|
199
212
|
note_ids: meta.noteIds,
|
|
213
|
+
consume_notes_metadata_version: meta.consumeNotesMetadataVersion,
|
|
214
|
+
consume_notes_notes: meta.consumeNotesNotes,
|
|
200
215
|
recipient_id: meta.recipientId,
|
|
201
216
|
faucet_id: meta.faucetId,
|
|
202
217
|
amount: meta.amount,
|
package/src/http.test.ts
CHANGED
|
@@ -579,6 +579,144 @@ describe('GuardianHttpClient', () => {
|
|
|
579
579
|
);
|
|
580
580
|
});
|
|
581
581
|
});
|
|
582
|
+
|
|
583
|
+
// --- lookupAccountByKeyCommitment -----
|
|
584
|
+
|
|
585
|
+
describe('lookupAccountByKeyCommitment', () => {
|
|
586
|
+
const keyCommitmentHex = '0x' + 'aa'.repeat(32);
|
|
587
|
+
|
|
588
|
+
function makeLookupSigner() {
|
|
589
|
+
return {
|
|
590
|
+
commitment: keyCommitmentHex,
|
|
591
|
+
publicKey: '0x' + 'bb'.repeat(897),
|
|
592
|
+
scheme: 'falcon' as const,
|
|
593
|
+
signAccountIdWithTimestamp: vi.fn(),
|
|
594
|
+
signRequest: vi.fn(),
|
|
595
|
+
signCommitment: vi.fn(),
|
|
596
|
+
signLookupMessage: vi.fn().mockResolvedValue('0x' + 'cc'.repeat(762)),
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
it('returns the parsed accounts list on a happy path', async () => {
|
|
601
|
+
const signer = makeLookupSigner();
|
|
602
|
+
client.setSigner(signer);
|
|
603
|
+
mockFetch.mockResolvedValueOnce({
|
|
604
|
+
ok: true,
|
|
605
|
+
json: async () => ({
|
|
606
|
+
accounts: [{ account_id: '0x7bfb0f38b0fafa103f86a805594170' }],
|
|
607
|
+
}),
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
611
|
+
|
|
612
|
+
expect(result.accounts).toHaveLength(1);
|
|
613
|
+
expect(result.accounts[0].accountId).toBe('0x7bfb0f38b0fafa103f86a805594170');
|
|
614
|
+
expect(signer.signLookupMessage).toHaveBeenCalledTimes(1);
|
|
615
|
+
expect(signer.signLookupMessage).toHaveBeenCalledWith(
|
|
616
|
+
keyCommitmentHex,
|
|
617
|
+
expect.any(Number)
|
|
618
|
+
);
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
it('treats an empty list as a successful response, not an error', async () => {
|
|
622
|
+
const signer = makeLookupSigner();
|
|
623
|
+
client.setSigner(signer);
|
|
624
|
+
mockFetch.mockResolvedValueOnce({
|
|
625
|
+
ok: true,
|
|
626
|
+
json: async () => ({ accounts: [] }),
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
630
|
+
expect(result.accounts).toEqual([]);
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
it('returns multi-match results in order', async () => {
|
|
634
|
+
const signer = makeLookupSigner();
|
|
635
|
+
client.setSigner(signer);
|
|
636
|
+
mockFetch.mockResolvedValueOnce({
|
|
637
|
+
ok: true,
|
|
638
|
+
json: async () => ({
|
|
639
|
+
accounts: [
|
|
640
|
+
{ account_id: '0xaaa1' },
|
|
641
|
+
{ account_id: '0xbbb2' },
|
|
642
|
+
],
|
|
643
|
+
}),
|
|
644
|
+
});
|
|
645
|
+
|
|
646
|
+
const result = await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
647
|
+
expect(result.accounts.map((a) => a.accountId)).toEqual(['0xaaa1', '0xbbb2']);
|
|
648
|
+
});
|
|
649
|
+
|
|
650
|
+
it('attaches x-pubkey, x-signature, x-timestamp headers and uses /state/lookup with the query string', async () => {
|
|
651
|
+
const signer = makeLookupSigner();
|
|
652
|
+
client.setSigner(signer);
|
|
653
|
+
mockFetch.mockResolvedValueOnce({
|
|
654
|
+
ok: true,
|
|
655
|
+
json: async () => ({ accounts: [] }),
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
await client.lookupAccountByKeyCommitment(keyCommitmentHex);
|
|
659
|
+
|
|
660
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
661
|
+
const [url, init] = mockFetch.mock.calls[0];
|
|
662
|
+
expect(url).toBe(
|
|
663
|
+
`http://localhost:3000/state/lookup?key_commitment=${encodeURIComponent(keyCommitmentHex)}`
|
|
664
|
+
);
|
|
665
|
+
expect(init.method).toBe('GET');
|
|
666
|
+
expect(init.headers['x-pubkey']).toBe(signer.publicKey);
|
|
667
|
+
expect(init.headers['x-signature']).toMatch(/^0x/);
|
|
668
|
+
expect(init.headers['x-timestamp']).toMatch(/^\d+$/);
|
|
669
|
+
});
|
|
670
|
+
|
|
671
|
+
it('throws a clear error when no signer is configured', async () => {
|
|
672
|
+
// No setSigner() call.
|
|
673
|
+
await expect(
|
|
674
|
+
client.lookupAccountByKeyCommitment(keyCommitmentHex)
|
|
675
|
+
).rejects.toThrow(/No signer configured/);
|
|
676
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
677
|
+
});
|
|
678
|
+
|
|
679
|
+
it('throws a clear error when the signer does not implement signLookupMessage', async () => {
|
|
680
|
+
// Default mockSigner from the outer describe does NOT implement
|
|
681
|
+
// signLookupMessage — the HTTP client must reject up front rather than
|
|
682
|
+
// sending a request the server will reject.
|
|
683
|
+
client.setSigner(mockSigner);
|
|
684
|
+
await expect(
|
|
685
|
+
client.lookupAccountByKeyCommitment(keyCommitmentHex)
|
|
686
|
+
).rejects.toThrow(/signLookupMessage/);
|
|
687
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
688
|
+
});
|
|
689
|
+
|
|
690
|
+
it('propagates HTTP errors from the server through GuardianHttpError', async () => {
|
|
691
|
+
const signer = makeLookupSigner();
|
|
692
|
+
client.setSigner(signer);
|
|
693
|
+
mockFetch.mockResolvedValueOnce({
|
|
694
|
+
ok: false,
|
|
695
|
+
status: 401,
|
|
696
|
+
statusText: 'Unauthorized',
|
|
697
|
+
text: async () => '{"code":"authentication_failed","error":"..."}',
|
|
698
|
+
});
|
|
699
|
+
|
|
700
|
+
const err = await client
|
|
701
|
+
.lookupAccountByKeyCommitment(keyCommitmentHex)
|
|
702
|
+
.catch((e) => e);
|
|
703
|
+
expect(err).toBeInstanceOf(GuardianHttpError);
|
|
704
|
+
expect(err.status).toBe(401);
|
|
705
|
+
});
|
|
706
|
+
|
|
707
|
+
it('rejects malformed server responses (missing accounts array)', async () => {
|
|
708
|
+
const signer = makeLookupSigner();
|
|
709
|
+
client.setSigner(signer);
|
|
710
|
+
mockFetch.mockResolvedValueOnce({
|
|
711
|
+
ok: true,
|
|
712
|
+
json: async () => ({}),
|
|
713
|
+
});
|
|
714
|
+
|
|
715
|
+
await expect(
|
|
716
|
+
client.lookupAccountByKeyCommitment(keyCommitmentHex)
|
|
717
|
+
).rejects.toThrow(/Malformed/);
|
|
718
|
+
});
|
|
719
|
+
});
|
|
582
720
|
});
|
|
583
721
|
|
|
584
722
|
describe('GuardianHttpError', () => {
|
|
@@ -594,4 +732,86 @@ describe('GuardianHttpError', () => {
|
|
|
594
732
|
expect(error.message).toContain('Not Found');
|
|
595
733
|
expect(error.name).toBe('GuardianHttpError');
|
|
596
734
|
});
|
|
735
|
+
|
|
736
|
+
describe('error envelope contract (account-paused path)', () => {
|
|
737
|
+
let client: GuardianHttpClient;
|
|
738
|
+
beforeEach(() => {
|
|
739
|
+
client = new GuardianHttpClient('http://localhost:3000');
|
|
740
|
+
mockFetch.mockReset();
|
|
741
|
+
});
|
|
742
|
+
|
|
743
|
+
it('surfaces 409 GUARDIAN_ACCOUNT_PAUSED with a parseable error envelope on pushDeltaProposal', async () => {
|
|
744
|
+
client.setSigner(mockSigner);
|
|
745
|
+
|
|
746
|
+
// The server's GuardianError::AccountPaused → IntoResponse contract.
|
|
747
|
+
// Locks client/server in lockstep: a regression to the legacy
|
|
748
|
+
// "(400, {delta: {account_id: 'error text'}})" shape would break this.
|
|
749
|
+
const envelope = {
|
|
750
|
+
success: false,
|
|
751
|
+
code: 'GUARDIAN_ACCOUNT_PAUSED',
|
|
752
|
+
error: 'Account is paused: compliance review',
|
|
753
|
+
paused_at: '2026-05-20T10:00:00Z',
|
|
754
|
+
paused_reason: 'compliance review',
|
|
755
|
+
};
|
|
756
|
+
|
|
757
|
+
mockFetch.mockResolvedValueOnce({
|
|
758
|
+
ok: false,
|
|
759
|
+
status: 409,
|
|
760
|
+
statusText: 'Conflict',
|
|
761
|
+
text: async () => JSON.stringify(envelope),
|
|
762
|
+
});
|
|
763
|
+
|
|
764
|
+
const request = {
|
|
765
|
+
accountId: '0x' + 'a'.repeat(30),
|
|
766
|
+
nonce: 1,
|
|
767
|
+
deltaPayload: { txSummary: { data: '' }, signatures: [] },
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
const error = await client
|
|
771
|
+
.pushDeltaProposal(request)
|
|
772
|
+
.catch((e) => e as GuardianHttpError);
|
|
773
|
+
|
|
774
|
+
expect(error).toBeInstanceOf(GuardianHttpError);
|
|
775
|
+
expect((error as GuardianHttpError).status).toBe(409);
|
|
776
|
+
|
|
777
|
+
const parsed = JSON.parse((error as GuardianHttpError).body);
|
|
778
|
+
expect(parsed.success).toBe(false);
|
|
779
|
+
expect(parsed.code).toBe('GUARDIAN_ACCOUNT_PAUSED');
|
|
780
|
+
expect(typeof parsed.error).toBe('string');
|
|
781
|
+
expect(parsed.paused_at).toBe('2026-05-20T10:00:00Z');
|
|
782
|
+
expect(parsed.paused_reason).toBe('compliance review');
|
|
783
|
+
// Negative assertion: legacy "stuff error into delta.account_id" shape.
|
|
784
|
+
expect(parsed.delta).toBeUndefined();
|
|
785
|
+
});
|
|
786
|
+
|
|
787
|
+
it('surfaces 401 AUTHENTICATION_FAILED with a parseable error envelope', async () => {
|
|
788
|
+
client.setSigner(mockSigner);
|
|
789
|
+
const envelope = {
|
|
790
|
+
success: false,
|
|
791
|
+
code: 'authentication_failed',
|
|
792
|
+
error: 'Invalid signature',
|
|
793
|
+
};
|
|
794
|
+
mockFetch.mockResolvedValueOnce({
|
|
795
|
+
ok: false,
|
|
796
|
+
status: 401,
|
|
797
|
+
statusText: 'Unauthorized',
|
|
798
|
+
text: async () => JSON.stringify(envelope),
|
|
799
|
+
});
|
|
800
|
+
|
|
801
|
+
const error = await client
|
|
802
|
+
.pushDeltaProposal({
|
|
803
|
+
accountId: '0x' + 'a'.repeat(30),
|
|
804
|
+
nonce: 1,
|
|
805
|
+
deltaPayload: { txSummary: { data: '' }, signatures: [] },
|
|
806
|
+
})
|
|
807
|
+
.catch((e) => e as GuardianHttpError);
|
|
808
|
+
|
|
809
|
+
expect(error).toBeInstanceOf(GuardianHttpError);
|
|
810
|
+
expect((error as GuardianHttpError).status).toBe(401);
|
|
811
|
+
const parsed = JSON.parse((error as GuardianHttpError).body);
|
|
812
|
+
expect(parsed.success).toBe(false);
|
|
813
|
+
expect(parsed.code).toBe('authentication_failed');
|
|
814
|
+
expect(parsed.delta).toBeUndefined();
|
|
815
|
+
});
|
|
816
|
+
});
|
|
597
817
|
});
|
package/src/http.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
DeltaProposalRequest,
|
|
6
6
|
DeltaProposalResponse,
|
|
7
7
|
ExecutionDelta,
|
|
8
|
+
LookupResponse,
|
|
8
9
|
PubkeyResponse,
|
|
9
10
|
PushDeltaResponse,
|
|
10
11
|
SignProposalRequest,
|
|
@@ -16,6 +17,7 @@ import { RequestAuthPayload } from './auth-request.js';
|
|
|
16
17
|
import type {
|
|
17
18
|
ServerDeltaObject,
|
|
18
19
|
ServerDeltaProposalResponse,
|
|
20
|
+
ServerLookupResponse,
|
|
19
21
|
ServerProposalsResponse,
|
|
20
22
|
ServerPubkeyResponse,
|
|
21
23
|
ServerStateObject,
|
|
@@ -25,6 +27,7 @@ import type {
|
|
|
25
27
|
import {
|
|
26
28
|
fromServerConfigureResponse,
|
|
27
29
|
fromServerDeltaObject,
|
|
30
|
+
fromServerLookupResponse,
|
|
28
31
|
fromServerStateObject,
|
|
29
32
|
toServerConfigureRequest,
|
|
30
33
|
toServerDeltaProposalRequest,
|
|
@@ -58,6 +61,18 @@ export class GuardianHttpClient {
|
|
|
58
61
|
this.baseUrl = baseUrl;
|
|
59
62
|
}
|
|
60
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Monotonic timestamp for auth headers. Strictly increasing across calls
|
|
66
|
+
* within a single client instance so concurrent or rapid-fire requests
|
|
67
|
+
* never produce duplicate `x-timestamp` values.
|
|
68
|
+
*/
|
|
69
|
+
private nextTimestamp(): number {
|
|
70
|
+
const now = Date.now();
|
|
71
|
+
const ts = now > this.lastTimestamp ? now : this.lastTimestamp + 1;
|
|
72
|
+
this.lastTimestamp = ts;
|
|
73
|
+
return ts;
|
|
74
|
+
}
|
|
75
|
+
|
|
61
76
|
setSigner(signer: Signer): void {
|
|
62
77
|
this.signer = signer;
|
|
63
78
|
}
|
|
@@ -92,6 +107,23 @@ export class GuardianHttpClient {
|
|
|
92
107
|
return fromServerStateObject(server);
|
|
93
108
|
}
|
|
94
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Resolve a public-key commitment to the set of account IDs whose
|
|
112
|
+
* authorization set contains it. Authentication is by proof-of-possession:
|
|
113
|
+
* the configured signer MUST hold the private key behind `keyCommitmentHex`
|
|
114
|
+
* and implement `signLookupMessage`. Returns an empty list when the
|
|
115
|
+
* commitment is not authorized for any account.
|
|
116
|
+
*/
|
|
117
|
+
async lookupAccountByKeyCommitment(keyCommitmentHex: string): Promise<LookupResponse> {
|
|
118
|
+
const params = new URLSearchParams({ key_commitment: keyCommitmentHex });
|
|
119
|
+
const response = await this.fetchLookupAuthenticated(
|
|
120
|
+
`/state/lookup?${params}`,
|
|
121
|
+
{ method: 'GET' },
|
|
122
|
+
keyCommitmentHex
|
|
123
|
+
);
|
|
124
|
+
return fromServerLookupResponse((await response.json()) as ServerLookupResponse);
|
|
125
|
+
}
|
|
126
|
+
|
|
95
127
|
async getDeltaProposals(accountId: string): Promise<DeltaObject[]> {
|
|
96
128
|
const requestQuery = { account_id: accountId };
|
|
97
129
|
const params = new URLSearchParams(requestQuery);
|
|
@@ -204,6 +236,45 @@ export class GuardianHttpClient {
|
|
|
204
236
|
return response;
|
|
205
237
|
}
|
|
206
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Authenticated fetch for the lookup endpoint. Cannot reuse
|
|
241
|
+
* `fetchAuthenticated`, which builds an `AuthRequestPayload` bound to an
|
|
242
|
+
* `accountId` (the value lookup is trying to discover). Digest construction
|
|
243
|
+
* is delegated to the signer's `signLookupMessage`.
|
|
244
|
+
*/
|
|
245
|
+
private async fetchLookupAuthenticated(
|
|
246
|
+
path: string,
|
|
247
|
+
init: RequestInit,
|
|
248
|
+
keyCommitmentHex: string
|
|
249
|
+
): Promise<Response> {
|
|
250
|
+
if (!this.signer) {
|
|
251
|
+
throw new Error('No signer configured. Call setSigner() first.');
|
|
252
|
+
}
|
|
253
|
+
if (!this.signer.signLookupMessage) {
|
|
254
|
+
throw new Error(
|
|
255
|
+
'Signer does not implement signLookupMessage. Account recovery by key requires a ' +
|
|
256
|
+
'signer that produces signatures over LookupAuthMessage::to_word; the canonical ' +
|
|
257
|
+
'helper lives in @openzeppelin/miden-multisig-client.'
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const timestamp = this.nextTimestamp();
|
|
262
|
+
const signature = await this.signer.signLookupMessage(keyCommitmentHex, timestamp);
|
|
263
|
+
|
|
264
|
+
return this.fetch(path, {
|
|
265
|
+
...init,
|
|
266
|
+
headers: {
|
|
267
|
+
...init.headers,
|
|
268
|
+
// Sent for API consistency with per-account requests; the server's
|
|
269
|
+
// lookup path derives the pubkey from the signature itself and
|
|
270
|
+
// ignores this header for verification.
|
|
271
|
+
'x-pubkey': this.signer.publicKey,
|
|
272
|
+
'x-signature': signature,
|
|
273
|
+
'x-timestamp': timestamp.toString(),
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
207
278
|
private async fetchAuthenticated(
|
|
208
279
|
path: string,
|
|
209
280
|
init: RequestInit,
|
|
@@ -215,9 +286,7 @@ export class GuardianHttpClient {
|
|
|
215
286
|
throw new Error('No signer configured. Call setSigner() first.');
|
|
216
287
|
}
|
|
217
288
|
|
|
218
|
-
const
|
|
219
|
-
const timestamp = now > this.lastTimestamp ? now : this.lastTimestamp + 1;
|
|
220
|
-
this.lastTimestamp = timestamp;
|
|
289
|
+
const timestamp = this.nextTimestamp();
|
|
221
290
|
const authPayload = RequestAuthPayload.fromRequest(requestPayload);
|
|
222
291
|
const signature = this.signer.signRequest
|
|
223
292
|
? await this.signer.signRequest(accountId, timestamp, authPayload)
|
package/src/index.ts
CHANGED
package/src/server-types.ts
CHANGED
|
@@ -44,6 +44,10 @@ export interface ServerProposalMetadata {
|
|
|
44
44
|
new_guardian_pubkey?: string;
|
|
45
45
|
new_guardian_endpoint?: string;
|
|
46
46
|
note_ids?: string[];
|
|
47
|
+
/** consume_notes metadata version (issue #229). Absent => v1. */
|
|
48
|
+
consume_notes_metadata_version?: number;
|
|
49
|
+
/** v2 embedded notes (base64), index-aligned with `note_ids`. */
|
|
50
|
+
consume_notes_notes?: string[];
|
|
47
51
|
recipient_id?: string;
|
|
48
52
|
faucet_id?: string;
|
|
49
53
|
amount?: string;
|
|
@@ -140,3 +144,11 @@ export interface ServerPubkeyResponse {
|
|
|
140
144
|
commitment: string;
|
|
141
145
|
pubkey?: string;
|
|
142
146
|
}
|
|
147
|
+
|
|
148
|
+
export interface ServerLookupAccount {
|
|
149
|
+
account_id: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface ServerLookupResponse {
|
|
153
|
+
accounts: ServerLookupAccount[];
|
|
154
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -11,6 +11,21 @@ export interface Signer {
|
|
|
11
11
|
requestPayload: RequestAuthPayload
|
|
12
12
|
): Promise<string> | string;
|
|
13
13
|
signCommitment(commitmentHex: string): Promise<string> | string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Sign the lookup-bound digest for `/state/lookup`. The implementation
|
|
17
|
+
* MUST sign `LookupAuthMessage::to_word(timestamp_ms, key_commitment)` —
|
|
18
|
+
* domain-separated from `AuthRequestMessage`. The canonical implementation
|
|
19
|
+
* lives in `@openzeppelin/miden-multisig-client/lookupAuth.ts`; this
|
|
20
|
+
* zero-dependency package does not pull in the Miden SDK to compute it.
|
|
21
|
+
*
|
|
22
|
+
* Optional: signers that do not implement it cause the HTTP client to
|
|
23
|
+
* throw a clear error rather than send a signature the server will reject.
|
|
24
|
+
*/
|
|
25
|
+
signLookupMessage?(
|
|
26
|
+
keyCommitmentHex: string,
|
|
27
|
+
timestampMs: number
|
|
28
|
+
): Promise<string> | string;
|
|
14
29
|
}
|
|
15
30
|
|
|
16
31
|
export interface FalconSignature {
|
|
@@ -74,6 +89,10 @@ export interface ProposalMetadata {
|
|
|
74
89
|
newGuardianPubkey?: string;
|
|
75
90
|
newGuardianEndpoint?: string;
|
|
76
91
|
noteIds?: string[];
|
|
92
|
+
/** consume_notes metadata version (issue #229). Absent => v1. */
|
|
93
|
+
consumeNotesMetadataVersion?: number;
|
|
94
|
+
/** v2 embedded notes (base64), index-aligned with `noteIds`. */
|
|
95
|
+
consumeNotesNotes?: string[];
|
|
77
96
|
recipientId?: string;
|
|
78
97
|
faucetId?: string;
|
|
79
98
|
amount?: string;
|
|
@@ -165,3 +184,17 @@ export interface PushDeltaResponse {
|
|
|
165
184
|
ackPubkey?: string;
|
|
166
185
|
ackScheme?: string;
|
|
167
186
|
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Single match in a `/state/lookup` response. Wrapped in its own type so the
|
|
190
|
+
* shape can be extended (role tags, per-account metadata) in a forward-
|
|
191
|
+
* compatible way — additive server fields will not break existing clients.
|
|
192
|
+
*/
|
|
193
|
+
export interface LookupAccount {
|
|
194
|
+
accountId: string;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/** Response shape for `lookupAccountByKeyCommitment`. */
|
|
198
|
+
export interface LookupResponse {
|
|
199
|
+
accounts: LookupAccount[];
|
|
200
|
+
}
|