Contas Ethereum
Última atualização da página: 23 de fevereiro de 2026
Uma conta Ethereum é uma entidade com um saldo de ether (ETH) que pode enviar mensagens na Ethereum. As contas podem ser controladas pelo usuário ou implementadas como contratos inteligentes.
Pré-requisitos
Para ajudá-lo a entender melhor esta página, recomendamos que você primeiro leia nossa introdução ao Ethereum.
Tipos de conta
Ethereum tem dois tipos de contas:
- Conta de propriedade externa (EOA) — controlada por qualquer pessoa com as chaves privadas
- Conta de contrato — um contrato inteligente implantado na rede, controlado por código. Saiba mais sobre contratos inteligentes
Ambos os tipos de conta têm capacidade para:
- Receber, guardar e enviar ETH e tokens
- Interagir com contratos inteligentes implementados
Principais diferenças
Propriedade externa
- Não há custo para criar uma conta
- Pode iniciar transações
- Transações entre contas de propriedade externa só podem ser transferências de ETH/token
- Composto por um par de chaves criptográficas: chaves públicas e privadas que controlam as atividades da conta
Contrato
- Criar um contrato tem um custo porque você está usando o armazenamento de rede
- Pode enviar mensagens apenas em resposta ao recebimento de uma transação
- Transações de uma conta externa para uma conta contrato podem acionar um código que pode executar muitas ações diferentes, como transferir tokens ou até mesmo criar um contrato
- As contas de contrato não têm chaves privadas. Em vez disso, eles são controlados pela lógica do código do contrato inteligente
Análise de uma conta
As contas Ethereum têm quatro campos:
nonce– Um contador que indica o número de transações enviadas de uma conta de propriedade externa ou o número de contratos criados por uma conta de contrato. Apenas uma transação com um dado nonce pode ser executada para cada conta, protegendo contra ataques de repetição em que as transações assinadas são repetidamente transmitidas e reexecutadas.balance– O número de wei detido por este endereço. Wei é uma denominação de ETH e existem 1e + 18 Wei por ETH.codeHash– Este hash refere-se ao código de uma conta na máquina virtual Ethereum (EVM). Contas contratuais têm fragmentos de código programados que podem executar diferentes operações. Este código EVM é executado se a conta receber uma chamada de mensagem. Diferentemente dos outros campos da conta, ele não pode ser alterado. Todos esses fragmentos de código estão contidos na base de dados de estados sob suas hashes correspondentes para recuperação posterior. Este valor de hash é conhecido como codeHash. Para contas de propriedade externa, o campo codeHash é o hash de uma “string” vazia.storageRoot– Às vezes conhecido como um hash de armazenamento. Um hash de 256 bits do nó raiz de uma Trie Merkle Patricia que codifica o conteúdo de armazenamento da conta (um mapeamento entre valores inteiros de 256 bits), codificado na trie como um mapeamento do hash Keccak de 256 bits das chaves de inteiros de 256 bits para os valores inteiros de 256 bits codificados em RLP. Esta árvore codifica o hash do conteúdo de armazenamento desta conta e está vazia por padrão.
Diagrama adaptado de Ethereum EVM illustrated (opens in a new tab)
Contas de propriedade externa e pares de chaves
Uma conta é composta de um par de chaves criptográficas: pública e privada. Eles ajudam a provar que uma transação foi realmente assinada pelo remetente e evitam falsificações. Sua chave privada é o que você usa para assinar transações, portanto, concede a você a custódia dos fundos associados à sua conta. Você nunca tem criptomoeda, você tem chaves privadas - os fundos estão sempre no livro-razão do Ethereum.
Isso evita que agentes mal-intencionados transmitam transações falsas, porque você sempre pode verificar o remetente de uma transação.
Se Alice quer enviar ether da sua própria conta para a conta do Bob, Alice precisa criar um pedido de transação e enviá-lo para a rede para verificação. O uso da criptografia de chave pública na Ethereum, garante que a Alice possa provar que foi ela quem iniciou originalmente o pedido de transação. Sem mecanismos criptográficos, um adversário malicioso "Eve" poderia simplesmente transmitir publicamente uma solicitação como “enviar 5 ETH da conta de Alice para a conta de Eve", e ninguém poderia verificar que a transmissão não veio da Alice.
Criação de conta
Quando você quiser criar uma conta, a maioria das bibliotecas vai gerar uma chave privada aleatória.
Uma chave privada é composta por 64 caracteres hexadecimais e pode ser criptografada com uma senha.
Exemplo:
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f
A chave pública é gerada a partir da chave privada usando o Algoritmo de Assinatura Digital de Curva Elíptica (opens in a new tab). Você obtém um endereço público para sua conta pegando os últimos 20 bytes do hash Keccak-256 da chave pública e adicionando 0x no início.
Isso significa que uma conta de propriedade externa (EOA) possui um endereço de 42 caracteres (um segmento de 20 bytes que corresponde a 40 caracteres hexadecimais mais o prefixo 0x).
Exemplo:
0x5e97870f263700f46aa00d967821199b9bc5a120
O exemplo a seguir mostra como usar uma ferramenta de assinatura chamada Clef (opens in a new tab) para gerar uma nova conta. Clef é uma ferramenta de gerenciamento de contas e assinatura que vem junto com o cliente Ethereum, Geth (opens in a new tab). O comando clef newaccount cria um novo par de chaves e o salva em um repositório de chaves criptografado.
1> clef newaccount --keystore <path>23Insira uma senha para a nova conta a ser criada:4> <password>56------------7INFO [10-28|16:19:09.156] Sua nova chave foi gerada address=0x5e97870f263700f46aa00d967821199b9bc5a1208WARN [10-28|16:19:09.306] Faça o backup do seu arquivo de chave path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a1209WARN [10-28|16:19:09.306] Lembre-se da sua senha!10Conta gerada 0x5e97870f263700f46aa00d967821199b9bc5a120Exibir tudoDocumentação do Geth (opens in a new tab)
É possível derivar novas chaves públicas da sua chave privada, mas não é possível derivar uma chave privada de chaves públicas. É vital manter suas chaves privadas seguras e, como o nome sugere, PRIVADAS.
Você precisa de uma chave privada para assinar mensagens e transações que resultam em uma assinatura. Outros podem então pegar a assinatura derivada da sua chave pública, provando a autoria da mensagem. Em seu aplicativo, é possível usar uma biblioteca JavaScript para enviar transações para a rede.
Contas de contrato
As contas contratuais também têm um endereço hexadecimal de 42 caracteres:
Exemplo:
0x06012c8cf97bead5deae237070f9587f8e7a266d
O endereço do contrato é geralmente dado quando um contrato é implantado na Blockchain do Ethereum. O endereço vem do endereço do criador e do número de transações enviadas desse endereço (o “nonce”).
Chaves do validador
Há também outro tipo de chave no Ethereum, introduzida quando o Ethereum mudou de prova de trabalho para prova de participação baseado no consenso. Essas chaves são "BLS" e são usadas para identificar validadores. Essas chaves podem ser agregadas de forma eficiente para reduzir a largura de banda necessária para que a rede chegue a um consenso. Sem essa agregação de chaves, a participação mínima para um validador seria muito maior.
Mais sobre as chaves do validador.
Uma observação sobre carteiras
Uma conta não é uma carteira. Uma carteira é uma interface ou aplicativo que permite interagir com sua conta Ethereum, seja uma conta de propriedade externa ou uma conta de contrato.
Uma demonstração visual
Assista a Austin mostrando passo a passo as funções de hash e os pares de chaves.
Leitura adicional
Conhece um recurso da comunidade que o ajudou? Edite esta página e adicione-a!