- 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.