Предложения обмена
Предложение обмена — простейший способ торговли в ZooBC. Мейкер блокирует сумму одного актива и называет сумму другого актива, которую хочет получить взамен; единственный тейкер платит ровно её, и обе стороны перемещаются одновременно. Предложения обмена работают с любой парой активов (ZBC, генезис-монеты или пользовательские токены) при любом числе знаков после запятой, поэтому они подходят и для токенов, которые не могут попасть на рынок с книгой ордеров.
Три транзакции
- CreateSwapOffer (тип 18) называет отдаваемую сторону (актив и сумму), запрашиваемую сторону (актив и сумму), необязательное время истечения в секундах Unix и необязательного назначенного контрагента — единственный адрес, который может принять предложение. Отдаваемая сторона сразу уходит с баланса мейкера и удерживается в предложении, поэтому тейкер знает, что она действительно есть.
- AcceptSwapOffer (тип 19) позволяет одному тейкеру заплатить всю запрашиваемую сторону. На том же шаге мейкер получает запрашиваемую сторону, а тейкер — отдаваемую. Мейкер не может принять собственное предложение.
- CancelSwapOffer (тип 20) возвращает мейкеру отдаваемую сторону в любой момент, пока предложение открыто.
Всё или ничего
Частичного исполнения нет: один тейкер забирает всё предложение, или ничего не происходит. В долг тоже ничего не даётся: обе части перемещаются одновременно и окончательно, так что впоследствии никто никому ничего не должен. Исполнение по частям против многих контрагентов — это то, что делают ордера на рынке.
Если два тейкера пытаются принять одно и то же предложение, побеждает транзакция, применённая первой. Вторая становится бессмысленной и превращается в оплаченную пустую операцию: она платит комиссию и ничего не меняет (см. Одна транзакция на аккаунт в блоке и пакеты).
Истечение срока и отмена
Истечение срока лишь прекращает возможность принять предложение. Цепочка никогда не убирает предложения сама, поэтому предложение с истёкшим сроком остаётся заблокированным, пока мейкер не отменит его и не вернёт отдаваемую сторону. Предложения обмена аренду не платят.
Предложения обмена и ордера на рынке
| Предложение обмена | Ордер на рынке | |
|---|---|---|
| Активы | любые два, с любым числом знаков после запятой | токены с 8 знаками после запятой |
| Контрагенты | один тейкер, всё или ничего | исполнение против многих ордеров |
| Цена | задана двумя суммами мейкера | каждое исполнение по цене стоящего в книге ордера |
| Аренда | нет | рынок платит аренду |
Вместе с другими возможностями
- Активы, которые получает мейкер или тейкер, — входящие зачисления, поэтому они проходят через политику разделения получателя (см. Политики разделения и транзакций).
- Аккаунт, политика транзакций которого отклоняет категорию «Обмен» (Exchange), не может ни создавать, ни принимать предложения.
- Если срок токена в открытом предложении истекает, заблокированные в предложении единицы всё равно засчитываются мейкеру, когда обеспечение токена в ZBC распределяется (см. Содержание токена (продление)).