2 bitcoinqt - getrawmempool devuelve resultados diferentes

Tengo 2 servidores con el mismo Bitcoin Core v0.9.3.0-g40d2041-beta (64 bits). Uso getrawmempool para obtener todas las transacciones nuevas al mismo tiempo, pero tengo un resultado diferente. Un servidor siempre tiene más transacciones. Diferencia bastante grande - alrededor del 10%.

¿Por qué?

Estoy tratando de monitorear todas las transacciones nuevas por algunas razones y esta diferencia significa para mí que getrawmempool not no es una buena manera de hacerlo.

¿Dónde están ubicados geográficamente estos servidores? ¿Tienen los mismos archivos .config y parámetros de línea de comandos? ¿Has probado a reiniciarlos a la vez?
Además de las sugerencias de @GeorgeKimionis, es posible que desee utilizar la -addnodeopción de inicio o el addnodeRPC para asegurarse de que ambos servidores estén conectados entre sí.

Respuestas (2)

¿Por qué esperas que sean idénticos?

No hay garantías sobre la sincronización entre los contenidos de mempool. De hecho, si lo hubiera, no necesitaríamos una cadena de bloques en absoluto. Simplemente usaríamos "hora de ingresar a mempool" para ordenar transacciones.

Las transacciones se retransmiten a través de la red, pero bajo diversas condiciones y, por lo general, el contenido del mempool refleja lo que un nodo decidió retransmitir.

Razones de las variaciones entre nodos:

  • Por lo general, solo el primero de los dos gastos dobles ingresará al mempool (pero algunos nodos usan políticas diferentes, como reemplazar por tarifa).
  • Existen varias versiones de nodos, con diferentes requisitos de tarifas de retransmisión.
  • En algunos casos, la retransmisión está sujeta a límites de velocidad, lo que significa la eliminación arbitraria de transacciones.
  • Las reglas de estandarización han cambiado con el tiempo, cambiando los tipos de transacciones que se aceptan en el mempool.

getrawmempool: enumera las transacciones en la memoria de bitcoind y no es la mejor manera de monitorear todas las transacciones nuevas.

Puede usar datos de blockexplorers, el mejor que aborda el seguimiento y el análisis es blocktrail.com

Necesito obtener la transacción justo después de que se haya realizado el pago. Solo sé la dirección de destino (no de mi billetera) y la cantidad. No quiero usar servicios externos. Avíseme si conoce otro enfoque sin usar getrawmempool.