Get-методы: чтение состояния контракта

Прочитаешь состояние контракта через get-методы в Tact и вызовешь их из TypeScript через @ton/ton.

Get-методы

Get-метод — read-only функция контракта, которую вызывает off-chain узел (через runGetMethod). Она не тратит газ отправителя как транзакция и недоступна другим контрактам on-chain.


Контракт и чтение из TypeScript

tact (fallback highlight)
// @tact-lang/compiler 1.6.13
// contracts/registry.tact

contract Registry(
    owner: Address,
    itemsCount: Int as uint32,
) {
    receive() {
        cashback(sender());
    }

    get fun owner(): Address {
        return self.owner;
    }

    get fun itemsCount(): Int {
        return self.itemsCount;
    }

    // Удобно забрать всё состояние одним вызовом
    get fun state(): Registry {
        return self;
    }
}
typescript
// @ton/ton ^15.2.0 · @ton/core ^0.60.0
import { Address, TonClient } from "@ton/ton";

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

const address = Address.parse(
  "EQD__________________________________________0", // адрес задеплоенного Registry
);

const { stack } = await client.runMethod(address, "itemsCount");
const count = stack.readNumber();
console.log(count);

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

  • get fun компилируется в get-метод TVM; имя в TS должно совпадать с именем в Tact (или с method_id, если вызываешь по числу).
  • return self в getter возвращает снимок полей контракта — удобно для индексеров и UI.
  • runMethod выполняется локально на выбранном эндпоинте относительно последнего известного состояния аккаунта.
  • На testnet смени endpoint (например Toncenter testnet) — иначе прочитаешь mainnet или получишь 404.

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

Вызов get-метода «из другого контракта» → невозможно; шли сообщение и кэшируй нужные данные у себя.

Парсишь stack не в том порядкеreadAddress / readNumber сдвинутся; сверяй сигнатуру getter.

Читаешь незадеплоенный / uninit адрес → ошибка RPC; сначала убедись, что аккаунт active.


Что дальше

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