Altcoin: las transacciones de envío/recepción entre nodos tienen una alta tasa de fallas

Me he dado cuenta de que un número inusualmente alto de mis intentos de transacciones de envío entre mis nodos (que actualmente es solo 6 como máximo, pero nunca menos de 4) no se transmitirá independientemente de la cantidad de tiempo que espere. Al final termino teniendo que abandonarlos para devolver los fondos de la billetera desde la que intento enviarlos. No he notado una correlación específica entre el remitente y el destinatario (como un solo nodo que siempre no puede enviar o recibir) y he notado que cada transacción exitosa se transmite y aparece en el grupo de memoria casi inmediatamente después del envío.

¿Hay alguna causa específica para esto? ¿Tal vez el hecho de que actualmente estoy limitado a un número tan pequeño de nodos?

He utilizado getnewaddress para generar todas las direcciones que han recibido monedas con éxito y sin éxito, por lo que me resulta difícil creer que las direcciones reales puedan ser el problema, ya que todas deberían haberse derivado de claves válidas.

  • Schwifty
¿Cómo estás creando tus transacciones? ¿Incluyen una tarifa de transacción suficiente? En su archivo debug.log, ¿ve algún mensaje de error relacionado con su transacción cuando la envía?
He estado usando la tarifa recomendada (por núcleo sin cálculo de tarifa inteligente) que es de 0,02 monedas/KB. Han variado en tamaño desde unas pocas docenas hasta unos pocos miles de monedas, y la transacción exitosa más grande fue de 15k monedas. Registro de depuración: "no se puede transmitir de inmediato, aún no hay testigo", pero todos los nodos están ejecutando servicios de red, testigo y floración. Estoy trabajando con recursos muy limitados y, en última instancia, desecharé esta moneda para aplicar las aparentemente innumerables lecciones que aprendí a otra, pero me gustaría poder confirmar que esto solo se debe a una densidad de nodo insuficiente.
Además, estoy creando las transacciones simplemente usando la función de envío dentro de una billetera qt, y las estoy enviando a una dirección recién generada. Me quedé sin espacio para poner eso en mi respuesta inicial, ¡mis disculpas!

Respuestas (1)

El problema no tiene nada que ver con la densidad de nodos. Está recibiendo el error, can't broadcast immediately, no witness yetlo que significa que segwit aún no está activo en su moneda, por lo que los gastos de las salidas de segwit no se transmitirán. Debes activar segwit extrayendo suficientes bloques que señalen a Segwit. Tener el NODE_WITNESSbit de servicio establecido no importa; segwit es una regla de consenso y el bit de servicio no tiene sentido sin que la regla de consenso esté activa.

¿Por qué otras transacciones se enviaron con éxito BIEN antes de segwit entonces? Porque primero pude enviar monedas con éxito a alrededor de 500 bloques. Y mi umbral de activación de cambio de regla está establecido en 4320 bloques, el 75 % de la ventana de confirmación del minero, que está en 5760 bloques.
Y no debería ver ningún cambio en el estado de implementación de segwit hasta al menos la ventana de confirmación del minero, ¿correcto?
Cuando extrae bloques, las salidas no son segwit. Entonces, cuando envía transacciones por primera vez, está enviando transacciones sin segwit porque todas las entradas son gastos de las salidas de generación de monedas sin segwit. Sin embargo, es probable que esas transacciones generen salidas de segwit (tanto como cambio como normalmente) que terminará gastando más tarde.
El estado cambia según la ventana anterior, por lo que si aún no ha minado completamente una ventana, el estado no cambiará.
Está bien, eso tiene sentido. Entiendo que el estado cambia en función de la ventana anterior, y que puedo terminar gastando salidas de segwit más adelante... ¿eso significa que, en teoría, si esperé hasta que segwit se implementó por completo, no debería tener ningún problema? Además, ¿eso significa que si pudiera asegurarme de que estaba enviando monedas que no están asociadas con ninguna salida de segwit, no debería tener problemas?
Además, tú eres el hombre, para que lo sepas.
Sí, a ambas preguntas.