Pular para o conteúdo
buybitcoinsmart

Glossário / Nós e software

Semente DNS

O que é uma semente DNS?
Uma semente DNS é um nome de domínio que responde com os endereços IP de nós do Bitcoin alcançáveis, dando a um nó recém-instalado um lugar para fazer sua primeira conexão.

O Bitcoin não tem servidor de diretório, então o software novo precisa encontrar a rede perguntando. O Bitcoin Core traz uma lista curta de nomes de host de sementes gravada no código, resolve esses nomes uma vez, abre oito conexões de saída na porta 8333 e depois não precisa mais deles. Tudo o que vem depois desse primeiro handshake é aprendido com os próprios pares.

Como funciona

Atrás de cada nome de host de semente há um rastreador, não um arquivo estático.

O operador executa um software que percorre a rede ponto a ponto, tenta se conectar a cada endereço de que ouve falar e registra quais responderam recentemente. O nome de host então resolve para registros A e AAAA tirados desse conjunto, cerca de duas dúzias de endereços por consulta, com um tempo de vida curto para que as respostas fiquem rotacionando. Algumas sementes também aceitam filtragem por bits de serviço, então um nó que precisa de pares que ofereçam filtros compactos de blocos pode pedir um subdomínio que só devolve esses.

Os nomes de host estão no código-fonte do Bitcoin Core, em kernel/chainparams.cpp, com uma lista separada para cada rede. A lista da mainnet é mantida por pessoas identificadas pelo nome: seed.bitcoin.sipa.be é operado por Pieter Wuille, dnsseed.bluematt.me por Matt Corallo, seed.btc.petertodd.net por Peter Todd. Manter a lista curta e atribuível é proposital, porque o operador de uma semente escolhe quem você encontra.

Na primeira inicialização o nó resolve esses nomes, preenche seu gerenciador de endereços e abre oito conexões de saída de retransmissão completa, mais duas conexões apenas de retransmissão de blocos, que não carregam o gossip de transações e são mais difíceis de um observador detectar. A partir daí ele coleta endereços por meio das mensagens getaddr e addr e os guarda em cache no peers.dat, então reinicializações posteriores dispensam completamente a consulta. Se todas as sementes estiverem inacessíveis, o Core recorre a uma lista de endereços fixos de nós compilada no binário, e você pode contornar todo o mecanismo com dnsseed=0 mais uma entrada seednode ou addnode apontando para um par em que você já confia.

Onde você vê isso

A única vez que a maioria das pessoas percebe uma semente DNS é nas primeiras linhas do log de depuração de um nó.

Inicie o bitcoind em uma máquina sem peers.dat e o log registra que está carregando endereços de sementes DNS, e então a contagem de conexões sobe a partir de zero. Você pode fazer a mesma consulta por conta própria em um terminal com o dig, que devolve o mesmo conjunto rotativo de endereços IP que seu nó receberia.

Há um custo de privacidade que vale conhecer. A consulta é uma consulta DNS comum, sem criptografia, então seu resolvedor e seu provedor de internet podem ver que um nó de bitcoin está iniciando na sua conexão, ainda que a consulta não revele nada sobre sua carteira nem sobre seu saldo. Se isso incomoda você, execute o nó através do Tor ou defina dnsseed=0 e forneça você mesmo o primeiro par.

A questão da confiança é mais estreita do que parece. Uma semente hostil não pode forjar um bloco nem uma transação, porque seu nó valida tudo o que recebe contra sua própria cópia das regras. O que ela poderia fazer é devolver apenas endereços que controla, isolando você da rede honesta, e é por isso que o Core consulta várias sementes, distribui suas conexões entre faixas de rede diferentes e mantém essas conexões apenas de retransmissão de blocos como uma segunda opinião discreta.

Semente DNS vs frase de recuperação

Uma semente DNS é um nome de host público para encontrar pares; uma frase de recuperação são as 12 ou 24 palavras secretas que controlam seus bitcoins. Elas compartilham uma palavra e nada mais. Nada de uma semente DNS é confidencial, nada nela toca sua carteira, e nenhum passo legítimo de configuração vai pedir que você digite suas palavras de recuperação em uma tela de configuração de rede.

Não confundir com

Perguntas frequentes

Uma semente DNS é o mesmo que uma frase de recuperação?

Não, e as duas não têm nada em comum além da palavra. Uma semente DNS é um nome de host público que seu nó consulta para encontrar outros nós. Uma frase de recuperação é a lista secreta de palavras que pode gastar seu bitcoin, e ela nunca chega perto das suas configurações de rede.

O operador de uma semente DNS pode roubar meus bitcoins ou me enviar blocos falsos?

Não. Uma semente só fornece endereços IP de pares, e seu nó valida cada bloco e cada transação por conta própria. O risco realista é o isolamento, em que uma semente hostil devolve apenas os próprios nós, algo a que o Bitcoin Core resiste consultando várias sementes e diversificando suas conexões.

Termos relacionados

Mais em Nós e software

Ler esta página em inglês