SIGN IN SIGN UP

feat(client): subaccounts(dappName).invoke — run calls through a sub-account (#923)

build().subaccounts(dappName).invoke(nonce, { calls }) queues a STRK20_SUBACCOUNT_INVOKE_ACTION
(local shim mirroring the wallet-api schema: { dapp_name, nonce (FELT), calls: INVOKE_CALL[] })
carrying the dapp's starknet Call[] mapped to the strk20 snake_case wire shape. The SDK prover maps
it to core's build().subaccounts(dappName).invoke(nonce, { calls }) — a ComputeAndInvoke against the
anonymizer (computeAdditionalData = [dappName, nonce], invokeAdditionalData from the calls). The
calls' proceeds settle into the same-tx open notes (transfer OPEN), so open-note counts must match;
not otherwise coupled to open notes. Exports STRK20_SUBACCOUNT_INVOKE_ACTION + Strk20Call. 2 tests.

<!-- Reviewable:start -->
- - -
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/starkware-libs/starknet-privacy/923)
<!-- Reviewable:end -->
I
Ittay Dror committed
91c938e66d14c3112bbe6d9c31a18b26bd3bc682
Parent: adc4b8b
Committed by GitHub <noreply@github.com> on 8/2/2026, 11:51:08 AM