¿Qué es una conexión de sensores? ¿Cuándo se usa?

El cliente bitcoin codifica un límite de 8 conexiones salientes y 2 conexiones de solo bloque. Su nodo intentará mantener siempre estas 10 conexiones salientes con pares confiables como defensa contra ataques a la red. Pero hay una 11ª conexión de salida efímera llamada conexión de sensor. ¿Cuál es el propósito de una conexión de sensores y cómo funciona?

Creo que son 8 salidas regulares, 2 bloques solamente y una conexión de sensor. :)

Respuestas (2)

Una conexión de sensor es una conexión saliente de corta duración que solo se inicia después de que su nodo haya establecido las 8 conexiones salientes requeridas y las 2 conexiones salientes de relé de bloque solamente . El propósito de una conexión de sensor es probar regularmente las direcciones de la tabla "nueva" para ver si son nodos de bitcoin conectables. Esencialmente, la conexión del sensor limpia la basura de "nuevo" y llena la tabla "probado" con direcciones válidas.

  • La tabla "nueva" contiene direcciones no probadas que el nodo ha aprendido de la red de chismes.
  • La tabla "probado" contiene direcciones a las que el nodo se ha conectado correctamente.

Cada 2 minutos, la conexión del sensor hará una de dos cosas:

  • Extraiga un par aleatorio del búfer de desalojo (lista de direcciones consideradas para el desalojo porque un nuevo par está asignado a la misma ranura en "probado"). Pruebe la dirección intentando conectarse a ella y, si tiene éxito, elimine esa entrada del búfer. Si esta dirección no se puede conectar, elimínela de "probado" y reemplácela con una dirección diferente (anteriormente extraída de "nuevo").
  • Si el búfer de desalojo está vacío, pruebe una conexión aleatoria desde "nuevo" y, si tiene éxito, muévalo a "probado". Si no tiene éxito, actualice las estadísticas de conexión de direcciones en consecuencia. Tangencialmente, si una dirección no se conecta las veces suficientes (entre otros criterios), se etiquetará como "terrible". Si una dirección entrante choca con una dirección terrible, la dirección terrible será desalojada de la tabla "nueva".

Las conexiones de sensores se desactivan cuando no se han recibido nuevos bloques durante 30 minutos. En este caso, la conexión del sensor se apaga y su ranura de conexión se usa cada 10 minutos para intentar encontrar un nodo que conozca un nuevo bloque. Esto es para tratar de detectar y eludir una partición de red sin sobrecargar la cantidad de ranuras de conexión de entrada disponibles en la red. Una vez que se descubre un nuevo bloque, la conexión del sensor vuelve a limpiar el búfer de desalojo y la tabla "nueva".

Historia

Las conexiones de sensores son una de las contramedidas sugeridas del documento "Eclipse Attacks on Bitcoin's Peer-to-Peer Network" y se introdujeron con PR#8282 para aumentar la cantidad de direcciones en línea en la tabla probada y luego PR#9037 implementó la prueba. funcionalidad antes de desalojar.

Una adición a su excelente respuesta: si intentamos una conexión de sensor y el intento no tiene éxito, la dirección no se desaloja inmediatamente de la nueva. En cambio, sus estadísticas se actualizan de manera similar a los intentos de conexión que no son de sensor (llamando a Attempt() en addrman), lo que puede llevar a que sea "Terrible" y desalojado en algún momento posterior, pero solo en el caso de una colisión con otra dirección agregada que ocuparía la misma posición en addrman. En ausencia de colisiones, seguirá siendo addrman, sin importar cuántas veces fallemos en conectarnos a él.
¡Gracias por los comentarios, @Lightlike! He actualizado mi respuesta en consecuencia. :)

La respuesta de vnprc explica los detalles de las conexiones de sensores. No estaba seguro del término 'sensor', así que verifiqué el significado:

un órgano animal como una antena o un palpo que se usa para probar cosas al tacto o para buscar comida.

Como se mencionó en otra respuesta, el propósito de una conexión de sensor es probar regularmente las direcciones para las conexiones, por lo que 'sensor' es el término correcto para tales conexiones.