Muita gente imagina a chave privada e a chave pública como duas metades de um par, sorteadas juntas no mesmo instante. Não é isso que acontece. Existe um número só, e esse número é a chave privada. A chave pública é uma conta feita em cima dele: quem tem a privada calcula a pública em milésimos de segundo, e a volta é que ninguém no mundo sabe fazer.
A chave privada é um número inteiro, e nada além disso: um número entre 1 e um limite pouco abaixo de 2^256. Não tem cadastro, não tem servidor, não tem autoridade que emita. Sortear um número nesse intervalo já é ter uma carteira, e foi isso que o módulo anterior quis dizer ao repetir que quem tem a chave move as moedas.
O que transforma esse número numa chave pública é uma operação feita sobre uma curva. A do Bitcoin se chama secp256k1, e a equação dela cabe numa linha: y² = x³ + 7. O desenho não é o arco liso dos livros de escola: as coordenadas são inteiros dentro de um corpo finito, com p igual a 2^256 menos 2^32 menos 977. O gráfico é uma nuvem de pontos espalhados, e a aritmética dessa nuvem é o assunto da trilha avançada. Aqui basta uma regra.
A regra é que dois pontos da curva, somados, dão um terceiro ponto da mesma curva: passe uma reta pelos dois, veja onde ela corta a curva pela terceira vez, espelhe esse cruzamento para o outro lado do eixo. O resultado nunca escapa da curva.
Existe um ponto de partida, chamado G, o gerador. Ele não é escolhido por você nem pela sua carteira: está escrito no padrão, com as duas coordenadas fixas, e é o mesmo ponto para todas as carteiras de bitcoin desde o bloco gênese.

Sua chave pública é G somado a si mesmo tantas vezes quanto vale a sua chave privada. Se a privada é o número k, a pública é o ponto kG — um ponto multiplicado por um número, operação que se chama multiplicação escalar.
Somar G a si mesmo um número dessa ordem de grandeza, uma vez por vez, levaria mais que a idade do universo — e mesmo assim a conta sai instantânea. O truque é dobrar em vez de somar. Somando o ponto a ele mesmo você anda dois; dobrando, quatro; dobrando de novo, oito. Com 256 dobras e algumas somas no meio, chega-se a qualquer ponto do intervalo.
A volta não tem truque nenhum. Dado o ponto kG, sabendo que a partida foi G, descobrir k é o problema do logaritmo discreto. Depois de quarenta anos de tentativas, o melhor método conhecido ainda exige da ordem de 2^128 passos. A Aula 5 mede esse número. Por ora o que importa é o formato da assimetria: fácil numa direção, inviável na outra, como a função de hash da aula anterior — só que aqui, do outro lado, não está um arquivo. Está o seu dinheiro.

A escolha da curva foi estranha na época. A secp256k1 foi publicada em 2000 pelo SECG, grupo ligado à empresa canadense Certicom, e quase ninguém a usava: o mundo trabalhava com a P-256, do instituto americano NIST. Satoshi escolheu a menos usada. Os parâmetros da secp256k1 são simples demais para esconderem alguma coisa — o zero e o sete da equação, o p logo abaixo de 2^256 —, enquanto os da P-256 saem de constantes que nunca foram explicadas. Em 2013, documentos vazados por Edward Snowden mostraram que a NSA pagara dez milhões de dólares para enfraquecer outro padrão da mesma família, o Dual_EC_DRBG. Nunca se demonstrou nada contra a P-256, e há criptógrafos que a defendem até hoje; o que se pode dizer é que a escolha de 2008 envelheceu bem.
Daí vem a consequência mais prática de todas: a chave privada não precisa sair nunca do lugar onde nasceu. O aparelho calcula a pública a partir dela, e é a pública que viaja — é ela que a rede vê e que entra na receita do seu endereço. Uma carteira de hardware existe inteira por causa dessa assimetria — ela guarda o número e entrega o ponto.

O que você manda quando pede a alguém para te pagar não é a chave pública. É uma cadeia mais curta, que ainda carrega um mecanismo para recusar um caractere digitado errado. Na próxima aula, o endereço construído byte a byte.