Solidity. Смарт контракты и аудит – Telegram
Solidity. Смарт контракты и аудит
2.62K subscribers
246 photos
7 videos
18 files
547 links
Обучение Solidity. Уроки, аудит, разбор кода и популярных сервисов
Download Telegram
Разбор Uniswap V2: Router контракты. Часть 2

Продолжаем говорить о контрактах Router и сегодня обратим внимание на _swap(), addLiquidity() и addLiquidityEth().

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

_addLiquidity

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

Чтобы защититься от этого, поставщик ликвидности должен предоставить (в качестве аргумента функции) минимальный баланс, который он хочет внести для токена_0 и токена_1 (в UniswapV2 это amountAMin и amountBMin). Затем они переводят сумму, превышающую эти минимумы (UnsiwapV2 называет их amountADesired и amountBDesired). Если соотношение пар изменилось таким образом, что минимумы больше не соблюдаются, то транзакция откатывается.

_addLiquidity возьмет суммуADesired и вычислит правильное количество токенов_В, которое будет соответствовать соотношению. Если это количество больше, чем amountBDesired (количество B, которое отправил поставщик ликвидности), то он начнет с amountBDesired и вычислит оптимальное количество B. Логика показана на скрине.

P.S. Обратите внимание, что добавление ликвидности может создать новый парный контракт, если он еще не существует.

Например, предположим, что текущий баланс пары составляет 100 token_0 и 300 token_1. Мы хотим добавить 20 и 60 токен_0 и токен_1 соответственно, но соотношение пар может измениться.

Поэтому вместо этого мы одобряем маршрутизатор на 21 токен_0 и 63 токена_1, указывая при этом, что минимальное количество, которое мы хотим внести, составляет 20 и 60. Если соотношение изменится так, что оптимальное количество токенов0 для депозита составит 19,9, то транзакция вернется обратно.

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

addLiquidity() и addLiquidityEth()

Эти функции не требуют пояснений. Сначала они рассчитывают оптимальное соотношение с помощью _addLiquidity, описанного выше, затем переводят активы в контракт пары, после чего вызывают майнинг. Единственное отличие заключается в том, что функция addLiquidityEth сначала обернет Ether в ETH.

В следующем посте поговорим об удалении ликвидности, fee-on-transfer токенах и библиотеке UniswapV2Library.

#uniswap #router
1
Разбор Uniswap V2: Router контракты. Часть 3

Ну, и заключительная часть разбора Router контракта начинается с функций removeLiquidityEth и removeLiquidity.

Функции удаления ликвидности вызывают burn, и использует параметры amountAMin и amountBMin в качестве проверки безопасности, чтобы гарантировать, чтобы пользователь получил обратно то количество токенов, которое ожидает.

В случае, если соотношение токенов резко изменится до того, как токены ликвидности будут сожжены, функция откатится и пользователь не потеряет свои активы.

При этом в функции removeLiquidityEth также происходит взаимодействие с WETH контрактом, чтобы пользователь мог получить Эфир.

removeLiquidityWithPermit() и removeLiquidityETHWithPermit()

В строке 109 в приведенном выше файле с серым комментарием send liquidity to pair предполагает, что контракт пары имеет разрешение на передачу токенов LP от поставщика ликвидности для их сжигания. Это означает, что для сжигания LP-токенов требуется сначала одобрить пару. Этот шаг можно пропустить с помощью функции permit().

Router02 и поддержка fee-on-transfer токенов

Чтобы справиться подобными токенами, контракт Router не может напрямую производить расчеты по таким аргументам, как amountIn (для свопа) или liquidity (для удаления ликвидности). В этом случае, добавление ликвидности не будет зависеть от комиссии за перевод токенов, поскольку пользователю начисляется только то, что он фактически переводит в пару.

Контракты Router обеспечивают пользовательский механизм обмена токенов с защитой от проскальзывания, в том числе и между несколькими пулами, а также добавляют поддержку торговли ETH и fee on transfer токенами (в Router02).

Функции внесения ликвидности гарантируют, что пользователь вносит средства только в точном соотношении к пулу. Удаление ликвидности может быть как простым переводом токенов LP на маршрутизатор с последующим их сжиганием, так и с использованием WETH для работы с Эфиром.

Кроме того, включена поддержка функций ERC20 Permit.

#uniswap #router
🔥3
Работа с суммами в Foundry

В Твиттере наткнулся на небольшой интересный пост про работу с суммами токенов и их отображению в экспоненциальной форме.

Думаю, в следующих тестах немного поэкспериментировать с этим.

#foundry #ammounts
🔥4
Обновление Dencun

Все никак сам не мог дойти, чтобы изучить более подробно последнее обновление Эфира - Dencun.

К счастью, сегодня в 19:00 по мск на Ютуб канале Ильи будет стрим по этой теме.

Крайне рекомендую всем подключиться!

Ссылка на стрим: https://www.youtube.com/watch?v=mugTyD70rDk

Встретимся вечером!

#dencun
👍3🔥2
Хотите перезапуск курса с нуля?

В январе, когда запускался 4 модуль нашего курса для разработчиков смарт контрактов, я писал, что заново с 1 модуля мы будем проводить его уже весной, с обновленной и дополненной программой.

На фоне того, что сейчас в сети вышло так много разнообразных материалов, статей, да и самих курсов (вспомнить хотя бы того же Патрика Коллинса с его бесплатными уроками), у меня возник вопрос, а нужно ли делать перезапуск?

Основной идеей нашего курса было разложить материал в доступной форме от простого к сложному, с простыми заданиями, чтобы ученики могли без надрыва понять тему и написать свой первый код. Более того, некоторые довольно быстро могли понять, а нужно ли им это вообще, без затрат на дорогие курсы и школы.

Для многих наш курс стал стартом карьеры в web3. Одни нашли работу, другие продолжают обучение сами или уже в школах для более профессиональной практики.

Я хотел бы узнать, сколько участников канала хотели бы зайти на 1 модуль курса? Также напомню, что курс рассчитан на тех, кто ни разу не имел дело с программированием.

Прошу пройти опрос ниже.

#курс
👍141
Хотите перезапуск курса с 1 модуля?
Anonymous Poll
76%
Да, я ждал этого
24%
Нет, не интересно
🔥4
Как проходит обучение на курсе

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

Данный курс состоит из 4 модулей (хотя сейчас я планирую объединить их в 3, для более быстрого прохождения участниками). Каждый модуль длится примерно месяц, или 4 недели.

Задания выходят несколько раз в неделю. Есть текстовая часть урока, практическое задание, дополнительные видео материалы и посты / статьи для самостоятельного изучения.

В конце каждого модуля есть финальный практикум, объединяющий все темы уроков.

В течение курса также создается отдельный чат для учеников, где они могут задавать вопросы и общаться. Канал и чат не удаляются по завершению обучения.

Заходить можно на любой из модулей до его старта.

Вообще идея курса заключается в нескольких пунктах:

1. Упорядочить материал так, чтобы не создавалась "каша" в голове;

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

3. Низкая цена модулей, чтобы ученики смогли понять для себя, а нужно ли им это вообще;

Вы сможете понять основную суть языка Solidity и работы со смарт контрактами, и, если интерес сохранится, то можно пойти в более профессиональную школу для дальнейшего обучения. Так будете уверены, что понимаете, на что подписываетесь, и на что тратите большие деньги в школе.

Мне нужно будет некоторое время, чтобы обновить материалы.

Начать обучение на 1 модуле, думаю, сможем с 22 апреля.

Буду держать вас в курсе событий: выложу программу, стоимость и что нужно для подготовки.

#курс
👍261
Перезапуск курса: старт 22 апреля

За время старта опроса про курс, успело проголосовать 124 участника канала, из которых 92 уже готовы начать обучение! Это здорово и мотивирует еще больше вкладываться в курс, чтобы сделать его максимально эффективным и практическим.

И если так много желающих, то мы можем начать уже с 22 апреля, а продажи открыть с 17 апреля.

Окончательную программу выложу в эту среду, а пока расскажу про некоторые изменения в структуре курса.

Всего у нас было 4 модуля:

1. Первый для того, чтобы понять и попрактиковаться с базовым синтаксисом языка;
2. Второй - чтобы разбираться как работают "связки" между контрактами и изучить стандарты токенов и nft;
3. Третий - практический, где мы настраивали рабочую среду, знакомились с Hardhat и Foundry, а также некоторыми паттернами и другими стандартами;
4. Четвертый - самый сложный, где у нас был второй преподаватель. Там мы проходили темы прокси, подписей, работу с памятью и другие сложные паттерны кода.

Сейчас темы будут оптимизированы по процессу обучения и выстроены в чуть более интенсивном порядке.

1. На первом модуле вместо 16 уроков, как это было изначально, будут ~23 урока плюс практикумы. Тут мы изучим базовые элементы языка, а также наследования, интерфейсы и библиотеки, которые мы проходили на 2 модуле.

2. На втором модулей будет разбираться настройка рабочего пространства, программы Hardhat / Foundry, а также основные стандарты языка (токены, nft).

3. На место третьего модуля встанет текущий четвертый.

4. А на последнем модуле мы изучим популярные паттерны, а также введение в DeFi, которого не было на данный момент. В нем мы поговорим о таких рабочих схемах, как флешзаймы, стейкинг, ликвидации, долги и rewards за стейкинг.

Зачем это сделано именно так?

Во-первых, уже после первого модуля вы сможете понять для себя, а вообще ваша ли это тема "Написание смарт контрактов и web3 в целом". Если интерес не пропадет, дальше вы сможете записаться на другой модуль, или с уже имеющимися знаниями продолжить свое обучение на других курсах (от того же Патрика Коллинса), или даже записаться в профессиональную школу, типа Guide DAO.

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

В-третьих, уже после третьего модуля вы получите основные знания практически по всем необходимым элементам разработки смарт контрактов и сможете писать сложные проекты.

Ну, а в-четвертых, в самом конце, после 4 модуля, у вас будет практический опыт разработки и понимание современных систем функционирования DeFi протоколов.

Весь процесс выстроен на 4 месяца обучение. Т.е. примерно к сентябрю, при ежедневном обучении вы сможете получить необходимые знания и опыт для своей первой работы.

Всем приятной рабочей недели!

#курс
🔥15👍5
Программа 1 модуля курса

Представляю вам программу обновленного 1 модуля нашего курса. Учитывая обратную связь от первых учеников, я принял решение сделать обучение чуть более интенсивным и закрывающим определенный объем знаний. Смотрите, что получается.

На первом модуле мы шаг за шагом изучим основные элементы языка и составные части смарт контракта. (25 уроков)

На втором, будем настраивать рабочую среду и учиться стандартам токенов, nft и vaults, а также поговорим о Hardhat и Foundry. (~ 22 урока)

На третьем разберем более сложные темы подписей, прокси, работу с памятью и низкоуровневым языком. Этот тот модель, что сейчас был 4. (17 уроков)

А на четвертом мы будем практиковаться с общепринятыми паттернами и изучать системы DeFi протоколов. (~ 23 урока)

Каждый модуль рассчитан на 4-5 недель интенсивных уроков. Плюс много дополнительного материала, задания и финальные практикумы!

Уроки рассчитаны на учеников, которые ранее никогда не программировали и не учили никакого языка программирования. Материал написан максимально просто. Также будет отдельный чат, где можно будет задавать вопросы.


Итак, программа первого модуля:

Неделя 1

Урок 1. Введение в Solidity: что такое смарт контракты, на чем их пишут и в каких блокчейнах.
Урок 2. Блокчейн, сайдчейн, l2, плазма. Общее
Урок 3. Remix IDE. Из чего состоит смарт контракт.
Урок 4. Переменные в Solidity
Урок 5. Области видимости переменных

Неделя 2

Урок 6. Тип данных bool
Урок 7. Тип данных string и address
Урок 8. Тип данных uint/int
Урок 9. Тип данных Bytes
Урок 10. Тип данных Array (Массив)

Неделя 3

Урок 11. Тип данных Enum
Урок 12. Тип данных Mapping
Урок 13. Events (события), errors (ошибки)
Урок 14. Функции. Общее
Урок 15. Ошибки и условия

Неделя 4

Урок 16. Циклы и итерации
Урок 17. Модификаторы
Урок 18. Структуры и вложенности
Урок 19. Глобальные переменные и конструктор
Урок 20. Наследования

Неделя 5

Урок 21. Интерфейсы
Урок 22. Библиотеки
Урок 23. Библиотеки и контракты Openzeppelin и Solmate
Урок 24. Низкоуровневые вызовы: call и staticcall
Урок 25. Delegatecall

Практикум 1
Практикум 2


Старт обучения: 22 апреля

Старт продаж: 17 апреля

Стоимость: 3500 рублей или 40 USDC (Polygon)

Если у вас есть вопросы по материалам модуля, смело задавайте в чате.

#курс
🔥6👍3
План обучения на курсе

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

Я видел, что на многих других курсах очень быстро проходят все элементы языка, и уже на втором-третьем уроке учат писать первый контракт, например, того же токена ERC20. Но зачем?! Зачем так спешить? Чтобы потом учителям или школам говорить всем остальным, что они быстрее всех учат писать свой токен, который можно загрузить в сеть и сделать новым USDT? Без соблюдения правил безопасности кода, без понимания учениками, а почему это так написано, а не иначе?

Тут будет по другому.

Курс построен с нуля так, чтобы вначале вы усвоили правила самого языка, а затем уже начали практиковаться с токенами и более сложными паттернами, с полным пониманием того, для чего все это делается.

Этот Телеграм канал, по сути, и есть мой личный путь обучения, который продолжается уже около двух лет. Вы видите, как и чему я учусь, делая посты практически каждый день. И у меня еще есть множество тем в мире web3, которые я буду осваивать вместе с вами.

Не думайте, что можно выучить язык и писать безопасные смарт контракты за пару месяцев. Но правильный план обучения, может сократить этот срок в разы.

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

Если вы хотели попробовать что-то новое для себя, присоединяйтесь к первому модулю! Для многих это может стать новой хорошо оплачиваемой профессией!

Старт уже совсем скоро!

#курс
🔥9👍3
Сегодня дороже, чем вчера

Мне всегда нравился этот слоган компании МММ в 90-е годы. Так они старались показать некую срочность: что завтра вы можете опоздать, упустить выгоду и акции будут стоить еще дороже, чем сейчас.

Примерно та же ситуация происходит сейчас и с развитием web3.

Я стал изучать Solidity около 2-х лет назад, когда от разработчика требовалось лишь знание самого языка, понимание работы блокчейна в целом, ну, и умение писать контракты токенов и nft.

Спустя полгода после этого, к требованиям добавилось знание программ для тестирования, Hardhat или Foundry, и написание простых тестов.

Еще через полгода, вам нужны были минимальные знания в сфере безопасности смарт контрактов и основные виды атак.

Теперь же требования к знаниям значительно возросли.

Умение написать смарт контракт и тесты для него - это вообще базовый уровень интерна, и работу получить на этом уровне не получится, либо будет очень сложно.

На данный момент разработчику нужно иметь портфолио с реализованными проектами, где показаны навыки работы не только с простыми контрактами (тех же токенов и nft), но и интеграции с другими популярными DeFi протоколами.

Вообще знание механик функционирования DeFi очень ценится, так как много проектов стали предлагать стейкинг, ликвидации и свапы своих токенов на разных биржах.

Также нужно умение писать не только простые тесты, но и фазз / инвариант тесты, а еще лучше и тесты формальной верификации.

При этом всем, ваши знания должны распространяться не только в рамках сети Эфира, но и на многих L2 сетях, типа Оптимизма или ZK Synk.

Это очень большой объем знаний! И еще через полгода он вырастет кратно!

Если вы начнете свое обучение сейчас то, до конца лета сможете освоить базовые знания и навыки для работы в web3, и до конца года выбрать свою профессию, в которой хотите развиваться.

Опоздаете - и начать будет еще сложнее!

#web3
😁3👌2👍1
Эксперименты со сторис

Спасибо всем за бусты вчера!

Хочу попробовать формат сторис, чтобы делиться интересными ссылками на посты как самого канала, так и на материалы с внешних источников. Иногда просто не доходят руки написать полноценный пост с разбором, а так для вас будет что-то новое.

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

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

Всем спасибо!

#stories
6👍2
Что ожидать по знаниям после курса?

Хороший вопрос, который я получил от нескольких участников канала, и решил, что будет лучше сделать отдельный пост об этом. Так вы будете знать, чего ожидать и как строить свои планы в обучении.

Я уже ранее писал, что сейчас существуют достаточно много направлений в работе со смарт контрактами и самим блокчейном, начиная от разработчиков, заканчивая полноценным валидатором сетей.

В нашем курсе всего 4 модуля, так как на последнем этапе у ученика уже есть определенные знания работы языка и интерес к какой-либо специальности. Одни могут заинтересоваться общей разработкой смарт контрактов и решиться на свой маленький проект, другие проявят интерес к DeFi протоколам и захотят погружаться в финансовую среду, третьи (вообще безумные прогеры) проявят интерес к низкоуровневому языку и будут оперировать assembly как никто другой...

Тут главное заниматься тем, что тебя действительно "заряжает" и с чем ты готов сидеть день и ночь. В противном случае, а зачем тогда все это надо, верно?

Главной целью нашего курса является познакомить вас с языком Solidity и разработкой смарт контрактов, а также дать представление о работе блокчейн продуктов в целом. При этом сделать так, чтобы даже не подготовленный к разработке ученик смог понять урок и применить навыки на практике.

После курса, за эти 4 модуля, вы получите знания уровня хорошего интерна. Вы сможете писать полноценные протоколы, разбираться с популярными и не очень стандартами (EIP), напишите пару проектов для портфолио и, на этот раз, будете понимать как работает DeFi.

Далее вы уже сами выберите для себя "специалитет" и будете продвигаться в этом направлении, со знаниями после курса это будет значительно проще!

Хочу обратить внимание, что на поиск работы нужно заложить от полугода минимум! Но это стоит того.

Надеюсь, вам стало чуть понятнее про процесс и ожидания.

А мы стартуем уже совсем скоро! Завтра открываются продажи.

#курс
👍7🌭41
🔼Первые ученики уже на канале!🔼

Если вы только пришли с работы, то пост для вас! Сегодня старт продаж 1 модуля нашего курса!

17 самых первых учеников  уже канале! Вы супер! Уверенность в действиях очень сильно помогает в учебе! Знаю, у вас будет очень интересный путь Solidity разработчика!

Ждем остальных, ведь по опросу желающих было куда больше: 101 проголосовавший ЗА!

Это идеальное время получить новые знания и профессию. Web3 развивается и разработчики смарт контрактов будут еще больше востребованы!

Для кого этот курс: подходит для всех, кто ни разу не работал с кодом и не знает, что такое программирование

Курс рассчитан на НЕСПЕШНОЕ прохождение каждой темы и времени на ее освоение, поэтому он длится 4+ месяцев. Сложность повышается с каждым модулем, по мере вашей готовности к новым темам, во избежание путаницы в голове из-за большого объема информации.

Задача: курс нацелен на плавное изучение языка Solidity и освоение новой профессии разработчика смарт контрактов. По окончанию всех модулей вы будете иметь достаточно знаний и сформированные скилы, чтобы претендовать на работу в зарубежных компаниях.

Особенности курса:

- Уроки с акцентами на безопасности кода;
- Тестовые вопросы, собранные из реальных собеседований;
- Написан простым языком, без технических усложнений;
- Основной принцип: регулярность лучше интенсивности;
- Основная цель: сформировать понимание языка Solidity, его характеристик и особенностей;

Количество уроков: 25 уроков + 2 практикума.

Что входит в урок: Объяснение материала, описание проблем безопасности (если требуется), дополнительные источники для самообучения, практическое задание. Тестовое задание по окончанию модуля.

Продажи открыты! Успейте занять свое место!

Программа курса.

Условия оплаты в посте выше.

Старт 22 апреля!

#курс
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1👎1🤬1
Немного про другие курсы, их стоимость и продолжительность

Вчера я решил погуглить современные курсы по Solidity и посмотреть, что еще можно включить в свой, чтобы сделать его еще более полным по знаниям.

И остался немного разочарован...

Как оказалось в ру сегменте не так уж и много обучающих программ по Solidity. Всего я нашел около 6-7 разных предложений, в том числе от популярных школ. За рубежом их количество гораздо больше!

Хорошие новости для тех, кто уже имел дело с программированием, и еще лучше для тех, кто владеет английским языком на хорошем уровне. Тут вам простор для быстрого продвижения! Для остальных же, есть некоторые трудности...

Большинство курсов написаны программистами с опытом для программистов с опытом. Объясню, что я имею ввиду.

В нескольких курсах Solidity было представлено всего 10-15 уроков. При этом были включены разделы с javanoscript. На мой взгляд, такой курс даст общую информацию по языку и направления для самостоятельного изучения. Вам нужно будет уже иметь некоторый опыт в разработке, чтобы понять для себя вектор обучения. С тем же успехом можно поискать roadmaps и самостоятельно погружаться в каждый раздел.

Ни одно обучение на 10-15 уроков, или даже 20-30 никогда не даст вам достаточного количества знаний, даже для работы уровня интерна.

Более серьезное обучение с расписанной программой от полугода на русском языке, будет стоить вам уже от 70 000 рублей. Там уже может быть будет комфортно новичку с нулевыми знаниями. Вопрос в том, готовы ли вы вписываться в долгосрочное обучение и тратить большие суммы, не имея представления о своем интересе к web3 через месяц?

Этот курс я писал именно с позиции ученика, который никогда ранее не программировал и хочет получить уверенные знания в языке. Поэтому весь первый модуль направлен на неспешное изучение базовой структуры Solidity.

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

Рассматривайте наш 1 модуль, как легкий и быстрый старт в web3.

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

Начнем же вместе со следующей недели!

#курс
🌭8👍32👎1🤬1
Единственный поток курса в этом году

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

И на этот год я планирую уделить туда еще больше сил и внимания, поэтому будет всего лишь один поток курса в этом году. Он же единственный с поддержкой.

Если вы сейчас опоздаете с заходом на этот модуль, то придется ждать еще один год или выбирать обучение намного дороже этого!

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

Вы можете в своем неспешном темпе проходить каждый урок и выполнять задания. Час-два в день и к концу лета у вас будет достаточно знаний для первой работы!

Осталось всего два дня до конца продаж! Купить первый модуль вы не сможете вплоть до Нового года вообще.

Мы начинает уже в этот понедельник!

Программа курса       Условия оплаты

#курс
👍6🌭5🔥3👎2🤬1