Развёрнутый контракт стейблкоина USD1 содержит две функции, которых нет в публичном репозитории World Liberty на GitHub. Функция drain переводит весь баланс замороженного адреса владельцу контракта, функция reallocate переносит с замороженного адреса заданную сумму на другой кошелёк. Согласие держателя ни в том, ни в другом случае не требуется. Расхождение обнаружил Джастин Сан, сравнив живой контракт в верифицированных обозревателях блокчейна с опубликованным исходным кодом.
Коротко
- В контракте есть drain и reallocate, в публичном репозитории их нет.
- Обе функции работают только с замороженными адресами и только у привилегированных операторов.
- Инициализаторы версии V2 в публичном коде тоже не отражены.
- Предложение USD1 — около 4 млрд долларов против пика в 5,3 млрд в феврале.
- Сейчас эмитент — BitGo; выпуск должен перейти к World Liberty Trust Company.
- Развёрнутый код виден в обозревателях: от постороннего он не скрыт.
Что именно расходится
Важно развести две вещи, которые легко смешать. Сам контракт публичен и верифицирован — любой желающий может прочитать его байт-код и убедиться, какие функции там есть. Скрытым не является ничего. Расхождение в другом: разработчик или инвестор, который смотрит официальный репозиторий проекта, полного набора административных полномочий не увидит. То есть проблема не в тайне, а в том, что официальная документация не соответствует работающему коду.
| Функция | Что делает | Где есть |
|---|---|---|
| drain | Переводит весь баланс замороженного адреса владельцу контракта | только в контракте |
| reallocate | Переносит заданную сумму с замороженного адреса на другой | только в контракте |
| Инициализаторы V2 | Служебные функции версии контракта | только в контракте |
Чего эти функции не означают
Ни один из источников не утверждает, что резервы USD1 неполны или обеспечение испорчено. Функции не дают произвольному пользователю доступа к чужим средствам и не позволяют переводить деньги с любого кошелька в любой момент: они работают за привилегированными правами и только над замороженными балансами. Обвинение Сана в злом умысле в отчётах сопровождается оговоркой о недостаточности доказательств.
Почему это важно именно сейчас
История разворачивается на фоне перехода эмиссии в банковскую структуру. В августе криптобанк проекта получил предварительное условное одобрение OCC, и именно этой структуре предстоит взять на себя выпуск и хранение USD1 вместо BitGo. Прозрачность кода в такой момент перестаёт быть вопросом вкуса разработчика: она становится частью того, что оценивает регулятор.
Параллельно продолжается тяжба Сана с проектом — на этой неделе он добился публичности процесса. Заморозка адресов уже приводила к конфликту с биржей: HTX и World Liberty спорили о санкционных адресах, а сама биржа сняла USD1 с торгов.
Что здесь стоит понимать отдельно
Собственное наблюдение: спор идёт не о том, должен ли эмитент уметь замораживать средства. Уметь он обязан — этого требуют и санкционные режимы, и любой банковский регулятор, и ровно те же полномочия есть у Tether и Circle. Спор о другом: в регулируемых финансах полномочие описывают до того, как им пользуются, и описывают в документе, который читает клиент. Здесь порядок оказался обратным — функция появилась в коде, а в официальном описании её нет. Для проекта, который просится в банковский периметр, это неудобнее самого полномочия: банк отличается от смарт-контракта не набором прав, а обязанностью объявить их заранее. И именно поэтому вопрос «почему репозиторий не обновили» останется без хорошего ответа независимо от того, был ли умысел.
Чего пока не известно
World Liberty публично не прокомментировала расхождение — реакции по существу кода в отчётах нет. Не известно, почему репозиторий не привели в соответствие: небрежность, техническая недоработка или сознательное умолчание. Не сообщается и о том, применялись ли drain или reallocate на практике.
Частые вопросы
Мои USD1 могут забрать?
Функции работают только с адресами, которые уже заморожены, и только у привилегированных операторов. Произвольного доступа к чужим кошелькам они не дают.
Значит ли это, что резервы неполные?
Нет. Ни один источник не связывает найденные функции с состоянием обеспечения.
Код был скрыт?
Нет. Развёрнутый контракт верифицирован и доступен в обозревателях. Не совпадает с ним публичный репозиторий проекта.
Кто нашёл расхождение?
Джастин Сан, который сравнил живой контракт с опубликованным исходным кодом. С проектом он судится по поводу замороженных активов.
Сколько сейчас USD1 в обращении?
Около 4 млрд долларов. Пик приходился на февраль — 5,3 млрд.
Обсуждение
Добавить комментарий