Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt

Use this file to discover all available pages before exploring further.

Function Signature

storeEncryptedBackupByWallet(params: {
  accountAddress: string;
  walletMetadata: WalletMetadata;
  externalServerKeyShares: ServerKeyShare[];
  password?: string;
  backUpToDynamic: boolean;
}): Promise<{
  keySharesWithBackupStatus: Array<{
    share: ServerKeyShare;
    backedUpToClientKeyShareService: boolean;
  }>;
  backupInfo: KeyShareBackupInfo;
}>

Description

Stores encrypted backup for a wallet’s external server key shares on Dynamic’s key share service. Returns the per-share backup status and an updated backupInfomerge backupInfo into your cached walletMetadata.externalServerKeySharesBackupInfo to keep it consistent.

Parameters

Required Parameters

  • accountAddress (string) - The wallet address (must include 0x prefix). Must match walletMetadata.accountAddress.
  • walletMetadata (WalletMetadata) - The cached metadata for this wallet
  • externalServerKeyShares (ServerKeyShare[]) - Plaintext shares to back up
  • backUpToDynamic (boolean) - Whether to back the shares up to Dynamic’s key share service

Optional Parameters

  • password (string) - Required when backUpToDynamic is true; used to encrypt the backup

Returns

  • Promise<object>
    • keySharesWithBackupStatus — per-share backup status
    • backupInfo (KeyShareBackupInfo) — updated backup-pointer state; merge into cached walletMetadata.

Example

import { authenticatedEvmClient } from './client';

const evmClient = await authenticatedEvmClient();
const walletMetadata = JSON.parse(await redis.get(`wallet:${accountAddress}`));
const externalServerKeyShares = await vault.read(`wallet:${accountAddress}/shares`);

const { keySharesWithBackupStatus, backupInfo } = await evmClient.storeEncryptedBackupByWallet({
  accountAddress,
  walletMetadata,
  externalServerKeyShares,
  password: 'user-password',
  backUpToDynamic: true,
});

// Re-cache the updated metadata.
const updated = { ...walletMetadata, externalServerKeySharesBackupInfo: backupInfo };
await redis.set(`wallet:${accountAddress}`, JSON.stringify(updated));