@chironbuilder/ootle-sdk 0.1.16 → 0.1.18

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/wallet.d.ts CHANGED
@@ -611,7 +611,35 @@ export declare class OotleAccount implements WalletAccountApi {
611
611
  * deleting one is unrecoverable. A record skipped here is simply not offered as a candidate for
612
612
  * *this* attempt; it stays in local storage to be tried again later.
613
613
  */
614
+ /** Whether any of these unspent records of `resourceAddress` holds more than `floor` and still reads (decrypts as ours) on chain. */
615
+ private hasReadableUtxoAbove;
616
+ /**
617
+ * `sendPrivately()` with a private fee taken from the send itself, for when no separate UTXO can
618
+ * pay it. One `StealthTransfer` in the fee phase spends the selected inputs into the recipient's
619
+ * output and this account's change, and reveals only the fee, which pays for the transaction
620
+ * (`PayFeeFromBucket`) -- the same shape `unshieldIntoNewAccount` uses, with no public funds or
621
+ * account component involved. The fee is measured with a dry run first, since a fee revealed from
622
+ * stealth funds is never refunded.
623
+ */
624
+ private sendPrivatelyPayingFeeFromTransfer;
625
+ /**
626
+ * The records worth spending: every unspent record of `resourceAddress` is checked against the
627
+ * chain (not just enough of them to cover `targetAmount` -- a plan can reach past that, e.g.
628
+ * unshield's extra change input), and one that can't be read is left out. A record the indexer
629
+ * reports as not found is one that was spent elsewhere (another device or wallet on this seed) and
630
+ * is marked spent for good -- see `isSpentElsewhere` for the guard on fresh outputs. Any other
631
+ * failure only skips the record this time.
632
+ */
614
633
  private filterReadableShieldedOutputs;
634
+ /**
635
+ * Checks every unspent local shielded-output record against the chain and marks spent the ones
636
+ * that are gone (spent from another device or wallet sharing this seed), so the private balance
637
+ * and coin selection stop counting them. Returns how many were marked. Safe to call any time; a
638
+ * record the indexer can't answer for right now is left as it is.
639
+ */
640
+ pruneSpentShieldedOutputs(): Promise<number>;
641
+ /** Reads each unspent record's UTXO; returns the unusable commitments, marking the definitively spent ones. */
642
+ private checkShieldedOutputs;
615
643
  /**
616
644
  * Shared prepare/authorize/seal/submit path for every `StealthTransfer`-based operation
617
645
  * (shield/unshield/withdrawStealthAndExecute/etc.): `builder` must already have every
@@ -1020,6 +1048,13 @@ export declare function summarizePrivateHoldings(records: ShieldedOutputRecord[]
1020
1048
  amount: bigint;
1021
1049
  outputCount: number;
1022
1050
  }[];
1051
+ /**
1052
+ * Whether a failed read of a record's UTXO means it is gone for good: the indexer said the
1053
+ * substate is not found (a spent UTXO is removed), and the record is old enough that this isn't
1054
+ * just the indexer not having caught up with a brand-new output. A 500 or a network error says
1055
+ * nothing about the UTXO and never counts.
1056
+ */
1057
+ export declare function isSpentElsewhere(record: Pick<ShieldedOutputRecord, "createdAt">, error: unknown, now?: number): boolean;
1023
1058
  export declare function selectShieldedUtxosForAmount(records: ShieldedOutputRecord[], resourceAddress: string, targetAmount: bigint): {
1024
1059
  selected: ShieldedOutputRecord[];
1025
1060
  total: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.js CHANGED
@@ -1415,37 +1415,207 @@ export class OotleAccount {
1415
1415
  * deleting one is unrecoverable. A record skipped here is simply not offered as a candidate for
1416
1416
  * *this* attempt; it stays in local storage to be tried again later.
1417
1417
  */
1418
- async filterReadableShieldedOutputs(records, resourceAddress, targetAmount) {
1418
+ /** Whether any of these unspent records of `resourceAddress` holds more than `floor` and still reads (decrypts as ours) on chain. */
1419
+ async hasReadableUtxoAbove(records, resourceAddress, floor) {
1419
1420
  const provider = await this.getProvider();
1420
1421
  const crypto = new WasmStealthCrypto(this.network);
1421
1422
  const viewSecret = await this.signer.getViewSecret();
1422
- const candidates = records
1423
- .filter((r) => r.resourceAddress === resourceAddress && !r.spent)
1424
- .sort((a, b) => {
1425
- const diff = BigInt(b.amount) - BigInt(a.amount);
1426
- return diff > 0n ? 1 : diff < 0n ? -1 : 0;
1427
- });
1428
- const unreadable = new Set();
1429
- let verifiedTotal = 0n;
1430
- for (const record of candidates) {
1431
- if (verifiedTotal >= targetAmount)
1432
- break;
1423
+ for (const record of records) {
1424
+ if (record.spent || record.resourceAddress !== resourceAddress || BigInt(record.amount) <= floor)
1425
+ continue;
1433
1426
  try {
1434
1427
  const substateId = stealthUtxoSubstateId(resourceAddress, fromHex(record.commitment));
1428
+ if (await decryptOwnedUtxo(crypto, viewSecret, await provider.getSubstate(substateId), substateId))
1429
+ return true;
1430
+ }
1431
+ catch {
1432
+ /* spent elsewhere or unreachable: not usable for the fee */
1433
+ }
1434
+ }
1435
+ return false;
1436
+ }
1437
+ /**
1438
+ * `sendPrivately()` with a private fee taken from the send itself, for when no separate UTXO can
1439
+ * pay it. One `StealthTransfer` in the fee phase spends the selected inputs into the recipient's
1440
+ * output and this account's change, and reveals only the fee, which pays for the transaction
1441
+ * (`PayFeeFromBucket`) -- the same shape `unshieldIntoNewAccount` uses, with no public funds or
1442
+ * account component involved. The fee is measured with a dry run first, since a fee revealed from
1443
+ * stealth funds is never refunded.
1444
+ */
1445
+ async sendPrivatelyPayingFeeFromTransfer(records, resourceAddress, recipientWalletAddress, amount, maxFee, memo, minimumValuePromise, opId) {
1446
+ const accountId = localAccountId(this.index);
1447
+ // The caller checked readability up to `amount` only; the fee needs more, and a stale record
1448
+ // (spent from another device) must not be picked for it.
1449
+ records = await this.filterReadableShieldedOutputs(records, resourceAddress, amount + maxFee);
1450
+ let commitments;
1451
+ try {
1452
+ ({ commitments } = resolveSendPrivatelyPlan(records, resourceAddress, amount + maxFee));
1453
+ }
1454
+ catch {
1455
+ throw new Error(`Not enough private balance to send ${amount} and pay its private fee (up to ${maxFee}) from it.`);
1456
+ }
1457
+ await reserveCommitments(accountId, commitments, opId);
1458
+ try {
1459
+ const provider = await this.getProvider();
1460
+ const crypto = new WasmStealthCrypto(this.network);
1461
+ const viewSecret = await this.signer.getViewSecret();
1462
+ const walletAddress = await this.getWalletAddress();
1463
+ const inputs = await Promise.all(commitments.map(async (commitmentHex) => {
1464
+ const substateId = stealthUtxoSubstateId(resourceAddress, fromHex(commitmentHex));
1435
1465
  const substate = await provider.getSubstate(substateId);
1436
1466
  const decrypted = await decryptOwnedUtxo(crypto, viewSecret, substate, substateId);
1437
- if (!decrypted) {
1438
- unreadable.add(record.commitment); // doesn't decrypt as ours -- don't offer it either
1439
- continue;
1467
+ if (!decrypted)
1468
+ throw new Error(`sendPrivately: cannot decrypt ${substateId} -- it isn't this account's, or it is already spent.`);
1469
+ const nonce = substate.substate.Utxo.output.output
1470
+ .public_nonce;
1471
+ return { commitmentHex, substateId, mask: decrypted.mask, nonce, value: decrypted.value };
1472
+ }));
1473
+ const total = inputs.reduce((sum, i) => sum + i.value, 0n);
1474
+ const inputMask = await crypto.aggregateInputMasks(inputs.map((i) => i.mask));
1475
+ const inputsJson = JSON.stringify({
1476
+ inputs: inputs.map((i) => ({ commitment: i.commitmentHex, witness: "KeyPath" })),
1477
+ revealed_amount: "0",
1478
+ });
1479
+ const sealKeypair = generateSealKeypair();
1480
+ const build = async (fee, dryRun) => {
1481
+ const change = total - amount - fee;
1482
+ if (change < 0n)
1483
+ throw new Error(`sendPrivately: ${total} private does not cover ${amount} plus the ${fee} fee`);
1484
+ // Output 0 is the recipient's (the promise rides on it alone -- see sendPrivately); output 1, when present, is our change.
1485
+ const outputs = [createOutput({ destination: recipientWalletAddress, amount, resourceAddress, memo: toMemo(memo), minimumValuePromise })];
1486
+ if (change > 0n)
1487
+ outputs.push(createOutput({ destination: walletAddress, amount: change, resourceAddress }));
1488
+ const { statement: outputsStatement, outputMask } = await crypto.generateOutputsStatement(outputs, fee, sealKeypair.public_key);
1489
+ const inputsStatement = new StealthInputsStatement([], 0n, inputsJson);
1490
+ const balanceProof = await crypto.generateBalanceProofSignature(inputMask, outputMask, inputsJson, outputsStatement.statementJson);
1491
+ const statement = new StealthTransferStatement(inputsStatement, outputsStatement, balanceProof);
1492
+ await crypto.validateTransfer(statement);
1493
+ const parsed = outputsStatement.parsed().outputs;
1494
+ const builder = TransactionBuilder.new(this.network, await resolveMaxEpoch(provider));
1495
+ for (const instruction of [
1496
+ {
1497
+ StealthTransfer: {
1498
+ resource_address_ref: { Address: resourceAddress },
1499
+ statement: { __ootleRawJson: statement.toCompactJson() },
1500
+ revealed_input_bucket: null,
1501
+ },
1502
+ },
1503
+ { PutLastInstructionOutputOnWorkspace: { key: 0 } },
1504
+ { PayFeeFromBucket: { bucket: { id: 0, offset: null } } },
1505
+ ]) {
1506
+ builder.addFeeInstruction(instruction);
1440
1507
  }
1441
- verifiedTotal += BigInt(record.amount);
1508
+ builder.addInput({ substate_id: resourceAddress, version: null, is_write: false });
1509
+ for (const input of inputs)
1510
+ builder.addInput({ substate_id: input.substateId, version: null });
1511
+ const unsignedBody = builder.buildUnsignedTransaction();
1512
+ unsignedBody.is_seal_signer_authorized = true;
1513
+ unsignedBody.dry_run = dryRun;
1514
+ const unsignedTx = await resolveTransaction(provider, unsignedBody);
1515
+ const signers = inputs.map((input) => ({
1516
+ getAddress: async () => walletAddress,
1517
+ getPublicKey: async () => parseOotleAddress(walletAddress).owner_key,
1518
+ signTransaction: async (tx, sealPublicKey) => {
1519
+ const json = serializeUnsignedTx(tx);
1520
+ return [await this.signer.addStealthSignature(json, fromHex(input.nonce), sealPublicKey, { crypto })];
1521
+ },
1522
+ }));
1523
+ const signed = await signTransaction(signers, unsignedTx, sealKeypair);
1524
+ return {
1525
+ envelope: sealTransaction(signed),
1526
+ change,
1527
+ recipientCommitment: parsed[0].output.commitment,
1528
+ changeCommitment: change > 0n ? parsed[1].output.commitment : undefined,
1529
+ };
1530
+ };
1531
+ const fee = await this.estimateClaimFee(await build(maxFee, true), "private send");
1532
+ if (fee > maxFee)
1533
+ throw new Error(`sendPrivately: the private fee would be ${fee}, above the ${maxFee} limit`);
1534
+ const attempt = await build(fee, false);
1535
+ const transactionId = await submitTransaction(provider, attempt.envelope);
1536
+ await addPendingShield({
1537
+ transactionId,
1538
+ accountId,
1539
+ resourceAddress,
1540
+ amount: attempt.change.toString(),
1541
+ spentCommitments: commitments,
1542
+ ownCommitment: attempt.changeCommitment,
1543
+ });
1544
+ try {
1545
+ const response = await withTimeout(pollTransactionResult(provider, transactionId), 60_000, "submitting the private send");
1546
+ await recordKnownVersions(response);
1547
+ if (attempt.changeCommitment) {
1548
+ await recordKnownShieldedOutput(accountId, resourceAddress, attempt.changeCommitment, attempt.change, transactionId);
1549
+ }
1550
+ for (const commitment of commitments)
1551
+ await markShieldedOutputSpent(accountId, commitment);
1442
1552
  }
1443
- catch {
1444
- unreadable.add(record.commitment);
1553
+ finally {
1554
+ await removePendingShield(transactionId);
1445
1555
  }
1556
+ return {
1557
+ transactionId,
1558
+ recipientCommitment: attempt.recipientCommitment,
1559
+ recipientSubstateId: stealthUtxoSubstateId(resourceAddress, fromHex(attempt.recipientCommitment)),
1560
+ minimumValuePromise: minimumValuePromise.toString(),
1561
+ };
1562
+ }
1563
+ finally {
1564
+ await releaseReservations(opId);
1446
1565
  }
1566
+ }
1567
+ /**
1568
+ * The records worth spending: every unspent record of `resourceAddress` is checked against the
1569
+ * chain (not just enough of them to cover `targetAmount` -- a plan can reach past that, e.g.
1570
+ * unshield's extra change input), and one that can't be read is left out. A record the indexer
1571
+ * reports as not found is one that was spent elsewhere (another device or wallet on this seed) and
1572
+ * is marked spent for good -- see `isSpentElsewhere` for the guard on fresh outputs. Any other
1573
+ * failure only skips the record this time.
1574
+ */
1575
+ async filterReadableShieldedOutputs(records, resourceAddress,
1576
+ // Kept for callers' clarity; every candidate is checked regardless.
1577
+ _targetAmount) {
1578
+ const unreadable = await this.checkShieldedOutputs(records.filter((r) => r.resourceAddress === resourceAddress));
1447
1579
  return records.filter((r) => !unreadable.has(r.commitment));
1448
1580
  }
1581
+ /**
1582
+ * Checks every unspent local shielded-output record against the chain and marks spent the ones
1583
+ * that are gone (spent from another device or wallet sharing this seed), so the private balance
1584
+ * and coin selection stop counting them. Returns how many were marked. Safe to call any time; a
1585
+ * record the indexer can't answer for right now is left as it is.
1586
+ */
1587
+ async pruneSpentShieldedOutputs() {
1588
+ const accountId = localAccountId(this.index);
1589
+ const before = (await listShieldedOutputs(accountId)).filter((r) => !r.spent).length;
1590
+ await this.checkShieldedOutputs(await listShieldedOutputs(accountId));
1591
+ const after = (await listShieldedOutputs(accountId)).filter((r) => !r.spent).length;
1592
+ return before - after;
1593
+ }
1594
+ /** Reads each unspent record's UTXO; returns the unusable commitments, marking the definitively spent ones. */
1595
+ async checkShieldedOutputs(records) {
1596
+ const accountId = localAccountId(this.index);
1597
+ const provider = await this.getProvider();
1598
+ const crypto = new WasmStealthCrypto(this.network);
1599
+ const viewSecret = await this.signer.getViewSecret();
1600
+ const unreadable = new Set();
1601
+ for (const record of records) {
1602
+ if (record.spent)
1603
+ continue;
1604
+ try {
1605
+ const substateId = stealthUtxoSubstateId(record.resourceAddress, fromHex(record.commitment));
1606
+ const substate = await provider.getSubstate(substateId);
1607
+ const decrypted = await decryptOwnedUtxo(crypto, viewSecret, substate, substateId);
1608
+ if (!decrypted)
1609
+ unreadable.add(record.commitment); // doesn't decrypt as ours -- don't offer it either
1610
+ }
1611
+ catch (e) {
1612
+ unreadable.add(record.commitment);
1613
+ if (isSpentElsewhere(record, e))
1614
+ await markShieldedOutputSpent(accountId, record.commitment);
1615
+ }
1616
+ }
1617
+ return unreadable;
1618
+ }
1449
1619
  /**
1450
1620
  * Shared prepare/authorize/seal/submit path for every `StealthTransfer`-based operation
1451
1621
  * (shield/unshield/withdrawStealthAndExecute/etc.): `builder` must already have every
@@ -2173,6 +2343,24 @@ export class OotleAccount {
2173
2343
  const opId = newOperationId("send-private");
2174
2344
  const unavailable = await this.unavailableCommitments(accountId, opId);
2175
2345
  const records = await this.filterReadableShieldedOutputs((await listShieldedOutputs(accountId)).filter((r) => !unavailable.has(r.commitment)), resourceAddress, amount);
2346
+ // An account that has only ever held private funds (e.g. a claimed L1 burn) has no component
2347
+ // on-chain to take the dust or a public fee from, so its send pays the fee from itself, like
2348
+ // unshield's new-account path.
2349
+ if (!(await substateExists(await this.getProvider(), await this.getComponentAddress()))) {
2350
+ if (resourceAddress !== TARI_RESOURCE_ADDRESS) {
2351
+ throw new Error("This account doesn't exist on-chain yet, so it can only send TARI privately until it is created (unshield some TARI first).");
2352
+ }
2353
+ return this.sendPrivatelyPayingFeeFromTransfer(records, resourceAddress, recipientWalletAddress, amount, maxFee, memo, minimumValuePromise, opId);
2354
+ }
2355
+ // A private fee normally comes from a UTXO of its own. With none to spare -- e.g. the whole
2356
+ // private balance is a single UTXO -- the fee comes out of the send itself instead.
2357
+ if (feeType.kind === "private" && feeType.feeResourceAddress === resourceAddress) {
2358
+ const planned = resolveSendPrivatelyPlan(records, resourceAddress, amount).commitments;
2359
+ const spare = records.filter((r) => !planned.includes(r.commitment));
2360
+ if (!(await this.hasReadableUtxoAbove(spare, resourceAddress, maxFee))) {
2361
+ return this.sendPrivatelyPayingFeeFromTransfer(records, resourceAddress, recipientWalletAddress, amount, maxFee, memo, minimumValuePromise, opId);
2362
+ }
2363
+ }
2176
2364
  const { commitments, changeAmount } = resolveSendPrivatelyPlan(records, resourceAddress, amount);
2177
2365
  await reserveCommitments(accountId, commitments, opId);
2178
2366
  try {
@@ -2956,6 +3144,18 @@ export function summarizePrivateHoldings(records) {
2956
3144
  }
2957
3145
  return [...totals].map(([resourceAddress, entry]) => ({ resourceAddress, ...entry }));
2958
3146
  }
3147
+ /** How long a freshly recorded output may still be missing from the indexer before "not found" is believed. */
3148
+ const SPENT_ELSEWHERE_GRACE_MS = 10 * 60_000;
3149
+ /**
3150
+ * Whether a failed read of a record's UTXO means it is gone for good: the indexer said the
3151
+ * substate is not found (a spent UTXO is removed), and the record is old enough that this isn't
3152
+ * just the indexer not having caught up with a brand-new output. A 500 or a network error says
3153
+ * nothing about the UTXO and never counts.
3154
+ */
3155
+ export function isSpentElsewhere(record, error, now = Date.now()) {
3156
+ const message = error instanceof Error ? error.message : String(error);
3157
+ return /\b404\b|not found/i.test(message) && now - record.createdAt >= SPENT_ELSEWHERE_GRACE_MS;
3158
+ }
2959
3159
  export function selectShieldedUtxosForAmount(records, resourceAddress, targetAmount) {
2960
3160
  const candidates = records
2961
3161
  .filter((r) => r.resourceAddress === resourceAddress && !r.spent)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chironbuilder/ootle-sdk",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "Shared TypeScript client for Tari Ootle (L2): account derivation, balances, transactions, HTLCs, and stealth/confidential transfers — the account core behind Sapient and the Tari L1 web wallet's Ootle support.",
5
5
  "type": "module",
6
6
  "license": "MIT",