Фальшивые Токены для настоящего ICO: подробная, пошаговая инструкция

  • Автор темы Admin

Admin

#1
Администратор
Регистрация
31.12.2019
Сообщения
7,560
Реакции
36
Салют!
ПАРА ВВОДНЫХ СЛОВ.
Сначала я собирался описать целый дежентельменский набор инструментов для продажи ненастоящих токенов, и получения средств, которые предназначались не нам. А именно
  • Создание токенов (фальшивых или настоящих)
  • Листинг их на децентрализованных биржах
  • Клонирование лендингов ICO (или создание оригинальных)
  • Проведение собственного AirDrop'а, итд.
В общем, все чтобы скопировать чужой молодой и многообещающий проект или создать свой "молодой и многообещающий".

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

ПОЕХАЛИ.
Сначала подумаем, как именно мы можем получить свой профит:
  • Новое "качественное" scamICO
Да... да... ICO. Где мой дветыщиседьмойсемнадцатый.
Создаем красивый фасад: лендинг, white paper, road map, страница на medium и сообщество в telegram. Предлагаем купить свой ERC20 токен, отправив ETH на адрес смарт контракта.
Или еще проще - на сайте просим заполнить гуглоформу с указанием сколько ETH ты хочешь потратить и присылаем в ответном письме кошелек, на который надо переводить деньги, чтобы получить токены. Именно так это и работает. При этом сам "многообещающий проект" создавать не обязательно.

Звучит красиво и, казалось бы, что может пойти не так?
А то, что у людей уже нет такого доверия к ICO как раньше. И сейчас надо очень постараться (читай, "потратить много денег") чтобы на тебя обратили внимание. Тем более, на смену ICO постепенно приходит IEO - это когда первичную раздачу токена проводит сама биржа, например, Binance Launchpad.
Поэтому, чтобы такое сработало, надо действовать хитрее, не пытаться втюхать свой липовый проект напрямую.

  • Размещение фальшивых токенов.
Вот тут уже поинтереснее. Давайте тут поподробее
Заходим на IcoDrops в раздел Upcoming ICO и выбираем жертву.

Я выбрал Centrifuge:
Тикер CFG
Token Sale 26 мая.
Total Tokens: 425,000,000




7737058a2747404ade32d.jpg


Понятное дело, на Binance нам никто разместить токен CFG не даст. Да и любой другой токен тоже.
Но никто нам не мешает создать продажу одноименного токена на децентрализованных биржах. Например на Uniswap, 1Inch или, скажу по своему собственному опыту, на любой из топ 7 DeFi-площадок. У каждой есть свои нюансы работы, плюсы и минусы, но принцип тот же.
Для начала проверяем нет ли такого токена на Uniswap:


4a7e30013c1bd55676500.jpg


Отлично. Значит создаем свой токен Centrifuge.
Нам потребуется расширение для браузера MetaMask, кошелек и немного эфира на нем.

6785cec0add565eaee3d2.jpg


Теперь идем на фициальный сайт эфира -> Developers -> Documentation -> Integrated Development Environments.
Видим что у эфира есть отличный Web-based IDE - отлично, будем работать не выходя из браузера.


cb47e18209919ecfc300c.jpg


Кстати, на этом сайте есть еще много чего интересного, например, целая drag-and-drop песочница, куча видео, инструкций и примеров кода. Но, мы отвлеклись. Клацаем на remix.ethereum.org.

У нас открывается среда разработки и уже даже создано несколько папок и файликов. Нажимаем на "Create New File" и называем как_хотим.sol



64670bfec63e521e9bfcf.jpg



Теперь собственно осталось написать сам смарт-контракт. Но зачем же его писать, если до нас уже все написали! Я говорю про OpenZeppelin - самую известную библиотеку для ERC20 контрактов. ссыль на гитхаб: https://github.com/OpenZeppelin/openzeppelin-contracts
Только посмотрите, готовые блокчейн-решения на все случаи жизни


c37fe13a4685129606628.jpg


Идем contracts -> token -> ERC20 и выбираем файлик ERC20.sol, ведь именно такой контракт мы решили запускать?
Открываем файл, и видим кучу полезных функций (нас в первую очередь интересует "ERC20") и кучу бесполезных комментариев.


d354ebdc7117d585dc301.jpg


Бесполезных ли? Если их кто-то пишет, значит это кому-то нужно! Во-первых, сразу отмечаем себе лицензию MIT и версию solidity ^0.8.0.
Во-вторых, смотрите, что мы чуть было не пропустили:

834d37caf3f3ac638c643.jpg


Нам же нужно как-то указать предложение токенов - сколько их всего будет, и где им стоит сразу появиться (у нас на кошельке, а не у всяких там майнеров). Переходим:


0ad82cf41a4d3b68f6fee.jpg


Это нам пригодиться) Параметры, которые принимает контракт ERC20 можно посмотреть в файлике ERC20.sol, вы же попытались в нем разобраться, так?
Собственно, все что нужно мы уже собрали:

Код:
pragma solidity ^0.8.0;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";

contract CFG_contract is ERC20("Centrifuge", "CFG") {
    constructor() public {
        _mint(msg.sender, 425000000000000000000000000);
        }
}

Откуда взялось это страшное число? - оригинал проекта, который мы копируем выпускает 425,000,000 токенов + 18 нолей, это стандартное значение количества знаков поле запятой для ERC20 токенов.
Переходим в компелятор, пытаемся скомпелировать и... видем пару предупреждений:

d4890d9963d479006a58c.jpg


Первое - мы не добавили лицензию. Не беда, смотрим выше скриншот гитхаба OpenZeppelin, чей код мы копировали и берем лицензию оттуда.
Со вторым сложнее - пришлось покопаться в документации solidity (если что, это язык на котором мы писали смарт-контракт):

85a18de46ffee3d5f145e.jpg


Оказывается, начиная с версии v.0.7, указывать в контрактах public/external больше не нужно.
Ок, вносим правочки, вот что получилось:

Код:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";

contract CFG_contract is ERC20("Centrifuge", "CFG") {
    constructor() {
        _mint(msg.sender, 425000000000000000000000000);
        }
}

Жмем "Compile". Успех!
Теперь жмем "деплой". Не обращайте внимания, что я пока работаю в тестовой сети, в конце мы обязательно переключимся на боевую :)

26f3bdc5a880a4730ef1c.jpg


Нас тут же перебрасывает в MetaMask (Помните, я говорил вначале, что его надо установить) и просят заплатить комиссию за транзакцию. Нам не жалко - "подтвердить".

4d47f00d0dad68ed1d6e9.jpg


Ждем немного, пока в терминале снизу не появится зеленая строка что все хорошо и наш токен в сети.

23c7741d36625c82057e4.jpg


Ура! Кликаем на нее и попадаем в etherscan.
Тут видим адрес нашего контракта и название токена. Осталось только верифицировать аккаунт. кликаем на Verify and Publish и заполняем форму. На всякий случай скрины:

1e25117d7b58c86c8e102.jpg


Но чтож такое! Оказывается нельзя так просто взять и импоритровать 90% кода контракта файликом из OpenZeppelin.

84f99b5e8347e5ffdec93.jpg


Чтож, раз вы "так", то и мы "так". Мы просто возьмем вееееесь код который находится в файле котоый мы импортируем
(https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), удалим комменты и запихнем вместо импорта. Как тебе такое Илон Маск?
Да, да... Вы скажете, что я мог бы создать нормальное виртуальное окружение куда импортировать весь OpenZeppelin, а также использовать Truffle... Но до конца приема статей осталось несколько часов и вообще, мануал рассчитан на тех, кто не силен в код.

Так что, я заварил чайку и пошел копировать файлы Blockchain OpenZeppelin.
Для начала все что есть в файле ERC20.sol, а потом все что есть в файлах на которые он ссылается

Код:
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

Тут важно сохранять порядок, чтобы каждая функция ссылалась на уже определенную функцию:

Код:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

#Все из файла ../../utils/Context.sol
#Все из файла ./extensions/IERC20Metadata.sol
#Все из файла ./IERC20.sol

#наша контракт:
contract CFG_contract is ERC20("Centrifuge", "CFG") {
    constructor() {
        _mint(msg.sender, 425000000000000000000000000);
        }
}

Получилось довольно много кода, в целях экономии места - скрин, но по просьбам трудящихся могу опубликовать.
+ клацаем на галочку, чтобы компелятора оптимизировал наше добро. Отлично, даже чай остыть не успел)

baa673234b2ecc9ba5391.jpg


Компеляция, Деплой, оплата комиссии MetaMask. Это все мы уже умеем.

Снова переходим в etherscan.io (ссылка появится снизу в консоле)
Видим, что адрес контракта уже новый (потому что это новый контракт))
Снова жмем Verify and Publish, заполняем форму,
в поле Enter the Solidity Contract Code below вставляем весь наш код,
жмем "я не робот", выбираем все картинки с мостами иии...Успех

da718ad950022bf8ab7ff.jpg


Осталось лишь добавить этот токен в МетаМаск

de0c19a71ebc7296b85f2.jpg


На этом пока все. Нам осталось добавить токену иконку и начать листить его на UNISWAP/
но это тема других статей
успееехов!

Автор: focus
 

Members, viewing this thread

Сейчас на форуме нет ни одного пользователя.