Se você vem do Ethereum, a maior mudança é onde o estado vive. Contratos EVM agrupam código e storage. A Solana separa programas (código) de contas (dados). Isso dirige paralelismo, dimensionamento de contas e padrões de segurança.
Uma conta grande para todos usuários - atinge limites de tamanho e impede paralelismo. Correção: uma conta por usuário/entidade com seeds PDA.
Esperar contexto implícito de caller - Solana não tem msg.sender global. Correção: passe contas signatárias e valide com constraints.
Chamar programas sem declarar contas - transações falham em runtime. Correção: liste toda conta que o callee precisa na transação.
Armazenar saldos dentro do binário do programa - impossível; programas são executáveis somente leitura. Correção: use contas de token ou saldos de lamports em contas de dados.
Assumir estado cross-program atômico - CPI compartilha locks de conta da transação. Correção: projete instruções com todas contas necessárias em uma transação.
Ignorar rent - contas precisam depósitos de lamports. Correção: financie contas até mínimo isento de rent na criação.