Skip to content

Смарт-контракты

Все ончейн-контракты развертываются на TGE (Q1–Q2 2027). До TGE данная страница является перспективной спецификацией.

Набор контрактов

КонтрактСетьНазначение
POP_JettonTONТокен $POP (стандарт Jetton TEP-74)
POP_VestingTONОбёртка вестинга по корзинам, обеспечивающая Cliff (период блокировки) + линейное высвобождение
Round_Merkle_RegistryTONХранит корни Меркла для каждого Round (раунда), поддерживает проверку доказательств
Dispute_ResolverTON24-часовое окно для споров; штрафует оператора при обоснованном оспаривании
TreasuryTONРаспределение средств под управлением DAO
GovernanceTONСистема квадратичного голосования + предложений с учётом репутации
Burn_AddressTONПринимает $POP от сжигания комиссий; гарантированно нерасходуемый
Ad_Settlement_VerifierTONВерификатор Groth16 для zk-аттестованных просмотров рекламы (Фаза 2)

Спецификация Jetton $POP

  • Стандарт: TEP-74 (TON Jetton)
  • Метаданные: Ончейн-метаданные TEP-64
  • Название: CashPop
  • Символ: $POP
  • Десятичные знаки: 9 (соответствует конвенции TON)
  • Общий объём эмиссии: 10 000 000 000 × 10^9 = 10^19 базовых единиц
  • Возможность эмиссии: Нет (фиксирован при развёртывании)
  • Возможность сжигания: Да (любым держателем, без привилегий)
  • Возможность обновления: Нет (сам Jetton неизменяем; обёртки могут эволюционировать)

Логика контракта вестинга

Каждая корзина распределения получает собственный экземпляр POP_Vesting. Параметры каждого экземпляра:

  • beneficiary: адрес, имеющий право на получение
  • total_amount: общее количество заблокированных Jetton
  • cliff_end: временная метка, до которой получение невозможно
  • linear_end: временная метка, после которой доступно 100%
  • claimed: накопленная сумма полученных средств

Высвобождаемая сумма в момент времени t:

releasable(t) =
    if t < cliff_end: 0
    elif t >= linear_end: total_amount
    else: total_amount * (t - cliff_end) / (linear_end - cliff_end)

За вычетом уже полученного. Досрочное разблокирование при любых условиях невозможно.

Реестр корней Меркла для Round

Round Engine (Движок раундов) фиксирует 32-байтовый корень Меркла для каждого Round, группируя их каждые 24 часа в одну транзакцию TON:

struct RoundBatch {
    uint64 batch_id;
    bytes32[] round_roots;   // до 1 440 корней за пакет (60 с × 1440 = 24 ч)
    uint64 first_round_id;
}

Любой пользователь может предоставить:

  • Идентификатор Round r
  • Путь доказательства Меркла p
  • Заявленный результат (участник, commit, reveal, вес)

Контракт проверяет доказательство Меркла по ончейн-корню. Если оно действительно, результат признаётся; если нет — пользователь может открыть спор.

Dispute Resolver (Разрешитель споров)

При обоснованном споре:

  • Round помечается как недействительный.
  • Оператор штрафуется на 1 000 $POP из залогового стейка в пользу Treasury.
  • Затронутые пользователи получают возмещение из призового фонда Round.
  • Round повторно урегулируется на основе канонических логов Engine.

Контракты управления

Три контракта:

  • Proposal_Registry: хранит предложения, отслеживает жизненный цикл.
  • Vote_Tallying: подсчёт квадратичных голосов с учётом веса репутации.
  • Execution_Module: исполняет принятые предложения (изменение параметров, выплаты из Treasury).

Полный жизненный цикл описан в разделе Управление.

План аудита

  • Внутренняя проверка: непрерывно, командой протокола + внешними консультантами.
  • Внешний аудит 1: целевой, компания Trail of Bits, Q3 2026.
  • Внешний аудит 2: целевой, компания OtterSec, Q4 2026.
  • Bug bounty: запускается на TGE с выделением из Treasury до $500 000 за критическую находку.

Контракты не будут развёрнуты в основной сети без двух чистых внешних аудитов.

Built on TON.