🔥1
Урок 5
Доброе утро всем! Надеюсь вы провели эти выходные не только отдыхая, но и с пользой.
На прошлой неделе мы начали изучение Solidity и прошли все возможные типы данных. На этой неделе мы будем изучать уже функции, модификаторы, события и Древо Меркла, если повезет со временем!
Я специально пропускаю следующее по очереди видео 5 на канале лектора, так как, подумав, решил, что сначала лучше изучить базовую основу языка, а потом уже погружаться в среду разработки и тестирования смарт-контрактов. Так у нас будет меньше каши в голове.
Итак, дамы и господа, урок 5 - Функции, транзакции, pure, view
Это чуть более сложные уроки, особенно для новичков, поэтому не стесняйтесь задавать вопросы.
Всем приятного дня и легкого обучения!
#урок
Доброе утро всем! Надеюсь вы провели эти выходные не только отдыхая, но и с пользой.
На прошлой неделе мы начали изучение Solidity и прошли все возможные типы данных. На этой неделе мы будем изучать уже функции, модификаторы, события и Древо Меркла, если повезет со временем!
Я специально пропускаю следующее по очереди видео 5 на канале лектора, так как, подумав, решил, что сначала лучше изучить базовую основу языка, а потом уже погружаться в среду разработки и тестирования смарт-контрактов. Так у нас будет меньше каши в голове.
Итак, дамы и господа, урок 5 - Функции, транзакции, pure, view
Это чуть более сложные уроки, особенно для новичков, поэтому не стесняйтесь задавать вопросы.
Всем приятного дня и легкого обучения!
#урок
YouTube
Solidity и смарт-контракты Ethereum, урок #6 | Функции, транзакции, pure, view, payable, fallback
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
🔥1
В Solidity, на данный момент, есть четыре области видимости функций: Public, Private, External и Internal.
Основное, что нужно запомнить о них это:
Public - наиболее часто встречаемая в уроках область, которая позволяет вызывать функцию как извне контракта, так и внутри него.
Private - вызывает функции ТОЛЬКО внутри самого контракта.
External - вызывает функции ТОЛЬКО извне контракта, и не доступны для вызова внутри.
Internal - наоборот, вызывает функции ТОЛЬКО внутри самого контракта, и не доступны для вызова извне.
#областивидимости #функции #function
Основное, что нужно запомнить о них это:
Public - наиболее часто встречаемая в уроках область, которая позволяет вызывать функцию как извне контракта, так и внутри него.
Private - вызывает функции ТОЛЬКО внутри самого контракта.
External - вызывает функции ТОЛЬКО извне контракта, и не доступны для вызова внутри.
Internal - наоборот, вызывает функции ТОЛЬКО внутри самого контракта, и не доступны для вызова извне.
#областивидимости #функции #function
🔥1
Функция "fallback()" вызывается в том случае, если относительно смарт-контракта бала вызвана транзакция с неизвеным именем функции.
Это нужно для того чтобы, например, в случае, если на смарт-контракт придет транзакция с вызовом функции, которой нет, она не откатится, а покажет ошибку, которая была описана в "fallback".
Проще говоря, если к нам придет транзакция, которая запросит функцию возврата денег, а она не прописана у нас, то в "fallback" можно отловить этот момент и показать ошибку.
#fallback #функции #function
Это нужно для того чтобы, например, в случае, если на смарт-контракт придет транзакция с вызовом функции, которой нет, она не откатится, а покажет ошибку, которая была описана в "fallback".
Проще говоря, если к нам придет транзакция, которая запросит функцию возврата денег, а она не прописана у нас, то в "fallback" можно отловить этот момент и показать ошибку.
#fallback #функции #function
🔥1
Как сегодня по сложности, выпускаем новый урок завтра или ждем еще день?
Anonymous Poll
69%
Все ок, завтра можно новый урок
31%
Мне нужен еще один день
Урок 6, сокращенный!
Да, я видел в опросе, что несколько человек попросили еще один день для разбора уроков, но я решил поступить немного иначе. И сейчас объясню в чем дело.
Я просмотрел пару уроков вперед, чтобы понять, куда мы движемся и что потребуется дальше. А дальше, идет уже заканчивается базис и начинается тестирование смарт-контрактов. И для этого нам потребуется вернуться к пятому видео уроку лектора и настроить среду разработки. Поэтому поступим так...
Сегодня мы смотрим сокращенное видео, до 17 минуты, до начала тестирования.
Завтра оставляем свободный день для закрепления материала и повторения пройденного, а в четверг вступаем в новый бой с подготовкой рабочей среды.
Со следующей недели пойдет уже боевой режим, где будем писать полноценный код и вникать в нюансы смарт-контрактов.
Также хотел бы понять вопрос активности канала и обучающихся.
Да, я понимаю, что некоторые подписались просто так, и, возможно, подключатся к активности на более поздних стадиях обучения или какого-то движа.
Но эта группа была создана для СОВМЕСТНОГО обучения, а выходит, что я просто делаю заметки для себя на канале, и вообще не понимаю, заходит ли вам такой формат, учитесь ли вместе со мной или что вообще происходит.
Если участникам вопрос обучение уже не интересен и вы хотите просто наблюдать, то это абсолютно ок. В этом случаем я просто буду двигаться в своем удобном темпе и выкладывать уроки и заметки так, как я сам прохожу обучение.
Изначально, я планировал обучиться группой и запилить интересный проект вместе, но сейчас уже думаю, что это стало просто каналом для постов с уроками.
Я бы хотел от каждого участника в комментариях услышать мнение по этому поводу. Я вкладываю много сил в это, и не хочу чтобы все было напрасно.
#урок
Да, я видел в опросе, что несколько человек попросили еще один день для разбора уроков, но я решил поступить немного иначе. И сейчас объясню в чем дело.
Я просмотрел пару уроков вперед, чтобы понять, куда мы движемся и что потребуется дальше. А дальше, идет уже заканчивается базис и начинается тестирование смарт-контрактов. И для этого нам потребуется вернуться к пятому видео уроку лектора и настроить среду разработки. Поэтому поступим так...
Сегодня мы смотрим сокращенное видео, до 17 минуты, до начала тестирования.
Завтра оставляем свободный день для закрепления материала и повторения пройденного, а в четверг вступаем в новый бой с подготовкой рабочей среды.
Со следующей недели пойдет уже боевой режим, где будем писать полноценный код и вникать в нюансы смарт-контрактов.
Также хотел бы понять вопрос активности канала и обучающихся.
Да, я понимаю, что некоторые подписались просто так, и, возможно, подключатся к активности на более поздних стадиях обучения или какого-то движа.
Но эта группа была создана для СОВМЕСТНОГО обучения, а выходит, что я просто делаю заметки для себя на канале, и вообще не понимаю, заходит ли вам такой формат, учитесь ли вместе со мной или что вообще происходит.
Если участникам вопрос обучение уже не интересен и вы хотите просто наблюдать, то это абсолютно ок. В этом случаем я просто буду двигаться в своем удобном темпе и выкладывать уроки и заметки так, как я сам прохожу обучение.
Изначально, я планировал обучиться группой и запилить интересный проект вместе, но сейчас уже думаю, что это стало просто каналом для постов с уроками.
Я бы хотел от каждого участника в комментариях услышать мнение по этому поводу. Я вкладываю много сил в это, и не хочу чтобы все было напрасно.
#урок
YouTube
Solidity и смарт-контракты Ethereum, урок #7 | События, модификаторы, require/revert и тесты
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
🔥1
В Solidity существует несколько инструкций для выполнения функций смарт-контракта. Говоря проще, они проверяют какое-то условие и, если оно не выполнено, то транзакция откачивается, т.е. отменяется.
Существует три параметра Require, Revert, Assert.
Require - принимает два параметра: условие и сообщение об ошибке.
Revert - практически тоже самое, что и require, за исключением того, что принимается только сообщение об ошибке, а условие нужно писать самому.
Assert - используется реже, чем два предыдущих параметра, и принимает только один аргумент - условие.
#require #revert #assert
Существует три параметра Require, Revert, Assert.
Require - принимает два параметра: условие и сообщение об ошибке.
Revert - практически тоже самое, что и require, за исключением того, что принимается только сообщение об ошибке, а условие нужно писать самому.
Assert - используется реже, чем два предыдущих параметра, и принимает только один аргумент - условие.
#require #revert #assert
🔥1
Также в Solidity можно писать свои собственные модификаторы для функций. Это может быть полезно, если одно и тоже условие используется в нескольких функциях.
Тут обратите внимание, что нужно обязательно прописывать "_;", иначе функция, к которой прикреплен модификатор, не сработает.
#modifier #модификатор
Тут обратите внимание, что нужно обязательно прописывать "_;", иначе функция, к которой прикреплен модификатор, не сработает.
#modifier #модификатор
🔥1
🔥1
Всем доброго вечера!
Сегодня был немного загруженный день, поэтому времени на посты не было. Хорошо, что вчера решили сделать сегодняшний день свободным, чтобы можно было подучить уроки и подготовиться к дальнейшему обучению.
Чуть позже поделюсь своим планом обучения, который я сформировал для себя, проходя уроки. Уверен, что он будет полезен всем, кто хочет освоить эту профессию на достаточно хорошем уровне!
Также, мы открываем чат группу для всех участников обучения. Там будет удобнее общаться, задавать вопросы и делиться материалами всем участникам.
Присоединяйтесь -https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
Сегодня был немного загруженный день, поэтому времени на посты не было. Хорошо, что вчера решили сделать сегодняшний день свободным, чтобы можно было подучить уроки и подготовиться к дальнейшему обучению.
Чуть позже поделюсь своим планом обучения, который я сформировал для себя, проходя уроки. Уверен, что он будет полезен всем, кто хочет освоить эту профессию на достаточно хорошем уровне!
Также, мы открываем чат группу для всех участников обучения. Там будет удобнее общаться, задавать вопросы и делиться материалами всем участникам.
Присоединяйтесь -https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
🔥1
Спустя практически две недели, и пару десяткой отсмотренных видео на русском и английском языках по темам Solidity, блокчейна и смарт-крнтрактов, я создал для себя план обучения, который считаю поможет действительно стать хотя бы если не хорошим мидлом, то уверенным джуном.
Итак, вот моя программа, по которой я учусь.
Часть 1. Базовая теория и навыки
1) Изучение базовых единиц языка (типы данных, функции, модификаторы)
2) Базовые знания работы с Node.js и npm
3) Погружение в Solidity (древо Меркла, библиотеки, интерфейсы)
4) Работа с памятью смарт-контрактов (calldata, memory)
4) Изучение среды разработки и тестирование смарт-контрактов (Hardhat, ether.js, mocha, chai)
5) Паттерны использования смарт-контрактов (timelock, multisig, commit, etc)
Часть 2. Применение на практике
6) Вспомогательные сервисы и библиотеки (open zeppelin)
7) Деплой контрактов в различных сетях (rinkeby)
8) Работа с метамаск (подключение и перевод средств)
9) Создание простых токенов (ERC20 и ERC721)
10) Создание nft
12) Конфигурация блокчейн-сети
Часть 3. Дополнительные навыки
13) Работа с truffle (аналог hardhat)
14) Работа с Alchemy (web3)
15) Изучение доступных блокчейн
16) DAO и Governance
17) Расчет и оптимизация газа
Часть 4. Фронтенд
18) Изучение react.js
Первые две части вполне еще выполнить до конца лета, а дальше уже только впахивать и обучаться в группе или самому на практике.
Можете скопировать себе этот план, чтобы вернуться к нему, когда будете готовы учиться.
#планобучения
Итак, вот моя программа, по которой я учусь.
Часть 1. Базовая теория и навыки
1) Изучение базовых единиц языка (типы данных, функции, модификаторы)
2) Базовые знания работы с Node.js и npm
3) Погружение в Solidity (древо Меркла, библиотеки, интерфейсы)
4) Работа с памятью смарт-контрактов (calldata, memory)
4) Изучение среды разработки и тестирование смарт-контрактов (Hardhat, ether.js, mocha, chai)
5) Паттерны использования смарт-контрактов (timelock, multisig, commit, etc)
Часть 2. Применение на практике
6) Вспомогательные сервисы и библиотеки (open zeppelin)
7) Деплой контрактов в различных сетях (rinkeby)
8) Работа с метамаск (подключение и перевод средств)
9) Создание простых токенов (ERC20 и ERC721)
10) Создание nft
12) Конфигурация блокчейн-сети
Часть 3. Дополнительные навыки
13) Работа с truffle (аналог hardhat)
14) Работа с Alchemy (web3)
15) Изучение доступных блокчейн
16) DAO и Governance
17) Расчет и оптимизация газа
Часть 4. Фронтенд
18) Изучение react.js
Первые две части вполне еще выполнить до конца лета, а дальше уже только впахивать и обучаться в группе или самому на практике.
Можете скопировать себе этот план, чтобы вернуться к нему, когда будете готовы учиться.
#планобучения
🔥1
Урок 7
Сегодня мы немного отойдем от Solidity, для того чтобы подготовиться и получить навыки, которые потребуются в обучении дальше.
Вам нужно посмотреть три новых видео и в общих чертах понять, что да как там работает. Если захотите "копнуть глубже" и узнать больше, скажем о Node.js, то это уже на самостоятельный поиск.
Я выбрал именно эти три видео, так как они показались мне наиболее понятными для новичка, коим я и являюсь.
Тем не менее, если у вас появятся вопросы, то пишите их в чат - https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
Итак, первое видео, которое нужно посмотреть - это про работу с терминалом или командной строкой.
Видео 1 - Основы работы с терминалом за 20 минут!
Далее, узнаем больше о Node.js.
Видео 2 - Node JS - Быстрый Курс за 1 час
И последнее рассказывает о NPM.
Видео 3 - Что такое Node Package Manager (NPM)
Для кого-то эта информация может показаться предельно простой, для кого-то с задачей со звездочкой. Еще раз - не бойтесь задавать вопросы.
Сегодня мы немного отойдем от Solidity, для того чтобы подготовиться и получить навыки, которые потребуются в обучении дальше.
Вам нужно посмотреть три новых видео и в общих чертах понять, что да как там работает. Если захотите "копнуть глубже" и узнать больше, скажем о Node.js, то это уже на самостоятельный поиск.
Я выбрал именно эти три видео, так как они показались мне наиболее понятными для новичка, коим я и являюсь.
Тем не менее, если у вас появятся вопросы, то пишите их в чат - https://news.1rj.ru/str/+CqKZNgqZ640wNDdi
Итак, первое видео, которое нужно посмотреть - это про работу с терминалом или командной строкой.
Видео 1 - Основы работы с терминалом за 20 минут!
Далее, узнаем больше о Node.js.
Видео 2 - Node JS - Быстрый Курс за 1 час
И последнее рассказывает о NPM.
Видео 3 - Что такое Node Package Manager (NPM)
Для кого-то эта информация может показаться предельно простой, для кого-то с задачей со звездочкой. Еще раз - не бойтесь задавать вопросы.
🔥1
Терминал или командная строка будет часто встречаться в уроках по программированию. Из урока мы можем запомнить несколько команд:
"ls" / "dir" - показывает список всех файлов в папке. Если хотим открыть определенную папку, то пишем ее название после указанных команд;
"cd folderName" - зайти в папку (folderName - название папки);
"cd .." - перейти на папку выше;
"pwd" - получить полный путь к данному местоположению;
"mkdir folderName" - создание новой папки;
"rmdir folderName" - полное удаление файла или папки;
"cat filePath" - открыть файл (filePath - путь до файла);
"open filePath" - открыть программу;
"clear" - очистить терминал;
Тут посмотреть больше команд для cmd на Windows - ссылка на сайт.
А тут 20 популярных команд для Mac - ссылка на сайт.
#терминал #terminal #cmd
"ls" / "dir" - показывает список всех файлов в папке. Если хотим открыть определенную папку, то пишем ее название после указанных команд;
"cd folderName" - зайти в папку (folderName - название папки);
"cd .." - перейти на папку выше;
"pwd" - получить полный путь к данному местоположению;
"mkdir folderName" - создание новой папки;
"rmdir folderName" - полное удаление файла или папки;
"cat filePath" - открыть файл (filePath - путь до файла);
"open filePath" - открыть программу;
"clear" - очистить терминал;
Тут посмотреть больше команд для cmd на Windows - ссылка на сайт.
А тут 20 популярных команд для Mac - ссылка на сайт.
#терминал #terminal #cmd
❤3🔥1
Скачать node.js можно по ссылке тут - https://nodejs.org/en/
А проверить прошла ли установка правильно и узнать текущую версию можно, написав "node -v" в командной строке.
Чтобы запустить node.js нужно написать в терминале "node", а чтобы закончить работу с ним - ".exit"
#nodejs
А проверить прошла ли установка правильно и узнать текущую версию можно, написав "node -v" в командной строке.
Чтобы запустить node.js нужно написать в терминале "node", а чтобы закончить работу с ним - ".exit"
#nodejs
🔥1
Как я учу Solidity
Сегодня еще один день для наверстывания материала и вникания в последние три видео, которые были на канале. Тем, кто раньше никогда не сталкивался с node.js, npm и терминалом, стоит уделить несколько дней, чтобы разобраться в основах. Как я говорил ранее, их мы будем использовать довольно часто.
Вообще, сегодня пришла мысль, что изучение программного языка очень схоже по изучения иностранного языка. В этом я могу быть уверен, так как знаю английский, японский и немного испанского.
Основная идея заключается в том, что нужно начать думать на нем, как бы странно это не звучало.
Когда я изучал английский, то старался проговаривать диалоги и фразы на этом языке, не задумываясь о переводе. В том смысле, что не "придумать диалог на русском, а потом в уме перевести его на английский", а сразу составлять его на иностранном языке.
Так и в Solidity. По своей сути весть язык построен на правилах для проведения транзакций и других действий, и базой служат "zero trust" функции. Zero trust - это "нулевое доверие".
Когда будете составлять свой смарт-контракт, запишите все действия, которые потребуются, чтобы выполнить его назначение. Это могут быть: перевод денег, прием денег, проверка на владельца, проверка на возможность перевода и т.д.
При этом "фантазируйте", что все и вся хотят вас кинуть или подставить, забрать все деньги. Поэтому никому нельзя доверять и писать проверки буквально на все!
Например, в случае перевода можно проверить:
- Может ли деньги отправлять только владелец кошелька;
- Кто может получить деньги: кошелек или смарт-контракт;
- Что будет если транзакция откатится;
- Что будет, если кто-то захочет взломать эту функцию;
- Нужно ли ее выполнить при каких-то других действиях;
После этого у вас смогут сформироваться действующие лица - они же переменные (владелец, получатель, количество денег, сроки).
В общем, в итоге у меня это работает как-то так.
А как вы учите язык? Есть ли свои лайфхаки? Может вы ведете свою страничку в Notion, куда записываете функции или вопросы по урокам?
Сегодня еще один день для наверстывания материала и вникания в последние три видео, которые были на канале. Тем, кто раньше никогда не сталкивался с node.js, npm и терминалом, стоит уделить несколько дней, чтобы разобраться в основах. Как я говорил ранее, их мы будем использовать довольно часто.
Вообще, сегодня пришла мысль, что изучение программного языка очень схоже по изучения иностранного языка. В этом я могу быть уверен, так как знаю английский, японский и немного испанского.
Основная идея заключается в том, что нужно начать думать на нем, как бы странно это не звучало.
Когда я изучал английский, то старался проговаривать диалоги и фразы на этом языке, не задумываясь о переводе. В том смысле, что не "придумать диалог на русском, а потом в уме перевести его на английский", а сразу составлять его на иностранном языке.
Так и в Solidity. По своей сути весть язык построен на правилах для проведения транзакций и других действий, и базой служат "zero trust" функции. Zero trust - это "нулевое доверие".
Когда будете составлять свой смарт-контракт, запишите все действия, которые потребуются, чтобы выполнить его назначение. Это могут быть: перевод денег, прием денег, проверка на владельца, проверка на возможность перевода и т.д.
При этом "фантазируйте", что все и вся хотят вас кинуть или подставить, забрать все деньги. Поэтому никому нельзя доверять и писать проверки буквально на все!
Например, в случае перевода можно проверить:
- Может ли деньги отправлять только владелец кошелька;
- Кто может получить деньги: кошелек или смарт-контракт;
- Что будет если транзакция откатится;
- Что будет, если кто-то захочет взломать эту функцию;
- Нужно ли ее выполнить при каких-то других действиях;
После этого у вас смогут сформироваться действующие лица - они же переменные (владелец, получатель, количество денег, сроки).
В общем, в итоге у меня это работает как-то так.
А как вы учите язык? Есть ли свои лайфхаки? Может вы ведете свою страничку в Notion, куда записываете функции или вопросы по урокам?
👍2🔥1
Урок 8
Новая неделя, а значит и новые уроки!
Если кто из наших учеников живет счастливой жизнью и часов не наблюдает, то сегодня уже 1 августа и остается всего лишь один месяц лета. Пока остальные отдыхают и строят планы на осень, мы, выделяя пару часов в день, сможем получить новые крутые знания, возможно, изменить свою профессию и повысить доход!
На этой неделе у нас запланировано три урока, которые погрузят еще глубже в работу со смарт-контрактами.
Урок сегодня достаточно сложный, особенно для новичков, особенно для тех, кто не посмотрел предыдущие видео по node.js, npm и cmd, поэтому на него мы выделим два дня.
Видео урок для изучения.
В этом уроке основным заданием будет подготовка рабочей среды и настройка всех нужных пакетов. Это самое главное! В последующих уроках мы все чаще будем к ним возвращаться!
Если же вас хватит и на тесты контрактов, сможете понять и разобраться, то это будет просто невероятно здорово!
Я же, как обычно, буду делать заметки на канале, на что нужно обратить внимание!
Всем хорошей недели и легкого обучения!
#урок
Новая неделя, а значит и новые уроки!
Если кто из наших учеников живет счастливой жизнью и часов не наблюдает, то сегодня уже 1 августа и остается всего лишь один месяц лета. Пока остальные отдыхают и строят планы на осень, мы, выделяя пару часов в день, сможем получить новые крутые знания, возможно, изменить свою профессию и повысить доход!
На этой неделе у нас запланировано три урока, которые погрузят еще глубже в работу со смарт-контрактами.
Урок сегодня достаточно сложный, особенно для новичков, особенно для тех, кто не посмотрел предыдущие видео по node.js, npm и cmd, поэтому на него мы выделим два дня.
Видео урок для изучения.
В этом уроке основным заданием будет подготовка рабочей среды и настройка всех нужных пакетов. Это самое главное! В последующих уроках мы все чаще будем к ним возвращаться!
Если же вас хватит и на тесты контрактов, сможете понять и разобраться, то это будет просто невероятно здорово!
Я же, как обычно, буду делать заметки на канале, на что нужно обратить внимание!
Всем хорошей недели и легкого обучения!
#урок
YouTube
Solidity и смарт-контракты Ethereum, урок #5, АПДЕЙТ в закрепе | Тестирование, Hardhat, Ethers, Chai
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
🔥1