NSequence

nSequence - номер последовательности биткоин

nSequence – это относительная блокировка времени на уровне транзакций, которая всегда была у Биткоин и была разработана Сатоши Накамото. Замена порядкового номера транзакции долгие годы не использовалась – она не имела смысла в долгосрочной перспективе. Поэтому она была отключена. Но когда транзакции стали медленными, а комиссии за майнинг стали крайне высокими, ситуация поменялась.

Содержание

Что такое nSequence?

Когда вы хотите совершить транзакцию в биткоинах, может случиться так, что будет много людей, желающих сделать то же самое. Обычно вы не проверяете мемпул – вы просто нажимаете «отправить BTC». А если мемпул занят, вам нужно подождать. Майнеры могут подтвердить его позднее, что вам не подходит. Либо они могут отклонить ваш платёж, исключив его из мемпула. Но есть и третий вариант – сделать то же самое, но с более высокой комиссией. Такие транзакции были названы Replace-By-Fee (RBF). Вот где используется nSequence. Вы можете менять его, чтобы определить порядковый номер вашей операции и сделать его старше.

BIP-68

Что такое nSequence?

nSequence и RBF впервые были описаны в BIP-0125 и применены в BIP-68. BIP означает Проект Развития Биткоина. Изменения также были включены в Bitcoin Core 0.12+ ПО. И в зафиксированном виде они снова становится активными.

Сейчас обычно большинство программ исполняют nSequence как максимум – (0xffffffff — 1). Итак, вам нужно изменить его самостоятельно. На изображении ниже можно увидеть, как это выглядит в кошельке Ethereum — это контрольная точка «Включить Replace-By-Fee».

Примеры nSequence

# Most of the transaction is omitted. Using decimal for human readability. # Using hex for sequence numbers due to the presence of flags.  # This transaction is locked for 4096 second. Just over 1 hour. tx_1:    input_1:    sequence_no: 0x00400008    # Disable flag is not set, type flag is set. Input locked for 8 * 512 seconds.  # This transaction is not nSequence locked, but may be nLocktime locked, and allows RBF. tx_2:    input_1:    sequence_no: 0xFEDC3210    # Disable flag is set. nSequence locking disabled.  # This transaction is invalid until 16 blocks have elapsed since input_1's prevout confirms. tx_3:    input_1:    sequence_no: 0x00000010      # Disable flag is not set, type flag not set. This input locked for 16 blocks.  input_2:    sequence_no: 0xFFFFFFFF      # Disable flag is set.  # This transaction is not time locked, but has opted to allow Replace-By-Fee. tx_4:    lock_time: 0  input_1:    sequence_no: 0xFFFFFFFE      # nSequence is disabled, nLocktime is enabled, RBF is not signaled.  input_2:    sequence_no: 0xFFFFFFFD      # nSequence is disabled, nLocktime is enabled, RBF is signaled.  # This transaction is not valid until block 506221 # It is also not valid until 87040 seconds have passed since the confirmation of input_1's previous output tx_5:    lock_time: 506221  input_1:    sequence_no: 0x004000AA 

Источники

books.google.ru
https://prestwi.ch/bitcoin-time-locks/
https://medium.com/@overtorment/bitcoin-replace-by-fee-guide-e10032f9a93f
https://en.bitcoin.it/wiki/Payment_channels
https://bitcoin.org/en/glossary/sequence-number

См. также на BitcoinWiki