@shielded-x402/client 0.2.2 → 0.2.3

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/dist/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from './proofProvider.js';
7
7
  export * from './relayerFetch.js';
8
8
  export * from './shieldedFetch.js';
9
9
  export * from './types.js';
10
+ export * from './walletState.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -7,4 +7,5 @@ export * from './proofProvider.js';
7
7
  export * from './relayerFetch.js';
8
8
  export * from './shieldedFetch.js';
9
9
  export * from './types.js';
10
+ export * from './walletState.js';
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { Hex, ShieldedNote } from '@shielded-x402/shared-types';
2
+ import type { MerkleWitness } from './merkle.js';
3
+ export interface WalletNoteRecord extends ShieldedNote {
4
+ depositBlock?: bigint;
5
+ }
6
+ export interface WalletStateSnapshot {
7
+ poolAddress: Hex;
8
+ lastSyncedBlock: bigint;
9
+ commitments: Hex[];
10
+ notes: WalletNoteRecord[];
11
+ }
12
+ export interface ShieldedSpendContext {
13
+ note: ShieldedNote;
14
+ witness: MerkleWitness;
15
+ payerPkHash: Hex;
16
+ }
17
+ export interface WalletSyncResult {
18
+ fromBlock: bigint;
19
+ toBlock: bigint;
20
+ depositsApplied: number;
21
+ spendsApplied: number;
22
+ }
23
+ export interface FileBackedWalletStateConfig {
24
+ filePath: string;
25
+ rpcUrl: string;
26
+ shieldedPoolAddress: Hex;
27
+ startBlock?: bigint;
28
+ confirmations?: bigint;
29
+ chunkSize?: bigint;
30
+ }
31
+ export declare class FileBackedWalletState {
32
+ private readonly filePath;
33
+ private readonly rpcUrl;
34
+ private readonly shieldedPoolAddress;
35
+ private readonly confirmations;
36
+ private readonly chunkSize;
37
+ private readonly startBlock;
38
+ private state;
39
+ private constructor();
40
+ static create(config: FileBackedWalletStateConfig): Promise<FileBackedWalletState>;
41
+ load(): Promise<void>;
42
+ persist(): Promise<void>;
43
+ snapshot(): WalletStateSnapshot;
44
+ getNotes(): WalletNoteRecord[];
45
+ addOrUpdateNote(note: ShieldedNote, depositBlock?: bigint): Promise<void>;
46
+ recordSpendOutputs(params: {
47
+ merchantCommitment: Hex;
48
+ changeCommitment: Hex;
49
+ merchantLeafIndex?: number;
50
+ changeLeafIndex?: number;
51
+ }): Promise<void>;
52
+ sync(): Promise<WalletSyncResult>;
53
+ getSpendContextByCommitment(commitment: Hex, payerPkHash: Hex): ShieldedSpendContext;
54
+ private findLeafIndex;
55
+ }
56
+ //# sourceMappingURL=walletState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletState.d.ts","sourceRoot":"","sources":["../src/walletState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8BjD,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,GAAG,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,GAAG,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoDD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO;WAcM,MAAM,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAMlF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,QAAQ,IAAI,mBAAmB;IAS/B,QAAQ,IAAI,gBAAgB,EAAE;IAIxB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzE,kBAAkB,CAAC,MAAM,EAAE;QAC/B,kBAAkB,EAAE,GAAG,CAAC;QACxB,gBAAgB,EAAE,GAAG,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUX,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyHvC,2BAA2B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,oBAAoB;IA6BpF,OAAO,CAAC,aAAa;CAStB"}
@@ -0,0 +1,274 @@
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { createPublicClient, http, parseAbiItem } from 'viem';
4
+ import { deriveWitness } from './merkle.js';
5
+ const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
6
+ const depositedEvent = parseAbiItem('event Deposited(bytes32 indexed commitment, uint256 indexed leafIndex, bytes32 indexed root, uint256 amount)');
7
+ const spentEvent = parseAbiItem('event Spent(bytes32 indexed nullifier, bytes32 indexed merchantCommitment, bytes32 indexed changeCommitment, uint256 amount, bytes32 challengeHash, uint256 merchantLeafIndex, uint256 changeLeafIndex, bytes32 newRoot)');
8
+ function normalizeHex(value) {
9
+ return value.toLowerCase();
10
+ }
11
+ function serialize(state, poolAddress) {
12
+ return {
13
+ version: 1,
14
+ poolAddress,
15
+ lastSyncedBlock: state.lastSyncedBlock.toString(),
16
+ commitments: state.commitments,
17
+ notes: state.notes.map((note) => ({
18
+ amount: note.amount.toString(),
19
+ rho: note.rho,
20
+ pkHash: note.pkHash,
21
+ commitment: note.commitment,
22
+ leafIndex: note.leafIndex,
23
+ ...(note.depositBlock !== undefined ? { depositBlock: note.depositBlock.toString() } : {})
24
+ }))
25
+ };
26
+ }
27
+ function deserialize(payload) {
28
+ return {
29
+ lastSyncedBlock: BigInt(payload.lastSyncedBlock),
30
+ commitments: payload.commitments,
31
+ notes: payload.notes.map((note) => ({
32
+ amount: BigInt(note.amount),
33
+ rho: note.rho,
34
+ pkHash: note.pkHash,
35
+ commitment: note.commitment,
36
+ leafIndex: note.leafIndex,
37
+ ...(note.depositBlock !== undefined ? { depositBlock: BigInt(note.depositBlock) } : {})
38
+ }))
39
+ };
40
+ }
41
+ export class FileBackedWalletState {
42
+ filePath;
43
+ rpcUrl;
44
+ shieldedPoolAddress;
45
+ confirmations;
46
+ chunkSize;
47
+ startBlock;
48
+ state;
49
+ constructor(config) {
50
+ this.filePath = config.filePath;
51
+ this.rpcUrl = config.rpcUrl;
52
+ this.shieldedPoolAddress = config.shieldedPoolAddress;
53
+ this.confirmations = config.confirmations ?? 2n;
54
+ this.chunkSize = config.chunkSize ?? 2000n;
55
+ this.startBlock = config.startBlock ?? 0n;
56
+ this.state = {
57
+ lastSyncedBlock: this.startBlock - 1n,
58
+ commitments: [],
59
+ notes: []
60
+ };
61
+ }
62
+ static async create(config) {
63
+ const instance = new FileBackedWalletState(config);
64
+ await instance.load();
65
+ return instance;
66
+ }
67
+ async load() {
68
+ try {
69
+ const raw = await readFile(this.filePath, 'utf8');
70
+ const parsed = JSON.parse(raw);
71
+ if (parsed.version !== 1) {
72
+ throw new Error(`unsupported wallet state version: ${String(parsed.version)}`);
73
+ }
74
+ if (normalizeHex(parsed.poolAddress) !== normalizeHex(this.shieldedPoolAddress)) {
75
+ throw new Error(`wallet state pool mismatch: expected ${this.shieldedPoolAddress}, found ${parsed.poolAddress}`);
76
+ }
77
+ this.state = deserialize(parsed);
78
+ }
79
+ catch (error) {
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ if (message.includes('ENOENT')) {
82
+ await this.persist();
83
+ return;
84
+ }
85
+ throw error;
86
+ }
87
+ }
88
+ async persist() {
89
+ await mkdir(dirname(this.filePath), { recursive: true });
90
+ const payload = serialize(this.state, this.shieldedPoolAddress);
91
+ await writeFile(this.filePath, JSON.stringify(payload, null, 2));
92
+ }
93
+ snapshot() {
94
+ return {
95
+ poolAddress: this.shieldedPoolAddress,
96
+ lastSyncedBlock: this.state.lastSyncedBlock,
97
+ commitments: [...this.state.commitments],
98
+ notes: this.state.notes.map((note) => ({ ...note }))
99
+ };
100
+ }
101
+ getNotes() {
102
+ return this.state.notes.map((note) => ({ ...note }));
103
+ }
104
+ async addOrUpdateNote(note, depositBlock) {
105
+ const normalizedCommitment = normalizeHex(note.commitment);
106
+ const existingIndex = this.state.notes.findIndex((candidate) => normalizeHex(candidate.commitment) === normalizedCommitment);
107
+ const record = {
108
+ ...note,
109
+ ...(depositBlock !== undefined ? { depositBlock } : {})
110
+ };
111
+ if (existingIndex >= 0) {
112
+ this.state.notes[existingIndex] = record;
113
+ }
114
+ else {
115
+ this.state.notes.push(record);
116
+ }
117
+ if (record.leafIndex >= 0) {
118
+ this.state.commitments[record.leafIndex] = record.commitment;
119
+ }
120
+ await this.persist();
121
+ }
122
+ async recordSpendOutputs(params) {
123
+ if (params.merchantLeafIndex !== undefined && params.changeLeafIndex !== undefined) {
124
+ this.state.commitments[params.merchantLeafIndex] = params.merchantCommitment;
125
+ this.state.commitments[params.changeLeafIndex] = params.changeCommitment;
126
+ }
127
+ else {
128
+ this.state.commitments.push(params.merchantCommitment, params.changeCommitment);
129
+ }
130
+ await this.persist();
131
+ }
132
+ async sync() {
133
+ const client = createPublicClient({
134
+ transport: http(this.rpcUrl)
135
+ });
136
+ const latest = await client.getBlockNumber();
137
+ const target = latest > this.confirmations ? latest - this.confirmations : 0n;
138
+ const fromCandidate = this.state.lastSyncedBlock + 1n;
139
+ const fromBlock = fromCandidate < this.startBlock ? this.startBlock : fromCandidate;
140
+ if (fromBlock > target) {
141
+ return {
142
+ fromBlock,
143
+ toBlock: target,
144
+ depositsApplied: 0,
145
+ spendsApplied: 0
146
+ };
147
+ }
148
+ let cursor = fromBlock;
149
+ let depositsApplied = 0;
150
+ let spendsApplied = 0;
151
+ while (cursor <= target) {
152
+ const toBlock = cursor + this.chunkSize - 1n > target ? target : cursor + this.chunkSize - 1n;
153
+ const [depositLogs, spendLogs] = await Promise.all([
154
+ client.getLogs({
155
+ address: this.shieldedPoolAddress,
156
+ event: depositedEvent,
157
+ fromBlock: cursor,
158
+ toBlock
159
+ }),
160
+ client.getLogs({
161
+ address: this.shieldedPoolAddress,
162
+ event: spentEvent,
163
+ fromBlock: cursor,
164
+ toBlock
165
+ })
166
+ ]);
167
+ const writes = [];
168
+ for (const log of depositLogs) {
169
+ const args = log.args;
170
+ if (args.commitment === undefined || args.leafIndex === undefined)
171
+ continue;
172
+ writes.push({
173
+ blockNumber: log.blockNumber ?? 0n,
174
+ logIndex: log.logIndex ?? 0,
175
+ order: 0,
176
+ leafIndex: Number(args.leafIndex),
177
+ commitment: args.commitment
178
+ });
179
+ depositsApplied += 1;
180
+ }
181
+ for (const log of spendLogs) {
182
+ const args = log.args;
183
+ if (args.merchantCommitment === undefined ||
184
+ args.changeCommitment === undefined ||
185
+ args.merchantLeafIndex === undefined ||
186
+ args.changeLeafIndex === undefined) {
187
+ continue;
188
+ }
189
+ writes.push({
190
+ blockNumber: log.blockNumber ?? 0n,
191
+ logIndex: log.logIndex ?? 0,
192
+ order: 0,
193
+ leafIndex: Number(args.merchantLeafIndex),
194
+ commitment: args.merchantCommitment
195
+ });
196
+ writes.push({
197
+ blockNumber: log.blockNumber ?? 0n,
198
+ logIndex: log.logIndex ?? 0,
199
+ order: 1,
200
+ leafIndex: Number(args.changeLeafIndex),
201
+ commitment: args.changeCommitment
202
+ });
203
+ spendsApplied += 1;
204
+ }
205
+ writes.sort((a, b) => {
206
+ if (a.blockNumber !== b.blockNumber)
207
+ return a.blockNumber < b.blockNumber ? -1 : 1;
208
+ if (a.logIndex !== b.logIndex)
209
+ return a.logIndex < b.logIndex ? -1 : 1;
210
+ return a.order - b.order;
211
+ });
212
+ for (const write of writes) {
213
+ if (write.leafIndex < 0)
214
+ continue;
215
+ this.state.commitments[write.leafIndex] = write.commitment;
216
+ const normalized = normalizeHex(write.commitment);
217
+ for (let i = 0; i < this.state.notes.length; i += 1) {
218
+ const note = this.state.notes[i];
219
+ if (!note)
220
+ continue;
221
+ if (normalizeHex(note.commitment) !== normalized)
222
+ continue;
223
+ note.leafIndex = write.leafIndex;
224
+ if (note.depositBlock === undefined) {
225
+ note.depositBlock = write.blockNumber;
226
+ }
227
+ }
228
+ }
229
+ this.state.lastSyncedBlock = toBlock;
230
+ await this.persist();
231
+ cursor = toBlock + 1n;
232
+ }
233
+ return {
234
+ fromBlock,
235
+ toBlock: this.state.lastSyncedBlock,
236
+ depositsApplied,
237
+ spendsApplied
238
+ };
239
+ }
240
+ getSpendContextByCommitment(commitment, payerPkHash) {
241
+ const normalized = normalizeHex(commitment);
242
+ const note = this.state.notes.find((candidate) => normalizeHex(candidate.commitment) === normalized);
243
+ if (!note) {
244
+ throw new Error(`note not found in wallet state for commitment ${commitment}; add note secrets first with addOrUpdateNote()`);
245
+ }
246
+ const leafIndex = note.leafIndex >= 0 ? note.leafIndex : this.findLeafIndex(commitment);
247
+ if (leafIndex < 0) {
248
+ throw new Error(`leaf index unknown for note ${commitment}; run sync() or set NOTE_LEAF_INDEX before proving`);
249
+ }
250
+ const commitments = [...this.state.commitments];
251
+ for (let i = 0; i < commitments.length; i += 1) {
252
+ if (!commitments[i])
253
+ commitments[i] = ZERO_BYTES32;
254
+ }
255
+ const witness = deriveWitness(commitments, leafIndex);
256
+ return {
257
+ note: { ...note, leafIndex },
258
+ witness,
259
+ payerPkHash
260
+ };
261
+ }
262
+ findLeafIndex(commitment) {
263
+ const normalized = normalizeHex(commitment);
264
+ for (let i = this.state.commitments.length - 1; i >= 0; i -= 1) {
265
+ const candidate = this.state.commitments[i];
266
+ if (!candidate)
267
+ continue;
268
+ if (normalizeHex(candidate) === normalized)
269
+ return i;
270
+ }
271
+ return -1;
272
+ }
273
+ }
274
+ //# sourceMappingURL=walletState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletState.js","sourceRoot":"","sources":["../src/walletState.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shielded-x402/client",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",