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 на трансакцията започва да важи. Достатъчно е един вход да промени настройката, дори трансакцията да има няколко входа.
Как 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 се чете като битово поле:
- Бит 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. Страниците за байтовете и за реда на байтовете обясняват записа.
Следващата страница, изходите, разглежда другата половина на трансакцията: стойностите, които тя създава, и заключванията върху тях.
Източници
- BIP 68: Relative lock-time
- BIP 125: Opt-in Full Replace-by-Fee Signaling
- Bitcoin Core 28.0: бележки към изданието, за стандартния full RBF
- Bitcoin Core: policy.h, за стандартните настройки на таксите
В този раздел: Трансакции
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни