Skip to content
Documentation/canton-network-docs/Release NotesWallet SDKView on canton-network-docs
canton-network-docs/Release NotesWallet SDK

0.10.0

0.10.0

Released on October 2nd, 2025
  • Self-issue feature app rights
you can now grant yourself feature app rights (similar to the wallet UI) for both internal and external parties
// For external parties
const [command,disclosedContracts] = sdk.tokenStandard!.selfGrantFeatureAppRights()

await sdk.userLedger?.prepareSignExecuteAndWaitFor(
    command,
    keyPair.privateKey,
    v4(),
    disclosedContracts
)

// For internal parties
await sdk.tokenStandard!.grantFeatureAppRightsForInternalParty()
  • localNet variation for AppProvider & AppUser
you can now use both the appProvider and AppUser easily for show operations between two validators
    const providerSDK = new WalletSDKImpl().configure({
        logger,
        authFactory: localNetAuthDefault,
        ledgerFactory: localNetLedgerAppProvider, //new variations here
        topologyFactory: localNetTopologyAppProvider, //new variations here
        tokenStandardFactory: localNetTokenStandardAppProvider, //new variations here
        validatorFactory: localValidatorDefault,
    })

    const userSDK = new WalletSDKImpl().configure({
        logger,
        authFactory: localNetAuthDefault,
        ledgerFactory: localNetLedgerAppUser, //new variations here
        topologyFactory: localNetTopologyAppUser, //new variations here
        tokenStandardFactory: localNetTokenStandardAppUser, //new variations here
        validatorFactory: localValidatorDefault,
    })
LocalNet..Default still exists, they as previously defaults to the appUser validator
  • topology transaction recalculate hash
you can now offline validate a topology transaction by recomputing the hash
const recomputeHash = await TopologyController.computeTopologyTxHash(
    prepared!.partyTransactions
)

if (recomputeHash !== prepared!.combinedHash) {
    throw new Error(
        'Recomputed hash does not match prepared combined hash'
    )
}
  • new awaiting variation with prepareSignExecuteAndWaitFor & executeSubmissionAndWaitFor
release 0.7.0 introduced the waitForCompletion, we have now backed that into the executions
// PREVIOUS CODE EXAMPLE
//it is recommended to fetch ledger offset before preparing your command
const offsetLatest = (await sdk.userLedger?.ledgerEnd())?.offset ?? 0

const transferCommandId =
    // prepareSignAndExecuteTransaction & prepareSign now returns the commandId
    await sdk.userLedger?.prepareSignAndExecuteTransaction(
        [{ ExerciseCommand: transferCommand }],
        keyPairSender.privateKey,
        v4(),
        disclosedContracts2
    )

//new command that scans the ledger to ensure the command have completed
const completion = await sdk.userLedger?.waitForCompletion(
    offsetLatest, //where to start from
    5000, //optional timeout in ms
    transferCommandId! //the command to look for
)

// NEW VARIATION
const completion =
        await sdk.userLedger?.prepareSignExecuteAndWaitFor(
            transferCommand,
            keyPairSender.privateKey,
            v4(),
            disclosedContracts,
            10000 // 10 second timeout, if no value is provided here a default of 15 seconds is used
        )

// VARIATION FOR `ExecuteSubmission`
const completion =
        await onlineSDK.userLedger?.executeSubmissionAndWaitFor(
            transferCommand,
            signedHash,
            keyPairSender.publicKey,
            v4()
        )
  • executeSubmission now returns the submissionId similarly to prepareSignAndExecuteTransaction
  • fixed thrown exception for missing seed when using TopologyController.createTransactionHash
  • prepareSubmission now has same command input signature as prepareSignAndExecuteTransaction