@wuwei-labs/srsly 4.3.1 → 4.4.2

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.
Files changed (93) hide show
  1. package/dist/cjs/audit/audit.js +400 -0
  2. package/dist/cjs/audit/audit.js.map +1 -0
  3. package/dist/cjs/audit/events.js +227 -0
  4. package/dist/cjs/audit/events.js.map +1 -0
  5. package/dist/cjs/audit/index.js +8 -0
  6. package/dist/cjs/audit/index.js.map +1 -0
  7. package/dist/cjs/audit/types.js +3 -0
  8. package/dist/cjs/audit/types.js.map +1 -0
  9. package/dist/cjs/generated/codama/types/feesPaid.js +33 -0
  10. package/dist/cjs/generated/codama/types/feesPaid.js.map +1 -0
  11. package/dist/cjs/generated/codama/types/fleet.js +0 -14
  12. package/dist/cjs/generated/codama/types/fleet.js.map +1 -1
  13. package/dist/cjs/generated/codama/types/index.js +3 -18
  14. package/dist/cjs/generated/codama/types/index.js.map +1 -1
  15. package/dist/cjs/generated/codama/types/ownerPaid.js +31 -0
  16. package/dist/cjs/generated/codama/types/ownerPaid.js.map +1 -0
  17. package/dist/cjs/generated/codama/types/rentalAccepted.js +8 -0
  18. package/dist/cjs/generated/codama/types/rentalAccepted.js.map +1 -1
  19. package/dist/cjs/generated/codama/types/rentalCancelled.js +6 -2
  20. package/dist/cjs/generated/codama/types/rentalCancelled.js.map +1 -1
  21. package/dist/cjs/generated/codama/types/rentalClosed.js +4 -2
  22. package/dist/cjs/generated/codama/types/rentalClosed.js.map +1 -1
  23. package/dist/cjs/generated/codama/types/rentalSettled.js +35 -0
  24. package/dist/cjs/generated/codama/types/rentalSettled.js.map +1 -0
  25. package/dist/cjs/generated/codama/types/shipStats.js +0 -2
  26. package/dist/cjs/generated/codama/types/shipStats.js.map +1 -1
  27. package/dist/cjs/idl/srsly.json +6748 -0
  28. package/dist/cjs/kit/index.js +2 -1
  29. package/dist/cjs/kit/index.js.map +1 -1
  30. package/dist/cjs/package.json +1 -1
  31. package/dist/cjs/version.js +1 -1
  32. package/dist/esm/audit/audit.js +397 -0
  33. package/dist/esm/audit/audit.js.map +1 -0
  34. package/dist/esm/audit/events.js +221 -0
  35. package/dist/esm/audit/events.js.map +1 -0
  36. package/dist/esm/audit/index.js +3 -0
  37. package/dist/esm/audit/index.js.map +1 -0
  38. package/dist/esm/audit/types.js +2 -0
  39. package/dist/esm/audit/types.js.map +1 -0
  40. package/dist/esm/generated/codama/types/feesPaid.js +28 -0
  41. package/dist/esm/generated/codama/types/feesPaid.js.map +1 -0
  42. package/dist/esm/generated/codama/types/fleet.js +1 -15
  43. package/dist/esm/generated/codama/types/fleet.js.map +1 -1
  44. package/dist/esm/generated/codama/types/index.js +3 -18
  45. package/dist/esm/generated/codama/types/index.js.map +1 -1
  46. package/dist/esm/generated/codama/types/ownerPaid.js +26 -0
  47. package/dist/esm/generated/codama/types/ownerPaid.js.map +1 -0
  48. package/dist/esm/generated/codama/types/rentalAccepted.js +9 -1
  49. package/dist/esm/generated/codama/types/rentalAccepted.js.map +1 -1
  50. package/dist/esm/generated/codama/types/rentalCancelled.js +6 -2
  51. package/dist/esm/generated/codama/types/rentalCancelled.js.map +1 -1
  52. package/dist/esm/generated/codama/types/rentalClosed.js +4 -2
  53. package/dist/esm/generated/codama/types/rentalClosed.js.map +1 -1
  54. package/dist/esm/generated/codama/types/rentalSettled.js +30 -0
  55. package/dist/esm/generated/codama/types/rentalSettled.js.map +1 -0
  56. package/dist/esm/generated/codama/types/shipStats.js +1 -3
  57. package/dist/esm/generated/codama/types/shipStats.js.map +1 -1
  58. package/dist/esm/idl/srsly.json +6748 -0
  59. package/dist/esm/kit/index.js +1 -0
  60. package/dist/esm/kit/index.js.map +1 -1
  61. package/dist/esm/package.json +1 -1
  62. package/dist/esm/version.js +1 -1
  63. package/dist/idl/srsly.json +122 -687
  64. package/dist/types/audit/audit.d.ts +10 -0
  65. package/dist/types/audit/audit.d.ts.map +1 -0
  66. package/dist/types/audit/events.d.ts +17 -0
  67. package/dist/types/audit/events.d.ts.map +1 -0
  68. package/dist/types/audit/index.d.ts +4 -0
  69. package/dist/types/audit/index.d.ts.map +1 -0
  70. package/dist/types/audit/types.d.ts +132 -0
  71. package/dist/types/audit/types.d.ts.map +1 -0
  72. package/dist/types/generated/codama/types/feesPaid.d.ts +28 -0
  73. package/dist/types/generated/codama/types/feesPaid.d.ts.map +1 -0
  74. package/dist/types/generated/codama/types/fleet.d.ts +0 -14
  75. package/dist/types/generated/codama/types/fleet.d.ts.map +1 -1
  76. package/dist/types/generated/codama/types/index.d.ts +3 -18
  77. package/dist/types/generated/codama/types/index.d.ts.map +1 -1
  78. package/dist/types/generated/codama/types/ownerPaid.d.ts +26 -0
  79. package/dist/types/generated/codama/types/ownerPaid.d.ts.map +1 -0
  80. package/dist/types/generated/codama/types/rentalAccepted.d.ts +12 -0
  81. package/dist/types/generated/codama/types/rentalAccepted.d.ts.map +1 -1
  82. package/dist/types/generated/codama/types/rentalCancelled.d.ts +10 -2
  83. package/dist/types/generated/codama/types/rentalCancelled.d.ts.map +1 -1
  84. package/dist/types/generated/codama/types/rentalClosed.d.ts +8 -2
  85. package/dist/types/generated/codama/types/rentalClosed.d.ts.map +1 -1
  86. package/dist/types/generated/codama/types/rentalSettled.d.ts +30 -0
  87. package/dist/types/generated/codama/types/rentalSettled.d.ts.map +1 -0
  88. package/dist/types/generated/codama/types/shipStats.d.ts +1 -3
  89. package/dist/types/generated/codama/types/shipStats.d.ts.map +1 -1
  90. package/dist/types/kit/index.d.ts +1 -0
  91. package/dist/types/kit/index.d.ts.map +1 -1
  92. package/dist/types/version.d.ts +1 -1
  93. package/package.json +8 -1
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+ /**
3
+ * Contract audit — reconstructs the full payment lifecycle from on-chain events.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchContractAudit = fetchContractAudit;
7
+ const contract_1 = require("../accounts/contract");
8
+ const config_1 = require("../utils/config");
9
+ const rpc_1 = require("../utils/rpc");
10
+ const events_1 = require("./events");
11
+ const SRSLY_PROGRAM_ID = 'SRSLYxcFnjd5jG2DpJw4as6UEyjwJQK1U4J1TD1hvZH';
12
+ /**
13
+ * Fetch and reconstruct a contract's audit trail from transaction history.
14
+ */
15
+ async function fetchContractAudit(rpcUrl, contract, options) {
16
+ const resolvedRpcUrl = rpcUrl || (0, config_1.getRpcUrl)();
17
+ const rpc = (0, rpc_1.createRpc)(resolvedRpcUrl);
18
+ // 1. Fetch on-chain contract state
19
+ const contractAccount = await (0, contract_1.fetchContract)(contract, resolvedRpcUrl);
20
+ const onChain = {
21
+ totalEarned: contractAccount.data.totalEarned,
22
+ ownerClaimable: contractAccount.data.ownerClaimable,
23
+ feeClaimable: contractAccount.data.feeClaimable,
24
+ };
25
+ // 2. Fetch transaction signatures
26
+ const lastN = options?.all ? undefined : (options?.lastN ?? 10);
27
+ const sinceTimestamp = options?.since ? Math.floor(Date.now() / 1000) - options.since : undefined;
28
+ const log = options?.onProgress ?? (() => { });
29
+ const { events: allEvents, exhausted } = await fetchEventHistory(rpc, contract, resolvedRpcUrl, lastN, sinceTimestamp, log);
30
+ // 3. Group events into rental lifecycles
31
+ // Filter out in-progress rentals — incomplete data makes reconciliation meaningless
32
+ const allRentals = buildRentalAudits(allEvents)
33
+ .filter(r => r.status !== 'in-progress');
34
+ // Only consider full history when we scanned every signature (no cutoffs)
35
+ const isFullHistory = exhausted;
36
+ const rentals = lastN && allRentals.length > lastN
37
+ ? allRentals.slice(0, lastN)
38
+ : allRentals;
39
+ // 4. Compute summary
40
+ let ownerEarned = 0n;
41
+ let feeCollected = 0n;
42
+ let discount = 0n;
43
+ let refunds = 0n;
44
+ let ownerTransfers = 0n;
45
+ let allMatch = true;
46
+ for (const r of rentals) {
47
+ ownerEarned += r.totalOwnerEarned;
48
+ feeCollected += r.totalFeeCollected;
49
+ discount += r.totalDiscount;
50
+ refunds += r.totalRefund;
51
+ for (const t of r.ownerTransfers) {
52
+ ownerTransfers += t.amount;
53
+ }
54
+ if (r.reconciliation.status === 'mismatch')
55
+ allMatch = false;
56
+ }
57
+ return {
58
+ contract,
59
+ onChain,
60
+ isFullHistory,
61
+ rentals,
62
+ summary: {
63
+ ownerEarned,
64
+ feeCollected,
65
+ discount,
66
+ refunds,
67
+ ownerTransfers,
68
+ matchesTotalEarned: isFullHistory ? ownerEarned === onChain.totalEarned : null,
69
+ allRentalsMatch: allMatch,
70
+ },
71
+ };
72
+ }
73
+ /**
74
+ * Fetch all audit-relevant events from a contract's transaction history.
75
+ */
76
+ async function fetchEventHistory(rpc, contract, rpcUrl, maxRentals, sinceTimestamp, log) {
77
+ const allEvents = [];
78
+ let before;
79
+ let rentalCount = 0;
80
+ let txCount = 0;
81
+ let page = 0;
82
+ while (true) {
83
+ const params = { limit: 100 };
84
+ if (before)
85
+ params.before = before;
86
+ page++;
87
+ log(`Fetching signatures (page ${page})...`);
88
+ const signatures = await rpc.getSignaturesForAddress(contract, params).send();
89
+ if (!signatures || signatures.length === 0) {
90
+ log(`No more signatures found`);
91
+ break;
92
+ }
93
+ log(`Got ${signatures.length} signatures, parsing transactions...`);
94
+ for (const sigInfo of signatures) {
95
+ // Time-based cutoff
96
+ if (sinceTimestamp && sigInfo.blockTime && Number(sigInfo.blockTime) < sinceTimestamp) {
97
+ log(`Reached time cutoff after ${txCount} txs, ${allEvents.length} events, ${rentalCount} rentals`);
98
+ return { events: allEvents, exhausted: false };
99
+ }
100
+ // Skip failed txs
101
+ if (sigInfo.err)
102
+ continue;
103
+ txCount++;
104
+ const tx = await rpc.getTransaction(sigInfo.signature, {
105
+ encoding: 'json',
106
+ maxSupportedTransactionVersion: 0,
107
+ }).send();
108
+ if (!tx?.meta?.logMessages)
109
+ continue;
110
+ const events = (0, events_1.parseAnchorEvents)(tx.meta.logMessages, SRSLY_PROGRAM_ID, BigInt(tx.slot), sigInfo.signature);
111
+ for (const evt of events) {
112
+ allEvents.push(evt);
113
+ if (evt.type === 'RentalAccepted') {
114
+ rentalCount++;
115
+ log(`Found rental #${rentalCount} (${txCount} txs scanned, ${allEvents.length} events)`);
116
+ }
117
+ }
118
+ // Stop fetching once we have enough accepts to build N+1 lifecycles.
119
+ // The extra +1 ensures we don't cut off the Nth lifecycle's older events.
120
+ // The actual lastN trimming happens after grouping.
121
+ if (maxRentals && rentalCount > maxRentals) {
122
+ log(`Found ${rentalCount} rentals (need ${maxRentals}), ${txCount} txs scanned`);
123
+ return { events: allEvents, exhausted: false };
124
+ }
125
+ }
126
+ // Pagination
127
+ before = signatures[signatures.length - 1].signature;
128
+ }
129
+ log(`Done: ${txCount} txs scanned, ${allEvents.length} events, ${rentalCount} rentals`);
130
+ return { events: allEvents, exhausted: true };
131
+ }
132
+ /**
133
+ * Group events into per-rental audit records.
134
+ *
135
+ * Challenges:
136
+ * - Rental state PDAs are reused (reset on close) → same PDA, multiple lifecycles
137
+ * - Queued rentals get promoted to active PDA → RentalAccepted references queued PDA,
138
+ * but all subsequent events (settle/cancel/close) reference active PDA
139
+ *
140
+ * Strategy: match events by borrower (stable across PDA promotion).
141
+ * RentalSettled has no borrower — match by PDA, then fall back to the only
142
+ * open lifecycle without a close.
143
+ *
144
+ * OwnerPaid and FeesPaid are contract-level — associated with the most
145
+ * recently closed rental via temporal proximity.
146
+ */
147
+ function buildRentalAudits(events) {
148
+ // Process chronologically (events come newest-first from RPC)
149
+ const chronological = [...events].reverse();
150
+ // Track open lifecycles by borrower address (unique per contract at any time)
151
+ const openByBorrower = new Map();
152
+ // Secondary: track which PDA a lifecycle is currently on (for RentalSettled)
153
+ const pdaToBorrower = new Map();
154
+ const finalized = [];
155
+ const contractEvents = [];
156
+ for (const evt of chronological) {
157
+ switch (evt.type) {
158
+ case 'RentalAccepted': {
159
+ const borrower = evt.borrower;
160
+ const pda = evt.rentalState;
161
+ // If this borrower already has an open lifecycle, finalize it
162
+ const existing = openByBorrower.get(borrower);
163
+ if (existing?.accepted) {
164
+ finalized.push(existing);
165
+ }
166
+ // Start fresh lifecycle
167
+ const entry = {
168
+ accepted: evt,
169
+ settlements: [],
170
+ ownerTransfers: [],
171
+ };
172
+ openByBorrower.set(borrower, entry);
173
+ pdaToBorrower.set(pda, borrower);
174
+ break;
175
+ }
176
+ case 'RentalSettled': {
177
+ // RentalSettled has no borrower — resolve via PDA
178
+ const pda = evt.rentalState;
179
+ let borrower = pdaToBorrower.get(pda);
180
+ if (!borrower) {
181
+ // PDA changed (queued→active promotion). Find the only open
182
+ // lifecycle that hasn't been closed yet.
183
+ for (const [b, entry] of openByBorrower) {
184
+ if (entry.accepted && !entry.closed && !entry.cancelled) {
185
+ borrower = b;
186
+ // Update PDA mapping for future settles
187
+ pdaToBorrower.set(pda, b);
188
+ break;
189
+ }
190
+ }
191
+ }
192
+ if (borrower) {
193
+ const entry = openByBorrower.get(borrower);
194
+ if (entry)
195
+ (entry.settlements ??= []).push(evt);
196
+ }
197
+ break;
198
+ }
199
+ case 'RentalCancelled': {
200
+ const borrower = evt.borrower;
201
+ const entry = openByBorrower.get(borrower);
202
+ if (entry) {
203
+ entry.cancelled = evt;
204
+ // Update PDA mapping (may have been promoted)
205
+ pdaToBorrower.set(evt.rentalState, borrower);
206
+ }
207
+ break;
208
+ }
209
+ case 'RentalClosed': {
210
+ const borrower = evt.borrower;
211
+ const entry = openByBorrower.get(borrower);
212
+ if (entry) {
213
+ entry.closed = evt;
214
+ pdaToBorrower.set(evt.rentalState, borrower);
215
+ }
216
+ break;
217
+ }
218
+ case 'FeesPaid':
219
+ case 'OwnerPaid': {
220
+ contractEvents.push({ evt, slot: evt.slot });
221
+ break;
222
+ }
223
+ }
224
+ }
225
+ // Finalize remaining open lifecycles
226
+ for (const entry of openByBorrower.values()) {
227
+ if (entry.accepted)
228
+ finalized.push(entry);
229
+ }
230
+ // Associate contract-level events with the nearest closed rental
231
+ const allWithCloseSlot = finalized
232
+ .filter(e => e.closed || e.cancelled)
233
+ .map(e => ({ entry: e, closeSlot: e.closed?.slot ?? e.cancelled.slot }))
234
+ .sort((a, b) => (a.closeSlot < b.closeSlot ? -1 : a.closeSlot > b.closeSlot ? 1 : 0));
235
+ for (const { evt, slot } of contractEvents) {
236
+ let best;
237
+ for (const { entry, closeSlot } of allWithCloseSlot) {
238
+ if (closeSlot <= slot)
239
+ best = entry;
240
+ else
241
+ break;
242
+ }
243
+ if (best) {
244
+ if (evt.type === 'FeesPaid') {
245
+ best.feesPaid = evt;
246
+ }
247
+ else {
248
+ (best.ownerTransfers ??= []).push(evt);
249
+ }
250
+ }
251
+ }
252
+ // Build final audits
253
+ const rentals = finalized
254
+ .filter(e => e.accepted)
255
+ .map(e => finalizeRental(e, []));
256
+ // Most recent first
257
+ rentals.sort((a, b) => {
258
+ const aTime = a.accepted.startTime;
259
+ const bTime = b.accepted.startTime;
260
+ return aTime > bTime ? -1 : aTime < bTime ? 1 : 0;
261
+ });
262
+ return rentals;
263
+ }
264
+ function finalizeRental(partial, _unassigned) {
265
+ const accepted = partial.accepted;
266
+ const settlements = partial.settlements ?? [];
267
+ const cancelled = partial.cancelled;
268
+ const closed = partial.closed;
269
+ const feesPaid = partial.feesPaid;
270
+ const ownerTransfers = partial.ownerTransfers ?? [];
271
+ // Derive status
272
+ let status = 'in-progress';
273
+ if (cancelled)
274
+ status = 'cancelled';
275
+ else if (closed)
276
+ status = 'completed';
277
+ // Compute dates (Solana timestamps are unix seconds)
278
+ const startTime = new Date(Number(accepted.startTime) * 1000);
279
+ const effectiveEndTime = cancelled ? cancelled.newEndTime : accepted.endTime;
280
+ const endTime = new Date(Number(effectiveEndTime) * 1000);
281
+ const durationSeconds = Number(effectiveEndTime - accepted.startTime);
282
+ // Sum actuals
283
+ let totalOwnerEarned = 0n;
284
+ let totalFeeCollected = 0n;
285
+ let totalRefund = 0n;
286
+ let totalDiscount = 0n;
287
+ for (const s of settlements) {
288
+ totalOwnerEarned += s.ownerEarned;
289
+ }
290
+ if (cancelled) {
291
+ totalOwnerEarned += cancelled.ownerEarned;
292
+ totalFeeCollected += cancelled.feeCollected;
293
+ totalRefund += cancelled.refund;
294
+ }
295
+ if (closed) {
296
+ totalOwnerEarned += closed.ownerEarned;
297
+ totalFeeCollected += closed.feeCollected;
298
+ }
299
+ if (feesPaid) {
300
+ totalDiscount += feesPaid.discount;
301
+ }
302
+ const reconciliation = computeReconciliation(accepted, totalOwnerEarned, totalFeeCollected, totalRefund, feesPaid);
303
+ return {
304
+ status,
305
+ borrower: accepted.borrower,
306
+ startTime,
307
+ endTime,
308
+ durationSeconds,
309
+ rate: accepted.rate,
310
+ feeBps: accepted.feeBps,
311
+ escrow: accepted.escrow,
312
+ serviceFee: accepted.serviceFee,
313
+ accepted,
314
+ settlements,
315
+ cancelled,
316
+ closed,
317
+ feesPaid,
318
+ ownerTransfers,
319
+ totalOwnerEarned,
320
+ totalFeeCollected,
321
+ totalDiscount,
322
+ totalRefund,
323
+ reconciliation,
324
+ };
325
+ }
326
+ /**
327
+ * Verify rental payment math e2e for all parties:
328
+ *
329
+ * Borrower:
330
+ * - Paid correct escrow (rate * duration / 86400)
331
+ * - Service fee correctly computed (escrow * fee_bps / 10000)
332
+ * - Refund + earned + fee = escrow (got back what they should)
333
+ * - Discount applied correctly if referrer present
334
+ *
335
+ * Owner:
336
+ * - Earned = escrow - fee - refund (conservation)
337
+ * - Fee ratio matches contracted fee_bps
338
+ *
339
+ * Protocol (slyvault):
340
+ * - Fee collected matches fee_bps proportion
341
+ * - Discount returned correctly to borrower
342
+ */
343
+ function computeReconciliation(accepted, actualOwnerEarned, actualFeeCollected, actualRefund, feesPaid) {
344
+ const escrow = accepted.escrow;
345
+ const duration = accepted.endTime - accepted.startTime;
346
+ // 1. Conservation: all escrow accounted for
347
+ const escrowAccounted = actualOwnerEarned + actualFeeCollected + actualRefund;
348
+ const escrowDelta = escrowAccounted - escrow;
349
+ // 2. Borrower paid correct amount: escrow should = rate * duration / 86400
350
+ const expectedEscrow = duration > 0n ? (accepted.rate * duration) / 86400n : 0n;
351
+ const escrowCorrect = abs(escrow - expectedEscrow) <= 1n;
352
+ // 3. Service fee correctly calculated: service_fee = escrow * fee_bps / 10000
353
+ const expectedServiceFee = (escrow * BigInt(accepted.feeBps)) / 10000n;
354
+ const serviceFeeCorrect = abs(accepted.serviceFee - expectedServiceFee) <= 1n;
355
+ // 4. Fee ratio on payout: fee / (earned + fee) should ≈ fee_bps / 10000
356
+ const grossPayment = actualOwnerEarned + actualFeeCollected;
357
+ const feeRatioBps = grossPayment > 0n
358
+ ? Number((actualFeeCollected * 10000n) / grossPayment)
359
+ : 0;
360
+ const expectedFeeBps = accepted.feeBps;
361
+ const feeRatioMatch = Math.abs(feeRatioBps - expectedFeeBps) <= 1;
362
+ // 5. Discount verification (if FeesPaid event with discount_bps > 0)
363
+ let discountVerified = null;
364
+ if (feesPaid && feesPaid.discountBps > 0) {
365
+ // discount should ≈ fee_collected * discount_bps / 10000
366
+ // (slyvault returns discount from its share)
367
+ const expectedDiscount = (feesPaid.feeCollected * BigInt(feesPaid.discountBps)) / 10000n;
368
+ discountVerified = abs(feesPaid.discount - expectedDiscount) <= 1n;
369
+ }
370
+ else if (feesPaid && feesPaid.discountBps === 0) {
371
+ // No discount expected — verify none given
372
+ discountVerified = feesPaid.discount === 0n;
373
+ }
374
+ const isMatch = abs(escrowDelta) <= 1n
375
+ && escrowCorrect
376
+ && serviceFeeCorrect
377
+ && feeRatioMatch
378
+ && (discountVerified === null || discountVerified);
379
+ return {
380
+ escrow,
381
+ escrowAccounted,
382
+ escrowDelta,
383
+ expectedEscrow,
384
+ escrowCorrect,
385
+ expectedServiceFee,
386
+ serviceFeeCorrect,
387
+ feeRatioBps,
388
+ expectedFeeBps,
389
+ feeRatioMatch,
390
+ discountVerified,
391
+ actualOwnerEarned,
392
+ actualFeeCollected,
393
+ actualRefund,
394
+ status: isMatch ? 'match' : 'mismatch',
395
+ };
396
+ }
397
+ function abs(n) {
398
+ return n < 0n ? -n : n;
399
+ }
400
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/audit/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ /**
3
+ * Anchor event log parser for SRSLY audit events.
4
+ *
5
+ * Discriminators are read from the IDL (precomputed by Anchor's build).
6
+ * Borsh decoding is manual — no external borsh dependency needed.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.parseAnchorEvents = parseAnchorEvents;
13
+ const kit_1 = require("@solana/kit");
14
+ const srsly_json_1 = __importDefault(require("../idl/srsly.json"));
15
+ /** Convert byte array to hex string */
16
+ function toHex(bytes) {
17
+ return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
18
+ }
19
+ // Build discriminator → event name map from IDL
20
+ const DISC_MAP = new Map();
21
+ for (const evt of srsly_json_1.default.events ?? []) {
22
+ const hex = toHex(evt.discriminator);
23
+ DISC_MAP.set(hex, evt.name);
24
+ }
25
+ const addressDecoder = (0, kit_1.getAddressDecoder)();
26
+ /** Decode base64 string to Uint8Array (browser + Node compatible via atob) */
27
+ function decodeBase64(str) {
28
+ const binary = atob(str);
29
+ const bytes = new Uint8Array(binary.length);
30
+ for (let i = 0; i < binary.length; i++)
31
+ bytes[i] = binary.charCodeAt(i);
32
+ return bytes;
33
+ }
34
+ // ── Borsh deserialization helpers ──
35
+ function readAddress(buf, offset) {
36
+ const bytes = buf.slice(offset, offset + 32);
37
+ const address = addressDecoder.decode(bytes);
38
+ return [address, offset + 32];
39
+ }
40
+ function readU64(buf, offset) {
41
+ const lo = buf.getUint32(offset, true);
42
+ const hi = buf.getUint32(offset + 4, true);
43
+ return [BigInt(lo) + (BigInt(hi) << 32n), offset + 8];
44
+ }
45
+ function readI64(buf, offset) {
46
+ const value = buf.getBigInt64(offset, true);
47
+ return [value, offset + 8];
48
+ }
49
+ function readU16(buf, offset) {
50
+ return [buf.getUint16(offset, true), offset + 2];
51
+ }
52
+ function readBool(buf, offset) {
53
+ return [buf.getUint8(offset) !== 0, offset + 1];
54
+ }
55
+ // ── Event decoders ──
56
+ function decodeRentalAccepted(raw, dv, offset, slot, signature) {
57
+ let rentalState, contract, borrower;
58
+ let escrow, rate, serviceFee;
59
+ let feeBps;
60
+ let startTime, endTime;
61
+ [rentalState, offset] = readAddress(raw, offset);
62
+ [contract, offset] = readAddress(raw, offset);
63
+ [borrower, offset] = readAddress(raw, offset);
64
+ [escrow, offset] = readU64(dv, offset);
65
+ [rate, offset] = readU64(dv, offset);
66
+ [serviceFee, offset] = readU64(dv, offset);
67
+ [feeBps, offset] = readU16(dv, offset);
68
+ [startTime, offset] = readI64(dv, offset);
69
+ [endTime, offset] = readI64(dv, offset);
70
+ return {
71
+ type: 'RentalAccepted', rentalState, contract, borrower,
72
+ escrow, rate, serviceFee, feeBps, startTime, endTime, slot, signature,
73
+ };
74
+ }
75
+ function decodeRentalSettled(raw, dv, offset, slot, signature) {
76
+ let rentalState, contract;
77
+ let ownerEarned, escrowRemaining;
78
+ let isFinal;
79
+ [rentalState, offset] = readAddress(raw, offset);
80
+ [contract, offset] = readAddress(raw, offset);
81
+ [ownerEarned, offset] = readU64(dv, offset);
82
+ [escrowRemaining, offset] = readU64(dv, offset);
83
+ [isFinal, offset] = readBool(dv, offset);
84
+ return {
85
+ type: 'RentalSettled', rentalState, contract,
86
+ ownerEarned, escrowRemaining, isFinal, slot, signature,
87
+ };
88
+ }
89
+ function decodeRentalCancelled(raw, dv, offset, slot, signature) {
90
+ let rentalState, contract, borrower;
91
+ let ownerEarned, feeCollected, refund;
92
+ let newEndTime;
93
+ [rentalState, offset] = readAddress(raw, offset);
94
+ [contract, offset] = readAddress(raw, offset);
95
+ [borrower, offset] = readAddress(raw, offset);
96
+ [ownerEarned, offset] = readU64(dv, offset);
97
+ [feeCollected, offset] = readU64(dv, offset);
98
+ [refund, offset] = readU64(dv, offset);
99
+ [newEndTime, offset] = readI64(dv, offset);
100
+ return {
101
+ type: 'RentalCancelled', rentalState, contract, borrower,
102
+ ownerEarned, feeCollected, refund, newEndTime, slot, signature,
103
+ };
104
+ }
105
+ function decodeRentalClosed(raw, dv, offset, slot, signature) {
106
+ let rentalState, contract, borrower;
107
+ let ownerEarned, feeCollected, pointsAwarded;
108
+ [rentalState, offset] = readAddress(raw, offset);
109
+ [contract, offset] = readAddress(raw, offset);
110
+ [borrower, offset] = readAddress(raw, offset);
111
+ [ownerEarned, offset] = readU64(dv, offset);
112
+ [feeCollected, offset] = readU64(dv, offset);
113
+ [pointsAwarded, offset] = readU64(dv, offset);
114
+ return {
115
+ type: 'RentalClosed', rentalState, contract, borrower,
116
+ ownerEarned, feeCollected, pointsAwarded, slot, signature,
117
+ };
118
+ }
119
+ function decodeOwnerPaid(raw, dv, offset, slot, signature) {
120
+ let contract, owner;
121
+ let amount;
122
+ [contract, offset] = readAddress(raw, offset);
123
+ [owner, offset] = readAddress(raw, offset);
124
+ [amount, offset] = readU64(dv, offset);
125
+ return {
126
+ type: 'OwnerPaid', contract, owner, amount, slot, signature,
127
+ };
128
+ }
129
+ function decodeFeesPaid(raw, dv, offset, slot, signature) {
130
+ let contract;
131
+ let feeCollected, discount;
132
+ let discountBps;
133
+ [contract, offset] = readAddress(raw, offset);
134
+ [feeCollected, offset] = readU64(dv, offset);
135
+ [discount, offset] = readU64(dv, offset);
136
+ [discountBps, offset] = readU16(dv, offset);
137
+ return {
138
+ type: 'FeesPaid', contract, feeCollected, discount, discountBps, slot, signature,
139
+ };
140
+ }
141
+ // Sanity check: timestamps should be between 2024 and 2030
142
+ const MIN_TS = 1704067200n; // 2024-01-01
143
+ const MAX_TS = 1893456000n; // 2030-01-01
144
+ function isPlausibleEvent(event) {
145
+ if (event.type === 'RentalAccepted') {
146
+ return event.startTime >= MIN_TS && event.startTime <= MAX_TS
147
+ && event.endTime >= MIN_TS && event.endTime <= MAX_TS
148
+ && event.endTime > event.startTime;
149
+ }
150
+ if (event.type === 'RentalCancelled') {
151
+ return event.newEndTime >= MIN_TS && event.newEndTime <= MAX_TS;
152
+ }
153
+ // For other events, check amounts aren't astronomically large (> 1 trillion stardust = 10k ATLAS)
154
+ if (event.type === 'RentalSettled') {
155
+ return event.ownerEarned < 1000000000000000n;
156
+ }
157
+ return true;
158
+ }
159
+ const DECODERS = {
160
+ RentalAccepted: decodeRentalAccepted,
161
+ RentalSettled: decodeRentalSettled,
162
+ RentalCancelled: decodeRentalCancelled,
163
+ RentalClosed: decodeRentalClosed,
164
+ OwnerPaid: decodeOwnerPaid,
165
+ FeesPaid: decodeFeesPaid,
166
+ };
167
+ /**
168
+ * Parse Anchor events from transaction log messages.
169
+ *
170
+ * Anchor emits events as `Program data: <base64>` log lines where the data
171
+ * starts with an 8-byte discriminator followed by borsh-serialized fields.
172
+ *
173
+ * Discriminators are matched against the IDL — no runtime hashing needed.
174
+ */
175
+ function parseAnchorEvents(logs, programId, slot, signature) {
176
+ const events = [];
177
+ // Track execution context as a stack of program IDs.
178
+ // `Program data:` lines belong to the program on top of the stack.
179
+ // This correctly handles CPI chains (thread → SRSLY → token → ...).
180
+ const execStack = [];
181
+ const invokeRe = /^Program (\w+) invoke \[(\d+)\]$/;
182
+ for (const log of logs) {
183
+ const invokeMatch = log.match(invokeRe);
184
+ if (invokeMatch) {
185
+ execStack.push(invokeMatch[1]);
186
+ continue;
187
+ }
188
+ if (log.startsWith('Program ') && (log.endsWith(' success') || log.endsWith(' failed'))) {
189
+ execStack.pop();
190
+ continue;
191
+ }
192
+ // Only parse `Program data:` when our program is on top of the stack
193
+ const currentProgram = execStack[execStack.length - 1];
194
+ if (currentProgram !== programId || !log.startsWith('Program data: '))
195
+ continue;
196
+ const base64Data = log.slice('Program data: '.length);
197
+ let raw;
198
+ try {
199
+ raw = decodeBase64(base64Data);
200
+ }
201
+ catch {
202
+ continue;
203
+ }
204
+ if (raw.length < 8)
205
+ continue;
206
+ const discHex = toHex(raw.slice(0, 8));
207
+ const eventName = DISC_MAP.get(discHex);
208
+ if (!eventName)
209
+ continue;
210
+ const decoder = DECODERS[eventName];
211
+ if (!decoder)
212
+ continue;
213
+ try {
214
+ const dv = new DataView(raw.buffer, raw.byteOffset, raw.byteLength);
215
+ const event = decoder(raw, dv, 8, slot, signature);
216
+ // Validate: reject events from old program versions with mismatched layouts
217
+ if (!isPlausibleEvent(event))
218
+ continue;
219
+ events.push(event);
220
+ }
221
+ catch {
222
+ // Skip malformed events
223
+ }
224
+ }
225
+ return events;
226
+ }
227
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/audit/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAnchorEvents = exports.fetchContractAudit = void 0;
4
+ var audit_1 = require("./audit");
5
+ Object.defineProperty(exports, "fetchContractAudit", { enumerable: true, get: function () { return audit_1.fetchContractAudit; } });
6
+ var events_1 = require("./events");
7
+ Object.defineProperty(exports, "parseAnchorEvents", { enumerable: true, get: function () { return events_1.parseAnchorEvents; } });
8
+ //# sourceMappingURL=index.js.map