Несмотря на хороший бизнес рейтинг и восторженные отзывы, с технической точки зрения проект UBEX выглядит как техническое мошенничество: план разработки не раскрыт, имитация плана — «вода», выпуск токенов на грани фола, SoftCap — обман , технический уровень первого продукта (смарт-контракт) — крайне низок, сборы в размере $7 млн намеренно не проверить.
UBEX, вероятно, самое популярное ICO в июле 2018 года. Оно собрало очень большое количество заинтересованных, множество восторженных обзоров, видеороликов, хвалебных статей и позитивных прогнозов. Но …
В статье рассматривается аудит следующих объектов ICO кампании на www.ubex.com, проведенный программистами CryptoB2B 12 июля 2018 по заказу частного инвестора:
- методы функционирования Личного кабинета про продаже токенов
- аудит смарт контракта
- техническая составляющая идеи проекта (на основе чтения Белой бумаги).
Предварительный вывод:
- критически ошибочный подход в понимании авторами блокчейна
- серьезные проблемы смарт контракта
- полное отсутствие объяснения в WP, как и что собираются делать авторы проекта
- не смотря на крутой бизнес рейтинг, наш рейтинг технической стороны проекта UBEX: 0/10.
Подробнее:
Метод приема денег
Прием денег в ETH осуществляется на единый адрес 0x2cc1060de78aa44e3e6a86102fac93f1de49adb2, а для приема BTC, LTC (возможно еще чего-то) используются лично генерируемые под каждого пользователя кошельки. Это дает сразу пакет потенциальных угроз и проблем.
- Прием денег на разные кошельки означает, что никто не может проверить, а были ли собраны деньги. Смарт контракт 0x2cc1060d** пересылает деньги только на кошелек бенефициара https://etherscan.io/address/0xf8eed1ae306a07d8899de8dabc3783974a680830 А там сейчас собрано 1,400 ETH ($600K). А на сайте у них написано, что собрали более $7 млн. Если бы собирали на единый кошелек в биткоинах тоже — это можно было бы проверить. А так — проверить невозможно. Лично я не верю. Согласно моей статистики по проведенным ICO, в эфире поступает около 25% денег. И то статистика работает, когда фаундеры не скрывают собранные деньги.
- Сразу отвечу, зачем они делают индивидуальные кошельки для BTC. Для того, чтобы было легче идентифицировать инвестора. Ключевое слово — легче. Но есть варианты, когда криптовалюта принимается на единый адрес и там нет никаких проблем с идентификацией, зато всем видны сборы. Что лучше — немного напрячь ленивых программистов и сделать единый кошелек с открытыми сборами или облегчить жизнь программистам? Конечно, решать фаундеру.
- В случае взлома (хакер, нелояльный программист, администратор веб-хостинга, да кто угодно) может тайно подменить алгоритм, по которому генерируются персональные кошельки, то взлом не будет обнаружен очень быстро. Если бы кошелек был единый — сами инвесторы бы начали задавать вопросы. Угроза потерять деньги и вовремя не заметить взлом — это самое серьезное обоснование, почему нельзя собирать деньги на персональные кошельки.
- Пункт (3) повторяется, если в проект сам по себе потеряет ключевую фразу (mnemo code) для восстановления кошельков или их закрытые ключи. Уважаемые инвесторы, вы хоть разок поинтересовались, сделали ли фаундеры проекта бекап?
- Представим, что хакер (или программист / сисадмин проекта) взломал сайт на 5 минут и вернул все назад. Инвестор получил индивидуальный кошелек хакера и заплатил туда. Потом обновил страницу и BTC для приема уже иной (верный). Что делать инвестору в такой ситуации? Понятно, что деньги не вернуть, но суть в том, что инвестор даже не сможет доказать, что он ни в чем не виноват! Такой инвестор будет выглядеть дураком с жалобой, что сайт заставил его заплатить не туда, куда надо.
Промежуточный вывод:
- Небезопасно: велик шанс, что при взломе это не будет быстро обнаружено.
- Схема сбора денег реализована на простецком уровне. Фаундеры или программисты не в курсе, как реализовать сборы на единый адрес, что говорит о слегка низком техническом уровне.
- Крипто сообщество хотело бы иметь инструмент узнать, сколько принято денег, а не верить байкам на сайте ICO. Блокчейн — это история, когда все можно проверить и сам глагол «верьте нам» не нужен.
Вывод: потенциально уязвимо; дешевая разработка; невозможно провести аудит.
Распределения токенов
https://etherscan.io/token/0x6704b673c70de9bf74c8fba4b4bd748f0e2190e1
Из этой страницы видно, что программист компании с кошелька 0x474e028b9710bef801D3a0bA3c282e729C0e3591 получил токены при публикации контракта, благодаря этому коду
contract UbexToken is DetailedERC20, StandardToken, BurnableToken, PausableToken { function UbexToken( uint256 totalSupply ) DetailedERC20 ( "UBEX Token", "UBEX", 18 ) { totalSupply_ = totalSupply; balances[msg.sender] = totalSupply; } }
Далее основной смарт контракт только распределяет токены, причем только за ETH. Токены за non-ETH будут распределены по желанию фаундера, а остаток по его же желанию, вероятно, обещают сжечь.
- Налицо злостная профанация самой идеи блокчейна. Суть ее — никому ничего не обещать. Компания идет в блокчейн и объясняет его надобность в своем проекте, но при этом в своем же первом (или одном из первых) технических продуктов (смарт контракт) показывает полное пренебрежение идеологией блокчейна.
- Токены распределяются по желанию человека.
- Никакого смысла в смарт контракте нет.
- Фаундер может обмануть инвесторов, например, некоторым зачислив больше токенов, чем они заплатили или вообще не сжечь лишние.
Думаете, что пунктом (4) никто не воспользуется, т.к. все честные? Я не сомневаюсь, что фаундер — честный. Но только до того момента, как к нему придет фонд (вернее, посредник от фонда) и скажет «Готов в вас инвестировать 1 млн долларов, за что хочу двухкратный бонус от вашего максимально возможного бонуса за токены + 30% денег в виде отката», то фаундер легко согласится на такие условия. Конечно, это предположения, но суть в том, что безалаберное отношение к смарт контракту позволяет в таком случае фаундеру оставаться полностью безнаказанным и даже не считать это ущемлением прав всех остальных инвесторов.
Вывод: критичное пренебрежение идеологией блокчейна; критичная незащенность прав инвесторов.
Отдельный пример низкого качества смарт контракта
Если посмотреть, какие команды сделал программист с etherscan.io/address/0x474e028b9710bef801d3a0ba3c282e729c0e3591 то выделяются следующие
https://etherscan.io/tx/0x46984fd49af4e9b4ea3645234e494ae63767b8801d59784e3181a66e99131cc9 https://etherscan.io/tx/0xaf17a7abaeaff2e579bc5ab64e6071c49f4f4e13485ca5ee149a22279e347107 https://etherscan.io/tx/0x1e8045a3b7d53cf15258280d2929ffe7b33355701d040ef6fc20e237575cac19 https://etherscan.io/tx/0x7accd8fae97be69897454f61a49bf72c2f08ceb6b48d68707f7369737df7e2c6 https://etherscan.io/tx/0x0b10c212b23ec3c84b6e697afc92e4c161482eaa40cb771d746e9e457f18b1bc https://etherscan.io/tx/0xc96338031e375c121afe01d200a5f2ea1403c4b8df6a19f7614e510288d5cc49 https://etherscan.io/tx/0x16f8769c119f472fc9b63464571241a7ae76d6a1aa31d648c6b56257d9b3c493 https://etherscan.io/tx/0xda9e9b28c82a60ceeb30e214881983afc341f5f2f74077e213ce0d9dfea1de6a
В каждой из транзакции вызывается функция:
Function: setBonusMultiplier(uint256 bonusMultiplier_) MethodID: 0xfd58e63a [0]: 0000000000000000000000000000000000000000000000000000000000000460
Не вдавался в логику, зачем это делает, но просто по названиям очевидно, что это настройка текущего бонуса ICO.
Эти запросы делались в разное время с паузами в несколько дней. Это значит, что программист лично переключает бонус.
- Автор смарт контракта начинающий программист, который не подозревал, что в Solidity существуют массивы и что смарт контракт сам по времени может переключать бонусы.
- Момент переключения бонуса слабо регламентируется. Очевидно в ICO details обещают переключения, к примеру, строго в 00:00, а человек так синхронно не сделает. Большая часть запросов сделана около 2am, но транзакция 0xaf17a7abae** сделана в 4am, на 2 часа позже регулярного действия. Были ли в это время транзакции от инвесторов?
- Инвестор может заплатить в такой момент, будучи уверенным в обещаниях, но бонус будет не тот, что ожидается.
- Программист все понимал, но ему было лень.
- Делать руками то, что легко может сделать сам смарт контракт — профанация идеи блокчейна.
Вывод: не уязвимость; ничего критичного нет; нарушение прав инвесторов; низкий уровень квалификации при подготовке к ICO.
Обзор Белой бумаги
Главы «Ubex: Service for Advertisers», «Ubex: Service for Publishers» и «The Ubex Platform» — авторы молодцы, упомянули слово блокчейн всего раз. Проект к блокчейну отношения не имеет и не описан в технической части — это ок.
Очень красивая диаграмма на 31 странице, дизайнеры — молодцы! Правда, картинка ничего не поясняет с технической точки зрения.
Это — вранье. Никак не описаны процессы, как именно программисты собираются в real-time делать поисковые запросы в блокчейне, чтобы получать ответ. Как это работает в централизованном SQL — все ясно. Главная функция системы с очень красивым названием просто не объясняется. Как они собираются делать банальный фильтр + сортировку объектов?
Всего полгода назад мы в CryptoB2B.io делали аудит точно такого же проекта HOQU.io (их вообще десятки одинаковых), только там было меньше пафоса (про нейронные сети). Досконально с программистами разбирали, как они банальный поиск собираются делать и причем тут блокчейн. Разумеется, в течении пары ответов выясняется, что главная страница сайта проекта или его мобильная версия абсолютно точно вынуждена будет использовать SQL.
В принципе, на 32 странице авторы так и пишут «Consider such a node as a black box». Просто черный ящик. Ноу-хау. Секрет. Ок.
Далее идет нормальное описание (33 и 34 стр), как все должно работать, сказки про DSP-1. Все прекрасно, кроме следующего:
- описанные функции никак блокчейна не касаются
- описано именно как должно быть, а не как авторы собираются это реализовать
На 35-37 странице авторы Белой бумаги рассказывают читателю что такое нейронная сеть. Ок, но к проекту то какое это имеет отношение? И зачем держать потенциального инвестора за дурака, которому это надо объяснять? Хотя, судя по большой сумме сборов от инвесторов…
Сама суть проекта описана в главе «Neural Network Model» на 38-41 страницах. Если удалить картинку, пустое пространство и разряженный текст (из-за списка) получается примерно 1,5 страницы самой сути, которая должна объяснять «А чего они там вообще делают-то?».
Примерно половина ключевого текста описывает, какие бывают параметры в рекламных сетях, типа там аргументы: стоимость объявления, параметры пользователя, ключевые настройки… И что эти числа можно сложить. Но, извините, а дальше то что???
Где хоть какие-то намеки, как именно программист будет реализовывать нейронную сеть? А на чем вы ее будете обучать? Чем не устраивает обычный таргетинг в уже существующих сетях? Как будете переобучать сеть при изменении модели и набора аргументов?
Возможно, я не умею читать между строк, но я не нашел ни одного намека на техническую сторону, как авторы собираются что-то решать. Техническое жонглирование терминами — вижу. Ответов, вернее даже малейших намеков — нет.
Разумеется, все написанное это личное мнение и оценочное суждение, а гуру нейронных сетей по 2-м формулам поймут тайный смысл и, особенно, про его связь с блокчейном…
Вывод по Белой бумаге:
- Никакие функции рекламного поискового движка в блокчейне работать не будут, для этого нужен старый добрый SQL или noSQL. Эту тему просто обошли даже не пытались осветить в WP.
- Самая суть проекта (нейронные сети) не описана, как реализовывать — неизвестно, в чем ноу-хау — не раскрыто.
- WP состоит из деклараций, как должно быть. Но это очевидно и без ICO.
- Места, где упоминаются блокчейн и нейронные сети — тавтология.
- Авторы дизайна WP плохо выполнили свои обязанности — диаграмм/схем (ничего не значащих) очень мало. Могли бы больше сочинить.
- Судя по серьезному сбору на дату написания аудита, либо инвесторы вообще не читали WP и не видели, что идея проекта не раскрыта, либо сборы — обман.
Прогноз. Реализация функций на обычном SQL. А чтобы отмазаться за ответственность перед инвесторами, имитация копирования отчетов в блокчейн задним числом.
Угроза для проекта
Судя по WP, проект будет делаться на блокчейне. Судя по моему опыту, ключевые и простейшие функции (поиск, сортировка) сделать на блокчейне невозможно, а только на традиционных SQL или noSQL базах данных. Ни один, даже малейший компонент системы, не обойдется без SQL. Я не буду давать прогнозы, смогут ли фаундеры реализовать проект, вероятно да, но прогнозирую проблему. Проект, если он и будет сделан, точно не будет на блокчейне, хотя фаундеры будут имитировать блокчейн функции. Аналогично и с нейронными сетями. Хвалю за попытку развивать их, но сомневаюсь, что ключевой движок будет реально их использовать, а не имитировать.
Это дает повод инвесторам подать в суд на компанию за нарушение обещаний, т.к. уже сейчас понятно, что выполнить обещания невозможно. Сделать проект без блокчейна и поднять стоимость токена — да, это возможно, я желаю удачи и команде проекта, и инвесторам.
Выход из ситуации
Не знаю, как проект докажет собранные 7+ млн долларов, вероятно, это уже невозможно. Но остальную часть денег можно собрать в нормальном публичном режиме на платформе, лишенной описанных недостатков. Что либо посоветовать исправлять в текущей ситуации — невозможно. Подход к ICO не выдерживает никакой критики и злостно дискредитирует идеологию блокчейна, хотя под ее идеи идет сбор денег. Это не тот тип ошибок, которые можно исправить, изменив несколько строк кода или закрыв уязвимость, требуется переделать все с нуля. В текущем подходе ценность токена полностью отсутствует, поэтому смена платформы во время ICO не является какой-то проблемой, в которой уже будет выпущены токены по честному алгоритму.
Если инвесторы верят фаундеру и собранные 7+ млн действительно есть, тогда все хорошо. На честном слове тоже можно реализовать проекты.
Технический рейтинг проекта UBEX
Описание основной технической идеи? Отсутствует (негативно): -8.
[-10=отстуствует, 0=нейтрально, +5=присутствует]
Найдено ли явное техническое вранье (мошенничество)? Не найдено (позитивно, нейтрально). +3.
[-10=найдено, 0=не оценивали, +3=позитивно]
Имеет ли отношение к блокчейну основные функции проекта? Нет (негативно), -7.
[-10=не имеет, 0=имеет, +10=экосистема]
Адекватность продажи токенов, защита интересов инвесторов? Ужасающе (негативно), -10.
[-10=нарушения, 0=не оценивали, +5=честное ICO]
Качество кода, ошибки в смарт контракте?* Не найдено (позитивно). +1.
[-10=найдены ошибки, 0=не оценивали и/или ошибок нет, +5=хорошее качество]
Открытость команды к проведению аудита и ответам на неудобные вопросы? Не проводили (нейтрально), 0.
[-10=враждебность, 0=не проводили, +2=открыты к сотрудничеству]
Субъективно, призовые баллы за ИТ технологи: за попытку развивать нейронные сетями (позитивно), +2.
[0=не оценивали, +5=позитивно]
* — по итогам беглого осмотра смарт контракта, т.к. программист cryptob2b еще не искал менее явные ошибки, будет сделано чуть позже и это будет поводом пересмотреть оценку.
Промежуточная оценка по формуле: -8+3-7-10+1+0+2 = -19 баллов. Числа меньше нуля или более 10 округляются до диапазона [0…10]. Итого: «-19» округляется до «0».
Градации оценки:
- -50 … -21 = экстремально плохо
- -20 .. -10 = очень плохо
- -9 … +0 = плохо
- +1 … +3 = так себе
- +4 … +9 = позитивно
- +10 .. +20 = отлично
- +21 и более = превосходно
Итоговый технический рейтинг cryptob2b по сумме показателей: 0 из 10, оценка — очень плохо.