Токенам ERC-20 и ERC-721 требуется отдельный контракт и адрес, развернутый в блокчейне, что может быть обременительным для систем со множеством тесно связанных токенов или даже с сочетанием взаимозаменяемых и невзаимозаменяемых токенов. Эта проблема решена в стандарте ERC-1155[41], где определяется модель мультитокена, в которой контракт предусматривает разные балансы для разных типов токенов, включая взаимозаменяемые и невзаимозаменяемые. Этот стандарт также позволяет осуществлять пакетное считывание и передачу, что снижает затраты на газ и улучшает пользовательский опыт. Как и в случае с ERC-721, в стандарте ERC-1155 операторы утверждаются для всех поддерживаемых токенов в бинарном режиме «все или ничего».
Критически важным DeFi-примитивом является возможность условного депонирования или хранения средств непосредственно в смарт-контракте. Эта ситуация принципиально отличается от ERC-20, в рамках которого операторам разрешается переводить средства с баланса пользователя. В этом случае пользователь сохраняет полный контроль над своими средствами и может как перевести их в любое время, так и отозвать «добро» на контракт. Полный контроль смарт-контракта над средствами открывает такие новые возможности (включая дополнительные примитивы), как:
• Удержание комиссий и выплата вознаграждений;
• Упрощение процесса обмена (свопа) токенов;
• Формирование рынка с помощью кривой связывания;
• Обеспеченные кредиты;
• Аукционы;
• Страховые фонды.
Для эффективного хранения токенов контракт должен быть запрограммирован на реализацию интерфейса соответствующего типа: ERC-20 – для взаимозаменяемых токенов и ERC-721 – для невзаимозаменяемых. Этот контракт может управлять всеми токенами соответствующего стандарта или же входящими в заданное подмножество. После передачи контракту токен может оказаться на постоянном хранении, если контракт не предусматривает механизма высвобождения средств. Чтобы снизить вероятность возникновения подобной ситуации, процесс передачи токена часто сопровождается проверками безопасности, которые позволяют убедиться в том, что контракт его поддерживает.
Методы регулирования предложения применяются к взаимозаменяемым токенам и сводятся к
Сжигание токена означает исключение его из обращения и может производиться двумя способами: (1) ручная отправка токена на никому не принадлежащий адрес Ethereum, или (2), что более эффективно, создание контракта, который не сможет потратить монеты. Вне зависимости от выбранного подхода сожженные токены становятся непригодными для использования, при этом контракту о сокращении предложения не будет ничего «известно». Сжигание аналогично уничтожению или необратимой утрате традиционной валюты (когда изношенные бумажные купюры сжигаются и заменяются свеженапечатанными). На практике часто бывало так, что токены ETH или ERC-20 случайно сжигались каждым из этих способов. Для предотвращения таких инцидентов используются проверка контрольной суммы адреса[42] и регистрация контрактов[43].
Более распространенной и удобной возможностью намеренного сжигания токенов является сжигание токенов в рамках выполнения смарт-контракта. Приведем несколько примеров использования алгоритмического способа утилизации монет:
• Выход из пула и выкуп базового актива (часто применяется к таким токен-акциям, как cTokens проекта Compound, который будет описан в главе 6);
• Увеличение дефицита для повышения цены (например, AAVE, рассматриваемый в главе 6, и такие модели сеньоража со стейблкойном, как Basis/ESD);
• Штрафование за недопустимые действия.
Процедурой, обратной сжиганию, является
• Вход в пул и приобретение соответствующей доли собственности (часто применяется к таким токен-акциям, как cTokens от проекта Compound);
• Уменьшение дефицита (увеличение предложения), чтобы снизить цену (модели сеньоража со стейблкойном, например, Basis/ESD);
• Вознаграждение пользователя за нужное поведение.