As carteiras são ferramentas essenciais que permitem aos utilizadores gerir as suas contas de blockchain, armazenar os seus ativos de forma segura e assinar transações para efetuar alterações no estado da blockchain.
Neste post, abordaremos o que é uma carteira, como as carteiras são feitas e como utilizam a criptografia de curva elíptica para gerar e garantir pares de chaves privadas-públicas, derivar frases de semente e facilitar interações seguras com a blockchain.
Cada conta na blockchain é composta por um par de chaves criptográficas; um conjunto de 2 chaves que estão vinculadas entre si. No contexto das blockchains, este tipo de conta é tipicamente chamado de Conta Externa de Propriedade (EOA) e consiste em uma chave pública e uma chave privada:
Chave pública: o endereço da sua carteira. Ele pode ser compartilhado com qualquer pessoa, e outras pessoas (ou contratos inteligentes) podem usá-lo para enviar criptomoedas.- Chave privada: A "chave de assinatura" que você usa para assinar mensagens ou transações. Qualquer pessoa que tenha acesso à chave privada tem controle total sobre os fundos na carteira.Este par de chaves tem uma função poderosa, chamada de função de porta de armadilha; o que significa que é:
Fácil de descobrir a chave pública se tiver a chave privada (A→B).- Impossível descobrir a chave privada se você tiver a chave pública (B→A).
As carteiras fornecem uma maneira de saber quais mensagens ou transações uma carteira concordou; uma vez que a chave pública do remetente da transação pode ser recuperada a partir da assinatura da transação. Isto é essencial para evitar que transações falsas/maliciosas sejam aceites na blockchain.
Por exemplo, Jarrod poderia submeter uma transação alegando que Abril lhe enviou 5 ETH, mesmo que ela nunca tenha concordado com essa transação. No entanto, uma vez que a blockchain verifica a assinatura de cada transação, rapidamente rejeitará a transação, uma vez que o endereço recuperado da assinatura não corresponde ao "remetente" da transação (ou seja, Abril).
Blockchains como o Ethereum usam o ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica) para verificar se a chave pública recuperada da assinatura da transação corresponde à chave pública da pessoa que enviou a transação para a rede.
A seguir, vamos mergulhar em como uma chave pública é derivada usando uma curva elíptica e uma chave privada. Mas antes disso, responderemos a algumas outras perguntas que você possa ter sobre carteiras, como:
Isto permite aos utilizadores lembrarem-se de um conjunto único de palavras para aceder a todas as suas contas; cada uma com um par de chaves público-privadas individuais. Qualquer número de novas chaves privadas pode ser derivado de uma única frase-semente usando uma função de derivação de chave específica (KDF).
Então, vamos primeiro abordar como as frases-semente são geradas através de entropia aleatória e como as chaves privadas podem ser derivadas de uma frase-semente, antes de finalmente revisitar como as chaves públicas são derivadas das chaves privadas.
Para fazer isso, é gerado um número aleatório usando CSPRNG (gerador de números pseudoaleatórios criptograficamente seguro), que você pode fazer no seu navegador:
Este número aleatório é chamado de entropia. Esta entropia é usada para criar o conjunto de palavras que formam uma frase-semente. No nosso caso, 128 bits correspondem a 12 palavras, mas também é possível usar outros comprimentos, como:
Portanto, agora temos 128 bits de entropia + 4 bits de checksum, totalizando 132 bits. Em seguida, os 132 bits são convertidos em binário; especificamente, eles são divididos em pedaços de 11 bits.
Agora temos um conjunto de 12 números binários, cada um com 11 bits de comprimento. Dica: temos 12 números e nossa frase de semente terá 12 palavras!
Lembre-se de que temos 2048 palavras em nossa lista e que 2048 foi escolhido porque 2048 é 2^11, já que existem 2048 números binários diferentes possíveis que você pode fazer com 11 bits.
Agora só precisamos converter esses números binários em palavras da nossa lista de palavras. Isso é feito usando o número binário como um índice para procurar uma palavra na lista de palavras. Ou seja, se o número binário for 10, usamos a nona palavra da lista (já que começamos no índice 0), por exemplo:

Ao gerar um valor de entropia aleatório, dividi-lo em pedaços de binário e usar esses valores binários como um índice para procurar palavras em uma lista de palavras, acabamos com uma frase-semente aleatória.
Imagine que esquecemos o passo de geração aleatória de 128 bits e selecionamos manualmente apenas 12 palavras da lista. Cada vez que selecionamos uma palavra, estamos selecionando uma opção em um conjunto de 2048 palavras.
Portanto, podemos dizer que para outra pessoa também adivinhar essa mesma sequência de palavras, ela precisa adivinhar corretamente a mesma palavra que nós com uma chance de 1/2048, 12 vezes seguidas. Agora mesmo, você provavelmente está pensando: 'ok, isso não parece tão difícil...,' certo*?*"Mas, vamos jogar isto:
Imagine que começaste a adivinhar agora, usando um computador incrivelmente poderoso que pode adivinhar 1 trilhão de frases-semente por segundo. Levaria a esta máquina 159 trilhões de anos para adivinhar uma frase-semente. Ou, (dependendo no que acreditas), aproximadamente 11.000 vezes mais do que a idade atual do universo.
São frases-semente de 24 palavras melhores do que as de 12?
Algumas carteiras optam por 128 bits (12 palavras), mas as carteiras mais modernas pedem que se lembre de 24 palavras para a sua frase-semente! O que, mais uma vez, é ridículamente grande.


O valor de hash de 64 bytes gerado pode ser usado para gerar contas usando a lógica que se originou de outros padrões do Bitcoin; nomeadamente BIP-32 e, opcionalmente, uma extensão do BIP-32, BIP-44.

Primeiro, o hash é dividido em duas metades, cada uma com 32 bytes de tamanho:
A especificação para esta curva elíptica inclui um ponto base, G, que é usado como ponto de partida para criarmos outros pontos na curva. A partir deste ponto de partida, "movemo-nos" na curva um certo número de vezes (determinado pela nossa chave privada), de uma forma específica. O ponto da curva em que terminamos quando pararmos este processo será a nossa chave pública.
A forma como nos “movimentamos” na curva é chamada de multiplicação escalar. Ao trabalhar com curvas elípticas, um escalar refere-se a um número usado para dimensionar um ponto na curva. Tomamos o ponto base G e aplicamos o número escalar a ele para alcançar um novo ponto na curva, “esticando” esse ponto.
O número escalar que aplicamos ao ponto base é a nossa chave privada; em termos simples, pegamos o nosso ponto de partida G e multiplicamo-lo escalarmente pela nossa chave privada para alcançar a nossa chave pública.

Na realidade, uma vez que a curva é definida sobre o campo primo ℤp, parece mais uma série de pontos dispersos... mas ainda possui as mesmas propriedades da curva elíptica.
No final deste processo de multiplicação escalar (saltando em torno do número de chave privada), acabaremos em um novo ponto na curva, que é nossa chave pública. Você pode imaginar que esse processo se parece com isso:

No entanto, algumas blockchains como a Abstract também suportam novos tipos de carteiras, chamadas contas de contratos inteligentes, que fornecem mais funcionalidades e permitem mecanismos de segurança mais fortes, recuperação e muito mais.
Isenção de Responsabilidade: Os pontos de vista e opiniões expressos neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
As traduções do artigo para outros idiomas são feitas pela equipe do Gate Learn. A menos que mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.





