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:
0xfffffffe
, entonces toda la transacción indica reemplazabilidadPor otro lado, en la versión >=2 transacciones, se aplica la regla anterior, más:
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?)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 0xfffffffe
pero 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 << 22
y 0xffff
)
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.
Chan Ho Suh