Перейти к содержанию
Learning Platform
Глоссарий Troubleshooting
Урок 10.04 · 20 мин
Средний
Payment ChannelsOff-chainScalingSemi-channelsDispute Resolution

Платёжные каналы

Платёжные каналы — это механизм off-chain транзакций, позволяющий двум сторонам обмениваться микроплатежами мгновенно и практически бесплатно. Представьте бар с табом: вместо оплаты каждого напитка отдельно, вы открываете таб (канал), заказываете сколько хотите и закрываете таб в конце. Это идеальное решение для IoT-платежей, стриминга и микротранзакций.

Каждая on-chain транзакция на блокчейне стоит газа и требует времени на подтверждение. Для большинства операций это приемлемо, но существуют сценарии, где нужны мгновенные и бесплатные переводы между двумя сторонами: игровые микроплатежи, потоковые платежи за контент, высокочастотные расчёты между сервисами. Платёжные каналы (Payment Channels) решают эту задачу, перенося большинство транзакций off-chain.


Основная концепция

Платёжный канал — это механизм, позволяющий двум сторонам обмениваться подписанными обновлениями состояния без записи каждой транзакции в блокчейн. На блокчейне фиксируются только два события: открытие канала и его закрытие.

Обычные транзакции vs Платёжный канал
Обычные (5 транзакций = 5x газ)
Алиса ──tx1──► Боб (on-chain)
Алиса ──tx2──► Боб (on-chain)
Алиса ──tx3──► Боб (on-chain)
Боб ──tx4──► Алиса (on-chain)
Алиса ──tx5──► Боб (on-chain)
Канал (2 транзакции = 2x газ)
открытие канала (on-chain)
←── update 1 ──► (off-chain)
←── update 2 ──► (off-chain)
←── update 3 ──► (off-chain)
←── update N ──► (off-chain)
закрытие канала (on-chain)

Принцип работы:

  1. Стороны создают общий пул средств on-chain (смарт-контракт канала)
  2. Обмениваются подписанными обновлениями баланса off-chain
  3. Фиксируют итоговый баланс on-chain при закрытии

Большинство транзакций никогда не попадают в блокчейн — они существуют только как подписанные сообщения между участниками.


Архитектура полу-каналов (semi-channels)

TON использует специфическую архитектуру платёжных каналов, основанную на полу-каналах (semi-channels).

Структура канала

Каждый платёжный канал состоит из двух однонаправленных полу-каналов:

Структура платёжного канала
Payment Channel
Semi-channel A → B
seqno: 5
sent: 15 TON
conditional: {...}
Semi-channel B → A
seqno: 3
sent: 8 TON
conditional: {...}
Итог: Алиса отправила 15, получила 8
Нетто: Алиса → Боб = 7 TON

Тело полу-канала

Каждый полу-канал содержит три ключевых поля:

ПолеОписание
seqnoПорядковый номер, монотонно растущий. Более высокий seqno = более свежее состояние
sentОбщая сумма, отправленная в данном направлении (только растёт)
conditionalHashmap условных платежей (ожидающих выполнения условия)

Обе стороны хранят подписанные копии последнего состояния противоположного полу-канала. Это обеспечивает криптографическое доказательство того, что контрагент признал определённое распределение средств.


Жизненный цикл канала

Платёжный канал проходит четыре основные фазы:

Жизненный цикл платёжного канала
1. FUND
Депозит средств обеими сторонами
(on-chain tx)
2. INIT
Инициализация канала с начальным распределением
(on-chain tx)
3. USE
Off-chain обмен подписанными обновлениями
(off-chain)
4. CLOSE
Кооперативное или некооперативное закрытие
(on-chain tx)

1. FUND — пополнение

Обе стороны вносят средства в смарт-контракт канала через top_up_balance. Каждая сторона депонирует сумму, которую планирует потратить.

2. INIT — инициализация

Канал инициализируется с начальным распределением средств через init_channel. С этого момента канал готов к работе.

3. USE — использование

Стороны обмениваются подписанными обновлениями состояния off-chain. Каждое обновление увеличивает seqno и корректирует поле sent в соответствующем полу-канале. Эти обновления мгновенны и бесплатны — блокчейн не задействован.

4. CLOSE — закрытие

Канал закрывается одним из двух способов: кооперативно или некооперативно.


Кооперативное закрытие

Кооперативное закрытие — идеальный сценарий, когда обе стороны согласны с итоговым распределением средств.

Кооперативное закрытие
Алиса
Боб
"Давай закроем: тебе 57, мне 43" →
← "Согласен"
cooperative_close (подписан обоими)
Контракт
Алиса ← 43 TON
Боб ← 57 TON
  1. Стороны согласовывают итоговые балансы
  2. Обе подписывают сообщение cooperative_close
  3. Контракт мгновенно распределяет средства
  4. Канал закрыт — минимальный газ, нет периода ожидания

Некооперативное закрытие и споры

Если одна из сторон не отвечает или не согласна — используется некооперативное закрытие с механизмом разрешения споров.

Некооперативное закрытие и оспаривание
Алиса
Контракт
Боб
Алиса → start_uncooperative_close (states A5, B3)
Карантин (grace period)...
Боб → challenge: state B4 (более свежий!)
Обновление состояния → Таймаут → settle_conditionals
Финальное распределение: Алиса ← 41 TON | Боб ← 59 TON

Процесс

  1. Инициация: одна сторона вызывает start_uncooperative_close, предоставляя последние известные подписанные состояния обоих полу-каналов
  2. Grace period (карантин): контрагент имеет время для оспаривания. Если у него есть состояние с более высоким seqno, он может предоставить его через challenge_quarantined_state
  3. Защита от мошенничества: попытка закрыть канал с устаревшим состоянием (когда у контрагента есть более свежее) влечёт штрафные санкции
  4. Условные платежи: после истечения карантина вызывается settle_conditionals для разрешения ожидающих условных платежей
  5. Финальное распределение: средства распределяются согласно финальному верифицированному состоянию
WARNING

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


Условные платежи

Помимо простых переводов, платёжные каналы поддерживают условные платежи — платежи, которые выполняются только при соблюдении определённого условия.

Hashlock-платежи

Наиболее распространённый тип условного платежа — hashlock: платёж выполняется, когда получатель предоставляет прообраз (preimage) определённого хэша.

Условный платёж с hashlock:

Алиса: "Заплачу 5 TON, если предоставишь X такой, что hash(X) = H"

  Боб знает X (preimage):
    → Предоставляет X
    → hash(X) == H [OK]
    → Платёж выполнен: +5 TON

  Боб не знает X:
    → Таймаут
    → Платёж отменён: средства возвращены Алисе

Hashlock-механизм — основа для мульти-хоповой маршрутизации через цепочку каналов (аналогично Lightning Network на Bitcoin).


Платёжные сети

Отдельные платёжные каналы масштабируются до платёжных сетей через мульти-хоповую маршрутизацию.

Мульти-хоповый платёж через посредника
Алиса
Посредник
Боб
hash(S)5 TON · если предоставишь preimage hash(S)5 TON · если предоставишь preimage hash(S)reveal S → 5 TONreveal S → 5 TON

Платёжные сети потенциально позволяют создать инфраструктуру для мгновенных микроплатежей в масштабах всей экосистемы TON — аналог Lightning Network, но на базе TON-специфичной архитектуры полу-каналов.


Текущее состояние

NOTE

Платёжные каналы на TON имеют зрелую реализацию на уровне смарт-контрактов (репозиторий ton-blockchain/payment-channels), но ограниченное экосистемное внедрение. Большинство dApp на TON используют стандартные on-chain транзакции.

Реальность внедрения

АспектСостояние
Смарт-контрактГотовый, протестированный
ПротоколПолностью специфицирован (7 обработчиков)
Экосистемные инструментыОграниченные
Использование в dAppsМинимальное
Потенциальные нишиИгры, стриминг, IoT-микроплатежи

Почему ограниченное внедрение

  • On-chain транзакции на TON уже быстрые и дешёвые (~5 секунд в сети сейчас, legacy Catchain; 200–400 мс с Catchain 2.0, запуск Q1 2026; минимальный газ) — основная мотивация для каналов слабее, чем на Bitcoin или Ethereum
  • Каналы требуют блокировки средств и онлайн-присутствия обеих сторон
  • Отсутствие развитой инфраструктуры платёжных сетей (маршрутизация, автоматические хабы)

Перспективы

Платёжные каналы могут стать актуальными при росте нагрузки на TON, особенно в сценариях с высокочастотными микроплатежами (gaming, streaming), где даже низкий газ в сумме становится значительным.


Ключевые выводы

  1. Платёжные каналы переносят транзакции off-chain — на блокчейне фиксируются только открытие и закрытие канала
  2. TON использует архитектуру полу-каналов (semi-channels): два однонаправленных канала с монотонно растущими seqno и sent
  3. Кооперативное закрытие — быстрое и дешёвое, когда обе стороны согласны; некооперативное включает grace period и возможность оспаривания
  4. Условные платежи (hashlock) обеспечивают мульти-хоповую маршрутизацию через цепочку каналов
  5. Реализация на TON зрелая на уровне контрактов, но экосистемное внедрение ограничено — on-chain транзакции уже достаточно быстры и дешёвы
  6. Потенциал раскрывается в сценариях высокочастотных микроплатежей: игры, стриминг, IoT

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

  1. Не предусматривают механизм dispute resolution: если одна сторона попытается закрыть канал с устаревшим состоянием, другая должна иметь возможность оспорить.
  2. Забывают о timeout канала: канал без активности должен автоматически закрываться, иначе средства будут заморожены бесконечно.
  3. Не подписывают каждое промежуточное состояние: без подписей вы не сможете доказать корректное состояние при оспаривании.
  4. Путают on-chain и off-chain транзакции: только открытие и закрытие канала записываются на блокчейн, промежуточные переводы происходят off-chain.

Проверка знанийKnowledge check
Как механизм оспаривания (challenge) защищает от мошенничества при некооперативном закрытии платёжного канала?
ОтветAnswer
При некооперативном закрытии одна сторона отправляет последние известные состояния полу-каналов в контракт. Наступает grace period (карантин), в течение которого контрагент может оспорить закрытие, предоставив состояние с более высоким seqno -- доказательство того, что инициатор использовал устаревшее состояние. Поскольку seqno монотонно растёт с каждым обновлением, более высокий seqno всегда означает более свежее состояние. Попытка закрыть канал с устаревшим состоянием влечёт штрафные санкции, что делает мошенничество экономически невыгодным.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4