#tuxdobananil #explains #nips #nip-05
# NIP-05: Mapeamento de Chaves Nostr para Identificadores Baseados em DNS 🌍
## Visão Geral
NIP-05 possibilita vincular chaves públicas Nostr a identificadores de internet baseados em DNS, como endereços de e-mail, permitindo uma forma mais amigável de identificar usuários na rede Nostr.
### Funcionamento
- Em eventos de tipo `0` (metadados), é possível especificar a chave `"nip05"` com um identificador de internet (parecido com um e-mail) como valor.
- O identificador é dividido em `<parte-local>` e `<domínio>`, e é realizada uma requisição GET para `https://<domínio>/.well-known/nostr.json?name=<parte-local>`.
- A resposta deve ser um documento JSON com um mapeamento de nomes para chaves públicas em formato hexadecimal. Se a chave pública corresponder, o identificador `"nip05"` é considerado válido.
### Exemplo
Se um cliente encontra um evento como este:
```json
{
"pubkey": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9",
"kind": 0,
"content": "{\"name\": \"bob\", \"nip05\": \"bob@example.com\"}"
}
```
Ele fará uma requisição GET para `https://example.com/.well-known/nostr.json?name=bob`, esperando uma resposta que confirme a associação da chave pública com o identificador `"nip05"`.
### Recomendações
- **Atributo `"relays"` recomendado**: Pode conter um objeto com chaves públicas como propriedades e arrays de URLs de relays como valores, ajudando clientes a saber em quais relays o usuário específico pode ser encontrado.
### Descoberta de Usuários
- Os clientes podem implementar suporte para encontrar as chaves públicas dos usuários a partir de seus identificadores "nip05", seguindo o fluxo descrito, mas invertido.
## Notas Importantes
### Prioridade das Chaves Públicas
- Os clientes devem sempre seguir as chaves públicas, não os endereços "nip05". Se o mapeamento para um endereço "nip05" mudar, o cliente não deve substituir a chave pública já seguida.
### Formato Hexadecimal
- As chaves devem ser retornadas em formato hexadecimal, não no formato `npub` do NIP-19.
### Sugestão para Implementação de Descoberta de Usuário
- Um cliente pode permitir que os usuários procurem por outros perfis digitando identificadores "nip05" em uma caixa de pesquisa, fazendo as consultas apropriadas para obter uma chave pública e sugerir isso ao usuário.
### Tratamento de Identificadores de Domínio
- Os clientes podem tratar o identificador `_@domínio` como o identificador "raiz" e optar por exibi-lo apenas como `<domínio>`.
### Racional para o Formato `/.well-known/nostr.json?name=<parte-local>`
- Isso suporta tanto servidores dinâmicos que geram JSON sob demanda quanto servidores estáticos com um arquivo JSON que pode conter múltiplos nomes.
### Acesso por Aplicativos JavaScript
- Para garantir a validação por aplicativos JS em navegadores, os servidores devem servir `/.well-known/nostr.json` com o cabeçalho HTTP `Access-Control-Allow-Origin: *`.
### Restrições de Segurança
- O endpoint `/.well-known/nostr.json` **NÃO DEVE** retornar redirecionamentos HTTP, e os clientes **DEVEM** ignorar quaisquer redirecionamentos dados pelo endpoint.