Логическое время (Lt) и очерёдность сообщений

Logical time (lt) в TON задаёт порядок транзакций и сообщений внутри аккаунта и между ними.

Logical time (lt)

Logical time (lt) — логическая метка времени в TON. Она упорядочивает события сильнее, чем настенные часы: для одного аккаунта транзакции идут по возрастанию lt, а сообщения несут created_lt отправителя.

Если ты отлаживаешь «почему сообщение B обработалось раньше A» — смотри lt, а не только timestamp блока.


Зачем lt разработчику

  • У каждой транзакции аккаунта есть свой lt
  • Исходящие сообщения получают created_lt в рамках этой транзакции
  • Получатель обрабатывает входящие с учётом порядка доставки и своих lt
  • В API/эксплорерах lt — ключ к цепочке «родитель → потомки»
typescript
// @ton/ton ^15.1.0
import { Address, TonClient } from "@ton/ton";

const client = new TonClient({
  endpoint: "https://toncenter.com/api/v2/jsonRPC",
});

const address = Address.parse(
  "EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N",
);

// Транзакции приходят с полями lt / now — точная форма зависит от метода API.
// Идея: сортируй и сопоставляй события по lt, не только по unix-time.
const txs = await client.getTransactions(address, { limit: 5 });
for (const tx of txs) {
  console.log({
    lt: tx.lt.toString(),
    now: tx.now,
    hash: tx.hash().toString("hex"),
  });
}

Как это работает

  1. Аккаунт исполняет транзакцию с монотонно растущим lt.
  2. Исходящие сообщения нумеруются логическим временем внутри этой транзакции.
  3. В другом шарде доставка асинхронна: локальный порядок на получателе не обязан совпасть с «ожиданием из Solidity-mental-model».
  4. Для протокола request/response храни query_id / свой идентификатор — не полагайся только на «следующая транзакция».

now (unix-time в контракте) — для таймаутов и человеческой шкалы. lt — для каузального порядка в машине состояний сети.


Частые ошибки

Сортировать историю только по now → коллизии и кросс-шард эффекты; для порядка на аккаунте первичен lt.

Ожидать глобальный единый таймлайн как в одном блоке EVM → TON шардирован; каузальность через сообщения и lt, не через один общий gas-order.

Не логировать lt при отладке интеграций → без lt трудно связать исходящее сообщение кошелька с входящим на контракте.


Что дальше

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация