@oobe-protocol-labs/synapse-sap-sdk 0.12.6 → 0.12.9
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 +1 -1
- package/dist/cjs/modules/escrow-v2.js +165 -0
- package/dist/cjs/modules/escrow-v2.js.map +1 -1
- package/dist/esm/modules/escrow-v2.js +165 -0
- package/dist/esm/modules/escrow-v2.js.map +1 -1
- package/dist/types/modules/escrow-v2.d.ts +42 -0
- package/dist/types/modules/escrow-v2.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/modules/escrow-v2.ts +203 -0
package/README.md
CHANGED
|
@@ -479,7 +479,7 @@ await client.escrow.deposit(agentWallet, new BN(50_000_000));
|
|
|
479
479
|
// Agent settles calls
|
|
480
480
|
await client.escrow.settle(depositorWallet, 10, serviceHash);
|
|
481
481
|
|
|
482
|
-
// Batch settlement (up to 10 per TX)
|
|
482
|
+
// Batch settlement (up to 10 per TX, SDK auto-sizes CU since v0.12.5)
|
|
483
483
|
await client.escrow.settleBatch(depositorWallet, [
|
|
484
484
|
{ callsToSettle: new BN(5), serviceHash: hash1 },
|
|
485
485
|
{ callsToSettle: new BN(3), serviceHash: hash2 },
|
|
@@ -49,6 +49,36 @@ class EscrowV2Module extends base_1.BaseModule {
|
|
|
49
49
|
throw new Error("createEscrowV2: tokenMint must be null (SOL) or USDC (mainnet/devnet). " +
|
|
50
50
|
"On-chain will reject with PaymentTokenNotAllowed.");
|
|
51
51
|
}
|
|
52
|
+
// v0.12.7 preflight: mirror the on-chain settlement-security guards
|
|
53
|
+
// (escrow_v2.rs:106-115) so callers fail fast with a clear message
|
|
54
|
+
// instead of paying for a tx that aborts with `InvalidSettlementSecurity`
|
|
55
|
+
// or `CoSignerRequired`.
|
|
56
|
+
const security = args.settlementSecurity;
|
|
57
|
+
if (security === 0) {
|
|
58
|
+
throw new Error("createEscrowV2: settlementSecurity=0 (SelfReport) is deprecated since " +
|
|
59
|
+
"v0.7. Use 1 (CoSigned) or 2 (DisputeWindow). On-chain rejects with " +
|
|
60
|
+
"SelfReportDeprecated.");
|
|
61
|
+
}
|
|
62
|
+
if (security === 1 && !args.coSigner) {
|
|
63
|
+
throw new Error("createEscrowV2: settlementSecurity=1 (CoSigned) requires `coSigner` " +
|
|
64
|
+
"to be set. On-chain rejects with CoSignerRequired.");
|
|
65
|
+
}
|
|
66
|
+
if (security === 2) {
|
|
67
|
+
// The on-chain check is `dispute_window_slots > 0` — i.e. >= 1 slot.
|
|
68
|
+
// Zero would let an agent settle and immediately drain pending funds
|
|
69
|
+
// before any depositor could possibly file a dispute, defeating the
|
|
70
|
+
// entire DisputeWindow security model. Enforce client-side too.
|
|
71
|
+
const slots = BigInt(this.bn(args.disputeWindowSlots).toString());
|
|
72
|
+
if (slots < 1n) {
|
|
73
|
+
throw new Error("createEscrowV2: settlementSecurity=2 (DisputeWindow) requires " +
|
|
74
|
+
"`disputeWindowSlots >= 1` to prevent the zero-window abuse vector. " +
|
|
75
|
+
"Recommended minimum is 2_160 slots (~15 min). On-chain rejects " +
|
|
76
|
+
"with InvalidSettlementSecurity.");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (security !== 0 && security !== 1 && security !== 2) {
|
|
80
|
+
throw new Error(`createEscrowV2: settlementSecurity must be 1 (CoSigned) or 2 (DisputeWindow), got ${String(security)}.`);
|
|
81
|
+
}
|
|
52
82
|
const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
|
|
53
83
|
const [escrowPda] = this.deriveEscrow(agentPda, undefined, args.escrowNonce);
|
|
54
84
|
const [stakePda] = (0, pda_1.deriveStake)(agentPda);
|
|
@@ -159,10 +189,48 @@ class EscrowV2Module extends base_1.BaseModule {
|
|
|
159
189
|
}
|
|
160
190
|
return builder.rpc(rpcOpts);
|
|
161
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Read the current `escrow.settlement_index` from chain.
|
|
194
|
+
*
|
|
195
|
+
* In DisputeWindow mode (`settlementSecurity = 2`), every successful
|
|
196
|
+
* `settleCallsV2` increments this value. The PRE-increment value is the
|
|
197
|
+
* one to pass to {@link createPendingSettlement} for that batch.
|
|
198
|
+
*
|
|
199
|
+
* @returns the current `settlementIndex` as `bigint` (next index to use
|
|
200
|
+
* for `createPendingSettlement` if you have NOT yet called `settle` for
|
|
201
|
+
* it; if you HAVE just settled, subtract 1 — but prefer the event
|
|
202
|
+
* `SettlementPendingEvent.settlement_index` over arithmetic).
|
|
203
|
+
* @since v0.12.8
|
|
204
|
+
*/
|
|
205
|
+
async nextSettlementIndex(agentWallet, depositorWallet, nonce) {
|
|
206
|
+
const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
|
|
207
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
208
|
+
const escrow = await this.fetchAccountNullable("escrowAccountV2", escrowPda);
|
|
209
|
+
if (!escrow) {
|
|
210
|
+
throw new Error(`nextSettlementIndex: escrow PDA ${escrowPda.toBase58()} not found on-chain`);
|
|
211
|
+
}
|
|
212
|
+
return BigInt(escrow.settlementIndex.toString());
|
|
213
|
+
}
|
|
162
214
|
async createPendingSettlement(agentWallet, depositorWallet, nonce, settlementIndex, callsToSettle, amount, serviceHash, receiptMerkleRoot = new Array(32).fill(0)) {
|
|
163
215
|
const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
|
|
164
216
|
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
165
217
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
218
|
+
// v0.12.8: preflight against the "Allocate: account already in use"
|
|
219
|
+
// SystemProgram error (custom 0x0). The pending_settlement PDA is
|
|
220
|
+
// seeded on `escrow + settlement_index`, so reusing the same index
|
|
221
|
+
// (e.g. always 0, or a stale retry value) collides with an existing
|
|
222
|
+
// account. Fail fast with an actionable message instead of burning a
|
|
223
|
+
// failed tx fee on simulation.
|
|
224
|
+
const existing = await this.provider.connection.getAccountInfo(pendingPda);
|
|
225
|
+
if (existing) {
|
|
226
|
+
const idx = this.bn(settlementIndex).toString();
|
|
227
|
+
throw new Error(`createPendingSettlement: pending PDA ${pendingPda.toBase58()} ` +
|
|
228
|
+
`already exists for settlementIndex=${idx}. ` +
|
|
229
|
+
`Use EscrowV2Module.nextSettlementIndex() to read the current ` +
|
|
230
|
+
`escrow.settlement_index, or capture SettlementPendingEvent.settlement_index ` +
|
|
231
|
+
`from the preceding settleCallsV2 tx. Reusing a settlementIndex ` +
|
|
232
|
+
`causes SystemProgram Allocate (custom 0x0) failures.`);
|
|
233
|
+
}
|
|
166
234
|
return this.methods
|
|
167
235
|
.createPendingSettlement(this.bn(settlementIndex), this.bn(callsToSettle), this.bn(amount), serviceHash, receiptMerkleRoot)
|
|
168
236
|
.accounts({
|
|
@@ -179,6 +247,42 @@ class EscrowV2Module extends base_1.BaseModule {
|
|
|
179
247
|
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
180
248
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
181
249
|
const [statsPda] = (0, pda_1.deriveAgentStats)(agentPda);
|
|
250
|
+
// v0.12.9: preflight against ArithmeticOverflow at finalize.
|
|
251
|
+
//
|
|
252
|
+
// The on-chain handler subtracts `pending_settlement.amount` from BOTH
|
|
253
|
+
// `escrow.balance` AND `escrow.pending_amount`. If the PendingSettlement
|
|
254
|
+
// PDA was created without a preceding `settle_calls_v2` (orphan PDA from
|
|
255
|
+
// legacy probe loops, or a buggy caller that skipped the settle step),
|
|
256
|
+
// `escrow.pending_amount` is smaller than `pending_settlement.amount`
|
|
257
|
+
// and the program aborts with ArithmeticOverflow (error 6075) at
|
|
258
|
+
// escrow_v2.rs:633. Each retry burns ~5 000 lamports of base fee.
|
|
259
|
+
//
|
|
260
|
+
// Detect this BEFORE signing and throw with a clear, actionable message
|
|
261
|
+
// pointing at the orphan-recovery path.
|
|
262
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
263
|
+
this.fetchAccountNullable("escrowAccountV2", escrowPda),
|
|
264
|
+
this.fetchAccountNullable("pendingSettlement", pendingPda),
|
|
265
|
+
]);
|
|
266
|
+
if (!escrowAcc) {
|
|
267
|
+
throw new Error(`finalizeSettlement: escrow PDA ${escrowPda.toBase58()} not found on-chain.`);
|
|
268
|
+
}
|
|
269
|
+
if (!pendingAcc) {
|
|
270
|
+
throw new Error(`finalizeSettlement: pending PDA ${pendingPda.toBase58()} not found on-chain ` +
|
|
271
|
+
`(settlementIndex=${settlementIndex.toString()}). Nothing to finalize.`);
|
|
272
|
+
}
|
|
273
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
274
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
275
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
276
|
+
if (psAmount > escrowPendingAmount || psAmount > escrowBalance) {
|
|
277
|
+
throw new Error(`finalizeSettlement: orphan/inconsistent PendingSettlement detected ` +
|
|
278
|
+
`at ${pendingPda.toBase58()} (settlementIndex=${settlementIndex.toString()}). ` +
|
|
279
|
+
`pending.amount=${psAmount} but escrow.pending_amount=${escrowPendingAmount}, ` +
|
|
280
|
+
`escrow.balance=${escrowBalance}. The on-chain finalize would abort with ` +
|
|
281
|
+
`ArithmeticOverflow (6075). This PDA was almost certainly created by a ` +
|
|
282
|
+
`caller that skipped settle_calls_v2 (legacy probe loop). It cannot be ` +
|
|
283
|
+
`finalized and cannot be closed (close_pending_settlement requires ` +
|
|
284
|
+
`is_finalized=true). Skip this index permanently in your settle queue.`);
|
|
285
|
+
}
|
|
182
286
|
return this.methods
|
|
183
287
|
.finalizeSettlement()
|
|
184
288
|
.accounts({
|
|
@@ -190,6 +294,67 @@ class EscrowV2Module extends base_1.BaseModule {
|
|
|
190
294
|
})
|
|
191
295
|
.rpc();
|
|
192
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Identify orphan PendingSettlement PDAs that cannot be finalized.
|
|
299
|
+
*
|
|
300
|
+
* @returns `null` if the PDA is finalizable (or already finalized / disputed).
|
|
301
|
+
* Otherwise an object describing the inconsistency, suitable for
|
|
302
|
+
* logging or feeding into a quarantine list. Use this from a
|
|
303
|
+
* recovery script to scan a range of `settlement_index` values:
|
|
304
|
+
*
|
|
305
|
+
* ```ts
|
|
306
|
+
* for (let idx = 0n; idx < currentIdx; idx++) {
|
|
307
|
+
* const orphan = await sap.escrowV2.diagnoseOrphanPending(
|
|
308
|
+
* agentWallet, depositorWallet, nonce, idx,
|
|
309
|
+
* );
|
|
310
|
+
* if (orphan) log.warn({ idx, ...orphan }, "skip orphan");
|
|
311
|
+
* }
|
|
312
|
+
* ```
|
|
313
|
+
*
|
|
314
|
+
* @since v0.12.9
|
|
315
|
+
*/
|
|
316
|
+
async diagnoseOrphanPending(agentWallet, depositorWallet, nonce, settlementIndex) {
|
|
317
|
+
const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
|
|
318
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
319
|
+
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
320
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
321
|
+
this.fetchAccountNullable("escrowAccountV2", escrowPda),
|
|
322
|
+
this.fetchAccountNullable("pendingSettlement", pendingPda),
|
|
323
|
+
]);
|
|
324
|
+
if (!escrowAcc)
|
|
325
|
+
return null;
|
|
326
|
+
if (!pendingAcc) {
|
|
327
|
+
return {
|
|
328
|
+
pendingPda,
|
|
329
|
+
psAmount: 0n,
|
|
330
|
+
escrowPendingAmount: BigInt(escrowAcc.pendingAmount.toString()),
|
|
331
|
+
escrowBalance: BigInt(escrowAcc.balance.toString()),
|
|
332
|
+
isFinalized: false,
|
|
333
|
+
isDisputed: false,
|
|
334
|
+
reason: "missing",
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
338
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
339
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
340
|
+
const base = {
|
|
341
|
+
pendingPda,
|
|
342
|
+
psAmount,
|
|
343
|
+
escrowPendingAmount,
|
|
344
|
+
escrowBalance,
|
|
345
|
+
isFinalized: pendingAcc.isFinalized,
|
|
346
|
+
isDisputed: pendingAcc.isDisputed,
|
|
347
|
+
};
|
|
348
|
+
if (pendingAcc.isFinalized)
|
|
349
|
+
return { ...base, reason: "already_finalized" };
|
|
350
|
+
if (pendingAcc.isDisputed)
|
|
351
|
+
return { ...base, reason: "disputed" };
|
|
352
|
+
if (psAmount > escrowPendingAmount)
|
|
353
|
+
return { ...base, reason: "amount_exceeds_pending" };
|
|
354
|
+
if (psAmount > escrowBalance)
|
|
355
|
+
return { ...base, reason: "amount_exceeds_balance" };
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
193
358
|
async fileDispute(agentWallet, nonce, settlementIndex, evidenceHash, disputeType = 0) {
|
|
194
359
|
const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
|
|
195
360
|
const [escrowPda] = this.deriveEscrow(agentPda, undefined, nonce);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escrow-v2.js","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"escrow-v2.js","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,36 @@ export class EscrowV2Module extends BaseModule {
|
|
|
46
46
|
throw new Error("createEscrowV2: tokenMint must be null (SOL) or USDC (mainnet/devnet). " +
|
|
47
47
|
"On-chain will reject with PaymentTokenNotAllowed.");
|
|
48
48
|
}
|
|
49
|
+
// v0.12.7 preflight: mirror the on-chain settlement-security guards
|
|
50
|
+
// (escrow_v2.rs:106-115) so callers fail fast with a clear message
|
|
51
|
+
// instead of paying for a tx that aborts with `InvalidSettlementSecurity`
|
|
52
|
+
// or `CoSignerRequired`.
|
|
53
|
+
const security = args.settlementSecurity;
|
|
54
|
+
if (security === 0) {
|
|
55
|
+
throw new Error("createEscrowV2: settlementSecurity=0 (SelfReport) is deprecated since " +
|
|
56
|
+
"v0.7. Use 1 (CoSigned) or 2 (DisputeWindow). On-chain rejects with " +
|
|
57
|
+
"SelfReportDeprecated.");
|
|
58
|
+
}
|
|
59
|
+
if (security === 1 && !args.coSigner) {
|
|
60
|
+
throw new Error("createEscrowV2: settlementSecurity=1 (CoSigned) requires `coSigner` " +
|
|
61
|
+
"to be set. On-chain rejects with CoSignerRequired.");
|
|
62
|
+
}
|
|
63
|
+
if (security === 2) {
|
|
64
|
+
// The on-chain check is `dispute_window_slots > 0` — i.e. >= 1 slot.
|
|
65
|
+
// Zero would let an agent settle and immediately drain pending funds
|
|
66
|
+
// before any depositor could possibly file a dispute, defeating the
|
|
67
|
+
// entire DisputeWindow security model. Enforce client-side too.
|
|
68
|
+
const slots = BigInt(this.bn(args.disputeWindowSlots).toString());
|
|
69
|
+
if (slots < 1n) {
|
|
70
|
+
throw new Error("createEscrowV2: settlementSecurity=2 (DisputeWindow) requires " +
|
|
71
|
+
"`disputeWindowSlots >= 1` to prevent the zero-window abuse vector. " +
|
|
72
|
+
"Recommended minimum is 2_160 slots (~15 min). On-chain rejects " +
|
|
73
|
+
"with InvalidSettlementSecurity.");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (security !== 0 && security !== 1 && security !== 2) {
|
|
77
|
+
throw new Error(`createEscrowV2: settlementSecurity must be 1 (CoSigned) or 2 (DisputeWindow), got ${String(security)}.`);
|
|
78
|
+
}
|
|
49
79
|
const [agentPda] = deriveAgent(agentWallet);
|
|
50
80
|
const [escrowPda] = this.deriveEscrow(agentPda, undefined, args.escrowNonce);
|
|
51
81
|
const [stakePda] = deriveStake(agentPda);
|
|
@@ -156,10 +186,48 @@ export class EscrowV2Module extends BaseModule {
|
|
|
156
186
|
}
|
|
157
187
|
return builder.rpc(rpcOpts);
|
|
158
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Read the current `escrow.settlement_index` from chain.
|
|
191
|
+
*
|
|
192
|
+
* In DisputeWindow mode (`settlementSecurity = 2`), every successful
|
|
193
|
+
* `settleCallsV2` increments this value. The PRE-increment value is the
|
|
194
|
+
* one to pass to {@link createPendingSettlement} for that batch.
|
|
195
|
+
*
|
|
196
|
+
* @returns the current `settlementIndex` as `bigint` (next index to use
|
|
197
|
+
* for `createPendingSettlement` if you have NOT yet called `settle` for
|
|
198
|
+
* it; if you HAVE just settled, subtract 1 — but prefer the event
|
|
199
|
+
* `SettlementPendingEvent.settlement_index` over arithmetic).
|
|
200
|
+
* @since v0.12.8
|
|
201
|
+
*/
|
|
202
|
+
async nextSettlementIndex(agentWallet, depositorWallet, nonce) {
|
|
203
|
+
const [agentPda] = deriveAgent(agentWallet);
|
|
204
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
205
|
+
const escrow = await this.fetchAccountNullable("escrowAccountV2", escrowPda);
|
|
206
|
+
if (!escrow) {
|
|
207
|
+
throw new Error(`nextSettlementIndex: escrow PDA ${escrowPda.toBase58()} not found on-chain`);
|
|
208
|
+
}
|
|
209
|
+
return BigInt(escrow.settlementIndex.toString());
|
|
210
|
+
}
|
|
159
211
|
async createPendingSettlement(agentWallet, depositorWallet, nonce, settlementIndex, callsToSettle, amount, serviceHash, receiptMerkleRoot = new Array(32).fill(0)) {
|
|
160
212
|
const [agentPda] = deriveAgent(agentWallet);
|
|
161
213
|
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
162
214
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
215
|
+
// v0.12.8: preflight against the "Allocate: account already in use"
|
|
216
|
+
// SystemProgram error (custom 0x0). The pending_settlement PDA is
|
|
217
|
+
// seeded on `escrow + settlement_index`, so reusing the same index
|
|
218
|
+
// (e.g. always 0, or a stale retry value) collides with an existing
|
|
219
|
+
// account. Fail fast with an actionable message instead of burning a
|
|
220
|
+
// failed tx fee on simulation.
|
|
221
|
+
const existing = await this.provider.connection.getAccountInfo(pendingPda);
|
|
222
|
+
if (existing) {
|
|
223
|
+
const idx = this.bn(settlementIndex).toString();
|
|
224
|
+
throw new Error(`createPendingSettlement: pending PDA ${pendingPda.toBase58()} ` +
|
|
225
|
+
`already exists for settlementIndex=${idx}. ` +
|
|
226
|
+
`Use EscrowV2Module.nextSettlementIndex() to read the current ` +
|
|
227
|
+
`escrow.settlement_index, or capture SettlementPendingEvent.settlement_index ` +
|
|
228
|
+
`from the preceding settleCallsV2 tx. Reusing a settlementIndex ` +
|
|
229
|
+
`causes SystemProgram Allocate (custom 0x0) failures.`);
|
|
230
|
+
}
|
|
163
231
|
return this.methods
|
|
164
232
|
.createPendingSettlement(this.bn(settlementIndex), this.bn(callsToSettle), this.bn(amount), serviceHash, receiptMerkleRoot)
|
|
165
233
|
.accounts({
|
|
@@ -176,6 +244,42 @@ export class EscrowV2Module extends BaseModule {
|
|
|
176
244
|
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
177
245
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
178
246
|
const [statsPda] = deriveAgentStats(agentPda);
|
|
247
|
+
// v0.12.9: preflight against ArithmeticOverflow at finalize.
|
|
248
|
+
//
|
|
249
|
+
// The on-chain handler subtracts `pending_settlement.amount` from BOTH
|
|
250
|
+
// `escrow.balance` AND `escrow.pending_amount`. If the PendingSettlement
|
|
251
|
+
// PDA was created without a preceding `settle_calls_v2` (orphan PDA from
|
|
252
|
+
// legacy probe loops, or a buggy caller that skipped the settle step),
|
|
253
|
+
// `escrow.pending_amount` is smaller than `pending_settlement.amount`
|
|
254
|
+
// and the program aborts with ArithmeticOverflow (error 6075) at
|
|
255
|
+
// escrow_v2.rs:633. Each retry burns ~5 000 lamports of base fee.
|
|
256
|
+
//
|
|
257
|
+
// Detect this BEFORE signing and throw with a clear, actionable message
|
|
258
|
+
// pointing at the orphan-recovery path.
|
|
259
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
260
|
+
this.fetchAccountNullable("escrowAccountV2", escrowPda),
|
|
261
|
+
this.fetchAccountNullable("pendingSettlement", pendingPda),
|
|
262
|
+
]);
|
|
263
|
+
if (!escrowAcc) {
|
|
264
|
+
throw new Error(`finalizeSettlement: escrow PDA ${escrowPda.toBase58()} not found on-chain.`);
|
|
265
|
+
}
|
|
266
|
+
if (!pendingAcc) {
|
|
267
|
+
throw new Error(`finalizeSettlement: pending PDA ${pendingPda.toBase58()} not found on-chain ` +
|
|
268
|
+
`(settlementIndex=${settlementIndex.toString()}). Nothing to finalize.`);
|
|
269
|
+
}
|
|
270
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
271
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
272
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
273
|
+
if (psAmount > escrowPendingAmount || psAmount > escrowBalance) {
|
|
274
|
+
throw new Error(`finalizeSettlement: orphan/inconsistent PendingSettlement detected ` +
|
|
275
|
+
`at ${pendingPda.toBase58()} (settlementIndex=${settlementIndex.toString()}). ` +
|
|
276
|
+
`pending.amount=${psAmount} but escrow.pending_amount=${escrowPendingAmount}, ` +
|
|
277
|
+
`escrow.balance=${escrowBalance}. The on-chain finalize would abort with ` +
|
|
278
|
+
`ArithmeticOverflow (6075). This PDA was almost certainly created by a ` +
|
|
279
|
+
`caller that skipped settle_calls_v2 (legacy probe loop). It cannot be ` +
|
|
280
|
+
`finalized and cannot be closed (close_pending_settlement requires ` +
|
|
281
|
+
`is_finalized=true). Skip this index permanently in your settle queue.`);
|
|
282
|
+
}
|
|
179
283
|
return this.methods
|
|
180
284
|
.finalizeSettlement()
|
|
181
285
|
.accounts({
|
|
@@ -187,6 +291,67 @@ export class EscrowV2Module extends BaseModule {
|
|
|
187
291
|
})
|
|
188
292
|
.rpc();
|
|
189
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Identify orphan PendingSettlement PDAs that cannot be finalized.
|
|
296
|
+
*
|
|
297
|
+
* @returns `null` if the PDA is finalizable (or already finalized / disputed).
|
|
298
|
+
* Otherwise an object describing the inconsistency, suitable for
|
|
299
|
+
* logging or feeding into a quarantine list. Use this from a
|
|
300
|
+
* recovery script to scan a range of `settlement_index` values:
|
|
301
|
+
*
|
|
302
|
+
* ```ts
|
|
303
|
+
* for (let idx = 0n; idx < currentIdx; idx++) {
|
|
304
|
+
* const orphan = await sap.escrowV2.diagnoseOrphanPending(
|
|
305
|
+
* agentWallet, depositorWallet, nonce, idx,
|
|
306
|
+
* );
|
|
307
|
+
* if (orphan) log.warn({ idx, ...orphan }, "skip orphan");
|
|
308
|
+
* }
|
|
309
|
+
* ```
|
|
310
|
+
*
|
|
311
|
+
* @since v0.12.9
|
|
312
|
+
*/
|
|
313
|
+
async diagnoseOrphanPending(agentWallet, depositorWallet, nonce, settlementIndex) {
|
|
314
|
+
const [agentPda] = deriveAgent(agentWallet);
|
|
315
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
316
|
+
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
317
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
318
|
+
this.fetchAccountNullable("escrowAccountV2", escrowPda),
|
|
319
|
+
this.fetchAccountNullable("pendingSettlement", pendingPda),
|
|
320
|
+
]);
|
|
321
|
+
if (!escrowAcc)
|
|
322
|
+
return null;
|
|
323
|
+
if (!pendingAcc) {
|
|
324
|
+
return {
|
|
325
|
+
pendingPda,
|
|
326
|
+
psAmount: 0n,
|
|
327
|
+
escrowPendingAmount: BigInt(escrowAcc.pendingAmount.toString()),
|
|
328
|
+
escrowBalance: BigInt(escrowAcc.balance.toString()),
|
|
329
|
+
isFinalized: false,
|
|
330
|
+
isDisputed: false,
|
|
331
|
+
reason: "missing",
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
335
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
336
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
337
|
+
const base = {
|
|
338
|
+
pendingPda,
|
|
339
|
+
psAmount,
|
|
340
|
+
escrowPendingAmount,
|
|
341
|
+
escrowBalance,
|
|
342
|
+
isFinalized: pendingAcc.isFinalized,
|
|
343
|
+
isDisputed: pendingAcc.isDisputed,
|
|
344
|
+
};
|
|
345
|
+
if (pendingAcc.isFinalized)
|
|
346
|
+
return { ...base, reason: "already_finalized" };
|
|
347
|
+
if (pendingAcc.isDisputed)
|
|
348
|
+
return { ...base, reason: "disputed" };
|
|
349
|
+
if (psAmount > escrowPendingAmount)
|
|
350
|
+
return { ...base, reason: "amount_exceeds_pending" };
|
|
351
|
+
if (psAmount > escrowBalance)
|
|
352
|
+
return { ...base, reason: "amount_exceeds_balance" };
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
190
355
|
async fileDispute(agentWallet, nonce, settlementIndex, evidenceHash, disputeType = 0) {
|
|
191
356
|
const [agentPda] = deriveAgent(agentWallet);
|
|
192
357
|
const [escrowPda] = this.deriveEscrow(agentPda, undefined, nonce);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escrow-v2.js","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"escrow-v2.js","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,8 +31,50 @@ export declare class EscrowV2Module extends BaseModule {
|
|
|
31
31
|
create(agentWallet: PublicKey, args: CreateEscrowV2Args, splAccounts?: AccountMeta[]): Promise<TransactionSignature>;
|
|
32
32
|
deposit(agentWallet: PublicKey, nonce: BN | number | bigint, amount: BN | number | bigint, splAccounts?: AccountMeta[]): Promise<TransactionSignature>;
|
|
33
33
|
settle(depositorWallet: PublicKey, nonce: BN | number | bigint, callsToSettle: BN | number | bigint, serviceHash: number[], splAccounts?: AccountMeta[], opts?: SettleOptions, coSigner?: Signer): Promise<TransactionSignature>;
|
|
34
|
+
/**
|
|
35
|
+
* Read the current `escrow.settlement_index` from chain.
|
|
36
|
+
*
|
|
37
|
+
* In DisputeWindow mode (`settlementSecurity = 2`), every successful
|
|
38
|
+
* `settleCallsV2` increments this value. The PRE-increment value is the
|
|
39
|
+
* one to pass to {@link createPendingSettlement} for that batch.
|
|
40
|
+
*
|
|
41
|
+
* @returns the current `settlementIndex` as `bigint` (next index to use
|
|
42
|
+
* for `createPendingSettlement` if you have NOT yet called `settle` for
|
|
43
|
+
* it; if you HAVE just settled, subtract 1 — but prefer the event
|
|
44
|
+
* `SettlementPendingEvent.settlement_index` over arithmetic).
|
|
45
|
+
* @since v0.12.8
|
|
46
|
+
*/
|
|
47
|
+
nextSettlementIndex(agentWallet: PublicKey, depositorWallet: PublicKey, nonce: BN | number | bigint): Promise<bigint>;
|
|
34
48
|
createPendingSettlement(agentWallet: PublicKey, depositorWallet: PublicKey, nonce: BN | number | bigint, settlementIndex: BN | number | bigint, callsToSettle: BN | number | bigint, amount: BN | number | bigint, serviceHash: number[], receiptMerkleRoot?: number[]): Promise<TransactionSignature>;
|
|
35
49
|
finalizeSettlement(agentWallet: PublicKey, depositorWallet: PublicKey, nonce: BN | number | bigint, settlementIndex: BN | number | bigint): Promise<TransactionSignature>;
|
|
50
|
+
/**
|
|
51
|
+
* Identify orphan PendingSettlement PDAs that cannot be finalized.
|
|
52
|
+
*
|
|
53
|
+
* @returns `null` if the PDA is finalizable (or already finalized / disputed).
|
|
54
|
+
* Otherwise an object describing the inconsistency, suitable for
|
|
55
|
+
* logging or feeding into a quarantine list. Use this from a
|
|
56
|
+
* recovery script to scan a range of `settlement_index` values:
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* for (let idx = 0n; idx < currentIdx; idx++) {
|
|
60
|
+
* const orphan = await sap.escrowV2.diagnoseOrphanPending(
|
|
61
|
+
* agentWallet, depositorWallet, nonce, idx,
|
|
62
|
+
* );
|
|
63
|
+
* if (orphan) log.warn({ idx, ...orphan }, "skip orphan");
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @since v0.12.9
|
|
68
|
+
*/
|
|
69
|
+
diagnoseOrphanPending(agentWallet: PublicKey, depositorWallet: PublicKey, nonce: BN | number | bigint, settlementIndex: BN | number | bigint): Promise<{
|
|
70
|
+
pendingPda: PublicKey;
|
|
71
|
+
psAmount: bigint;
|
|
72
|
+
escrowPendingAmount: bigint;
|
|
73
|
+
escrowBalance: bigint;
|
|
74
|
+
isFinalized: boolean;
|
|
75
|
+
isDisputed: boolean;
|
|
76
|
+
reason: "ok" | "missing" | "amount_exceeds_pending" | "amount_exceeds_balance" | "already_finalized" | "disputed";
|
|
77
|
+
} | null>;
|
|
36
78
|
fileDispute(agentWallet: PublicKey, nonce: BN | number | bigint, settlementIndex: BN | number | bigint, evidenceHash: number[], disputeType?: number): Promise<TransactionSignature>;
|
|
37
79
|
/**
|
|
38
80
|
* @deprecated Since v0.7.0 — Arbiter-based resolution removed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escrow-v2.d.ts","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAUpC,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAKlB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAG5C,oEAAoE;IACpE,OAAO,CAAC,KAAK;IAMb,YAAY,CACV,QAAQ,EAAE,SAAS,EACnB,SAAS,CAAC,EAAE,SAAS,EACrB,KAAK,GAAE,EAAE,GAAG,MAAM,GAAG,MAAU,GAC9B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAI/B,uBAAuB,CACrB,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,EAAE,GAAG,MAAM,GAAG,MAAM,GACpC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAI/B,aAAa,CACX,oBAAoB,EAAE,SAAS,GAC9B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAMzB,MAAM,CACV,WAAW,EAAE,SAAS,EACtB,IAAI,EAAE,kBAAkB,EACxB,WAAW,GAAE,WAAW,EAAO,GAC9B,OAAO,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"escrow-v2.d.ts","sourceRoot":"","sources":["../../../src/modules/escrow-v2.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/modules/escrow-v2.ts
CHANGED
|
@@ -95,6 +95,45 @@ export class EscrowV2Module extends BaseModule {
|
|
|
95
95
|
);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
// v0.12.7 preflight: mirror the on-chain settlement-security guards
|
|
99
|
+
// (escrow_v2.rs:106-115) so callers fail fast with a clear message
|
|
100
|
+
// instead of paying for a tx that aborts with `InvalidSettlementSecurity`
|
|
101
|
+
// or `CoSignerRequired`.
|
|
102
|
+
const security = args.settlementSecurity;
|
|
103
|
+
if (security === 0) {
|
|
104
|
+
throw new Error(
|
|
105
|
+
"createEscrowV2: settlementSecurity=0 (SelfReport) is deprecated since " +
|
|
106
|
+
"v0.7. Use 1 (CoSigned) or 2 (DisputeWindow). On-chain rejects with " +
|
|
107
|
+
"SelfReportDeprecated.",
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
if (security === 1 && !args.coSigner) {
|
|
111
|
+
throw new Error(
|
|
112
|
+
"createEscrowV2: settlementSecurity=1 (CoSigned) requires `coSigner` " +
|
|
113
|
+
"to be set. On-chain rejects with CoSignerRequired.",
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
if (security === 2) {
|
|
117
|
+
// The on-chain check is `dispute_window_slots > 0` — i.e. >= 1 slot.
|
|
118
|
+
// Zero would let an agent settle and immediately drain pending funds
|
|
119
|
+
// before any depositor could possibly file a dispute, defeating the
|
|
120
|
+
// entire DisputeWindow security model. Enforce client-side too.
|
|
121
|
+
const slots = BigInt(this.bn(args.disputeWindowSlots).toString());
|
|
122
|
+
if (slots < 1n) {
|
|
123
|
+
throw new Error(
|
|
124
|
+
"createEscrowV2: settlementSecurity=2 (DisputeWindow) requires " +
|
|
125
|
+
"`disputeWindowSlots >= 1` to prevent the zero-window abuse vector. " +
|
|
126
|
+
"Recommended minimum is 2_160 slots (~15 min). On-chain rejects " +
|
|
127
|
+
"with InvalidSettlementSecurity.",
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (security !== 0 && security !== 1 && security !== 2) {
|
|
132
|
+
throw new Error(
|
|
133
|
+
`createEscrowV2: settlementSecurity must be 1 (CoSigned) or 2 (DisputeWindow), got ${String(security)}.`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
98
137
|
const [agentPda] = deriveAgent(agentWallet);
|
|
99
138
|
const [escrowPda] = this.deriveEscrow(agentPda, undefined, args.escrowNonce);
|
|
100
139
|
const [stakePda] = deriveStake(agentPda);
|
|
@@ -244,6 +283,38 @@ export class EscrowV2Module extends BaseModule {
|
|
|
244
283
|
return builder.rpc(rpcOpts);
|
|
245
284
|
}
|
|
246
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Read the current `escrow.settlement_index` from chain.
|
|
288
|
+
*
|
|
289
|
+
* In DisputeWindow mode (`settlementSecurity = 2`), every successful
|
|
290
|
+
* `settleCallsV2` increments this value. The PRE-increment value is the
|
|
291
|
+
* one to pass to {@link createPendingSettlement} for that batch.
|
|
292
|
+
*
|
|
293
|
+
* @returns the current `settlementIndex` as `bigint` (next index to use
|
|
294
|
+
* for `createPendingSettlement` if you have NOT yet called `settle` for
|
|
295
|
+
* it; if you HAVE just settled, subtract 1 — but prefer the event
|
|
296
|
+
* `SettlementPendingEvent.settlement_index` over arithmetic).
|
|
297
|
+
* @since v0.12.8
|
|
298
|
+
*/
|
|
299
|
+
async nextSettlementIndex(
|
|
300
|
+
agentWallet: PublicKey,
|
|
301
|
+
depositorWallet: PublicKey,
|
|
302
|
+
nonce: BN | number | bigint,
|
|
303
|
+
): Promise<bigint> {
|
|
304
|
+
const [agentPda] = deriveAgent(agentWallet);
|
|
305
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
306
|
+
const escrow = await this.fetchAccountNullable<EscrowAccountV2Data>(
|
|
307
|
+
"escrowAccountV2",
|
|
308
|
+
escrowPda,
|
|
309
|
+
);
|
|
310
|
+
if (!escrow) {
|
|
311
|
+
throw new Error(
|
|
312
|
+
`nextSettlementIndex: escrow PDA ${escrowPda.toBase58()} not found on-chain`,
|
|
313
|
+
);
|
|
314
|
+
}
|
|
315
|
+
return BigInt(escrow.settlementIndex.toString());
|
|
316
|
+
}
|
|
317
|
+
|
|
247
318
|
async createPendingSettlement(
|
|
248
319
|
agentWallet: PublicKey,
|
|
249
320
|
depositorWallet: PublicKey,
|
|
@@ -258,6 +329,25 @@ export class EscrowV2Module extends BaseModule {
|
|
|
258
329
|
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
259
330
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
260
331
|
|
|
332
|
+
// v0.12.8: preflight against the "Allocate: account already in use"
|
|
333
|
+
// SystemProgram error (custom 0x0). The pending_settlement PDA is
|
|
334
|
+
// seeded on `escrow + settlement_index`, so reusing the same index
|
|
335
|
+
// (e.g. always 0, or a stale retry value) collides with an existing
|
|
336
|
+
// account. Fail fast with an actionable message instead of burning a
|
|
337
|
+
// failed tx fee on simulation.
|
|
338
|
+
const existing = await this.provider.connection.getAccountInfo(pendingPda);
|
|
339
|
+
if (existing) {
|
|
340
|
+
const idx = this.bn(settlementIndex).toString();
|
|
341
|
+
throw new Error(
|
|
342
|
+
`createPendingSettlement: pending PDA ${pendingPda.toBase58()} ` +
|
|
343
|
+
`already exists for settlementIndex=${idx}. ` +
|
|
344
|
+
`Use EscrowV2Module.nextSettlementIndex() to read the current ` +
|
|
345
|
+
`escrow.settlement_index, or capture SettlementPendingEvent.settlement_index ` +
|
|
346
|
+
`from the preceding settleCallsV2 tx. Reusing a settlementIndex ` +
|
|
347
|
+
`causes SystemProgram Allocate (custom 0x0) failures.`,
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
|
|
261
351
|
return this.methods
|
|
262
352
|
.createPendingSettlement(
|
|
263
353
|
this.bn(settlementIndex),
|
|
@@ -287,6 +377,49 @@ export class EscrowV2Module extends BaseModule {
|
|
|
287
377
|
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
288
378
|
const [statsPda] = deriveAgentStats(agentPda);
|
|
289
379
|
|
|
380
|
+
// v0.12.9: preflight against ArithmeticOverflow at finalize.
|
|
381
|
+
//
|
|
382
|
+
// The on-chain handler subtracts `pending_settlement.amount` from BOTH
|
|
383
|
+
// `escrow.balance` AND `escrow.pending_amount`. If the PendingSettlement
|
|
384
|
+
// PDA was created without a preceding `settle_calls_v2` (orphan PDA from
|
|
385
|
+
// legacy probe loops, or a buggy caller that skipped the settle step),
|
|
386
|
+
// `escrow.pending_amount` is smaller than `pending_settlement.amount`
|
|
387
|
+
// and the program aborts with ArithmeticOverflow (error 6075) at
|
|
388
|
+
// escrow_v2.rs:633. Each retry burns ~5 000 lamports of base fee.
|
|
389
|
+
//
|
|
390
|
+
// Detect this BEFORE signing and throw with a clear, actionable message
|
|
391
|
+
// pointing at the orphan-recovery path.
|
|
392
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
393
|
+
this.fetchAccountNullable<EscrowAccountV2Data>("escrowAccountV2", escrowPda),
|
|
394
|
+
this.fetchAccountNullable<PendingSettlementData>("pendingSettlement", pendingPda),
|
|
395
|
+
]);
|
|
396
|
+
if (!escrowAcc) {
|
|
397
|
+
throw new Error(
|
|
398
|
+
`finalizeSettlement: escrow PDA ${escrowPda.toBase58()} not found on-chain.`,
|
|
399
|
+
);
|
|
400
|
+
}
|
|
401
|
+
if (!pendingAcc) {
|
|
402
|
+
throw new Error(
|
|
403
|
+
`finalizeSettlement: pending PDA ${pendingPda.toBase58()} not found on-chain ` +
|
|
404
|
+
`(settlementIndex=${settlementIndex.toString()}). Nothing to finalize.`,
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
408
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
409
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
410
|
+
if (psAmount > escrowPendingAmount || psAmount > escrowBalance) {
|
|
411
|
+
throw new Error(
|
|
412
|
+
`finalizeSettlement: orphan/inconsistent PendingSettlement detected ` +
|
|
413
|
+
`at ${pendingPda.toBase58()} (settlementIndex=${settlementIndex.toString()}). ` +
|
|
414
|
+
`pending.amount=${psAmount} but escrow.pending_amount=${escrowPendingAmount}, ` +
|
|
415
|
+
`escrow.balance=${escrowBalance}. The on-chain finalize would abort with ` +
|
|
416
|
+
`ArithmeticOverflow (6075). This PDA was almost certainly created by a ` +
|
|
417
|
+
`caller that skipped settle_calls_v2 (legacy probe loop). It cannot be ` +
|
|
418
|
+
`finalized and cannot be closed (close_pending_settlement requires ` +
|
|
419
|
+
`is_finalized=true). Skip this index permanently in your settle queue.`,
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
|
|
290
423
|
return this.methods
|
|
291
424
|
.finalizeSettlement()
|
|
292
425
|
.accounts({
|
|
@@ -299,6 +432,76 @@ export class EscrowV2Module extends BaseModule {
|
|
|
299
432
|
.rpc();
|
|
300
433
|
}
|
|
301
434
|
|
|
435
|
+
/**
|
|
436
|
+
* Identify orphan PendingSettlement PDAs that cannot be finalized.
|
|
437
|
+
*
|
|
438
|
+
* @returns `null` if the PDA is finalizable (or already finalized / disputed).
|
|
439
|
+
* Otherwise an object describing the inconsistency, suitable for
|
|
440
|
+
* logging or feeding into a quarantine list. Use this from a
|
|
441
|
+
* recovery script to scan a range of `settlement_index` values:
|
|
442
|
+
*
|
|
443
|
+
* ```ts
|
|
444
|
+
* for (let idx = 0n; idx < currentIdx; idx++) {
|
|
445
|
+
* const orphan = await sap.escrowV2.diagnoseOrphanPending(
|
|
446
|
+
* agentWallet, depositorWallet, nonce, idx,
|
|
447
|
+
* );
|
|
448
|
+
* if (orphan) log.warn({ idx, ...orphan }, "skip orphan");
|
|
449
|
+
* }
|
|
450
|
+
* ```
|
|
451
|
+
*
|
|
452
|
+
* @since v0.12.9
|
|
453
|
+
*/
|
|
454
|
+
async diagnoseOrphanPending(
|
|
455
|
+
agentWallet: PublicKey,
|
|
456
|
+
depositorWallet: PublicKey,
|
|
457
|
+
nonce: BN | number | bigint,
|
|
458
|
+
settlementIndex: BN | number | bigint,
|
|
459
|
+
): Promise<{
|
|
460
|
+
pendingPda: PublicKey;
|
|
461
|
+
psAmount: bigint;
|
|
462
|
+
escrowPendingAmount: bigint;
|
|
463
|
+
escrowBalance: bigint;
|
|
464
|
+
isFinalized: boolean;
|
|
465
|
+
isDisputed: boolean;
|
|
466
|
+
reason: "ok" | "missing" | "amount_exceeds_pending" | "amount_exceeds_balance" | "already_finalized" | "disputed";
|
|
467
|
+
} | null> {
|
|
468
|
+
const [agentPda] = deriveAgent(agentWallet);
|
|
469
|
+
const [escrowPda] = this.deriveEscrow(agentPda, depositorWallet, nonce);
|
|
470
|
+
const [pendingPda] = this.derivePendingSettlement(escrowPda, settlementIndex);
|
|
471
|
+
const [escrowAcc, pendingAcc] = await Promise.all([
|
|
472
|
+
this.fetchAccountNullable<EscrowAccountV2Data>("escrowAccountV2", escrowPda),
|
|
473
|
+
this.fetchAccountNullable<PendingSettlementData>("pendingSettlement", pendingPda),
|
|
474
|
+
]);
|
|
475
|
+
if (!escrowAcc) return null;
|
|
476
|
+
if (!pendingAcc) {
|
|
477
|
+
return {
|
|
478
|
+
pendingPda,
|
|
479
|
+
psAmount: 0n,
|
|
480
|
+
escrowPendingAmount: BigInt(escrowAcc.pendingAmount.toString()),
|
|
481
|
+
escrowBalance: BigInt(escrowAcc.balance.toString()),
|
|
482
|
+
isFinalized: false,
|
|
483
|
+
isDisputed: false,
|
|
484
|
+
reason: "missing",
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
const psAmount = BigInt(pendingAcc.amount.toString());
|
|
488
|
+
const escrowPendingAmount = BigInt(escrowAcc.pendingAmount.toString());
|
|
489
|
+
const escrowBalance = BigInt(escrowAcc.balance.toString());
|
|
490
|
+
const base = {
|
|
491
|
+
pendingPda,
|
|
492
|
+
psAmount,
|
|
493
|
+
escrowPendingAmount,
|
|
494
|
+
escrowBalance,
|
|
495
|
+
isFinalized: pendingAcc.isFinalized,
|
|
496
|
+
isDisputed: pendingAcc.isDisputed,
|
|
497
|
+
};
|
|
498
|
+
if (pendingAcc.isFinalized) return { ...base, reason: "already_finalized" };
|
|
499
|
+
if (pendingAcc.isDisputed) return { ...base, reason: "disputed" };
|
|
500
|
+
if (psAmount > escrowPendingAmount) return { ...base, reason: "amount_exceeds_pending" };
|
|
501
|
+
if (psAmount > escrowBalance) return { ...base, reason: "amount_exceeds_balance" };
|
|
502
|
+
return null;
|
|
503
|
+
}
|
|
504
|
+
|
|
302
505
|
async fileDispute(
|
|
303
506
|
agentWallet: PublicKey,
|
|
304
507
|
nonce: BN | number | bigint,
|