Вики ZooBC
Токены и рынки

Выпуск токена

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

Транзакция IssueToken

Форма IssueToken с её полями (символ, название, знаки после запятой от 0 до 8, предложение, необязательное обеспечение в ZBC и переключатели довыпуска и погашения) и кошелёк эмитента, в котором всё предложение
Форма IssueToken с её полями (символ, название, знаки после запятой от 0 до 8, предложение, необязательное обеспечение в ZBC и переключатели довыпуска и погашения) и кошелёк эмитента, в котором всё предложение

IssueToken (тип 10) указывает:

ПолеПравило
знаки после запятойот 0 до 8 (см. Знаки после запятой и шаг)
флагипогашаемость и режим довыпуска (ниже)
общее предложениебольше 0 и кратно шагу токена
обеспечение в ZBC0 или больше
символот 2 до 10 символов (ниже)
названиеот 1 до 64 байт (ниже)
платёж за продлениенеобязательно (см. Содержание токена (продление))

Флаги — это биты. Бит 0 делает токен погашаемым. Биты 1 и 2 задают режим довыпуска: 0 — фиксированное предложение, 1 — токен с возможностью довыпуска; значения 2 и 3 отклоняются. Бит 3, «без обеспечения», сохраняется и сообщается, но ни одно правило его не читает. Что позволяют эти два переключателя, объясняет статья довыпуск и сжигание токенов.

Токен, выпущенный участником группы аккаунтов, принадлежит группе.

Обеспечение

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

  • держателям, которые сжигают единицы погашаемого токена;
  • как ZBC, освобождаемые, когда комиссия оплачивается в токене (ниже);
  • держателям, когда срок токена истекает (см. Содержание токена (продление)).

Идентификатор токена

Идентификатор пользовательского токена — первые 8 байт хеша его транзакции IssueToken, прочитанные как знаковое 64-битное целое в порядке little-endian (или 1, если это число равно 0). Поэтому это собственный идентификатор транзакции выпуска (см. Подписание транзакции). Идентификатор известен, как только транзакция подписана, и узлам никогда не нужно договариваться о счётчике. API выводит идентификаторы как знаковые десятичные строки, поэтому идентификатор может быть отрицательным.

Символы не уникальны: у двух действующих токенов может быть один и тот же символ, и любой может скопировать символ, который не зарезервирован и не заблокирован. Кошельки и приложения должны показывать и проверять идентификатор, а не только символ (см. Данные цепочки — недоверенный ввод).

Правила для символа и названия

Символ состоит из 2–10 знаков, каждый из которых — заглавная латинская буква от A до Z или цифра от 0 до 9. Это исключает строчные буквы и похожие буквы из других алфавитов. Ещё два правила защищают известные имена:

  • Зарезервированные: символы из 4 или 5 знаков, которые начинаются или заканчиваются на Z, например ZBTC или BTCZ, принадлежат пространству имён моста. Символ из 6 знаков, например ZABCDE, разрешён.
  • Заблокированные: встроенный список из 78 известных тикеров, под которые никто не может маскироваться: 17 валют (например, USD, EUR, CNY и JPY), 18 стейблкоинов (например, USDT, USDC и DAI) и 43 крупные монеты (например, BTC, ETH, BNB, SOL, XRP, ADA и DOGE).
Проверка пяти символов: GOLD25 и ZABCDE приняты; ZGLD зарезервирован, так как состоит из 4 знаков и начинается с Z; USDT заблокирован как известный актив; gold отклонён из-за строчных букв
Проверка пяти символов: GOLD25 и ZABCDE приняты; ZGLD зарезервирован, так как состоит из 4 знаков и начинается с Z; USDT заблокирован как известный актив; gold отклонён из-за строчных букв

Название — от 1 до 64 байт корректного UTF-8. Оно не может содержать символы <, >, " и ' или обратный апостроф; не может содержать управляющие символы, символы нулевой ширины или меняющие направление текста, а также любые пробелы, кроме обычного; и не может начинаться или заканчиваться пробелом.

Перемещение единиц: TransferToken

TransferToken (тип 11) несёт идентификатор токена, сумму, кратную шагу, получателя, необязательный флаг оплаты комиссии в токене и необязательный платёж за продление. Идентификатор токена 0 отклоняется: ZBC — не токен, и он перемещается транзакцией SendZBC. Перевод большего числа единиц, чем есть у отправителя, — оплаченная пустая операция: она платит комиссию и ничего не перемещает.

Переводы токенов можно также проводить через эскроу (см. Эскроу; комиссия тогда оплачивается в ZBC), потоком (см. Ликвидные платежи (потоки)) или по расписанию (см. Запланированные переводы). Начиная с версии 0.5.8 одна транзакция может нести пакетом до 32 переводов любых токенов: по принципу «всё или ничего», за сумму комиссий отдельных переводов, оплачиваемую в ZBC, причём сообщение оплачивается один раз (см. Одна транзакция на аккаунт в блоке и пакеты).

Оплата комиссии в токене

Токен с обеспечением в ZBC может сам платить за свои переводы (байт флага 1). Токен освобождает ZBC из своего обеспечения, чтобы покрыть минимальную комиссию, и отдаёт соответствующие единицы:

units given up = ceil( released ZBC × supply ÷ backing ), rounded up to the step

Уменьшаются и предложение, и обеспечение. Если объявленная комиссия выше минимальной, переплата остаётся в токене.

См. также