Actuando como un nodo pasivo en lugar de uno activo usando bitcoind

Actualmente tengo una versión de bitcoind: 80500 ejecutándose en un VPS. Estoy interesado en usarlo solo para verificar transacciones para mí de la misma manera que lo hace blockchain.info.

¿Es posible ejecutar bitcoind para hacer esto? Supongo que la mejor analogía para esto sería actuar como un sanguijuela. ¿O siempre actúa como un nodo activo que pasa transacciones, etc.?

Esto podría no ser exactamente lo que quieres. pero ¿qué tal si echamos un vistazo a electrum?
No hay forma de configurar un nodo para que no transmita transacciones, ya que sería perjudicial para la red. Tendría que modificar mucho bitcoindpara manejar esto, y no hay una gran razón para que quiera hacerlo. ¿Qué crees que lograrás al no retransmitir nada? No es lo que tú o la red quieren.
La razón es, para ahorrar en ancho de banda y ciclos de CPU
Entonces, ¿cuánta CPU y ancho de banda está usando en este momento?
La retransmisión de transacciones no requiere ningún esfuerzo en absoluto, y si no está escuchando, nadie se sincronizará con usted y ocupará una gran cantidad de ancho de banda. El impacto de la CPU bitcoinduna vez sincronizado es insignificante.
Supongo que la retransmisión de transacciones se realiza desde las transacciones entrantes hasta las salientes, ¿es correcto? Solo como un ejercicio de reflexión: ¿es posible simplemente observar la cadena de bloques sin participar en sus transacciones?
Sí, es posible simplemente observar la cadena de bloques, a través de los servicios públicos. Vea la opción 1 de mi respuesta a continuación.

Respuestas (1)

Lo que está pidiendo no es posible con una versión no modificada de bitcoind. Entonces interpretaré su pregunta como por qué no y cómo lograr algo similar.

Tener nodos de bitcoin que no transmiten transacciones es un peligro para bitcoin: si los nodos comienzan a comportarse de esa manera, no solo avanzamos un paso más hacia el riesgo de que las transacciones se bloqueen porque alguien que envía una transacción no las reenvía en absoluto, pero lo que es más importante, las hazañas mineras como la descrita en el preprint Majority no es suficiente: Bitcoin Mining is Vulnerable pasa de lo teórico a lo práctico. De hecho, alguien que intente implementar este exploit podría hacer prácticamente la misma pregunta que usted.

Entonces, ¿qué te impide hacerlo de todos modos, con una versión modificada de bitcoind? Nada, en realidad, excepto que parece un poco contraproducente. Considere que tan pronto como otros comiencen a percibirlo como una molestia suficiente (¡y deberían, por razones de equidad y seguridad!), propondremos alguna modificación que requerirá que reenvíe al menos algunas transacciones o que no reenvíe las transacciones. tú mismo. O quédese atrapado con nodos igualmente egoístas a los que conectarse. Eso será exactamente lo contrario de lo que desea lograr para verificar transacciones. ¡Solo considere que, eventualmente, es posible que solo vea esas transacciones con más probabilidades de no propagarse hasta los grupos de minería!

Entonces, ¿qué opciones tiene para limitar el ancho de banda (dudo que pueda ahorrar mucho tiempo de CPU, de todos modos)? Aquí están sus opciones:

  1. Ya conoce la respuesta más radical: no ejecutar su propia copia de bitcoind y, en su lugar, utilizar las API públicas de blockchain.info y blockexplorer.com (o alguna solución comercial). Supongo que no está contento con confiar en servicios externos gratuitos, pero considerando que hay redundancia (para lidiar con el tiempo de inactividad individual o para obtener más de una confirmación). Por lo tanto, este enfoque de ancho de banda súper bajo (al menos para algunas transacciones para monitorear activamente) puede no ser tan malo como parece al principio.

  2. Limite la cantidad de nodos a los que se conecta su bitcoind. Esto, desafortunadamente, es una espada de doble filo. Al mismo tiempo, limita los datos que enviará (¡menos pares!) y los datos que recibirá. Por lo tanto, tiene una mayor posibilidad de llegar tarde a ver una transacción, si por alguna razón no llegó a los pocos (¿uno?) otro nodo al que se conectó, o porque pocos pares significan que tiene un riesgo elevado de perder la conexión simultáneamente. a todos ellos, siendo cortados de la red bitcoin brevemente.

  3. Modifica a tu cliente de forma sensata. Tal vez pueda vivir con la transmisión de nuevas transacciones, pero ¿acelerando las descargas masivas de toda la cadena de bloques? Esto podría tener un gran impacto en su ancho de banda saliente (y total), al tiempo que ofrece la posibilidad de un comportamiento general muy sensible. Considere que incluso podría tener sentido para la línea principal de bitcoind si se pudieran implementar medios alternativos de descarga masiva de la cadena de bloques, y siempre que encontremos espejos para ellos, esto debería ser factible. De hecho, al colocar una parte de "blockchain mirror" de su sitio detrás de una cuenta gratuita de cloudflare para servir contenido estático a costo cero, ¡podría hacerlo!

¿Puedo sugerir que la opción 3 podría ser el camino a seguir? Si las modificaciones necesarias a bitcoind son un problema para usted, podría ayudarlo (o incluso hacerlo todo), aunque lamento decir que probablemente no podría hacerlo de forma gratuita.

El protocolo no admite ningún tipo de señalización de que no quieren responder a una solicitud de inventario de bloques. En el momento actual, la única respuesta de un cliente es colapsar. Si estrangula su conexión saliente, los clientes de tarpit intentarán sincronizarse con usted, lo cual es extremadamente dañino.
Sí, el simple hecho de comenzar a volverse más lento en el envío de transacciones antiguas no es suficiente. Tendrías que limitar (acelerar) de una manera diferente. Gracias por señalar este problema. Tenía la impresión de que, por ejemplo, satisfacer solo un número limitado de solicitudes de bloques muy antiguos y luego negarse (por ejemplo, al desconectarse de ese cliente en particular) no debería causar ninguna perturbación grave además de ralentizar su sincronización, ya que desconexiones similares son naturales en Bitcoin. red con algunos nodos no permanentemente activos. Verificaría dos veces el código fuente, obviamente, antes de comenzar esto.
Mi objetivo sería tener un nodo que almacenara solo la cadena de bloques actualizada Quién sabe, ¡también podría estar ejecutando algunos nodos de retransmisión! Pero, por favor, el intercambio de pila es una pregunta y respuesta técnica, no ética. De todos modos, gracias por alguna aclaración.
@robbywashere Si va a tener un impacto negativo en otros nodos, lo mencionaré. Es tan simple como eso. Es una cuestión tanto técnica como ética. El hecho de que esté ejecutando otros nodos no significa que los clientes que ha conectado a su gimped puedan tardar meses en obtener los bloques que necesitan.
@pyramids Si haces eso, te encontrarás con compañeros constantemente. Ninguno de mis compañeros se está sincronizando, pero sigo recibiendo al menos una solicitud de bloqueo cada 10 minutos. Honestamente, pague $ 5 al mes por un bitcoindnodo dedicado y ahórrese la molestia. Al menos así no serás tan mal ciudadano de la red.
@nonymous Creo que hay un malentendido aquí. No tenía la intención de desconectar a un cliente que solicita la retransmisión de un solo bloque. Solo traté de argumentar que puede haber una manera de evitar convertirse en la fuente principal de toda la cadena de bloques, por ejemplo, desconectando a los pares que solicitan cientos o miles de bloques muy antiguos (tampoco los que llegaron en las últimas 48 horas). , y solo después de enviar suficientes (¿cien o más?) para permitirles seguir avanzando en su sincronización, y solo después de proporcionar medios alternativos para ello (por ejemplo, descargar desde un sitio espejo).