Toncenter API: альтернатива для чтения данных

Вызовешь Toncenter API v2 (REST и JSON-RPC): баланс, состояние адреса и runGetMethod.

Что такое Toncenter API

Toncenter API v2 — HTTP-доступ к ноде TON в стиле «тонкого» RPC: балансы, состояние аккаунта, runGetMethod, отправка boc. Базовый URL mainnet: https://toncenter.com/api/v2. Без API key — порядка 1 req/s; ключ — в личном кабинете Toncenter.

Именно этот endpoint по умолчанию ожидает @ton/tonTonClient.


Баланс через REST и JSON-RPC

REST:

bash
# Toncenter API v2 — GET /getAddressBalance
curl -s "https://toncenter.com/api/v2/getAddressBalance?address=EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N" \
  -H "X-API-Key: $TONCENTER_API_KEY"

Тот же метод через JSON-RPC:

bash
curl -s "https://toncenter.com/api/v2/jsonRPC" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $TONCENTER_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getAddressBalance",
    "params": {
      "address": "EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N"
    }
  }'

Из TypeScript через официальный клиент:

typescript
// @ton/ton ^15.1.0, @ton/core ^0.59.0
import { TonClient, Address, fromNano } from "@ton/ton";

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

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

const balance = await client.getBalance(address);
console.log(fromNano(balance));

Get-метод контракта (пример — seqno у кошелька):

typescript
const result = await client.runMethod(address, "seqno");
const seqno = result.stack.readNumber();
console.log(seqno);

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

  • REST GET /api/v2/<method>?… и POST /api/v2/jsonRPC — одни и те же методы, разный транспорт.
  • Ответ баланса — строка/число в nanotons (1 GRAM = 10^9).
  • X-API-Key или ?api_key= — взаимозаменяемы; достаточно одного способа.
  • Testnet: https://testnet.toncenter.com/api/v2/....
  • Для jetton/NFT «из коробки» Toncenter беднее TonAPI — чаще нужны get-методы и парсинг ячеек.

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

429 / ratelimit без ключа → получи ключ и передай в заголовке или в TonClient({ apiKey }).

runMethod на неинициализированный адрес → exit code / ошибка выполнения. Сначала проверь состояние через getAddressInformation.

Ждёшь индексированную историю как в TonAPI → у Toncenter другой уровень абстракции. Для ленты событий и jetton UI смотри TonAPI.


Что дальше

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