IkaTransaction API Reference
IkaTransaction is the client for building transactions that involve dWallet operations. It wraps Sui transactions and provides high-level methods for Distributed Key Generation (DKG), presigning, signing, and key management operations.
You need to instantiate it once in every Programmable Transaction Block (PTB) that involves dWallet operations.
Before using IkaTransaction, ensure you have an initialized IkaClient and optionally UserShareEncryptionKeys for cryptographic operations.
Methods marked with security warnings require careful verification of inputs to maintain zero-trust security guarantees.
Basic Setup​
import {
IkaClient,
IkaTransaction,
UserShareEncryptionKeys,
createRandomSessionIdentifier,
Curve,
SignatureAlgorithm,
Hash
} from '@ika.xyz/sdk';
import { Transaction } from '@mysten/sui/transactions';
// Initialize somewhere in your app
const ikaClient = new IkaClient({...});
await ikaClient.initialize();
// Optional: Set up user share encryption keys for encrypted operations
const userKeys = await UserShareEncryptionKeys.fromRootSeedKey(seedKey, Curve.SECP256K1); // or other supported curves
// Get user's IKA coin for transaction fees
const userIkaCoin = tx.object('0x...'); // User's IKA coin object ID
const tx = new Transaction();
const ikaTx = new IkaTransaction({
ikaClient,
transaction: tx,
userShareEncryptionKeys: userKeys
});
DKG Operations​
requestDWalletDKG​
Request the DKG (Distributed Key Generation) to create a dWallet with encrypted user shares.
const dwalletCap = await ikaTx.requestDWalletDKG({
dkgRequestInput: dkgRequestInput,
sessionIdentifier: ikaTx.createSessionIdentifier(),
dwalletNetworkEncryptionKeyId: networkEncryptionKeyId,
curve: Curve.SECP256K1, // or Curve.SECP256R1, Curve.ED25519, etc.
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// With optional signing during DKG
const dwalletCap = await ikaTx.requestDWalletDKG({
dkgRequestInput: dkgRequestInput,
sessionIdentifier: ikaTx.createSessionIdentifier(),
dwalletNetworkEncryptionKeyId: networkEncryptionKeyId,
curve: Curve.SECP256K1,
signDuringDKGRequest: {
message: messageBytes,
presign: presignObject,
verifiedPresignCap: verifiedPresignCapObject,
hashScheme: Hash.KECCAK256,
signatureAlgorithm: SignatureAlgorithm.ECDSASecp256k1,
},
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dkgRequestInput: Cryptographic data prepared for the DKGsessionIdentifier: The session identifier objectdwalletNetworkEncryptionKeyId: The dWallet network encryption key IDcurve: The elliptic curve identifier (e.g.,Curve.SECP256K1,Curve.SECP256R1,Curve.ED25519)signDuringDKGRequest: Optional: Sign a message during DKG (includes message, presign, verifiedPresignCap, hashScheme, signatureAlgorithm)ikaCoin: User's IKA coin object for feessuiCoin: SUI coin object for gas
Returns: Promise<TransactionResult> - The DWallet capability
requestDWalletDKGWithPublicUserShare​
Request the DKG with public user shares to create a shared dWallet.
const dwalletCap = await ikaTx.requestDWalletDKGWithPublicUserShare({
sessionIdentifier: ikaTx.createSessionIdentifier(),
dwalletNetworkEncryptionKeyId: networkEncryptionKeyId,
curve: Curve.SECP256K1, // or Curve.SECP256R1, Curve.ED25519, etc.
publicKeyShareAndProof: publicKeyShareAndProofBytes,
publicUserSecretKeyShare: publicUserSecretKeyShareBytes,
userPublicOutput: userPublicOutputBytes,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// With optional signing during DKG
const dwalletCap = await ikaTx.requestDWalletDKGWithPublicUserShare({
sessionIdentifier: ikaTx.createSessionIdentifier(),
dwalletNetworkEncryptionKeyId: networkEncryptionKeyId,
curve: Curve.SECP256K1,
publicKeyShareAndProof: publicKeyShareAndProofBytes,
publicUserSecretKeyShare: publicUserSecretKeyShareBytes,
userPublicOutput: userPublicOutputBytes,
signDuringDKGRequest: {
message: messageBytes,
presign: presignObject,
verifiedPresignCap: verifiedPresignCapObject,
hashScheme: Hash.KECCAK256,
signatureAlgorithm: SignatureAlgorithm.ECDSASecp256k1,
},
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
sessionIdentifier: The session identifier objectdwalletNetworkEncryptionKeyId: The dWallet network encryption key IDcurve: The elliptic curve identifier (e.g.,Curve.SECP256K1,Curve.SECP256R1,Curve.ED25519)publicKeyShareAndProof: The public key share and proofpublicUserSecretKeyShare: The public user secret key shareuserPublicOutput: The user's public output from the DKG processsignDuringDKGRequest: Optional: Sign a message during DKG (includes message, presign, verifiedPresignCap, hashScheme, signatureAlgorithm)ikaCoin: User's IKA coin object for feessuiCoin: SUI coin object for gas
Returns: Promise<TransactionResult> - The DWallet capability
Presigning Operations​
requestPresign​
Requests a presign operation for a specific dWallet. Use this for ECDSA signatures with imported key dWallets.
const unverifiedPresignCap = ikaTx.requestPresign({
dWallet: dwalletObject,
signatureAlgorithm: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The dWallet to create the presign forsignatureAlgorithm: Signature algorithm to useikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: TransactionObjectArgument - The unverified presign capability
requestGlobalPresign​
Requests a global presign operation. Use this for Schnorr, SchnorrKell, EdDSA, and Taproot signatures.
const unverifiedPresignCap = ikaTx.requestGlobalPresign({
dwalletNetworkEncryptionKeyId: networkEncryptionKeyId,
curve: Curve.SECP256K1,
signatureAlgorithm: SignatureAlgorithm.Schnorr,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dwalletNetworkEncryptionKeyId: The network encryption key ID to use for the presigncurve: The elliptic curve to usesignatureAlgorithm: The signature algorithm to use (must be valid for the curve)ikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: TransactionObjectArgument - The unverified presign capability
verifyPresignCap​
Verifies a presign capability to ensure it can be used for signing.
const verifiedPresignCap = ikaTx.verifyPresignCap({
presign: presignObject,
});
Parameters:
presign: The presign object to verify
Returns: TransactionObjectArgument - The verified presign capability
Message Approval​
approveMessage​
Approves a message for signing with a dWallet.
const messageApproval = ikaTx.approveMessage({
dWalletCap: dwalletObject.dwallet_cap_id,
curve: Curve.SECP256K1,
signatureAlgorithm: SignatureAlgorithm.ECDSASecp256k1,
hashScheme: Hash.KECCAK256,
message: messageBytes,
});
Parameters:
dWalletCap: The dWalletCap object, that owns the dWalletcurve: The elliptic curve to use for the approvalsignatureAlgorithm: The signature algorithm to use (must be valid for the curve)hashScheme: Hash scheme to apply to the message (must be valid for the signature algorithm)message: The message bytes to approve
Returns: TransactionObjectArgument - The message approval object
approveImportedKeyMessage​
Approves a message for signing with an imported key dWallet.
const importedKeyMessageApproval = ikaTx.approveImportedKeyMessage({
dWalletCap: importedDWallet.dwallet_cap_id,
curve: Curve.SECP256K1,
signatureAlgorithm: SignatureAlgorithm.ECDSASecp256k1,
hashScheme: Hash.KECCAK256,
message: messageBytes,
});
Parameters:
dWalletCap: The dWalletCap object, that owns the imported key dWalletcurve: The elliptic curve to use for the approvalsignatureAlgorithm: The signature algorithm to use (must be valid for the curve)hashScheme: Hash scheme to apply to the message (must be valid for the signature algorithm)message: The message bytes to approve
Returns: TransactionObjectArgument - The imported key message approval object
Signing Operations​
requestSign​
Signs a message using a dWallet (ZeroTrust or Shared). Automatically detects the dWallet type and signing method based on available shares.
Always verify secret shares and public outputs in production environments when using unencrypted shares.
// ZeroTrust DWallet with encrypted shares
const signatureId = await ikaTx.requestSign({
dWallet: dwalletObject,
messageApproval: messageApprovalObject,
hashScheme: Hash.KECCAK256,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
encryptedUserSecretKeyShare: encryptedShare,
message: messageBytes,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ZeroTrust DWallet with unencrypted shares
const signatureId = await ikaTx.requestSign({
dWallet: dwalletObject,
messageApproval: messageApprovalObject,
hashScheme: Hash.KECCAK256,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
secretShare: secretShareBytes,
publicOutput: publicOutputBytes,
message: messageBytes,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// Shared DWallet with public shares (no secret params needed)
const signatureId = await ikaTx.requestSign({
dWallet: sharedDWallet,
messageApproval: messageApprovalObject,
hashScheme: Hash.KECCAK256,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
message: messageBytes,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The dWallet to sign with (ZeroTrust or Shared DWallet)messageApproval: Message approval from approveMessagehashScheme: Hash scheme to use for the message (must be valid for the signature algorithm)verifiedPresignCap: The verified presign capabilitypresign: The completed presign objectencryptedUserSecretKeyShare: Optional: encrypted user secret key share (for ZeroTrust DWallets)secretShare: Optional: unencrypted secret share (requires publicOutput, for ZeroTrust DWallets)publicOutput: Optional: public output (required when using secretShare, for ZeroTrust DWallets)message: The message bytes to signsignatureScheme: The signature algorithm to useikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<TransactionObjectArgument> - The signature ID
requestSignWithImportedKey​
Signs using an Imported Key dWallet. Automatically detects the dWallet type and signing method based on available shares.
// ImportedKeyDWallet with encrypted shares
const signatureId = await ikaTx.requestSignWithImportedKey({
dWallet: importedKeyDWallet,
importedKeyMessageApproval: importedKeyMessageApprovalObject,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
hashScheme: Hash.KECCAK256,
message: messageBytes,
encryptedUserSecretKeyShare: encryptedShare,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1, // Optional, defaults to ECDSASecp256k1
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ImportedKeyDWallet with unencrypted shares
const signatureId = await ikaTx.requestSignWithImportedKey({
dWallet: importedKeyDWallet,
importedKeyMessageApproval: importedKeyMessageApprovalObject,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
hashScheme: Hash.KECCAK256,
message: messageBytes,
secretShare: secretShareBytes,
publicOutput: publicOutputBytes,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ImportedSharedDWallet with public shares (no secret params needed)
const signatureId = await ikaTx.requestSignWithImportedKey({
dWallet: importedSharedDWallet,
importedKeyMessageApproval: importedKeyMessageApprovalObject,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
hashScheme: Hash.KECCAK256,
message: messageBytes,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The Imported Key dWallet to sign with (ImportedKeyDWallet or ImportedSharedDWallet)importedKeyMessageApproval: Imported key message approval from approveImportedKeyMessagehashScheme: Hash scheme to use for the message (must be valid for the signature algorithm)verifiedPresignCap: The verified presign capabilitypresign: The completed presign objectencryptedUserSecretKeyShare: Optional: encrypted user secret key share (for ImportedKeyDWallet)secretShare: Optional: unencrypted secret share (requires publicOutput, for ImportedKeyDWallet)publicOutput: Optional: public output (required when using secretShare, for ImportedKeyDWallet)message: The message bytes to signsignatureScheme: Optional: signature algorithm (defaults to ECDSASecp256k1)ikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<TransactionObjectArgument> - The signature ID
Future Signing​
requestFutureSign​
Creates a partial signature for later completion. Automatically detects dWallet type and signing method based on available shares.
// ZeroTrust DWallet with encrypted shares
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSign({
dWallet: dwalletObject,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
encryptedUserSecretKeyShare: encryptedShare,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ZeroTrust DWallet with unencrypted shares
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSign({
dWallet: dwalletObject,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
secretShare: secretShareBytes,
publicOutput: publicOutputBytes,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// Shared DWallet with public shares (no secret params needed)
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSign({
dWallet: sharedDWallet,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The dWallet to create the future sign for (ZeroTrust or Shared DWallet)verifiedPresignCap: The verified presign capabilitypresign: The completed presign objectencryptedUserSecretKeyShare: Optional: encrypted user secret key share (for ZeroTrust DWallets)secretShare: Optional: unencrypted secret share (requires publicOutput, for ZeroTrust DWallets)publicOutput: Optional: public output (required when using secretShare, for ZeroTrust DWallets)message: The message bytes to pre-signhashScheme: The hash scheme to use for the messagesignatureScheme: The signature algorithm to useikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<TransactionObjectArgument> - The unverified partial user signature capability
requestFutureSignWithImportedKey​
Creates a partial signature for later completion using Imported Key dWallets. Automatically detects dWallet type and signing method based on available shares.
// ImportedKeyDWallet with encrypted shares
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSignWithImportedKey({
dWallet: importedKeyDWallet,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
encryptedUserSecretKeyShare: encryptedShare,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ImportedKeyDWallet with unencrypted shares
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSignWithImportedKey({
dWallet: importedKeyDWallet,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
secretShare: secretShareBytes,
publicOutput: publicOutputBytes,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
// ImportedSharedDWallet with public shares (no secret params needed)
const unverifiedPartialUserSignatureCap = await ikaTx.requestFutureSignWithImportedKey({
dWallet: importedSharedDWallet,
verifiedPresignCap: verifiedPresignCapObject,
presign: presignObject,
message: messageBytes,
hashScheme: Hash.KECCAK256,
signatureScheme: SignatureAlgorithm.ECDSASecp256k1,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The Imported Key dWallet to create the future sign for (ImportedKeyDWallet or ImportedSharedDWallet)verifiedPresignCap: The verified presign capabilitypresign: The completed presign objectencryptedUserSecretKeyShare: Optional: encrypted user secret key share (for ImportedKeyDWallet)secretShare: Optional: unencrypted secret share (requires publicOutput, for ImportedKeyDWallet)publicOutput: Optional: public output (required when using secretShare, for ImportedKeyDWallet)message: The message bytes to pre-signhashScheme: The hash scheme to use for the messagesignatureScheme: The signature algorithm to useikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<TransactionObjectArgument> - The unverified partial user signature capability
futureSign​
Completes a future sign operation using a partial signature.
const signatureId = ikaTx.futureSign({
partialUserSignatureCap: partialSignatureObject.cap_id,
messageApproval: messageApprovalObject,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
partialUserSignatureCap: The partial user signature capability created by requestFutureSignmessageApproval: The message approval from approveMessageikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: TransactionObjectArgument - The signature ID
futureSignWithImportedKey​
Completes a future sign operation for imported key using a partial signature.
const signatureId = ikaTx.futureSignWithImportedKey({
partialUserSignatureCap: partialSignatureObject.cap_id,
importedKeyMessageApproval: importedKeyMessageApprovalObject,
ikaCoin: userIkaCoin,
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
partialUserSignatureCap: The partial user signature capability created by requestFutureSignWithImportedKeyimportedKeyMessageApproval: The imported key message approval from approveImportedKeyMessageikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: TransactionObjectArgument - The signature ID
Imported Key Operations​
requestImportedKeyDWalletVerification​
Creates a dWallet from an existing cryptographic key.
const importedKeyDWalletCap = await ikaTx.requestImportedKeyDWalletVerification({
importDWalletVerificationRequestInput: verificationInput,
curve: Curve.SECP256K1,
signerPublicKey: publicKeyBytes,
sessionIdentifier: createRandomSessionIdentifier(),
ikaCoin: userIkaCoin, // User's IKA coin object
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
importDWalletVerificationRequestInput: The prepared verification data from prepareImportedKeyDWalletVerificationcurve: The elliptic curve identifier used for the imported keysignerPublicKey: The public key of the transaction signersessionIdentifier: Unique session identifier for this operationikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<TransactionObjectArgument> - The imported key dWallet capability
User Share Management​
acceptEncryptedUserShare​
Accepts an encrypted user share for a dWallet. This method has two overloads:
For regular dWallet:
await ikaTx.acceptEncryptedUserShare({
dWallet: dwalletObject,
userPublicOutput: userPublicOutputBytes,
encryptedUserSecretKeyShareId: 'share_id',
});
For transferred dWallet:
await ikaTx.acceptEncryptedUserShare({
dWallet: dwalletObject,
sourceEncryptionKey: sourceEncryptionKeyObject,
sourceEncryptedUserSecretKeyShare: sourceEncryptedShare,
destinationEncryptedUserSecretKeyShare: destinationEncryptedShare,
});
Parameters:
For regular dWallet:
dWallet: The dWallet object to accept the share foruserPublicOutput: The user's public output from the DKG processencryptedUserSecretKeyShareId: The ID of the encrypted user secret key share
For transferred dWallet:
dWallet: The dWallet object to accept the share forsourceEncryptionKey: The encryption key used to encrypt the user's secret sharesourceEncryptedUserSecretKeyShare: The encrypted user secret key sharedestinationEncryptedUserSecretKeyShare: The encrypted user secret key share
Returns: Promise<IkaTransaction> - The updated IkaTransaction instance
requestReEncryptUserShareFor​
Re-encrypts and transfers user shares to another address. This method has two overloads:
Using encrypted shares (automatic decryption):
await ikaTx.requestReEncryptUserShareFor({
dWallet: dwalletObject,
destinationEncryptionKeyAddress: '0x...',
sourceEncryptedUserSecretKeyShare: encryptedShare,
ikaCoin: userIkaCoin, // User's IKA coin object
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Using unencrypted secret shares:
await ikaTx.requestReEncryptUserShareFor({
dWallet: dwalletObject,
destinationEncryptionKeyAddress: '0x...',
sourceSecretShare: secretShareBytes,
sourceEncryptedUserSecretKeyShare: encryptedShare,
ikaCoin: userIkaCoin, // User's IKA coin object
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The dWallet whose user share is being transferreddestinationEncryptionKeyAddress: The Sui address that will receive the re-encrypted sharesourceEncryptedUserSecretKeyShare: The current user's encrypted secret key sharesourceSecretShare: Optional: The current user's unencrypted secret shareikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: Promise<IkaTransaction> - The updated IkaTransaction instance
makeDWalletUserSecretKeySharesPublic​
Converts encrypted shares to public shares.
ikaTx.makeDWalletUserSecretKeySharesPublic({
dWallet: dwalletObject,
secretShare: secretShareBytes,
ikaCoin: userIkaCoin, // User's IKA coin object
suiCoin: tx.splitCoins(tx.gas, [1000000]),
});
Parameters:
dWallet: The dWallet to make the shares public forsecretShare: The secret share data to make publicikaCoin: User's IKA coin objectsuiCoin: SUI coin object
Returns: IkaTransaction - The updated IkaTransaction instance
Key Management​
registerEncryptionKey​
Registers an encryption key for the current user.
await ikaTx.registerEncryptionKey({
curve: Curve.SECP256K1,
});
Parameters:
curve: The elliptic curve identifier to register the key for
Returns: Promise<IkaTransaction> - The updated IkaTransaction instance
Session Management​
createSessionIdentifier​
Creates a unique session identifier for the transaction.
const sessionId = ikaTx.createSessionIdentifier();
Returns: TransactionObjectArgument - Session identifier object
registerSessionIdentifier​
Registers a unique session identifier for the current transaction.
const sessionId = ikaTx.registerSessionIdentifier(sessionIdentifierBytes);
Parameters:
sessionIdentifier: The session identifier bytes to register
Returns: TransactionObjectArgument - The session identifier transaction object argument
Utility Methods​
hasDWallet​
Checks if a DWallet with the specified ID exists in the coordinator.
const exists = ikaTx.hasDWallet({
dwalletId: '0x...',
});
Parameters:
dwalletId: The ID of the DWallet to check
Returns: TransactionObjectArgument - Transaction result indicating whether the DWallet exists (returns a boolean)
getDWallet​
Gets a reference to a DWallet object from the coordinator.
const dwalletRef = ikaTx.getDWallet({
dwalletId: '0x...',
});
Parameters:
dwalletId: The ID of the DWallet to retrieve
Returns: TransactionObjectArgument - Transaction result containing a reference to the DWallet object
Methods marked with security warnings require careful verification of inputs to maintain zero-trust security guarantees.