Sequence
O campo que controla locktime, RBF e locktime relativo
O campo sequence está em toda entrada de transação. Ele te dá controle sobre quando uma transação pode ser minerada ou se uma transação pode ser substituída enquanto está no mempool.
Em termos mais técnicos, o campo sequence controla a "finalidade" de uma transação — se ela está em seu estado "final" antes de ser minerada. Se não estiver, é possível substituí-la antes que ela chegue à blockchain.
Estas são as configurações mais comuns:
- <=0xFFFFFFFE — Locktime. Habilita o uso do campo locktime da transação.
- <=0xFFFFFFFD — Replace By Fee (RBF). Habilita o recurso RBF, que permite substituir uma transação por uma de taxa mais alta enquanto ela está no mempool.
- <=0xEFFFFFFF — Locktime Relativo. Permite definir um locktime relativo a quando a saída sendo gasta foi minerada.
- 0x00000000 a 0x0000FFFF — Blocos. Locktime relativo como um número de blocos.
- 0x00400000 a 0x0040FFFF — Tempo. Locktime relativo como um número de segundos.
Uma escolha popular é usar 0xFFFFFFFD, que habilita tanto o campo locktime (caso queira usá-lo) quanto o replace-by-fee (geralmente útil).
Se você definir o valor máximo 0xFFFFFFFF em todas as entradas, a transação inteira é considerada "final" e não pode ser substituída nem impedida de ser minerada.
Você só precisa definir um dos campos sequence para habilitar o locktime ou o RBF. Porém, as configurações de locktime relativo são específicas de cada entrada.
Locktime
Você habilita o campo locktime da transação inteira se definir qualquer valor de sequence das entradas como 0xFFFFFFFE ou abaixo.
Por padrão, a carteira do Bitcoin Core define o sequence de cada entrada como 0xFFFFFFFE. Isso habilita o locktime, mas nenhum outro recurso.
Unix Time
Replace By Fee (RBF)
Ao definir um valor de sequence de 0xFFFFFFFD ou abaixo em alguma entrada, você sinaliza que a transação pode ser substituída (opt-in RBF). Isso permite, enquanto a transação está no mempool, transmitir uma nova versão que gasta as mesmas entradas, mas com uma taxa mais alta — útil se a transação original travou por taxa baixa.
Locktime Relativo
O campo sequence também pode ser interpretado como um locktime relativo (BIP 68), que impede que uma transação seja minerada até que a saída que ela gasta tenha atingido uma certa profundidade (número de blocos) ou idade (segundos) na blockchain. Isso é fundamental para protocolos de camada 2, como a Lightning Network.