¿Cómo se encuentran los clientes de Bitcoin?

¿Qué protocolos o algoritmos utilizan los clientes de Bitcoin para encontrar a sus pares? Aprendí que los clientes de BitTorrent pueden depender de computadoras centrales llamadas rastreadores. ¿Los clientes de Bitcoin necesitan algún tipo de servidores centrales o nodos para poder operar?

Respuestas (2)

Los clientes de Bitcoin utilizan varios métodos para localizar a otros clientes. El método principal es una lista de nodos de una conexión anterior a la red. Funciona muy bien para todo menos para su primera conexión o una conexión después de un período muy largo de desconexión.

En el caso de que no tenga direcciones IP conocidas anteriores o no se puedan usar, el método alternativo principal es mediante las semillas de DNS. Se mantienen varios nombres de host (como dnsseed.bluematt.me ) que se resuelven en una lista de direcciones IP que se sabe que están ejecutando nodos. Si eso falla, el cliente tiene una lista de direcciones IP que se cree que apuntan a nodos estables codificados en ella.

Un método que solía usarse, pero que desde entonces se abandonó, era hacer que los clientes se ubicaran entre sí mediante un servidor IRC. Eso funcionó de manera similar a un rastreador de BitTorrent.

Una vez que esté conectado a la red, comenzará a recibir listas de direcciones IP y puertos de clientes conocidos.

Cuando el cliente de Bitcoin.org necesita descubrir pares, las semillas de DNS son las predeterminadas para el cliente v0.6 y superior. IRC era el predeterminado para versiones anteriores.
cuando mencionan IRC, ¿qué red de IRC exactamente?
@knocte Solía ​​usar irc.lfnet.org, uniéndose a un canal aleatorio entre #bitcoin00y #bitcoin99.
Entonces, si lfnet.org dejó de funcionar, ¿fue un punto único de falla? ¿Y ahora qué, quién dicta cuáles son los nombres DNS para buscar?
@knocte: no habría sido un punto único de falla porque el cliente tenía varios otros métodos de arranque, incluidos varios servidores "conocidos" codificados. Cualquiera que quiera puede configurar su cliente para que use los nombres de DNS que quiera. El cliente oficial utiliza una lista mantenida por los desarrolladores. Creo que los desarrolladores solicitaron voluntarios para ejecutar semillas de DNS.
Es curioso cómo a un entusiasta del ripple se le ocurrió esta pregunta (yo), la busqué en Google y encontré una respuesta tuya :-).. fuera de tema, ¡pero tenía que compartirla!
@HeddevanderHeide Creo que la mayoría de los entusiastas del ripple también son entusiastas de bitcoin.
Está bien. Entonces, ¿los bitcoins SON vulnerables al envenenamiento de DNS de China? Bueno saber.
@Taiko No realmente, porque DNS es solo un método utilizado. Un servidor de bitcoin solo necesita una conexión a un nodo honesto para estar seguro.
El problema es. El envenenamiento de DNS también evitará la conexión a direcciones IP codificadas. Entonces, las conexiones por primera vez no pueden funcionar si el GFW de China lo bloquea. @David
El envenenamiento de @Taiko DNS no tiene efecto en las conexiones a direcciones IP codificadas. Tiene razón en que una entidad que controla su acceso a Internet puede romper su capacidad de usar bitcoin, al igual que puede romper su capacidad de usar cualquier otro servicio de Internet. (Bitcoin es especialmente resistente, sin embargo, porque solo una fuga salva a todos).
Me gustaría considerar la situación en la que el cliente "conocido" codificado también falla. Si el DNS falla y el cliente conocido codificado falla, ¿sería posible adivinar aleatoriamente las IP en ese puerto e intentar enviar señales a IP aleatorias hasta que encuentre un nodo de Bitcoin que responda?

Hay un par de métodos que el cliente puede usar . Sin embargo, a diferencia de la muy buena respuesta de David, hablaré de ellos en orden cronológico:

  • La principal forma en que los clientes aprenden sobre otros clientes es conectándose a otro cliente y emitiendo el comando 'getaddr'. El cliente estándar siempre ha tenido esa capacidad. Sin embargo, hay un problema con esto: ¿cómo se entera del cliente n.º 1?
  • Siembra IRC. Esto es algo que ha estado presente desde la primera versión también. Fue simple de implementar, pero finalmente no escaló. La primera versión conectada a freenode. Luego, los nodos de bitcoin comenzaron a tener líneas de k . Versiones posteriores conectadas a lfnet. Luego, lfnet dejó de funcionar y el soporte de IRC se eliminó por completo. El DNS estaba disponible en este punto, así que estaba bien.
  • Direcciones IP de nodos conocidos. Esto ha estado en el cliente desde junio de 2010. Todavía en el cliente de Bitcoin, aunque las direcciones IP exactas cambian cada cierto tiempo.
  • Siembra de DNS. Esto ha estado en el cliente desde marzo de 2011. Esto es más fácil de escalar, porque el DNS ya está diseñado para manejar decenas de miles de conexiones.