Към съдържанието
ДаретеEN

Трансакции

Sequence

Sequence в биткойн (bitcoin) е 4-байтовото поле на всеки вход, което задава locktime, RBF и относително заключване. Вижте стойностите и битовете.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

Полето sequence (пореден номер) е 4-байтова настройка във всеки вход на трансакция. То управлява три неща. Определя дали се прилага locktime (заключването на трансакцията по височина или време), и дали трансакцията може да бъде заменена с версия с по-висока такса, докато чака в мемпула. Чрез относителното заключване задава колко време след изкопаването на изхода похарчването му може да влезе в блок. Всеки вход има собствен sequence, но първите две настройки важат за цялата трансакция.

Често срещан избор е fffffffd. Той включва и locktime, и сигнала за replace-by-fee (RBF).

Какви стойности приема sequence?

Стойност Ефект
ffffffff Окончателен. Без locktime, без сигнал за RBF.
fffffffe или по-ниска Locktime се прилага за цялата трансакция.
fffffffd или по-ниска Трансакцията сигнализира, че може да бъде заменена с версия с по-висока такса. Това включва и locktime.
Бит 31 изключен (под 80000000) Относително заключване за този вход, броено в блокове или време. Изисква версия 2 или по-нова на трансакцията.

Таблицата се чете отгоре надолу. Трансакция, в която всеки вход е ffffffff, е окончателна, и мрежата ще я изкопае веднага щом се побере в блок. Щом един вход е по-нисък, locktime на трансакцията започва да важи. Достатъчно е един вход да промени настройката, дори трансакцията да има няколко входа.

Стойността на sequence определя окончателността, locktime и сигнала за RBF, а вход с изключен бит 31 използва относително заключване. Окончателен: 0xFFFFFFFF Без locktime и RBF: влиза веднага в блок. Задайте го на всеки вход за окончателност. Locktime: 0xFFFFFFFE или по-ниско Проверява се locktime на трансакцията. Достатъчно е на един вход, не на всеки. RBF: 0xFFFFFFFD или по-ниско Може да бъде заменена, докато е в мемпула. По-ниската стойност включва и locktime. Относително заключване Бит 31 е 0: задава се за всеки вход. Битовете са разписани по-долу.
Стойностите се сравняват като 32-битови числа без знак.

Как locktime използва sequence?

Locktime е поле в края на трансакцията. То назовава височина на блок или Unix време, преди което трансакцията не може да бъде изкопана. Полето влиза в сила само когато поне един sequence е fffffffe или по-нисък. Иначе трансакцията се брои за окончателна и locktime се игнорира.

Bitcoin Core използва locktime, за да обезсърчи fee sniping, трик, при който майнърите преизкопават последните блокове, за да вземат таксите им. Портфейлът на Core задава locktime на текущата височина и задава sequence на стойност под ffffffff в трансакциите си. Затова стойността sequence в типичната трансакция на Core не е окончателна.

Как RBF използва sequence?

Replace-by-fee (RBF) позволява на подателя да изпрати по-скъпа версия на трансакция, която още е в мемпула. Сигналът е sequence fffffffd или по-нисък поне в един вход, дефиниран в BIP 125. Той е само сигнал, така че замяната не трябва да има друг sequence.

Пълният replace-by-fee вече е стандартната политика на мемпула в Bitcoin Core. От версия 28.0 настройката -mempoolfullrbf е 1 по подразбиране, така че нодът приема замяна, дори когато оригиналът не е сигнализирал. Портфейлът на Bitcoin Core също сигнализира RBF по подразбиране, като DEFAULT_WALLET_RBF е зададен на true. Ръководството за блокирана трансакция описва актуалните правила и как да ги използвате.

Замяната може да прати монетите си и към други изходи, така че не е ограничена до оригиналните плащания.

Замяната трябва да плати поне таксите на трансакциите, които заменя, плюс допълнителната такса за препредаване (incremental relay fee) за собствения си размер. Минималната такса е старите такси плюс допълнителната такса за препредаване, умножена по виртуалните байтове на замяната. От Bitcoin Core 29.1 този стандарт е 100 сатоши за килобайт виртуален байт (1,000 vB), или 0.1 sat/vB, зададени в policy.h. По-ранните версии са използвали 1 sat/vB. Страницата за RBF обяснява повече как работят увеличенията на таксата.

Как работи относителното заключване?

Относителното заключване, дефинирано в BIP 68, забавя входа, докато не минат определен брой блокове или секунди след изкопаването на изхода, който харчи. Настройва се за всеки вход поотделно, така че един вход може да има закъснение, а друг да не се нуждае от такова. Правилото е задължително по консенсус от блок 419,328.

Полето sequence се чете като битово поле:

Sequence 0x0040ffff задава бит 22 (време) и стойността в битове 15 до 0 (всички 65,535), с изключен бит 31, така че относителното заключване е включено. Sequence 0x0040ffff, бит по бит 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Горен ред: битове 31 до 16. Долен ред: битове 15 до 0. Бит 31: изключване. 0 = заключването е включено. Бит 22: тип. 1 = време, 0 = блокове. Битове 15 до 0: стойност, от 0 до 65,535. Време: 65,535 единици по 512 секунди = 33,553,920 секунди, около 388 дни Неизползваните битове (30 до 23 и 21 до 16) са 0.
Примерът забавя похарчването с 65,535 единици по 512 секунди, което е малко над година.
  • Бит 31 е флагът за изключване. Когато е включен, относителното заключване за този вход е изключено. Когато е изключен, входът използва относително заключване.
  • Бит 22 е флагът за тип. Когато е включен, стойността се брои в единици по 512 секунди. Когато е изключен, стойността се брои в блокове.
  • Битове 15 до 0 пазят стойността, от 0 до 65,535.

Времето се брои в единици по 512 секунди, което е 2 на деветата степен, така че единицата е степен на двойката. Най-голямата стойност, 65,535, покрива около 388 дни. Това е близо до 455-те дни, които 65,535 блока по 600 секунди биха отнели.

Относителното заключване изисква версия 2 или по-нова на трансакцията. Трансакциите от версия 1 го игнорират, така че полето version е също толкова важно, колкото и sequence.

Какви са примерните стойности?

Това са стойностите, които разработчикът най-вероятно ще срещне:

  • fffffffe включва locktime и нищо друго. Портфейлът на Bitcoin Core я произвежда, когато не сигнализира RBF.
  • fffffffd включва и locktime, и RBF. Това е обичайният избор за трансакции, които може да се наложи да увеличите по такса.
  • 00000090 е относително заключване от 144 блока, защото 0x90 е 144, а битът за тип е изключен.
  • 00400007 е относително заключване от 3,584 секунди, защото 7 × 512 е 3,584, а битът за тип е включен.

За да съставите стойност сами, включете битовете, които ви трябват, и ги комбинирайте с OR. Страниците за байтовете и за реда на байтовете обясняват записа.

Следващата страница, изходите, разглежда другата половина на трансакцията: стойностите, които тя създава, и заключванията върху тях.

Източници

В този раздел: Трансакции

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни