Skip to content

Commit d7942f4

Browse files
committed
fix
1 parent 0aa11b8 commit d7942f4

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

src/tempo/client/SessionManager.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,23 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
307307

308308
if (msg.mpp === 'need-voucher' && channel && wsChallenge) {
309309
const required = BigInt(msg.data.requiredCumulative)
310+
const accepted = BigInt(msg.data.acceptedCumulative ?? '0')
311+
const deposit = BigInt(msg.data.deposit ?? '0')
312+
313+
// Pre-authorize a batch of chunks to reduce round-trips.
314+
// On first need-voucher (accepted=0), use `required` as the unit price
315+
// since the server tells us exactly what one unit costs.
316+
// On subsequent vouchers, derive unit price from the delta.
317+
const unitPrice = accepted === 0n
318+
? (required > 0n ? required : 1n)
319+
: (required > accepted ? required - accepted : 1n)
320+
const batchTarget = required + unitPrice * 99n // ~100 chunks total
321+
// Cap at deposit to avoid exceeding on-chain balance
322+
const capped = deposit > 0n && batchTarget > deposit ? deposit : batchTarget
323+
const newCumulative = capped > required ? capped : required
324+
310325
channel.cumulativeAmount =
311-
channel.cumulativeAmount > required ? channel.cumulativeAmount : required
326+
channel.cumulativeAmount > newCumulative ? channel.cumulativeAmount : newCumulative
312327

313328
try {
314329
const credential = await method.createCredential({
@@ -322,7 +337,8 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
322337
ws.send(
323338
JSON.stringify({ mpp: 'voucher', mppVersion: '1', authorization: credential }),
324339
)
325-
} catch {
340+
} catch (err) {
341+
console.error('[mppx] ws voucher creation failed:', err)
326342
ws.close(1011, 'Failed to create payment credential')
327343
}
328344
} else if (msg.mpp === 'receipt') {

0 commit comments

Comments
 (0)