¿El modelo de cliente SPV es escalable?

Los clientes de SPV generalmente se conectan a pares de nodos completos y establecen filtros sobre la información que descargan. ¿Cuántos pares SPV puede admitir un solo nodo completo, por lo general?

¿Es razonable esperar que millones de usuarios de nodos SPV se conecten a ~6000 nodos completos?

Respuestas (1)

En términos generales, el SPV de filtrado de floración BIP37 tiene una escala atroz, aunque es difícil decir exactamente qué tan pobre es en los trabajos reales.

  • Cada par debe sincronizar toda la cadena de bloques desde el último contacto con la red, en el peor de los casos, aproximadamente 50 GB. El nodo debe cargar cada bloque del disco, filtrarlo según las especificaciones del cliente y devolver el resultado. La cantidad crecerá hasta el final de Bitcoin o el tiempo, lo que ocurra primero. Sin algunos cambios de protocolo, la poda es incompatible con BIP37 SPV, ya que espera que todos los bloques estén disponibles en todos los hosts.

  • Para cada billetera sincronizada, cada bloque y transacción entrante debe filtrarse individualmente. Esto implica una cantidad no despreciable de tiempo de CPU y debe hacerse para cada par por turno para cada elemento del inventario.

    • No está claro exactamente cuánta potencia de CPU tiene un nodo promedio, pero al menos una parte de los nodos se ejecutan en la parte inferior del hardware del barril como un Raspberry Pi, que es muy poco probable que pueda atender felizmente a más de un par de pares a la vez. tiempo.

      Del mismo modo, una gran parte de los nodos de escucha están alojados en proveedores de VPS económicos que ofrecen un único núcleo compartido y un rendimiento extremadamente bajo. OVH tiene 300, Hetzner tiene 300 Digital Ocean tiene 124, CloudAtCost está verdaderamente al final de la lista con 6.

  • BIP37 es vulnerable a ataques triviales de denegación de servicio, hay disponible un código de demostración que puede paralizar los nodos mediante solicitudes de inventario rápidas a través de filtros que provocan una búsqueda continua del disco y un alto uso de la CPU. Es tentador decir que los clientes podrían usar una prueba de trabajo (pero esto es imposible en un dispositivo alimentado por batería como un teléfono) o micropagos (imposible si un nodo aún no sabe que ha recibido dinero) pero ninguno de los dos ofrece una solución clara. .

  • También es probable que haya mucho menos de 6000 nodos de escucha, algunos están eliminados, lo que es bastante inútil para que un cliente SPV los sincronice, muchos están escuchando tanto en IPv4 como en IPV6 y, como resultado, están duplicados en ese número. El número real de nodos reales es probablemente más cercano a 5000, y el número de ellos que no están en enlaces ascendentes de velocidad de acceso telefónico es sustancialmente menor.

¿Es razonable esperar que millones de usuarios de nodos SPV se conecten a ~6000 nodos completos?

Absolutamente no, incluso solo por el hecho de que el código establece por defecto un máximo de 117 conexiones entrantes, lo que sería alrededor de medio millón de enchufes disponibles en total en la red (la mayoría de los cuales ya se consumen en la actualidad).