Uma conta Ethereum é uma entidade com saldo de ether (ETH) que pode enviar transações no Ethereum. As contas podem ser controladas pelo usuário ou implantadas como contratos inteligentes.
PRÉ-REQUISITOS
As contas são um tópico muito amigável para iniciantes. Mas para ajudá-lo a entender melhor, recomendamos que você leia primeiro nossa introdução ao Ethereum.
TIPOS DE CONTA
Ethereum tem dois tipos de conta:
• De propriedade externa - controlado por qualquer pessoa com as chaves privadas
• Contrato – um contrato inteligente implantado na rede, controlado por código. Saiba mais sobre contratos inteligentes
Ambos os tipos de conta têm a capacidade de:
• Receba, retenha e envie ETH e tokens
• Interaja com contratos inteligentes implantados
Principais diferenças
De propriedade externa
• Criar uma conta não custa nada
• Pode iniciar transações
• As transações entre contas de propriedade externa só podem ser transferências de ETH/token
Contrato
• A criação de um contrato tem um custo porque você está usando armazenamento em rede
• Só pode enviar transações em resposta ao recebimento de uma transação
• As transações de uma conta externa para uma conta de contrato podem acionar um código que pode executar muitas ações diferentes, como transferir tokens ou até mesmo criar um novo contrato
UMA CONTA EXAMINADA
As contas Ethereum têm quatro campos:
• nonce – Um contador que indica o número de transações enviadas da conta. Isso garante que as transações sejam processadas apenas uma vez. Em uma conta de contrato, esse número representa o número de contratos criados pela conta.
• saldo – O número de wei pertencentes a 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). As contas de contrato têm fragmentos de código programados que podem realizar diferentes operações. Esse código EVM será executado se a conta receber uma chamada de mensagem. Não pode ser alterado, ao contrário dos outros campos da conta. Todos esses fragmentos de código estão contidos no banco de dados de estado em seus hashes correspondentes para recuperação posterior. Esse 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 hash de armazenamento. Um hash de 256 bits do nó raiz de um Merkle Patricia trie que codifica o conteúdo de armazenamento da conta (um mapeamento entre valores inteiros de 256 bits), codificado no trie como um mapeamento do hash Keccak de 256 bits dos 256 bits -bit chaves inteiras para os valores inteiros de 256 bits codificados por RLP. Essa tentativa codifica o hash do conteúdo de armazenamento dessa conta e está vazia por padrão.


Name:  Capturar 1.PNG
Views: 25
Size:  44.0 KB


CONTAS DE PROPRIEDADE EXTERNA E PARES DE CHAVES
Uma conta é composta por 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 realmente possui criptomoeda, você possui chaves privadas - os fundos estão sempre no livro-razão da Ethereum.
Isso impede que agentes mal-intencionados transmitam transações falsas, pois você sempre pode verificar o remetente de uma transação.
Se Alice quiser enviar ether de sua própria conta para a conta de Bob, Alice precisa criar uma solicitação de transação e enviá-la à rede para verificação. O uso de criptografia de chave pública da Ethereum garante que Alice possa provar que ela iniciou originalmente a solicitação de transação. Sem mecanismos criptográficos, um adversário malicioso Eve poderia simplesmente transmitir publicamente uma solicitação que se parece com “enviar 5 ETH da conta de Alice para a conta de Eve”, e ninguém seria capaz de verificar se não veio de Alice.
CRIAÇÃO DE CONTA
Quando você deseja criar uma conta, a maioria das bibliotecas gera uma chave privada aleatória.
Uma chave privada é composta por 64 caracteres hexadecimais e pode ser criptografada com uma senha.
Exemplo:
fffffffffffffffffffffffffffffffebaaedce6af48a03bbf d25e8cd036415f
A chave pública é gerada a partir da chave privada usando o Algoritmo de Assinatura Digital de Curva Elíptica. 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 ao início.
Aqui está um exemplo de criação de uma conta no console usando personal_newAccount do GETH
1> pessoal.novaconta()
2Senha:
3Repita a senha:
4"0x5e97870f263700f46aa00d967821199b9bc5a120"
5
6> pessoal.novaConta("h4ck3r")
7"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc"
8
Documentação GETH
É possível derivar novas chaves públicas de sua chave privada, mas você não pode derivar uma chave privada de chaves públicas. Isso significa que é vital manter uma chave privada segura e, como o nome sugere, PRIVADA.
Você precisa de uma chave privada para assinar mensagens e transações que geram uma assinatura. Outros podem então pegar a assinatura para derivar sua chave pública, comprovando o autor da mensagem. Em seu aplicativo, você pode usar uma biblioteca javascript para enviar transações para a rede.
CONTAS DE CONTRATO
As contas de contrato também têm um endereço hexadecimal de 42 caracteres:
Exemplo:
0x06012c8cf97bead5deae237070f9587f8e7a266d
O endereço do contrato geralmente é fornecido quando um contrato é implantado no Ethereum Blockchain. O endereço vem do endereço do criador e do número de transações enviadas desse endereço (o “nonce”).
UMA NOTA SOBRE AS CARTEIRAS
Uma conta não é uma carteira. Uma conta é o par de chaves para uma conta Ethereum de propriedade do usuário. Uma carteira é uma interface ou aplicativo que permite interagir com sua conta Ethereum.