• Wallet Connections: Always handle user rejection gracefully; do not proceed if a wallet declines a transaction.
  • Contract Calls:
    • Use .call() for reads (no gas).
    • Use .send() for state-changing writes (consumes VSG).
  • Environment Variables: Store RPC URLs, contract addresses, and API keys securely.