seqno
Sequence number в TON-кошельке: 32-битный счётчик-nonce, который смарт-контракт инкрементирует при каждой исходящей транзакции для защиты от replay-атак.
Синонимы: sequence number, секно
seqno (sequence number) — 32-битный счётчик в data-cell каждого TON-кошелька, увеличивающийся на 1 после каждой исходящей транзакции. Подписанные сообщения включают seqno в тело; если seqno в подписанном сообщении не равен текущему в data — контракт отклоняет транзакцию через THROWIFNOT 33.
Зачем нужен
- Защита от replay: атакующий не может «переотправить» вашу старую транзакцию — её seqno уже инкрементирован.
- Гарантия порядка: транзакции выполняются строго по возрастанию seqno.
Как использовать в SDK
@ton/ton SDK сам читает seqno у контракта перед отправкой:
const seqno = await walletContract.getSeqno();
await walletContract.sendTransfer({ seqno, secretKey, messages: [...] });
В Wallet V5 появилась расширенная семантика: extensions могут иметь собственный seqno-namespace и подписывать независимо от основного владельца.