Вернуться в блогconditional-tokens

Откуда берутся токены YES и NO: разделение, объединение и погашение

Проследите превращение обеспечения в YES и NO, объединение полных пар до определения исхода и расчёт выплат при погашении, включая проверки для операторов Kuest.

Две взаимодополняющие зелёная и красная половины токена складываются в полный круг.

Токены YES и NO возникают как два права, обеспеченные одним полным набором обеспечения. Разделение создаёт эти права, объединение собирает их обратно, а погашение выплачивает средства по записанному результату. Покупка токена у другого трейдера — отдельная операция.

Третья статья серии «Как работают Polymarket и Kuest» прослеживает активы под интерфейсом, торговой системой и контрактами. Если выплата и цена пока кажутся взаимозаменяемыми, начните со значения цены рынка прогнозов.

Начните с обеспечения, а не с цены

Возьмём наш условный вопрос: «Опубликует ли обсерватория A температуру города B не ниже 30,0 °C в 12:00 UTC в дату C?» Предположим, что источник, округление, резервный порядок и правила отмены определены. Мы рассматриваем стандартное бинарное условие Conditional Tokens Framework (CTF), где YES идёт первой, NO — второй.

Обеспечение — актив, внесённый для покрытия позиций. В этом примере один выигравший токен приносит одну единицу обеспечения; единица не означает автоматически доллар. Стейблкоин добавляет риски эмитента, переводов и стоимости, даже если интерфейс показывает знак доллара.

Все балансы ниже не учитывают комиссии, газ и финансирование. Они относятся к одному условию, одному активу обеспечения и не имеют родительской позиции. Так можно свести каждую единицу, не подмешивая активы другого рынка.

CTF обычно использует токен ERC-20 как обеспечение и балансы ERC-1155 для исходов. ERC-1155 позволяет одному контракту учитывать множество идентификаторов токенов: баланс YES для температуры и баланс YES для выборов — разные активы, даже если показаны под одним обозначением.

У полного набора есть точная идентичность

Подготовка условия регистрирует оракул, идентификатор вопроса и число исходов. Она не вносит обеспечение и не создаёт балансы исходов. В исследованном коде Kuest CTF подготовка и разделение — разные функции.

В CTF идентификатор условия равен keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount)). Адрес оракула входит в идентичность: тот же идентификатор вопроса с другим оракулом создаёт другое условие.

Коллекция обозначает набор исходов с учётом возможной родительской коллекции. Затем адрес обеспечения и идентификатор коллекции определяют позицию. У построения коллекции свой алгоритм: используйте функцию контракта getCollectionId вместо придуманного хеша названий. Это устройство объясняет руководство разработчика CTF.

Оракул, вопрос и число исходов определяют условие; родитель и наборы исходов выбирают коллекции; обеспечение уточняет каждую позицию.

Это схема построения, а не формула хеширования коллекции. Другое обеспечение или путь коллекции создаёт другие позиции.

В нашем бинарном примере разбиение — [1, 2]: битовые маски отдельно выбирают первый и второй слоты исходов. Вместе они покрывают все исходы без пересечения. Родительская коллекция — 32 нулевых байта: разделение начинается с обеспечения, а не с уже условной родительской позиции.

Поэтому одинаковых заголовков недостаточно для объединения. Проверьте сеть, контракт токена, условие, обеспечение и путь коллекции. YES в Polymarket и NO в Kuest не образуют локальный полный набор лишь потому, что вопросы похожи.

Разделение: заблокируйте 100, получите по 100 каждого исхода

Начните со 100 единиц обеспечения. Успешное разделение переводит их в контракт CTF и выпускает вызывающему 100 YES и 100 NO. Реализация разделения проверяет разбиение и выполняет эти изменения активов одной транзакцией; ошибка откатывает операцию.

100 обеспечения блокируются для выпуска 100 зелёных YES с галочкой и 100 красных NO со срезанным углом: всего 100 полных пар.

Одна пара соответствует одной единице обеспечения. Разделение создаёт оба баланса, не выбирая направление прогноза.

Теперь у кошелька 200 токенов исходов, но только 100 полных пар. Каждая пара YES–NO обеспечена одной единицей. При обычном YES токен YES платит одну единицу, NO — ноль; обычный NO меняет распределение на обратное. Разделение создало запас позиций, а не удвоило богатство.

Владение обеими сторонами тоже не выражает направленный прогноз. Маркетмейкер может разделить обеспечение, чтобы получить позиции для продажи с обеих сторон. Продажа части YES меняет риск, поскольку соответствующие NO остаются в кошельке. Само разделение не предоставляет покупателя и не фиксирует торговый доход.

Обычная покупка может просто передать уже существующие токены между аккаунтами. Если другой трейдер продаёт вам 10 имеющихся YES, его баланс уменьшается, ваш растёт; перевод не требует выпуска новых YES или NO. Источник запаса позиций и цена его приобретения — разные вопросы.

Объединение: сожгите 40 пар, освободите 40 обеспечения

До определения исхода можно объединить равные количества совпадающих исходов. Имея 100 YES и 100 NO, объедините 40 пар: контракт сжигает по 40 каждого токена и возвращает 40 обеспечения. Остаются 60 YES, 60 NO и 40 доступного обеспечения.

Из 100 YES и 100 NO сжигается по 40, возвращается 40 обеспечения; оставшиеся 60 YES и 60 NO обеспечены 60 единицами.

Сжигание совпадающих пар освобождает их обеспечение. Остальные балансы исходов не сжигаются и не выплачиваются.

Эта таблица отслеживает только наш кошелёк и покрытие его полных наборов, а не весь баланс контракта. Комиссии, газ и финансирование по-прежнему исключены.

Балансы кошелька записаны как обеспечение / YES / NO.

Этап

Балансы кошелька

Покрытие

Начало100 / 0 / 00
Разделение 1000 / 100 / 100100
Объединение 4040 / 60 / 6060
Объединение оставшихся 60100 / 0 / 00

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

При 60 YES и только 20 совпадающих NO можно объединить максимум 20 пар. Оставшиеся 40 YES сохраняют риск исхода. Одна YES не может освободить целую единицу до определения исхода, поскольку не покрывает результат NO.

Реализация объединения не требует записанного результата выплаты. Полные наборы можно собирать до определения исхода; функция не ограничена только этим периодом. Она использует обеспечение пары, а не ищет покупателя в стакане.

Погашение: используйте результат, а не последнюю котировку

Вернёмся к состоянию с 40 обеспечения и по 60 каждого токена. Если записан результат YES, погашение выбранных балансов приносит 60 обеспечения за YES и ноль за NO. До издержек кошелёк достигает 100 обеспечения; погашенные токены сжигаются.

Кошелёк только с 60 YES получит ту же выплату 60 единиц. Для погашения владельцу не нужно предоставлять NO. В этом ключевое отличие от объединения до определения исхода: записанный результат определяет выплаты по отдельным правам.

В исследованной функции погашения сумма для каждой выбранной позиции равна балансу, умноженному на соответствующий числитель выплаты и делённому на знаменатель. Знаменатель — сумма записанных числителей. Эта функция CTF погашает весь баланс выбранной позиции; параметра частичной суммы нет.

Для 100 токенов каждого исхода: победа YES даёт 100 и 0; победа NO — 0 и 100; поддерживаемая выплата половины в обычном CTF — 50 и 50.

Обеспечение, получаемое за 100 токенов каждого исхода до затрат. Случай 50/50 — возможность обычного CTF, а не обещание или поддерживаемый результат NegRisk.

Для 100 каждого токена [1, 0] даёт 100 YES / 0 NO, а [0, 1] — 0 YES / 100 NO. Поддерживаемая обычным CTF выплата [1, 1] имеет знаменатель 2 и даёт по 50 каждой стороне. Это полученное обеспечение, а не чистая прибыль; стоимость приобретения всё ещё важна.

Возможность дробной выплаты не означает универсального обещания вернуть цену покупки при отмене. Правила рынка и определяющая исход сторона должны допускать такой результат. Связанному событию NegRisk нужны собственные поддерживаемые правила выплат и восстановления: обычный бинарный резервный вариант нельзя считать применимым автоматически.

Контракт считает в целых базовых единицах и округляет деление вниз. Если у токена обеспечения шесть знаков после запятой, 100 единиц означают 100000000 базовых единиц; половина одной базовой единицы округляется до нуля. Нельзя передавать отображаемые десятичные значения как необработанные целые числа контракта.

Наступление времени окончания рынка не устанавливает выплату. Для погашения нужен записанный ненулевой знаменатель: оракул и настроенная процедура должны сначала предоставить результат. Поэтому ожидание возможно и после окончания торговли.

Продажа и погашение — разные способы выхода

Продажа требует исполнимого спроса. Вы передаёте токены исходов покупателю по согласованной цене, с учётом количества, затрат на исполнение и успеха расчётов. Это может закрыть позицию до результата, но показанная середина спреда не является доступной заявкой покупателя.

Продажа YES передаёт токены готовому покупателю по цене сделки; погашение после записи результата сжигает токены согласно правилу выплаты.

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

После определения исхода погашение использует записанную выплату и соответствующий контрактный маршрут без нового покупателя в стакане. Покупка по 0,60 и выигрышная выплата одной единицы дают 0,40 прибыли на токен до издержек; проигрыш даёт убыток 0,60, также до издержек.

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

Отличие Kuest: позиции связаны с контекстом создателя

Kuest сохраняет эти механизмы активов CTF и расширяет подготовку условия адресом создателя и ссылкой на внешние метаданные. Функция обновления метаданных разрешает изменение только создателю или администратору и записывает старую ссылку, новую ссылку и автора обновления.

Для оператора это способ на уровне кода связать условие с создателем и проследить изменения ссылки на метаданные. Он не хранит полный документ рынка в реестре CTF, не замораживает все отображаемые правила и не определяет выплату. Нужны доступные документы и ясно обозначенный маршрут определения исхода.

Публичное руководство CTF разделяет операции разделения, объединения и погашения в реестре позиций. Адаптер NegRisk — другой контрактный маршрут: перед аналогичной операцией установите его опубликованный интерфейс и обеспечение.

Разрешения зависят от маршрута: разделение требует разрешённой суммы списания обеспечения для нужного CTF или адаптера. Объединение и погашение отрицательного риска требуют также разрешения адаптеру работать с позициями CTF. Торговые разрешения не дают автоматически права на эти операции с запасом позиций.

Проверка версий на 30 октября 2026 года: текущая документация Polymarket по управлению позициями отличает адаптеры обеспечения CTF от Router и PositionManager в Protocol V2. Номер версии или похожее имя метода не доказывает совместимость с другой платформой. Используйте документированный маршрут фактической позиции.

Приведённые объяснения Kuest CTF можно сверить с её публичным верифицированным контрактом Polygon. Они не устанавливают действующее обеспечение, разрешения или оракул каждого рынка каталога. Перед включением операций подтвердите эти детали и показывайте разделение, объединение и погашение как разные движения активов.

Планируете такой опыт для аудитории? Создайте собственный рынок прогнозов с Kuest и подготовьте правила рынка, юрисдикции целевой аудитории и требования к ликвидности для выбора подходящей операционной конфигурации.