Function Signature

signTransaction(params: {
  senderAddress: string;
  transaction: TransactionSerializable;
  password?: string;
  externalServerKeyShares?: ServerKeyShare[];
}): Promise<string>

Description

Signs an EVM transaction using the specified wallet address. This function requires external server key shares and a valid session ID for authentication.

Parameters

Required Parameters

  • senderAddress (string) - The wallet address to sign with (must include 0x prefix)
  • transaction (TransactionSerializable) - The transaction to sign (viem format)

Optional Parameters

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

Returns

  • Promise<string> - The signed transaction as a hex string

Example

import { authenticatedEvmClient } from './client';
import { parseEther } from 'viem/utils';

const evmClient = await authenticatedEvmClient();

const signedTx = await evmClient.signTransaction({
  senderAddress: '0xYourWalletAddress',
  transaction: {
    to: '0xRecipientAddress',
    value: parseEther('0.1'),
    chain: base,
    account: '0xYourWalletAddress',
  },
  externalServerKeyShares: [
    {
      chainName: 'base-sepolia',
      keyShare: '0x1234567890',
    },
  ],
  password: 'optional-password',
});

console.log('Signed transaction:', signedTx);

Key Share Format

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

Error Handling

try {
  const signedTx = await evmClient.signTransaction({
    senderAddress: '0xYourWalletAddress',
    transaction: tx,
    externalServerKeyShares: keyShares,
  });
  console.log('Transaction signed successfully');
} catch (error) {
  console.error('Failed to sign transaction:', error);
}

Security Considerations

  • Transaction Validation: Always validate transaction parameters before signing
  • Key Share Security: Keep external server key shares secure
  • Session Management: Implement proper session management
  • Network Verification: Ensure you’re signing transactions for the correct network