canton-network-docs/Release NotesWallet SDK
0.6.0
0.6.0
Released on September 16th, 2025
- ledgerFactory, TopologyFactory & ValidatorFactory changed to use URL instead of strings (where applicable)
const myLedgerFactory = (userId: string, token: string) => {
return new LedgerController(
userId,
new URL('http://my-json-ledger-api'), //HERE
token
)
}
const myTopologyFactory = (
userId: string,
userAdminToken: string,
synchronizerId: string
) => {
return new TopologyController(
'my-grpc-admin-api',
new URL('http://my-json-ledger-api'), //HERE
userId,
userAdminToken,
synchronizerId
)
}
const myValidatorFactory = (userId: string, token: string) => {
return new ValidatorController(
userId,
new URL('http://my-validator-app-api'), //HERE
token
)
}
- connectTopology now uses scanProxy instead of scan for proper decentralized setup
- stronger typing now required strings of specific formats for parties across all controllers
- fixed a bug where the combinedHash returned from topologyController.prepareExternalPartyTopology was in hex encoding instead of base64
const preparedParty = await sdk.topology?.prepareExternalPartyTopology(
keyPair.publicKey
)
logger.info('Prepared external topology')
if (preparedParty) {
logger.info('Signing the hash')
const signedHash = signTransactionHash(
//previously this would have to be converted from hex to base64
preparedParty?.combinedHash,
keyPair.privateKey
)
const allocatedParty = await sdk.topology?.submitExternalPartyTopology(
signedHash,
preparedParty
)
- fixed a bug that caused the expectedDso field to be required when performing TransferPreApprovalProposal (this is only required after Splice 0.1.11)
- simplified setParty & setSynchronizer, now it can all be done with one call on sdk.setPartyId()
//the connects are still needed and should be run before sdk.setPartyId
await sdk.connect()
await sdk.connectAdmin()
await sdk.connectTopology(LOCALNET_SCAN_API_URL)
//Previously all these was required to get everything working
sdk.userLedger!.setPartyId(partyId)
sdk.userLedger!.setSynchronizerId(synchronizerId)
sdk.tokenStandard?.setPartyId(partyId)
sdk.tokenStandard?.setSynchronizerId(synchronizerId)
sdk.validator?.setPartyId(partyId)
sdk.validator?.setSynchronizerId(synchronizerId)
//New version
await sdk.setPartyId(partyId,synchronizerId)
//synchronizerId is optional, it will automatically select the first synchronizerId,
//that the party is connected to if, none is defined