К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

lt (logical time)

Логическое время в TON: монотонный uint64-счётчик, заменяющий физические timestamp'ы во внутренней семантике сообщений. Аналог Lamport timestamp в распределённых системах.

Синонимы: logical time, lt ton, логическое время ton

lt (logical time) — TON-специфичная концепция логического времени: монотонный uint64-счётчик, который инкрементируется при каждой транзакции в шарде. Это аналог Lamport timestamp в распределённых системах.

Зачем нужен

Физическое время (utime / Unix timestamp) на распределённых нодах синхронизировано приблизительно (NTP-точность). Для строгой упорядоченности TON использует lt:

  • Каждая транзакция имеет свой lt и prev_lt.
  • Сообщения внутри транзакции упорядочены через created_lt.
  • lt всегда возрастает в пределах одного аккаунта/шарда — нет коллизий, нет «одинаковых моментов».

Где встречается

В API tonapi/toncenter utime и lt часто соседствуют: utime — для UX (получено в 12:34), lt — для дедупликации и точной сортировки. При листании транзакций аккаунта корректный курсор — (lt, hash), а не utime.

Пример из ответа API

Сокращённый JSON одной транзакции из getTransactions:

{
  "transaction_id": {
    "lt": "48125293000003",
    "hash": "9f5b...c1"
  },
  "utime": 1716908123,
  "in_msg": { "created_lt": "48125293000002", "value": "100000000" },
  "out_msgs": [
    { "created_lt": "48125293000004", "destination": "EQA..." }
  ]
}

Заметьте: lt в in_msg ниже, чем у транзакции; в out_msgs — выше. Каждое сообщение получает свой lt в момент создания, поэтому порядок «приходящих → исполнение → исходящие» жёстко гарантирован.

lt vs utime — когда какой использовать

ЗадачаПравильное поле
«Когда транзакция случилась» в UIutime
Сравнение «эта раньше или позже»lt
Дедупликация в БД(account, lt) — уникальная пара
Пагинация tx-историикурсор (lt, hash)
Поиск конкретной операцииlt + hash

Использовать utime для сравнения порядка — частая ошибка: внутри одной секунды могут быть тысячи транзакций, utime их «склеивает».

Логическое время в shardchain

Каждый shardchain имеет собственный отсчёт lt, не пересекающийся с другими шардами. Это не нарушает каузальность: при cross-shard сообщении принимающий шард получает created_lt отправителя, и его собственный lt просто шагает выше входящего. Так строится «happens-before» в распределённой системе TON без глобального clock.

Границы и переполнение

lt — это uint64, верхняя граница ~1.8 × 10¹⁹. При темпе 1000 транзакций в секунду на шард это ~580 миллионов лет до переполнения, так что практически — никогда.

См. также