
Что такое Token Extensions?
За последний год экосистема Solana развивалась стремительно, и в ней появилось много новых интересных технологий. Solana известна сверхвысокой скоростью обработки и низкими комиссиями за транзакции, но даже такие впечатляющие возможности всегда можно улучшить. Так появились Token Extensions — новая токен-программа, призванная расширить существующую функциональность токенов в Solana. Давайте разберёмся, что стандарт Token Extensions предлагает экосистеме Solana.
Текущая токен-программа в Solana
Все токены в Solana, кроме нативного токена $SOL, считаются SPL-токенами. К ним относятся как взаимозаменяемые токены, например $BONK, так и невзаимозаменяемые токены (NFT). Токен-программа определяет общие функции для создания и использования взаимозаменяемых и невзаимозаменяемых токенов. Она предоставляет несколько возможностей, к которым уже привыкли разработчики и конечные пользователи. Среди них выпуск, перевод и сжигание токенов. Кроме того, программа позволяет обновлять и замораживать токены. Заморозка блокирует изменение состояния токен-аккаунта до его разморозки.
Что такое Token Extensions и зачем они нужны?
Token Extensions можно считать новой и улучшенной версией токен-программы Solana. Она поддерживает как взаимозаменяемые, так и невзаимозаменяемые токены. Новая программа сохраняет все возможности прежней токен-программы, но дополняет их набором полезных функций для улучшения работы токенов в Solana. Эти новые функции — главная особенность Token2022 — реализованы в виде расширений.
Но зачем нужны Token Extensions? По мере развития Solana растёт спрос на более сложную и гибкую функциональность токенов. Текущая токен-программа Solana удовлетворяет базовые потребности взаимозаменяемых и невзаимозаменяемых токенов с помощью простого набора функций. Однако эта простота создаёт ограничения, которые могут препятствовать инновациям. Разработчикам с новыми идеями часто приходилось создавать форк токен-программы, чтобы добавить нужную функциональность. Это затрудняет широкое внедрение. Модель программирования Solana требует включать в транзакции и программы, и аккаунты. Это усложняет создание транзакций, использующих несколько токен-программ. Кроме того, кошельки и ончейн-программы должны доверять каждой поддерживаемой токен-программе, что может быть рискованно. В ответ на эти изменения Solana предлагает Token2022 — набор дополнительных функций и улучшений, расширяющих возможности токенов в экосистеме.
Представляем расширения: следующий этап развития
Революционные возможности нового стандарта заключены в доступных расширениях — наборе новых полей для решения различных задач. Проще говоря, расширение в контексте Token Extensions — это дополнительная функция, которую можно добавить токену, чтобы расширить его возможности и практическую ценность. Расширения позволяют создателям токенов настраивать их поведение и характеристики под конкретные потребности или цели. При создании токена можно использовать любое количество таких расширений. Рассмотрим несколько ключевых расширений и их потенциальное влияние на экосистему Solana. Важно отметить, что пока доступны не все из них.
Расширения выпуска токенов
Ниже описано каждое расширение выпуска токенов:
1. Комиссии за переводы
Существующая токен-программа не поддерживает комиссии за переводы. Стандарт Token Extensions меняет это, позволяя настраивать такую комиссию на уровне протокола. Этот механизм обеспечивает новый уровень финансового контроля над транзакциями.
2. Хуки переводов
Расширение Transfer Hook предоставляет создателям токенов дополнительный уровень контроля над их переводами. Это особенно важно для решения проблем, связанных с роялти NFT. Transfer Hook позволяет создателям токенов разрабатывать собственные программы, которые будут использоваться при каждом переводе. При инициации перевода токен взаимодействует с такой программой, после чего она может выполнять любые последующие действия.
3. Закрытие выпуска
Token Extensions устраняют существенный недостаток токен-программы: теперь аккаунты выпуска можно закрывать с выбранного адреса, что раньше было невозможно. Для этого расширение MintCloseAuthority инициализируют перед инициализацией выпуска. Благодаря этому закрыть выпуск токена может не только кошелёк, обладающий соответствующими полномочиями.
4. Процентные токены
Token Extensions добавляют расширение InterestBearingMint. Оно позволяет по-другому отображать количество токенов в интерфейсе с учётом накопленных процентов. По сути, эта функция позволяет токенам «приносить проценты»: чем дольше вы их храните, тем ценнее они становятся.
5. Непередаваемые токены (Soulbound-токены)
Расширение выпуска NonTransferable позволяет создавать «привязанные к душе» токены, которые нельзя вывести из кошелька. Они отлично подходят для уникальных достижений и наград, а также для билетов на мероприятия, поскольку такой билет невозможно отправить другому человеку.
6. Конфиденциальные переводы
Token Extensions добавляют новое расширение Confidential Token Extension, известное как Confidential Transfers. Эта функция обеспечивает конфиденциальность и использует доказательства с нулевым разглашением для шифрования балансов и сумм переводов SPL-токенов.
Главная цель расширения — повысить конфиденциальность пользователей, но не обеспечить анонимность. Поскольку суммы можно добавлять к балансам и вычитать из них, стандарту Token Extensions нужна схема шифрования, поддерживающая такие скрытые математические операции. Шифрование должно быть гомоморфным. Гомоморфное шифрование — особый класс схем шифрования, позволяющий выполнять определённые вычисления над зашифрованными данными без их расшифровки. В результате такие скрытые вычисления дают зашифрованное значение, которое после расшифровки совпадает с результатом тех же математических операций над открытым текстом. Confidential Transfers используют «шифрование Twisted ElGamal» для выполнения скрытых математических операций над шифротекстом.
Для тех, кому интересны подробности: шифрование Twisted ElGamal — это простой вариант стандартной схемы шифрования ElGamal, в котором шифротекст разделён на обязательство Педерсена для зашифрованного сообщения и дескриптор расшифровки, позволяющий выполнять скрытые математические операции над шифротекстом.
Confidential Transfers проверяются с помощью Sigma Protocols — особого класса доказательств с нулевым разглашением, где одна сторона (доказывающая) может подтвердить другой стороне (проверяющей), что знает секрет, не раскрывая его. Эти Sigma Protocols необходимы для ряда инструкций, предоставляемых расширением. Разберём каждое доказательство:
Доказательство корректности публичного ключа
- Проверяет правильность формата публичного ключа Twisted ElGamal
- Это похоже на проверку «цифрового удостоверения личности» другого человека перед началом защищённого чата
- Требуется для инструкции ConfigureAccount
Доказательство корректности шифротекста
- Подтверждает, что зашифрованное сообщение сформировано правильно
- Представьте, что вы получили запечатанную коробку: вы знаете, что её не вскрывали, поскольку печать не нарушена
- Требуется для инструкций
Withdraw,TransferиTransferWithFee
Доказательство нулевого баланса
- Доказывает, что шифротекст Twisted ElGamal содержит зашифрованное число ноль
- Это похоже на проверку нулевого баланса банковского счёта без открытия банковского приложения
- Требуется для инструкции
EmptyAccount
Доказательство равенства
- Подтверждает равенство двух шифротекстов ElGamal либо шифротекста ElGamal и обязательства Педерсена
- Представьте два запертых сарая с инструментами. Нужно доказать, что в обоих находится одинаковый набор инструментов, не открывая сараи
- Требуется для инструкций
Transfer,TransferWithFee,WithdrawWithheldTokensFromMintиWithdrawWithheldTokensFromAccounts
Sigma-доказательство комиссии
- Доказывает правильность зафиксированной комиссии за перевод
- Представьте, что вы подтверждаете FedEx уплату пошлины за посылку, не раскрывая точную сумму
- Требуется для инструкции
TransferWithFee
Доказательство диапазона
- Подтверждает, что зашифрованное число находится в заданном диапазоне
- Представьте, что вы оценили рост человека и доказываете, что оценка находится в определённом правильном диапазоне, не раскрывая фактический рост
- Solana использует для таких доказательств Bulletproofs. Подробнее о них можно узнать из этой научной статьи и их реализации dalek
Кратко: эти доказательства с нулевым разглашением подтверждают, что одна сторона знает секрет, который другая сторона может проверить, не узнавая его. Разные типы доказательств помогают математически подтвердить корректность балансов и переводов токенов, сохраняя полную конфиденциальность благодаря шифрованию.
В этой конфиденциальной системе баланс может просматривать только владелец аккаунта с ключом расшифровки. Однако иногда баланс должна проверить внешняя третья сторона, например для аудита или соблюдения нормативных требований. Confidential Token Extension позволяет сделать это с помощью системы Global Auditor. В этой системе у каждого аккаунта может быть отдельный ключ расшифровки, поэтому владелец может выборочно предоставить доступ на чтение определённых аккаунтов. У выпуска или организации, выпускающей активы, есть специальная структура данных, в которую при необходимости можно включить глобальный «ключ шифрования аудитора». Код выглядит так:
Transfer {
amount_sender: PKE::encrypt(pke_pubkey_sender, 10),
amount_receiver: PKE::encrypt(pke_pubkey_receiver, 10),
amount_auditor: PKE::encrypt(pke_pubkey_auditor, 10),
range_proof: RangeProof,
equality_proof: EqualityProof,
...
}Параметр amount_auditor — это сумма перевода, зашифрованная публичным ключом аудитора. Любой, у кого есть секретный ключ аудитора, может расшифровать amount_auditor и проверить суммы транзакций для конкретного выпуска.
Если вы интересуетесь безопасностью, то могли заметить потенциальный недостаток этой схемы. Предположим, Алиса создаёт доказательство на основе своего зашифрованного баланса. Одновременно Боб отправляет Алисе токены, и его транзакция обрабатывается первой. Тогда транзакция Алисы отклоняется, поскольку созданное доказательство не учитывает обновлённое состояние аккаунта. Такая атака называется фронтраннингом. Она может сделать аккаунт Алисы непригодным для использования, если Боб будет постоянно перегружать сеть переводами на её аккаунт. Чтобы предотвратить такую атаку, зашифрованный баланс аккаунта разделяется на баланс pending и баланс available:
let ct_pending = PKE::encrypt(pke_pubkey, 10);
let ct_available = PKE::encryption(pke_pubkey, 50);
Account {
mint: Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,
owner: 5vBrLAPeMjJr9UfssGbjUaBmWtrXTg2vZuMN6L4c8HE6,
encryption_key: mpbpvs1LksLmdMhCEzyu5UEWEb3dsRPbB5,
pending_balance: ct_pending,
account_balance: ct_available,
...
}Все исходящие средства вычитаются из доступного баланса, а все входящие добавляются к ожидающему балансу.
Confidential Transfers пока недоступны, а разделы «Введение» и «Краткое руководство» в документации Solana всё ещё разрабатываются. Однако следить за оставшимися задачами для Confidential Transfers можно в этой задаче GitHub в репозитории solana-program-library. В документации есть подробное описание протокола, но для использования расширения понимать изложенный там материал необязательно. Приведённого выше упрощённого обзора Confidential Transfers должно быть более чем достаточно, чтобы начать работу после запуска всех функций.
Расширения аккаунтов
Ниже описано каждое расширение аккаунта:
1. Обязательная памятка для входящих переводов
Token Extensions позволяют сделать памятку обязательной для всех входящих переводов. Памятка — это короткое ончейн-сообщение. Эта функция похожа на записку к подарку: вы знаете, кто и зачем его отправил.
2. Неизменяемое владение
Расширение ImmutableOwner повышает безопасность, запрещая переназначать владельца аккаунта. Это делает транзакции с токенами безопаснее. Чтобы лучше понять принцип работы, рассмотрим хранение токенов в стандартной токен-программе. Обычно перед отправкой токена на кошелёк сначала создаётся токен-аккаунт, который будет хранить этот токен в кошельке получателя. Такой аккаунт создаётся на основе адреса выпуска токена и адреса кошелька получателя. Проблема в том, что после создания аккаунта право владения им можно передать другому лицу. С расширением Immutable Owner в Token2022 это станет невозможно.
3. Состояние аккаунта по умолчанию
Расширение DefaultAccountState позволяет создателям выпуска ограничивать использование токенов, по умолчанию замораживая все новые токен-аккаунты. Оно обеспечивает дополнительный уровень контроля над распространением и использованием токенов. Вы сможете получить токен, но не сможете ничего с ним сделать, пока создатели токена не разрешат это.
4. Постоянный делегат
Token Extensions позволяют назначить для токена постоянного делегата аккаунта. По сути, вы можете выбрать человека или сущность — делегата, — у которого всегда будут полномочия управлять токенами определённого выпуска. Делегат сможет, например, переводить или сжигать токены. При использовании этого расширения уполномоченный делегат получит неограниченные права в отношении любого аккаунта данного выпуска. Это может быть очень опасно, поскольку делегат сможет переводить или сжигать токены в любом кошельке.
Token Extensions в сравнении с Ethereum и Binance Smart Chain (BSC)
Ethereum и Binance Smart Chain (BSC) уже добились значительного прогресса в сфере DeFi. Некоторые функции Token Extensions уже используются токенами в этих сетях.
Один из примеров — SafeMoon в BSC, где с каждой транзакции взимается комиссия 10%, из которых 5% распределяются между другими держателями SafeMoon. Это мотивирует держателей продолжать HODL. Идея конфиденциальных переводов с доказательствами с нулевым разглашением тоже не нова. В Ethereum такие проекты, как Aztec Protocol, уже исследовали приватные транзакции.
Хотя Solana внедряет эти функции немного позже, её более высокая скорость и низкие комиссии за транзакции создают благоприятные условия для развития Token Extensions. Это обеспечивает конкурентное преимущество перед Ethereum и BSC.
Первые пользователи Token Extensions
Чтобы в полной мере использовать возможности Token Extensions, разработчикам, dApp и кошелькам необходимо адаптироваться к новой функциональности. Вот несколько примеров первых интеграций новой программы:
$BERN / BonkEarn
$BERN, созданный сообществом $BONK, — один из первых токенов на базе программы Token Extensions. Сейчас $BERN использует расширение Transfer Fee, чтобы взимать комиссию 6,9% со всех переводов. Команда $BERN использует эту комиссию для вознаграждения держателей $BERN и $BONK.
Полная разбивка:
- 5% направляются в «Bernzy Bonus Fee» для вознаграждения держателей $BERN
- 1% используется для покупки и сжигания $BONK
- 0,5% используется для сжигания $BERN
- 0,3% направляются в фонд разработчиков для оплаты дополнительных комиссий и пополнения пула ликвидности токена.
- 0,1% направляется в DAO $BONK
Децентрализованные биржи
FluxBeam — это DEX в Solana, которая уже поддерживает токены, созданные с помощью программы Token Extensions.
Кошельки
Backpack, популярное расширение-кошелёк, уже добавило поддержку Token Extensions , а в Phantom соответствующая функциональность появится в ближайшее время.
Инструменты
Инструменты для выпуска собственного токена с помощью программы Token Extensions уже доступны в FluxBeam.
RugCheck — инструмент для анализа рынков токенов Solana и отдельных токенов — уже позволяет проверять токены, созданные с помощью Token 2022.
Навстречу будущему
Появление Token Extensions — огромный шаг вперёд на пути Solana в web3. Они добавляют множество новых функций и расширяют существующие возможности. Революционные расширения не только предоставляют создателям токенов больше контроля и гибкости, но и открывают новые возможности в сфере DeFi. Хотя другие блокчейны уже предлагают похожие функции, скорость и доступность Solana в сочетании с возможностями Token2022 делают её серьёзным конкурентом в мире криптовалют. По мере роста поддержки со стороны первых пользователей и широкого сообщества Token2022 готова вывести экосистему Solana на новый уровень.
Похожие статьи
Подпишитесь на Helius
Следите за новостями разработки на Solana и получайте уведомления о наших публикациях


