Function Signature

signMessage(params: {
  message: string;
  accountAddress: string;
  password?: string;
  externalServerKeyShares?: ServerKeyShare[];
}): Promise<string>

Description

Signs a message using the specified EVM wallet address. This function optionally accepts external server key shares for advanced key management scenarios.

Parameters

Required Parameters

  • message (string) - The message to sign
  • accountAddress (string) - The wallet address to sign with (must include 0x prefix)

Optional Parameters

  • password (string) - Wallet password (if wallet is password-protected)
  • externalServerKeyShares (ServerKeyShare[]) - Array of external server key shares (for advanced key management)

Returns

  • Promise<string> - The serialized signature as a hex string

Example

import { authenticatedEvmClient } from './client';

const evmClient = await authenticatedEvmClient();

const signature = await evmClient.signMessage({
  message: 'Hello, World!',
  accountAddress: '0xYourWalletAddress',
  externalServerKeyShares: [
    {
      chainName: 'base-sepolia',
      keyShare: '0x1234567890',
    },
  ],
  password: 'optional-password',
});

console.log('Message signed:', signature);

Key Share Format

// ServerKeyShare type from @dynamic-labs-wallet/node
const externalServerKeyShares: ServerKeyShare[] = [
  // ServerKeyShare objects
];

Error Handling

try {
  const signature = await evmClient.signMessage({
    message: 'Hello world',
    accountAddress: '0xYourWalletAddress',
    externalServerKeyShares,
  });
  console.log('Message signed successfully');
} catch (error) {
  console.error('Failed to sign message:', error);
}

Security Considerations

  • Message Validation: Always validate message content before signing
  • Key Share Security: Keep external server key shares secure
  • Session Management: Implement proper session management
  • Password Protection: Use strong passwords for wallet encryption