NSequence

Материал из Bitcoin Wiki
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Перейти к: навигация, поиск
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[править]