@chironbuilder/ootle-sdk 0.1.4 → 0.1.6
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 +34 -3
- package/dist/wallet.d.ts.map +1 -1
- package/dist/wallet.js +90 -1
- package/package.json +1 -1
package/dist/wallet.d.ts
CHANGED
|
@@ -132,7 +132,9 @@ export declare class OotleAccount implements WalletAccountApi {
|
|
|
132
132
|
}): Promise<{
|
|
133
133
|
transaction_id: TransactionId;
|
|
134
134
|
result: ExecuteResult;
|
|
135
|
-
} | IndexerGetTransactionResultResponse
|
|
135
|
+
} | (IndexerGetTransactionResultResponse & {
|
|
136
|
+
transactionId?: string;
|
|
137
|
+
})>;
|
|
136
138
|
/**
|
|
137
139
|
* A working replacement for the SDK's exported `sendDryRun()`, which is broken against this
|
|
138
140
|
* indexer: it builds the identical signed/sealed envelope but POSTs it to the regular
|
|
@@ -192,7 +194,9 @@ export declare class OotleAccount implements WalletAccountApi {
|
|
|
192
194
|
send(recipientAddress: string, resourceAddress: string, amount: bigint, maxFee?: bigint): Promise<{
|
|
193
195
|
transaction_id: TransactionId;
|
|
194
196
|
result: ExecuteResult;
|
|
195
|
-
} | IndexerGetTransactionResultResponse
|
|
197
|
+
} | (IndexerGetTransactionResultResponse & {
|
|
198
|
+
transactionId?: string;
|
|
199
|
+
})>;
|
|
196
200
|
/**
|
|
197
201
|
* Moves `amount` of this account's own REVEALED balance into a Confidential-type vault for the
|
|
198
202
|
* same resource -- the "Confidential" `ResourceType`'s equivalent of `shield()`, a different
|
|
@@ -226,7 +230,9 @@ export declare class OotleAccount implements WalletAccountApi {
|
|
|
226
230
|
depositConfidential(resourceAddress: string, amount: bigint, maxFee?: bigint): Promise<{
|
|
227
231
|
transaction_id: TransactionId;
|
|
228
232
|
result: ExecuteResult;
|
|
229
|
-
} | IndexerGetTransactionResultResponse
|
|
233
|
+
} | (IndexerGetTransactionResultResponse & {
|
|
234
|
+
transactionId?: string;
|
|
235
|
+
})>;
|
|
230
236
|
/**
|
|
231
237
|
* Claims free testnet XTR from the network's builtin faucet (esmeralda/igor only — there is no
|
|
232
238
|
* such faucet on mainnet). Mirrors both `build_faucet_claim_with_wants` in tari-ootle's
|
|
@@ -645,6 +651,31 @@ export declare class OotleAccount implements WalletAccountApi {
|
|
|
645
651
|
claimed: number;
|
|
646
652
|
found: ScannedStealthOutput[];
|
|
647
653
|
}>;
|
|
654
|
+
/**
|
|
655
|
+
* Given a resource address, finds every UTXO of that resource type this account can decrypt
|
|
656
|
+
* with its own view key, no matter which instruction created it -- unlike
|
|
657
|
+
* `scanForPrivatePayments()`, which only ever recognizes outputs from a top-level native
|
|
658
|
+
* `StealthTransfer` instruction and so misses anything minted by custom template logic inside a
|
|
659
|
+
* `CallFunction`/`CallMethod` (a voting template's ballot tokens, for instance -- confirmed this
|
|
660
|
+
* is exactly why a voter's wallet can't discover an RCV ballot on its own).
|
|
661
|
+
*
|
|
662
|
+
* There is no indexer API to list substates by resource address: `Provider.getSubstate()` and
|
|
663
|
+
* `getStealthUtxo()` both need a specific id/commitment already in hand, and
|
|
664
|
+
* `listRecentTransactions()`'s pruned `TransactionEntry.summary` carries only a
|
|
665
|
+
* `Commit`/`FeeIntentCommit` flag, never the actual `up_substates` diff (confirmed by reading
|
|
666
|
+
* `TransactionResultSummary`'s own type). So this walks recent transaction ids and fetches each
|
|
667
|
+
* one's *full* result via `getTransactionResult()` -- one extra round trip per transaction,
|
|
668
|
+
* unlike `scanForPrivatePayments()`'s single-request-per-page listing -- filtering for
|
|
669
|
+
* `utxo_{resource}_...` substate ids before ever attempting a decrypt. This is expensive by
|
|
670
|
+
* construction (there is no cheaper way to ask "does resource X have any output for me" without
|
|
671
|
+
* the indexer itself indexing by resource), so it takes no cursor and defaults to a small,
|
|
672
|
+
* bounded lookback -- meant for an interactive "do I have one of these" check on a resource
|
|
673
|
+
* whose mint is known to be recent, not a background sweep of the whole chain.
|
|
674
|
+
*/
|
|
675
|
+
scanForResourceUtxos(resourceAddress: string, opts?: {
|
|
676
|
+
maxPages?: number;
|
|
677
|
+
pageSize?: number;
|
|
678
|
+
}): Promise<ScannedStealthOutput[]>;
|
|
648
679
|
}
|
|
649
680
|
/**
|
|
650
681
|
* Reads the commitment of the output at `outputIndex` (in the order `toStealthOutput()` was
|
package/dist/wallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EA2BR,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,aAAa,EACb,mCAAmC,EACnC,WAAW,EAIX,mBAAmB,EACnB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAYxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAcrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIzD,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf;;;wCAGoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;kCAE8B;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC;yEACqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB;sEACkE;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;oDACgD;IAChD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;mGAE+F;IAC/F,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACtC;AAED;;;4CAG4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB;iCAC6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf;gFAC4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAmCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CASpF;AAoCD;;;GAGG;AACH,qBAAa,YAAa,YAAW,gBAAgB;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAgC;IAKhD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO;IAOP,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY;IAOrF,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAqB7C;;;;;OAKG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC;;;;;;;;OAQG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA+I5C;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CACX,YAAY,EAAE,WAAW,EAAE,EAC3B,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;wBA8H1E,aAAa;gBAAU,aAAa;;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet.js
CHANGED
|
@@ -347,7 +347,7 @@ export class OotleAccount {
|
|
|
347
347
|
return await withTimeout(this.submitDryRun(provider, unsignedTx), 30_000, "submitting the transaction");
|
|
348
348
|
const result = await withTimeout(this.submitReal(provider, unsignedTx), 60_000, "submitting the transaction");
|
|
349
349
|
await recordKnownVersions(result);
|
|
350
|
-
return result;
|
|
350
|
+
return withTransactionId(result);
|
|
351
351
|
}
|
|
352
352
|
catch (e) {
|
|
353
353
|
if (!(e instanceof Error) || attempt >= maxRetries)
|
|
@@ -1655,6 +1655,78 @@ export class OotleAccount {
|
|
|
1655
1655
|
await setPrivatePaymentScanCursor(accountId, newestSeen);
|
|
1656
1656
|
return { claimed: found.length, found };
|
|
1657
1657
|
}
|
|
1658
|
+
/**
|
|
1659
|
+
* Given a resource address, finds every UTXO of that resource type this account can decrypt
|
|
1660
|
+
* with its own view key, no matter which instruction created it -- unlike
|
|
1661
|
+
* `scanForPrivatePayments()`, which only ever recognizes outputs from a top-level native
|
|
1662
|
+
* `StealthTransfer` instruction and so misses anything minted by custom template logic inside a
|
|
1663
|
+
* `CallFunction`/`CallMethod` (a voting template's ballot tokens, for instance -- confirmed this
|
|
1664
|
+
* is exactly why a voter's wallet can't discover an RCV ballot on its own).
|
|
1665
|
+
*
|
|
1666
|
+
* There is no indexer API to list substates by resource address: `Provider.getSubstate()` and
|
|
1667
|
+
* `getStealthUtxo()` both need a specific id/commitment already in hand, and
|
|
1668
|
+
* `listRecentTransactions()`'s pruned `TransactionEntry.summary` carries only a
|
|
1669
|
+
* `Commit`/`FeeIntentCommit` flag, never the actual `up_substates` diff (confirmed by reading
|
|
1670
|
+
* `TransactionResultSummary`'s own type). So this walks recent transaction ids and fetches each
|
|
1671
|
+
* one's *full* result via `getTransactionResult()` -- one extra round trip per transaction,
|
|
1672
|
+
* unlike `scanForPrivatePayments()`'s single-request-per-page listing -- filtering for
|
|
1673
|
+
* `utxo_{resource}_...` substate ids before ever attempting a decrypt. This is expensive by
|
|
1674
|
+
* construction (there is no cheaper way to ask "does resource X have any output for me" without
|
|
1675
|
+
* the indexer itself indexing by resource), so it takes no cursor and defaults to a small,
|
|
1676
|
+
* bounded lookback -- meant for an interactive "do I have one of these" check on a resource
|
|
1677
|
+
* whose mint is known to be recent, not a background sweep of the whole chain.
|
|
1678
|
+
*/
|
|
1679
|
+
async scanForResourceUtxos(resourceAddress, opts = {}) {
|
|
1680
|
+
const accountId = localAccountId(this.index);
|
|
1681
|
+
const provider = await this.getProvider();
|
|
1682
|
+
const viewSecret = await this.signer.getViewSecret();
|
|
1683
|
+
const crypto = new WasmStealthCrypto(this.network);
|
|
1684
|
+
const known = await listShieldedOutputs(accountId);
|
|
1685
|
+
const knownCommitments = new Set(known.filter((r) => r.resourceAddress === resourceAddress).map((r) => r.commitment));
|
|
1686
|
+
const prefix = `utxo_${resourceAddress.startsWith("resource_") ? resourceAddress.slice(9) : resourceAddress}_`;
|
|
1687
|
+
const pageSize = opts.pageSize ?? 50;
|
|
1688
|
+
const pageBudget = opts.maxPages ?? 10;
|
|
1689
|
+
let lastId = null;
|
|
1690
|
+
const found = [];
|
|
1691
|
+
for (let page = 0; page < pageBudget; page++) {
|
|
1692
|
+
const { transactions } = await provider.listRecentTransactions({ limit: pageSize, last_id: lastId, source: null });
|
|
1693
|
+
if (transactions.length === 0)
|
|
1694
|
+
break;
|
|
1695
|
+
for (const entry of transactions) {
|
|
1696
|
+
// No receipt yet, or rejected at mempool submission -- neither ever produced up_substates.
|
|
1697
|
+
if (entry.rejected_reason !== null || !entry.summary)
|
|
1698
|
+
continue;
|
|
1699
|
+
const response = await provider.getTransactionResult(entry.transaction_id);
|
|
1700
|
+
const result = response.result;
|
|
1701
|
+
if (result === "Pending" || "Rejected" in result)
|
|
1702
|
+
continue;
|
|
1703
|
+
const outcome = result.Finalized.execution_result?.finalize.result;
|
|
1704
|
+
const upSubstates = outcome && typeof outcome === "object" && "Accept" in outcome
|
|
1705
|
+
? outcome.Accept.up_substates
|
|
1706
|
+
: outcome && typeof outcome === "object" && "AcceptFeeRejectRest" in outcome
|
|
1707
|
+
? outcome.AcceptFeeRejectRest[0].up_substates
|
|
1708
|
+
: undefined;
|
|
1709
|
+
if (!upSubstates)
|
|
1710
|
+
continue;
|
|
1711
|
+
for (const [substateId, substate] of upSubstates) {
|
|
1712
|
+
if (!substateId.startsWith(prefix))
|
|
1713
|
+
continue;
|
|
1714
|
+
const commitment = substateId.slice(prefix.length);
|
|
1715
|
+
if (knownCommitments.has(commitment))
|
|
1716
|
+
continue;
|
|
1717
|
+
const decrypted = await decryptOwnedUtxo(crypto, viewSecret, { ...substate, verified: true }, substateId);
|
|
1718
|
+
if (!decrypted)
|
|
1719
|
+
continue;
|
|
1720
|
+
const memo = fromMemo(decrypted.memo);
|
|
1721
|
+
await recordKnownShieldedOutput(accountId, resourceAddress, commitment, decrypted.value, entry.transaction_id, memo);
|
|
1722
|
+
knownCommitments.add(commitment);
|
|
1723
|
+
found.push({ resourceAddress, commitment, amount: decrypted.value, transactionId: entry.transaction_id, memo });
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
lastId = transactions[transactions.length - 1].transaction_id;
|
|
1727
|
+
}
|
|
1728
|
+
return found;
|
|
1729
|
+
}
|
|
1658
1730
|
}
|
|
1659
1731
|
/**
|
|
1660
1732
|
* Reads the commitment of the output at `outputIndex` (in the order `toStealthOutput()` was
|
|
@@ -2029,6 +2101,23 @@ async function recordKnownVersions(response) {
|
|
|
2029
2101
|
known.set(id, version);
|
|
2030
2102
|
await setKnownVersions(Object.fromEntries(known));
|
|
2031
2103
|
}
|
|
2104
|
+
/**
|
|
2105
|
+
* `execute()`'s raw submit result has no top-level `transactionId` -- unlike the SDK's own custom
|
|
2106
|
+
* operations (`shield`, `redeemStealthOutputAndExecute`, etc.), which all return that field
|
|
2107
|
+
* explicitly. dApp code built against those was reasonably reaching for `result.transactionId` on
|
|
2108
|
+
* `execute()`'s result too and finding nothing there. This tacks the same field on, non-destructively
|
|
2109
|
+
* (spread first, so a genuine future `transactionId` in the response itself would win), reading the
|
|
2110
|
+
* hash out of the one place it actually lives: `Finalized.execution_result.finalize.transaction_hash`.
|
|
2111
|
+
* Left untouched for "Pending"/"Rejected" outcomes and for a null `execution_result` (e.g. a
|
|
2112
|
+
* `Rejected`-at-the-fee-phase finalize) -- there is no hash to report for those.
|
|
2113
|
+
*/
|
|
2114
|
+
function withTransactionId(response) {
|
|
2115
|
+
const result = response.result;
|
|
2116
|
+
if (result === "Pending" || "Rejected" in result)
|
|
2117
|
+
return response;
|
|
2118
|
+
const transactionHash = result.Finalized.execution_result?.finalize.transaction_hash;
|
|
2119
|
+
return transactionHash !== undefined ? { ...response, transactionId: transactionHash } : response;
|
|
2120
|
+
}
|
|
2032
2121
|
/**
|
|
2033
2122
|
* Forgets what we thought we knew about these substates' versions, after the chain has told us a
|
|
2034
2123
|
* remembered one is unusable. Keeping it would make `applyKnownVersions` reassert it over every
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chironbuilder/ootle-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
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",
|