Semántica de números de secuencia

Al leer los siguientes BIP: 68 , 112 , 125 , tengo algunas preguntas sobre la semática de los números de secuencia. Por lo que entendí, en las transacciones de la versión 1, los números de secuencia tienen el siguiente significado:

  • Si alguna entrada tiene una secuencia menor que 0xfffffffe, entonces toda la transacción indica reemplazabilidad

Por otro lado, en la versión >=2 transacciones, se aplica la regla anterior, más:

  • Si un número de secuencia tiene el indicador de desactivación ( 1 << 31) establecido en 1, entonces la secuencia no tiene ningún significado adicional (pero aún puede usarse para señalar la capacidad de reemplazo, ¿verdad?)
  • Si no se establece el indicador de desactivación, el número de secuencia se interpreta como un tiempo de bloqueo relativo con el formato especificado en BIP68. Esto significa que la transacción no se incluirá en un bloque hasta que la producción que gaste alcance la edad especificada.

Entonces, juntándolo todo, si uno quiere señalar la capacidad de reemplazo en una transacción de versión> = 2, uno puede usar un número de secuencia que es menor que 0xfffffffepero tiene un indicador de desactivación activo (es decir, es mayor que 0x80000000), por otro lado, ¿Cómo se debe establecer el número de secuencia si se quiere señalar la capacidad de reemplazo y también gastar una salida de tiempo relativo? ¿Estaría bien usar un número de secuencia según BIP68 y aumentar los bits que no tienen significado en ese formato para reemplazar la transacción? (es decir, cambiando todos los bits excepto 1 << 31, 1 << 22y 0xffff)

Respuestas (1)

Si está creando una transacción de la versión 2 con el indicador de desactivación no establecido, entonces, por definición, el valor completo de nSequence será menor que 0xFFFFFFFE (porque será como máximo 0x7FFFFFFFF).

Esto implica que una transacción con un tiempo de bloqueo relativo activo siempre será reemplazable de acuerdo con BIP125.

Esto es intencional. Las transacciones no reemplazables intentan hacer uso de las reglas de política de red existentes para favorecer la primera versión transmitida de una transacción. Una transacción que solo será válida en un momento futuro no puede hacer uso de eso, ya que no puede transmitirse hasta que sea válida.

No veo por qué el retraso de tiempo significa que la no reemplazabilidad no puede ser útil. No puedo pensar en un uso, pero alguien puede, por cualquier motivo, no querer que se reemplace su transacción, incluso si está gastando una salida con un tiempo de bloqueo relativo.