Анализ конкретных ICO «экспертов»

На мою статью пришли комментарии и вопросы. Я в ужасе, насколько низок уровень людей, дающих комментарии по Solidity коду! В этой статье мы подробно разберем на реальных примерах, квалификацию ICO «экспертов» в интернете, досконально препарируем их логику и особенности мыслительных процессов. В статье много картинок и кода, держитесь…

Начало истории, часть #1 — https://cryptob2b.io/false-allegations-of-scam/

Вопросы #1 и #2 от haythem96

Он ссылается на эту строку кода:

require(rightAndRoles.onlyRoles(msg.sender,1));

Если посмотреть список ролей, то роль «0» — Crowdsale, роль «1» — менеджер (я), и т.д.

Кажется, что здесь разрешена эмиссия для роли №1, т.е. сотрудник компании может бесконечно эмитировать токены. На самом деле нет, это техническая безграмотность, которую легко проверить онлайн. Я за вас это сделал на этим скрине:

Фокус в том, что 1 — НЕ НОМЕР РОЛИ! Это битовая маска. Под битовую маску «1» пригоден только смартконтракт Crowdsale. Я или любые иные кошельки никакого доступа к токенам не имею.

Далее тот же человек пишет:

Тут, к сожалению, я был вынужден ответить, что он вообще ничего не понимает в структуре ICO. Действительно, Crowdsale имеет безграничные права над токеном. Но у меня или кого-то либо еще нет никаких прав, попросить Crowdsale, чтобы тот попросил Токен создать токены. Единственная возможность, когда Crowdsale командует Токену, это когда тому приходят деньги (ETH). Еще есть ряд случаев.

Данный человек, судя по его профайлу, называет себя блокчейн разработчиком и задает такой возмутительный вопрос. Это реальная жесть! Специально сделал скриншот, чтобы его не удалили. Серьезно, нельзя было такого спрашивать. Его работодателю и клиентам предлагаю задуматься. Хотя, для меня, это не новость. Я 1,5 года провожу аудиты смарт контрактов таких программистов.

Итого, все безопасно, как и задумано. Ровно так же работают самые популярные фреймворки в ICO, разделяя права на 2+ смарт контракта.

Вопрос #3 от haythem96

Этот человек обнаружил функцию с именем BURN в коде и очень испугался! Ведь мы, коварные основатели, можем сжечь все токены!!! КАРАУЛ =)

На самом деле — не можем. Вызвать функцию BURN может только Crowdsale. А в коде Crowdsale отсутствует код, чтобы вызвать указанную функцию. Это обнаружить очень легко — вызов функции закомментирован целиком:

Других мест вызвать token.burn нет. А это — закомментировано.

Итого: сжигания токенов НЕТ!

Но. Сжигать токены — это нормально. Я в статье подробно описал юридические проблемы, когда клиенты оставляют себе право сжигать токены. И делают это намеренно. У меня потому в коде и есть такая функция — одним клиентам нужно сжигать, другим нет. В Imigize — не нужно. Почитайте оригинальную статью. К сожалению, низкоквалифицированные «эксперты» не в курсе о юридических требованиях.

haythem96, спасибо за вопросы, теперь я понимаю, откуда Binod Nirvan составил свой опус.

Второй разбор комментария от Binod

Кто это такой Binod и что за открытие века он сделал написано здесь: Часть #1 — https://cryptob2b.io/false-allegations-of-scam/

К сожалению, на мое предложение взломать смарт контракт никакой реакции не последовало. Зато, благодаря haythem96 я понял логику «экспертов» низкого уровня. Серьезно вам говорю, что не догадался бы сам.

Это взялось от того, что Binod нашел строку кода

в функции, выпускающей токены, и подумал буквально следующее «РОЛЬ №1 имеет право безгранично создавать токены». Он посмотрел в список ролей, увидел, что роль №1 принадлежит сотруднику компании (условно мне) и сделал вывод: «Ага, попались! Мошенники напечают себе токены!!!».

  1. Число «1» в данной строке — не номер роли, а битовая маска. Она игнорирует команды от любого, кроме смарт контракта Crowdsale. Доказательство в «Вопросе №1+2»: скрины + вы сами можете повторить действие на скрине. Не ленитесь. Не верьте псевдоэкспертам!
  2. У Crowdsale нет никаких возможностей печатать токены, кроме как при отправке туда денег. Binod привык читать индусский код, где есть понятие «Owner». У нас в Crowdsale нет такого понятия вообще! Crowdsale не может дать команду контракта Token, если того захочет сотрудник компании. Просто нет такого кода.
  3. Из пункта два есть исключение: раунд pre-sale, когда однократно до основных раундов (Round 1 — preICO, Round 2 — ICO) выпускается сколько-то токенов. Собственно, сейчас эта ситуация — все еще идет presale, ручная продажа токенов. Второе, когда смарт контракт финализирует Round 2, чтобы создать токены для Команды, Резерва и прочих целей, описанных в Белой бумаге.

Предположим, что Binod прав (хотя — нет). Предположим, что require(rightAndRoles.onlyRoles(msg.sender,1)) действительно дает для роли №1 (мне) право бесконечно выпускать токены. Но тогда у меня вопрос — а как токены будет выпускать Crowdsale? Ведь у него роль №0? Не буду же я все ICO вручную управлять распределением токенов? Очевидно, не буду. Для того и созданы смарт контракты, чтобы все работало автоматически.

Я понимаю, Binod поторопился с выводами. Но нужно отвечать за свою техническую неграмотность. Ну, ок, хотя бы за невнимательность.

Далее комментарий:

Спасибо haythem96, ты меня спас. Я думал, Binod придирается к заморозке токенов, которая действительно есть и связана с KYC. Оказывается, дела обстоят намного-намного хуже! Binod обнаружил в смарт контракте Token функцию BURN и побежал писать комментарий. Он не смог открыть Crowdsale и обнаружить, что от туда BURN не вызывается. Вообще, никак BURN не вызвать. Код есть, а вызвать нельзя. Да, сложно о таком догадаться, работая с индусским кодом целыми днями.

Общий вывод на Binod. Что-то понимает в смарт контрактах. Но на очень примитивном уровне. Советую всем клиентам Binod заказать независимую экспертизу смарт контракта Imigize и сравнить, что написал данный «эксперт»:

  1. он написал, что есть безграничная эмиссия (ее нет)
  2. он написал, что есть удаление токенов (его нет)

Анализ ICO #1, где Binod является советником

https://www.kubitx.io/

Зарегистрировался в кабинете и нажал кнопку «Купить токены»:


При этом мне сайт выдал адрес 0x******. Открываю его на Etherscan:

Сказать, что я был в шоке — вообще ничего не сказать…

Итак, на скриншоте мы видим, что по указанному адресу не было никаких транзакций и адрес — просто адрес (не смарт контракт).

Это значит, проект Kubitx собирает деньги вообще без смарт контракта! Каждому клиенту создается отдельный адрес (просто адрес, даже не смарт контракт) и туда надо прислать денег.

Binod, ты красавчик! Я думал, что смогу прокомментировать твой код. К такому повороту я не был готов…

По большому счет технических разгром реального мошенничества в смарт контракте я сделал в этой статье: https://cryptob2b.io/ru/ubex-ico-security-audit/

Абсолютно все выводы применимы к Kubitx. Технический уровень Kubitx: -50. У UBEX было -19, т.к. хотя бы код был написал (очень плохой, но был).

Далее я для собственного успокоения пошел поискать смарт контракт https://etherscan.io/tokens по словам Kubitx и TGE (их название токена). Вообще ничего нет… Мда… такого дна я еще не видел на ICO. Обычно, хотя бы смарт контракт был =)))


Запрос TGE что-то находится, но все это про другие проекты, не от Kubitx:

Итого, «большой» эксперт Binod не смог поставить для собственного проекта даже смарт контракт, но при этом является обозревателем чужих. Браво!

Обзор еще одного ICO от Binod

www.clintex.io

Через Etherscan находим 2 смарт контракта:

https://etherscan.io/address/0x41e0a71090ea7faa0b7be3f186ee8fc27d1f516b и https://etherscan.io/address/0x4e2f7de090ed3a32a3ba1940e5c01f8e24ddf512

Первый код от второго не сильно отличается, да и второй — более свежий. Открываем его, выкидываем стандартные. Посмотрите сами на этот шедевр: https://etherscan.io/address/0x4e2f7de090ed3a32a3ba1940e5c01f8e24ddf512#code

В коде 245 строк. Из них 244 скопированы из стандартного бесплатного фреймворка (либо являются пустыми строками, либо комментариями, а не кодом).

Центральная функция:

Среди кода всего 1 строка принадлежит талантливой руке программиста из проекта clintex.io:

Суть всего смарт контракта — однократно выпустить сразу весь объем токенов на кошелек владельца компании. Никакой логики в смарт контракте нет. Вообще нет. Т.е. в нем нечего комментировать. Binod, как и раньше, является сотрудником компании, отвечающим за код.

Выводы, про ICO сделать сложно, т.к. еще не началась продажа. Но какой смысл заливать код-помойку, которая ничего не делает?

И третье ICO от Binod

https://tokensale.dice.money/

Указанный «эксперт» и в этом ICO тоже «эксперт».

Вот его контракт https://etherscan.io/address/0xf660ca1e228e7be1fa8b4f5583145e31147fb577#code. Но комментировать там нечего, пустой код, который как и в случае clintex.io просто выпускает токены (один раз, все сразу, на кошелек владельца) и все.

Вывод

Сначала я думал, что Binod — заблуждается. Потом он в комментариях обвинил меня в разных грехах. При этом не предоставил ни одного доказательства. Прокомментировать его код не представляется возможным, т.к. во всех ICO, где он принимает участие — просто нет кода! Нет кода — нет проблем. Хвалю за решение. При этом данный ИТ-мошенник комментирует мой код. Что в голове у таких людей?

Только спустя сутки, до меня дошла настоящая картина. Я совершенно напрасно выше рассказывал про совпадение «1» как битовой маски и роли. Я был не прав. Все еще хуже! Binod настольно начинающий программист, что он вообще не подозревал:

  • что в коде существуют хоть какого-то рода проверки (кроме Owner)
  • что серьезный профессиональный код состоит сразу из большой пачки смарт-контрактов

Этот человек, обладая опытом в Solidity на уровне «Скопировать бесплатный шаблон и изменить 1 строку», посмотрел мой смарт контракт (пачку контрактов). Ему в голову не пришло, что их там много! Он сразу пошел в контракт Токен и обнаружил, что выпуск токенов ничем не защищен. Я понимаю, он никогда в жизни ничего, кроме OpenZeppelin не видел. Никогда не публиковал свои смарт контракты, которые хоть что-то делают. Я то думал, он провел серьезный анализ и чуть-чуть с битовой маской ошибся! Вот я был глупый =) Мне действительно не могло прийти в голову, что у «эксперта» может оказаться еще хуже уровень. Исходя из «незащищенности» эмиссии токена он побежал и радостно написал, что мы имеет над ним полные права.

На самом деле, первая строка (на скринах выше) проверяет, кто именно имеет права. И когда имеют право. Этим занимаются два огромных других смарт контракта, у каждого своя роль. Человек настолько ужасающе безграмотен, что просто не подозревал о существовании чего либо, кроме контракта Токена! При этом он по мнению Linkedin публики эксперт с кучей хвалебных отзывов. Вы представляете себе технический ужас этого безумия? Один человек сумел залить 250 строк стандартного бесплатного контракта (где нет вообще никаких защит, никакого намека на ICO), затем у него что-то случилось в голове, он пошел искать реализации подобного шаблона и разоблачать коварных основателей других ICO!

Аналогично про удаление токенов, о чем он написал. В коде он увидел функцию BURN. Но что она делает, кто ее вызывает не посмотрел. На самом деле ее вызвать нельзя. Я 10 раз про это написал. Но этот клоун продолжал упорствовать и рассказывать басни, что есть удаление токенов. Нет, его нет. Код BURN есть. А вызвать его нельзя. Вообще никак. Код функции BURN закомментирован и не доступен для вызова! Приведу аналогию для обычной публики. Представим, есть большой юридический договор. Представим, «Приложение 1» описывает разные сценарии, как Поставщик услуг будет выполнять свою работу для Клиента. В «Приложении 1» есть ряд услуг: «мы можем выпустить токены», «можем токены сжечь», «можем провести вам эвтаназию», еще много чего можем. Это перечень услуг. А в «Приложении 2» описывается, какие именно услуги заказал Клиент. Так вот, в «Приложении 2» написано, что клиент заказал и оплатил разные услуги, но НЕ ЗАКАЗАЛ услугу «сжечь токены». Так же НЕ ЗАКАЗАЛ услуг «провести эвтаназию». Да, в договоре написано про сжигание и эвтаназию. Но услуги не действует, о чем прямо написано (не в «Приложении 1», а в «Приложении 2» — в этом суть «коварства» нашего сложного смарт контракта). Клиент берет такой договор и идет к своему юристу. Юрист дико не профессионален и глуп, поэтому свои функции по проверке договора выполняет плохо. А именно, он открывает договор на «Приложении 1», читает про сжигание токенов и эвтаназию, это преполняет его эмоциями! То, что рядом есть «Приложение 2», ему действительно не приходит в голову (искренне сочувствую умственным способностям таких «экспертов»). Этот юрист в панике звонит клиенту и сообщает «Да вам там все токена сожгут!». И добавляет, «И вообще, они хотят вас убить, смотрите, тут про эвтаназию написано».

Отдельная проблема Binod в том, что он (и другие) обвинил меня, будто я написал, что Binod требовал деньги. Нет. Я сочувствую, что никто не пытался читать, что именно я написал, но все полезли писать свои комментарии. Я написал статью про мошенников, которые действительно требуют деньги. Никто же будет спорить против этого факта? А про Binod и его опус на скриншоте я описал, что он практически полностью подпадает под шаблон мошенника, кроме требования денег. Его катастрофически низкий технический уровень + его мнение, что он может анализировать смарт контракты = техническое мошенничество. Но денег не брал. Да, не брал. Вернее, я написал, что не видел, как он хочет денег. Возможно, он берет с кого-то деньги, только мы не знаем. И я не знаю. Мне вообще не интересно, кто такой Binod. Я только провел анализ его опуса, его логики, его ICO.

Относительно комментариев в поддержку Binod. Господа, вы хвалите программиста с нулевым опытом. До сих пор его посты, вероятно, действительно были правдой (я не проверял еще). Но вчера ему не посчастливилось наткнуться на монстробразоную и сложную ICO платформу с огромным кодом. Я указал на ошибки. Предложил взломать Imigize. В ответ я получил только хамство, от меня требовали извиниться (за что?). Так вот, господа (не Binod, а другие комментаторы). Вы своими комментариями поддержали мошенника, имеющего нулевой технический уровень. Ок, скорректирую. Binod не мошенник (денег то не просил). Он мошенник в другом плане. Он думает, что его ИТ познания дают ему возможность участвовать в ICO как программист / советник. Он реально уверен, что обладает техническими познаниями. Его клиенты и комментаторы уверены в этом. На самом деле его уровень — нуль. Но он ИСКРЕННЕ верит в обратное. Binod не мошенник с намерением украсть денег, он мошенник в плане полнейшей технической несостоятельности, когда он оказывает услуги.

Когда я пишу статью, у меня идут сразу 2-3 линии сюжета. Это как в кино, когда в одном фильме прослеживаются разные сюжетные линии, возможно, не пересекаясь. У вас не хватило мозгов разделить их? Ну, это же просто. Вы обвинили меня, что обвинил его в чем-то. А этого не было. И доказать очень легко — прочитайте оригинальный текст. Но НИКТО НЕ ЗАИНТЕРЕСОВАН исправлять свои ошибки. Я — заинтересован. Я сразу в статье написал, что принесу извинения, если у меня в коде есть ошибки (я, наивный, думал, что меня комментирует эксперт, а не программист с опытом в 3 дня).

Его клиенты стали жертвой такого искреннего технического мошенничества. Я еще свяжусь со всеми основателями его ICO, чтобы передать ссылки, доказательства. Когда человек оказывает услуги в некой профессиональной теме, но при этом он не обладает квалификацией для этого — это мошенничество. Не того типа, что я описал, а другого. Вообще, 90% ICO состоит из таких же людей. Они в Белой бумаги пишут технически нереализуемые глупости и идут на ICO собирать деньги. Хотят ли они взять денег и сбежать? Нет, не хотят, они НЕ преступники, и НЕ воры, и НЕ занимают вымогательством. Но они мошенники, т.к. берут на себя обязательства, которые не могут выполнить. А клиенты или инвесторы таким непрофессиональным людям доверяют.

Как обычно добавлю, сообщения/тексты от меня являются моим личным оценочным суждением, а не официальным ответом упомянутых компаний.

Обновлено:
Binod и я проверили беседу голосом. Если кратко — дыр не нашлось, все идеально безопасно. Imigize и другие продукты — редкий образец качественного и честного кода. Подробнее…

Binod в своем оригинальном сообщении провел исследование нашей системы, выкинув из нее 70% кода. Чтобы ICO платформу запустить, нужно загрузить 100% кода:

  1. contract Creator (15%)
  2. contract Token (15%)
  3. contract Crowdsale (40%)
  4. function begin (10%)
  5. function setup (10%)
  6. function initialize (10%)

Но Binod загрузил только 30% всего кода, выполнил только 1 и 2 шаги. При далее он обнаружил в системе уязвимости, о чем и написал. Обратите внимание, что действие «выполнить загрузку 30% кода» эквивалентно действию «я из системы удалил 70% кода». Никому в голову не придет спросить: «Почему, после удаления из вашей системы 70% кода, она начинает работать нестабильно — позволяет токены сжигать и прочее?».

Проведу несколько аналогий, т.к. это читает не подготовленная публика. Предположим, есть лифт, который нужно установить в новом доме. Лифт должен работать и быть безопасным. Для этого выполняют следующие раздельные операции:

  1. Установка кабины лифта, установка электроники и компьютерных мозгов лифта в техническом помещении на чердаке дома. В этот момент любой строитель имеет доступ ко всему оборудованию лифта и если что-то сделает неаккуратно — пострадает сам лифт или строители/монтажники.
  2. Далее приглашается специалист по лифтам провести инсталляцию, подключить электричество, все проверить. Этот человек имеет полный доступ к электронике лифта, может делать что угодно.
  3. Как только 1+2 шаги окончены, владелец дома отбирает ключ от технического помещения на чердаке и более туда никого не пускает. Тем самым люди могут взаимодействовать с лифтом только на этажах и внутри кабины. Они не могут добраться до электроники или как-то нарушить безопасность. Лифт 100% безопасен.

Что же сделал Binod, когда писал свое сообщение? Он выполнил только 2 шага и обнаружил: оказывается, если специалист замкнет отверткой электро реле в мозгах лифта — может случится что угодно: лифт сломается или кто-то пострадает.

Или еще пример. Вы ставите на свой новый компьютер Linux. Как известно, Linux — очень защищенная система. Ее не взломать просто так. Но, если провести аналоги эксперимента от Binod, то получается так:

  1. Пользователь запускает инсталляцию, что занимает много времени
  2. Пользователь отвечает на разные вопросы и старается ничего лишнего не нажимать, чтобы не сломать процесс
  3. Как только Linux полностью установлен — только с этого момента он 100% безопасен.

Если же на этапе 2 сделать разные глупости (выдернуть шнур монитора, отключить/включить клавиатуру, нажимать на клавиатуре Ctrl+Alt+Delete или Ctrl+Z) то программа инсталляции Linux может сломаться и неожиданно завершиться. При этом пользователю открывается консоль (shell) с командной строкой от супер-пользователя. Далее такой пользователь идет в интернет и пишет: Смотрите, я взломал Linux и получил ROOT!!!

Тоже самое с нашей системой. Она сложная и большая. Она не похожа на примитивные / дешевые смарт контракты в 95% всех ICO. Чтобы ее установить, нужно выполнить по аналогии 1+2+3 шаги. Причем шаги нельзя выполнить разом, в одной транзакции, как и установить лифт. После шага 2 электромонтер лифта и программист смарт контракта имеют неограниченные права к системе, причем система в этот момент не работает — лифт не ездит, даже если его вызвать на этаже, а смарт контракт вообще не работает, т.к. процедура инсталляции не завершена. Открытие Binod состояло в том, что если выполнить 1+2 шаги, то в этом случае есть возможность воздействия на систему. Да, она есть. Только не на ICO платформу, ибо они еще не установлена. А как только программист установит шаг 3, то система становится идеально честной, безопасной, программист лишается всех своих прав. Например, программист на этапе 2 может указать адрес Бенефициара (получает все деньги) как свой кошелек. А после этапа 3 — уже не может. Ничего не может.

Возникает вопрос, а это проблема, что на этапе 2 программист имеет возможность что-то делать? Ну, подумайте сами, в ситуации с лифтом. Можно ли избежать шага 2, когда электромонтер физически имеет доступ и обладает правами бога. Тоже самое и с процессом загрузки смарт контракта. Если программист решит намеренно нарушить инструкцию, то почему он это должен сделать именно посла шага 1+2? С тем же успехом он просто бросит работу и пойдет пить пиво. А что программисту мешает вообще чужой смарт контракт загрузить? Да ничего не мешает. И будет небезопасно. Будут ужасы про «мы сожжем ваши токены». Только к безопасности нашей неуязвимой системы это никакого отношения не имеет. Процедура загрузки шагов 1+2+3 это такой же естественный процесс, который нельзя ломать, как если бы кто-то взял наш смарт контракт, изменил бы в нем пару строк, и показал бы нам. Думаю, очевидно, что если несанкционированно изменить наш код и внести туда уязвимость, никому в голову не придет считать это за ошибку нашей системы =) Поэтому нерушимость шагов 1+2+3 тоже самое.

Почему вообще есть шаги 1+2+3, почему нельзя сделать один? Потому, что у нас очень много кода. Наша система очень гибкая, абсолютно безопасная и действительно защищает всех всех от всех: основателя проекта защищает и от программистов, и от своих сотрудников, инвесторов проекта защищает от основателя и компании. Так же в ней много кода и она поддерживает множество функций для разных пожеланий наших клиентов. В убогих смарт контрактах, с которыми все привыкли иметь дело, по другому. Там вообще нет кода. Там никто никого ни от чего не защищает, но загрузка кода происходит не в 1+2+3, а за 1 шаг. В одном файле описаны сразу все три шага, как и у нас, только по объему влезает в один файл (из-за бедности).

Никаких технических способов избежать паузы (с лифтом, установкой Linux или загрузкой смарт контрактов) нет. Физические ограничения внешней среды не позволят. За один шаг можно не лифт установить, а выбросить из окна вашей квартиры спасательную веревку и по ней спустить. Да, что-то очень примитивное можно сделать в один шаг. Но не серьезные системы, которые приобретают свои свойства только к моменту окончания инсталляции.

Почему возник вообще этот разговор? Потому, что Binod никогда не видел больших контрактов. Он действительно не подозревал, что существует шаг 3 (4,5,6). Мы провели телефонную беседу и в течении часа я рассказал обо всех этих нюансах.

По итогу: в ICO платформе от CryptoB2B никаких дыр не нашлось и подтвердилась идеальная честность всех аспектов: честный softcap / hardcap, параметры во время раундов не изменить, программист не может украсть у владельца компании деньги или токены, никакой лазейки к бесконечной эмиссии не существует. Эмиссия токенов честная и соответствует ICO details. ICO платформа от CryptoB2B сложна для понимания и не похожа на другие ICO из-за огромного опыта разработчиков. Платформа готова к любым аудитам (и она их уже проходила ранее).

Заключение

Если вы — владелец компании, выходящей на ICO, то, к сожалению, вы лично скоро столкнетесь с такими «экспертами» и другими проходимцами, которые будут писать «компромат» на ваш проект из-за свой дикой технической неграмотности. Частично такие эксперты правы, т.к. 90-95% всех ICO платформ и смарт контрактов действительно помойка и их нужно критиковать. Но не наш. Избежать обвинений вашего в scam не получится, т.к. проходимцы из интернета никуда не денутся, но у основателя ICO есть выбор — иметь при этом надежную ICO платформу от CryptoB2B или обычную (технически примитивную).

Так же основателю компании следует помнить, что любой менеджер по продажам любого смарт контракта без зазрения совести будет утверждать, что их система идеальна и не содержит никаких ошибок. А вы думали, будет по другому? Нет. Люди одинаковые везде. Поэтому, если вы — основатель проекта, т.е. бизнесмен, а не технический специалист, у вас нет никаких инструментов как-то отфильтровать всех плохие продукты и взять хороший. Вообще никаких. Цена, красота сайта, красноречие менеджера по продажам, обещания — ничего из этого не дают ответа. Если вы надеетесь, что уж вам то повезет — да, в 1 из 20 случаев у вас будет более-менее качественный продукт. Понимаю, это звучит как реклама, на мы, критикуя ужасающе низкий технический уровень предлагаем по всем пунктам нашей критики идеальное решение, лишенное ошибок.

Обращайтесь, мы защитим ваш проект от технических нападок от мошенников, которые те сочиняют ради своего пиара. Наш опыт в ICO — более 350 клиентов за 2 года

Ссылка на оригинал: https://cryptob2b.io/ru/comments220718/

cryptob2bcontractмошенничествосмартконтрактанализicoauditsmart
25%
1
3
0 GOLOS
0
В избранное
На Golos с 2018 M07
3
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (0)
Сортировать по:
Сначала старые