Что такое TON для разработчика

TON с точки зрения разработчика: как устроена сеть, что такое аккаунт и сообщение, и как читать данные через RPC.

Что такое TON

TON (The Open Network) — это сеть компьютеров, которые совместно хранят состояние аккаунтов и обрабатывают сообщения между ними.

Обычное приложение обращается к одному серверу. TON устроен иначе — тысячи узлов одновременно:

  • хранят одно и то же состояние аккаунтов
  • выполняют один и тот же код контрактов (TVM)
  • приходят к одному результату
  • ведут историю, которую нельзя переписать задним числом

Аккаунты — что хранит TON

В TON единица хранения — аккаунт по адресу. У аккаунта есть баланс нативной монеты (Gram), статус и, если он контракт, код с данными:

text
Адрес EQB...abc
  balance = 12.5 GRAM
  state   = active
  code    = <байткод TVM>
  data    = <ячейки с состоянием>

Когда ты переводишь Gram, вызываешь контракт или деплоишь код — меняется состояние аккаунтов. История этих изменений публична.


Смарт-контракты — программы внутри сети

Помимо балансов, TON хранит программы. Их пишут на Tact (удобный высокоуровневый язык) или FunC/Tolk:

tact (fallback highlight)
// Tact 1.6+
contract Counter {
    value: Int as uint32;

    init() {
        self.value = 0;
    }

    receive("increment") {
        self.value = self.value + 1;
    }

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

После деплоя контракт получает постоянный адрес. Код на адресе нельзя «подменить» незаметно — любой может проверить байткод и вызвать методы.


Как обращаться к сети

Вместо REST API TON использует HTTP API / RPC (TonCenter, TonAPI и аналоги). Логика та же: отправляешь запрос, получаешь ответ.

Пример — читаем баланс любого адреса:

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",
});

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

const balance = await client.getBalance(address);
console.log(fromNano(balance)); // например "123.45"

Чтение данных публично: авторизация не нужна. Для записи нужна подпись кошелька.


Чтение vs Запись

В TON есть чёткое разделение:

ДействиеЧто нужноСтоимость
Читать данныеRPC / APIОбычно бесплатно или лимит API-ключа
Изменить состояниеПодписанное сообщение от кошелькаГаз (комиссия сети в Gram)

Чтобы перевести Gram, вызвать контракт или задеплоить код, нужна цифровая подпись. Она доказывает владение ключом кошелька — без неё сеть отклонит внешнее сообщение.

Это ключевое отличие от обычного API: нет сессий и bearer-токенов. Твоя «личность» в сети — криптографический ключ.


Что дальше

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