Как проходит обучение на курсе
Неожиданно много и приятно, что так много участников канала хочет попасть на перезапуск курса. Расскажу, как проходит обучение, чего ожидать, и как долго все длится.
Данный курс состоит из 4 модулей (хотя сейчас я планирую объединить их в 3, для более быстрого прохождения участниками). Каждый модуль длится примерно месяц, или 4 недели.
Задания выходят несколько раз в неделю. Есть текстовая часть урока, практическое задание, дополнительные видео материалы и посты / статьи для самостоятельного изучения.
В конце каждого модуля есть финальный практикум, объединяющий все темы уроков.
В течение курса также создается отдельный чат для учеников, где они могут задавать вопросы и общаться. Канал и чат не удаляются по завершению обучения.
Заходить можно на любой из модулей до его старта.
Вообще идея курса заключается в нескольких пунктах:
1. Упорядочить материал так, чтобы не создавалась "каша" в голове;
2. Написать уроки доступно и просто, чтобы ученику было понятен урок, даже если он никогда ранее не занимался программированием;
3. Низкая цена модулей, чтобы ученики смогли понять для себя, а нужно ли им это вообще;
Вы сможете понять основную суть языка Solidity и работы со смарт контрактами, и, если интерес сохранится, то можно пойти в более профессиональную школу для дальнейшего обучения. Так будете уверены, что понимаете, на что подписываетесь, и на что тратите большие деньги в школе.
Мне нужно будет некоторое время, чтобы обновить материалы.
Начать обучение на 1 модуле, думаю, сможем с 22 апреля.
Буду держать вас в курсе событий: выложу программу, стоимость и что нужно для подготовки.
#курс
Неожиданно много и приятно, что так много участников канала хочет попасть на перезапуск курса. Расскажу, как проходит обучение, чего ожидать, и как долго все длится.
Данный курс состоит из 4 модулей (хотя сейчас я планирую объединить их в 3, для более быстрого прохождения участниками). Каждый модуль длится примерно месяц, или 4 недели.
Задания выходят несколько раз в неделю. Есть текстовая часть урока, практическое задание, дополнительные видео материалы и посты / статьи для самостоятельного изучения.
В конце каждого модуля есть финальный практикум, объединяющий все темы уроков.
В течение курса также создается отдельный чат для учеников, где они могут задавать вопросы и общаться. Канал и чат не удаляются по завершению обучения.
Заходить можно на любой из модулей до его старта.
Вообще идея курса заключается в нескольких пунктах:
1. Упорядочить материал так, чтобы не создавалась "каша" в голове;
2. Написать уроки доступно и просто, чтобы ученику было понятен урок, даже если он никогда ранее не занимался программированием;
3. Низкая цена модулей, чтобы ученики смогли понять для себя, а нужно ли им это вообще;
Вы сможете понять основную суть языка Solidity и работы со смарт контрактами, и, если интерес сохранится, то можно пойти в более профессиональную школу для дальнейшего обучения. Так будете уверены, что понимаете, на что подписываетесь, и на что тратите большие деньги в школе.
Мне нужно будет некоторое время, чтобы обновить материалы.
Начать обучение на 1 модуле, думаю, сможем с 22 апреля.
Буду держать вас в курсе событий: выложу программу, стоимость и что нужно для подготовки.
#курс
👍26❤1
Перезапуск курса: старт 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 месяца обучение. Т.е. примерно к сентябрю, при ежедневном обучении вы сможете получить необходимые знания и опыт для своей первой работы.
Всем приятной рабочей недели!
#курс
За время старта опроса про курс, успело проголосовать 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)
Если у вас есть вопросы по материалам модуля, смело задавайте в чате.
#курс
Представляю вам программу обновленного 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 и решить для себя о дальнейшем обучении. Если вам понравиться учиться с нами, но пойдете на последующие модули. Если захотите что-то более институциональное, то можно выбрать уже более продолжительное (годовое и более) обучение в школе. При этом у вас уже будут начальные знания и вам будет намного легче понимать суть уроков.
Если вы хотели попробовать что-то новое для себя, присоединяйтесь к первому модулю! Для многих это может стать новой хорошо оплачиваемой профессией!
Старт уже совсем скоро!
#курс
Когда я писал план обучения, я невольно подглядывал на другие курсы в школах и старался соотнести с тем, насколько удобно будет человеку без навыков программирования проходить его.
Я видел, что на многих других курсах очень быстро проходят все элементы языка, и уже на втором-третьем уроке учат писать первый контракт, например, того же токена ERC20. Но зачем?! Зачем так спешить? Чтобы потом учителям или школам говорить всем остальным, что они быстрее всех учат писать свой токен, который можно загрузить в сеть и сделать новым USDT? Без соблюдения правил безопасности кода, без понимания учениками, а почему это так написано, а не иначе?
Тут будет по другому.
Курс построен с нуля так, чтобы вначале вы усвоили правила самого языка, а затем уже начали практиковаться с токенами и более сложными паттернами, с полным пониманием того, для чего все это делается.
Этот Телеграм канал, по сути, и есть мой личный путь обучения, который продолжается уже около двух лет. Вы видите, как и чему я учусь, делая посты практически каждый день. И у меня еще есть множество тем в мире web3, которые я буду осваивать вместе с вами.
Не думайте, что можно выучить язык и писать безопасные смарт контракты за пару месяцев. Но правильный план обучения, может сократить этот срок в разы.
Наше обучение стартует с 22 апреля. За пять недель вы сможете получить хорошие знания элементов языка Solidity и решить для себя о дальнейшем обучении. Если вам понравиться учиться с нами, но пойдете на последующие модули. Если захотите что-то более институциональное, то можно выбрать уже более продолжительное (годовое и более) обучение в школе. При этом у вас уже будут начальные знания и вам будет намного легче понимать суть уроков.
Если вы хотели попробовать что-то новое для себя, присоединяйтесь к первому модулю! Для многих это может стать новой хорошо оплачиваемой профессией!
Старт уже совсем скоро!
#курс
🔥9👍3
Сегодня дороже, чем вчера
Мне всегда нравился этот слоган компании МММ в 90-е годы. Так они старались показать некую срочность: что завтра вы можете опоздать, упустить выгоду и акции будут стоить еще дороже, чем сейчас.
Примерно та же ситуация происходит сейчас и с развитием web3.
Я стал изучать Solidity около 2-х лет назад, когда от разработчика требовалось лишь знание самого языка, понимание работы блокчейна в целом, ну, и умение писать контракты токенов и nft.
Спустя полгода после этого, к требованиям добавилось знание программ для тестирования, Hardhat или Foundry, и написание простых тестов.
Еще через полгода, вам нужны были минимальные знания в сфере безопасности смарт контрактов и основные виды атак.
Теперь же требования к знаниям значительно возросли.
Умение написать смарт контракт и тесты для него - это вообще базовый уровень интерна, и работу получить на этом уровне не получится, либо будет очень сложно.
На данный момент разработчику нужно иметь портфолио с реализованными проектами, где показаны навыки работы не только с простыми контрактами (тех же токенов и nft), но и интеграции с другими популярными DeFi протоколами.
Вообще знание механик функционирования DeFi очень ценится, так как много проектов стали предлагать стейкинг, ликвидации и свапы своих токенов на разных биржах.
Также нужно умение писать не только простые тесты, но и фазз / инвариант тесты, а еще лучше и тесты формальной верификации.
При этом всем, ваши знания должны распространяться не только в рамках сети Эфира, но и на многих L2 сетях, типа Оптимизма или ZK Synk.
Это очень большой объем знаний! И еще через полгода он вырастет кратно!
Если вы начнете свое обучение сейчас то, до конца лета сможете освоить базовые знания и навыки для работы в web3, и до конца года выбрать свою профессию, в которой хотите развиваться.
Опоздаете - и начать будет еще сложнее!
#web3
Мне всегда нравился этот слоган компании МММ в 90-е годы. Так они старались показать некую срочность: что завтра вы можете опоздать, упустить выгоду и акции будут стоить еще дороже, чем сейчас.
Примерно та же ситуация происходит сейчас и с развитием web3.
Я стал изучать Solidity около 2-х лет назад, когда от разработчика требовалось лишь знание самого языка, понимание работы блокчейна в целом, ну, и умение писать контракты токенов и nft.
Спустя полгода после этого, к требованиям добавилось знание программ для тестирования, Hardhat или Foundry, и написание простых тестов.
Еще через полгода, вам нужны были минимальные знания в сфере безопасности смарт контрактов и основные виды атак.
Теперь же требования к знаниям значительно возросли.
Умение написать смарт контракт и тесты для него - это вообще базовый уровень интерна, и работу получить на этом уровне не получится, либо будет очень сложно.
На данный момент разработчику нужно иметь портфолио с реализованными проектами, где показаны навыки работы не только с простыми контрактами (тех же токенов и nft), но и интеграции с другими популярными DeFi протоколами.
Вообще знание механик функционирования DeFi очень ценится, так как много проектов стали предлагать стейкинг, ликвидации и свапы своих токенов на разных биржах.
Также нужно умение писать не только простые тесты, но и фазз / инвариант тесты, а еще лучше и тесты формальной верификации.
При этом всем, ваши знания должны распространяться не только в рамках сети Эфира, но и на многих L2 сетях, типа Оптимизма или ZK Synk.
Это очень большой объем знаний! И еще через полгода он вырастет кратно!
Если вы начнете свое обучение сейчас то, до конца лета сможете освоить базовые знания и навыки для работы в web3, и до конца года выбрать свою профессию, в которой хотите развиваться.
Опоздаете - и начать будет еще сложнее!
#web3
😁3👌2👍1
Эксперименты со сторис
Спасибо всем за бусты вчера!
Хочу попробовать формат сторис, чтобы делиться интересными ссылками на посты как самого канала, так и на материалы с внешних источников. Иногда просто не доходят руки написать полноценный пост с разбором, а так для вас будет что-то новое.
Единственное что, пока не разобрался с ссылками в сторис... Вероятно, Телеграм не разрешает давать больше одной. Но тут еще проверяю...
Надеюсь вы не будете против такого формата. Также можете делится своими интересными находками в чате, которые могут быть так же опубликованы в сторис.
Всем спасибо!
#stories
Спасибо всем за бусты вчера!
Хочу попробовать формат сторис, чтобы делиться интересными ссылками на посты как самого канала, так и на материалы с внешних источников. Иногда просто не доходят руки написать полноценный пост с разбором, а так для вас будет что-то новое.
Единственное что, пока не разобрался с ссылками в сторис... Вероятно, Телеграм не разрешает давать больше одной. Но тут еще проверяю...
Надеюсь вы не будете против такого формата. Также можете делится своими интересными находками в чате, которые могут быть так же опубликованы в сторис.
Всем спасибо!
#stories
❤6👍2
Что ожидать по знаниям после курса?
Хороший вопрос, который я получил от нескольких участников канала, и решил, что будет лучше сделать отдельный пост об этом. Так вы будете знать, чего ожидать и как строить свои планы в обучении.
Я уже ранее писал, что сейчас существуют достаточно много направлений в работе со смарт контрактами и самим блокчейном, начиная от разработчиков, заканчивая полноценным валидатором сетей.
В нашем курсе всего 4 модуля, так как на последнем этапе у ученика уже есть определенные знания работы языка и интерес к какой-либо специальности. Одни могут заинтересоваться общей разработкой смарт контрактов и решиться на свой маленький проект, другие проявят интерес к DeFi протоколам и захотят погружаться в финансовую среду, третьи (вообще безумные прогеры) проявят интерес к низкоуровневому языку и будут оперировать assembly как никто другой...
Тут главное заниматься тем, что тебя действительно "заряжает" и с чем ты готов сидеть день и ночь. В противном случае, а зачем тогда все это надо, верно?
Главной целью нашего курса является познакомить вас с языком Solidity и разработкой смарт контрактов, а также дать представление о работе блокчейн продуктов в целом. При этом сделать так, чтобы даже не подготовленный к разработке ученик смог понять урок и применить навыки на практике.
После курса, за эти 4 модуля, вы получите знания уровня хорошего интерна. Вы сможете писать полноценные протоколы, разбираться с популярными и не очень стандартами (EIP), напишите пару проектов для портфолио и, на этот раз, будете понимать как работает DeFi.
Далее вы уже сами выберите для себя "специалитет" и будете продвигаться в этом направлении, со знаниями после курса это будет значительно проще!
Хочу обратить внимание, что на поиск работы нужно заложить от полугода минимум! Но это стоит того.
Надеюсь, вам стало чуть понятнее про процесс и ожидания.
А мы стартуем уже совсем скоро! Завтра открываются продажи.
#курс
Хороший вопрос, который я получил от нескольких участников канала, и решил, что будет лучше сделать отдельный пост об этом. Так вы будете знать, чего ожидать и как строить свои планы в обучении.
Я уже ранее писал, что сейчас существуют достаточно много направлений в работе со смарт контрактами и самим блокчейном, начиная от разработчиков, заканчивая полноценным валидатором сетей.
В нашем курсе всего 4 модуля, так как на последнем этапе у ученика уже есть определенные знания работы языка и интерес к какой-либо специальности. Одни могут заинтересоваться общей разработкой смарт контрактов и решиться на свой маленький проект, другие проявят интерес к DeFi протоколам и захотят погружаться в финансовую среду, третьи (вообще безумные прогеры) проявят интерес к низкоуровневому языку и будут оперировать assembly как никто другой...
Тут главное заниматься тем, что тебя действительно "заряжает" и с чем ты готов сидеть день и ночь. В противном случае, а зачем тогда все это надо, верно?
Главной целью нашего курса является познакомить вас с языком Solidity и разработкой смарт контрактов, а также дать представление о работе блокчейн продуктов в целом. При этом сделать так, чтобы даже не подготовленный к разработке ученик смог понять урок и применить навыки на практике.
После курса, за эти 4 модуля, вы получите знания уровня хорошего интерна. Вы сможете писать полноценные протоколы, разбираться с популярными и не очень стандартами (EIP), напишите пару проектов для портфолио и, на этот раз, будете понимать как работает DeFi.
Далее вы уже сами выберите для себя "специалитет" и будете продвигаться в этом направлении, со знаниями после курса это будет значительно проще!
Хочу обратить внимание, что на поиск работы нужно заложить от полугода минимум! Но это стоит того.
Надеюсь, вам стало чуть понятнее про процесс и ожидания.
А мы стартуем уже совсем скоро! Завтра открываются продажи.
#курс
👍7🌭4❤1
Если вы только пришли с работы, то пост для вас! Сегодня старт продаж 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.
Не ждите идеальных условий. Уже через месяц наши ученики будут продолжать свой путь в мире блокчейна, а вы, возможно, еще только набираться решимости.
Начнем же вместе со следующей недели!
#курс
Вчера я решил погуглить современные курсы по Solidity и посмотреть, что еще можно включить в свой, чтобы сделать его еще более полным по знаниям.
И остался немного разочарован...
Как оказалось в ру сегменте не так уж и много обучающих программ по Solidity. Всего я нашел около 6-7 разных предложений, в том числе от популярных школ. За рубежом их количество гораздо больше!
Хорошие новости для тех, кто уже имел дело с программированием, и еще лучше для тех, кто владеет английским языком на хорошем уровне. Тут вам простор для быстрого продвижения! Для остальных же, есть некоторые трудности...
Большинство курсов написаны программистами с опытом для программистов с опытом. Объясню, что я имею ввиду.
В нескольких курсах Solidity было представлено всего 10-15 уроков. При этом были включены разделы с javanoscript. На мой взгляд, такой курс даст общую информацию по языку и направления для самостоятельного изучения. Вам нужно будет уже иметь некоторый опыт в разработке, чтобы понять для себя вектор обучения. С тем же успехом можно поискать roadmaps и самостоятельно погружаться в каждый раздел.
Ни одно обучение на 10-15 уроков, или даже 20-30 никогда не даст вам достаточного количества знаний, даже для работы уровня интерна.
Более серьезное обучение с расписанной программой от полугода на русском языке, будет стоить вам уже от 70 000 рублей. Там уже может быть будет комфортно новичку с нулевыми знаниями. Вопрос в том, готовы ли вы вписываться в долгосрочное обучение и тратить большие суммы, не имея представления о своем интересе к web3 через месяц?
Этот курс я писал именно с позиции ученика, который никогда ранее не программировал и хочет получить уверенные знания в языке. Поэтому весь первый модуль направлен на неспешное изучение базовой структуры Solidity.
После него вы будете понимать как функционирует сам язык, и для чего используются те или иные типы данных. Даже если вы решите пойти в долгосрочное и дорогое обучение в школе, вы уже будете уверены, что поймете их план обучения и темы уроков.
Рассматривайте наш 1 модуль, как легкий и быстрый старт в web3.
Не ждите идеальных условий. Уже через месяц наши ученики будут продолжать свой путь в мире блокчейна, а вы, возможно, еще только набираться решимости.
Начнем же вместе со следующей недели!
#курс
🌭8👍3❤2👎1🤬1
Единственный поток курса в этом году
Многие участники канала знают, что я уже достаточно долго развиваюсь в сфере безопасности смарт контрактов, участвую в конкурсных аудитах и даже веду закрытую группу, в которой мы обсуждаем уязвимости и сам процесса аудита.
И на этот год я планирую уделить туда еще больше сил и внимания, поэтому будет всего лишь один поток курса в этом году. Он же единственный с поддержкой.
Если вы сейчас опоздаете с заходом на этот модуль, то придется ждать еще один год или выбирать обучение намного дороже этого!
Наш курс один из немногих в ру сегменте доступный для каждого и рассчитанный на ученика без каких-либо знаний в программировании.
Вы можете в своем неспешном темпе проходить каждый урок и выполнять задания. Час-два в день и к концу лета у вас будет достаточно знаний для первой работы!
Осталось всего два дня до конца продаж! Купить первый модуль вы не сможете вплоть до Нового года вообще.
Мы начинает уже в этот понедельник!
Программа курса Условия оплаты
#курс
Многие участники канала знают, что я уже достаточно долго развиваюсь в сфере безопасности смарт контрактов, участвую в конкурсных аудитах и даже веду закрытую группу, в которой мы обсуждаем уязвимости и сам процесса аудита.
И на этот год я планирую уделить туда еще больше сил и внимания, поэтому будет всего лишь один поток курса в этом году. Он же единственный с поддержкой.
Если вы сейчас опоздаете с заходом на этот модуль, то придется ждать еще один год или выбирать обучение намного дороже этого!
Наш курс один из немногих в ру сегменте доступный для каждого и рассчитанный на ученика без каких-либо знаний в программировании.
Вы можете в своем неспешном темпе проходить каждый урок и выполнять задания. Час-два в день и к концу лета у вас будет достаточно знаний для первой работы!
Осталось всего два дня до конца продаж! Купить первый модуль вы не сможете вплоть до Нового года вообще.
Мы начинает уже в этот понедельник!
Программа курса Условия оплаты
#курс
👍6🌭5🔥3👎2🤬1
Планы и темы канала на ближайшее время
Фух, спасибо всем кто присоединился к новому потоку и всем, кто остался на канале, не смотря на активные продажные посты. Прекрасно понимаю, что многих это может напрягать (да и отписались некоторые), но этого всего на неделю, и сейчас я продолжаю вести канал в обычном формате.
Вообще у меня на этот год в планах хорошо прокачаться с DeFi и аудитами. Сейчас все больше протоколов внедряют к себе какие-либо финансовые механики, большинство из которых просто взяты из популярных протоколов, типа того же Uniswap или Aave. И уязвимости новых форматов все чаще появляются в отчетах на конкурсных площадках. Поэтому придется нам разбирать все материалы "на молекулы".
В ближайших планах перевести некоторые статьи с RareSkills, и там присутствует много показательных графиков и я все думаю как это оформлять в посты. В том смысле, что не хочу делать пост и прикреплять кучу картинок к нему, так сложно будет воспринимать информацию. Скорее всего будет несколько постов с одним скрином к каждому... Но еще экспериментирую с этим...
Кстати, если вам интересны какие-то особенные темы, то дайте знать в комментариях, я постараюсь включить их в темы постов в скором будущем.
Всем еще раз спасибо и приятной недели!
#offtop
Фух, спасибо всем кто присоединился к новому потоку и всем, кто остался на канале, не смотря на активные продажные посты. Прекрасно понимаю, что многих это может напрягать (да и отписались некоторые), но этого всего на неделю, и сейчас я продолжаю вести канал в обычном формате.
Вообще у меня на этот год в планах хорошо прокачаться с DeFi и аудитами. Сейчас все больше протоколов внедряют к себе какие-либо финансовые механики, большинство из которых просто взяты из популярных протоколов, типа того же Uniswap или Aave. И уязвимости новых форматов все чаще появляются в отчетах на конкурсных площадках. Поэтому придется нам разбирать все материалы "на молекулы".
В ближайших планах перевести некоторые статьи с RareSkills, и там присутствует много показательных графиков и я все думаю как это оформлять в посты. В том смысле, что не хочу делать пост и прикреплять кучу картинок к нему, так сложно будет воспринимать информацию. Скорее всего будет несколько постов с одним скрином к каждому... Но еще экспериментирую с этим...
Кстати, если вам интересны какие-то особенные темы, то дайте знать в комментариях, я постараюсь включить их в темы постов в скором будущем.
Всем еще раз спасибо и приятной недели!
#offtop
👍18🌭3🤬2👎1
Как Uniswap V2 вычисляет mintFee?
В нескольких постах попробует разобрать всю ту ересь, которую вы можете увидеть на скрине выше. К слову сказать, изучив статью, я сам разобрался как рассчитывает комиссия, но вот дословно разобрать всю формулу... уффф, вряд ли смогу. У меня вообще не математический склад ума, как я уже не однократно писал. Но поехали по порядку.
Uniswap V2 был разработан для сбора 1/6 части комиссии за своп в протоколе. Так как комиссия за своп составляет 0,3%, 1/6 часть от этой суммы равна 0,05%; то есть 0,05% от каждой сделки должно идти в протокол.
Ранее мы уже обсуждали, что сама процедура взимания комиссии за своп еще не активирована. Одной из причин может быть то, что это крайне не эффективное занятие. Посудите сами, при каждом свопе требовался бы дополнительный перевод токенов в пул (комиссия) и обновление переменных. И это при условии, что в одном пуле есть оба необходимых для свопа токена. А если нужно использовать несколько пулов? В общем, в V2 посчитали это трудоемким процессом.
Именно поэтому комиссия взимается, когда поставщик ликвидности вызывает функции burn или mint. Поскольку эти операции происходят нечасто по сравнению с обменом токенов, это приведет к экономии газа и стоимости самой транзакции.
Для того чтобы собрать mintFee, контракт вычисляет сумму комиссий, собранных с момента последней операции, и чеканит на адрес получателя достаточное количество токенов LP, чтобы вкладчик имел право на 1/6 часть самого сбора.
P.S. Во избежание путаницы в терминологии, мы обозначаем "fee" как 0,3%, взимаемые с трейдеров во время свопа, а "mintFee" - как 1/6 часть от 0,3%. Да, наличие комиссии в обоих терминах - не самая лучшая номенклатура, но это то, с чем нам приходится работать.
P.P.S. Также в данном контексте "ликвидность" - это квадратный корень из произведения остатков токенов в пуле. В некоторых источниках она обозначается как √𝑘, где 𝑘 = 𝑥𝑦, а 𝑥 и 𝑦 - остатки токенов.
Что еще нужно держать в уме для дальнейшего разбора?
В этой работе расчетов Uniswap V2 опирается на следующие два инварианта:
1. Если mint и burn не вызываются, ликвидность пула может только увеличиваться;
2. Увеличение ликвидности происходит исключительно за счет комиссий;
Таким образом, измеряя увеличение ликвидности с момента последнего mint или burn, пул понимает, сколько сборов было собрано.
Давайте разберем на примере, чтобы было чуть нагляднее.
Предположим, что в t₁ пул начинается с 10 токенов_0 и 10 токенов_1.
После множества торгов и сбора комиссии новый баланс пула составляет 40 токенов_0 и 40 токенов_1 в t₂.
Ликвидность измеряется как квадратный корень из произведения двух токенов, то есть ликвидность = sqrt(xy). Ликвидность составляла 10 на t₁ и 40 на t₂, sqrt(100) и sqrt(1600) соответственно. Мы собираемся взимать комиссию за рост с 10 до 40.
То есть 3/4, или 30 единиц ликвидности пула, приходится на комиссию. Мы хотим сминтить достаточное количество токенов LP, "mintFee", чтобы бенефициар получал 1/6 часть "комиссионной части" пула. То есть он должен иметь право на 5 единиц ликвидности (30 / 6).
Для формулы на скрине мы используем следующие обозначения:
s - количество LP токенов до сбора комиссии
η - комиссия
ℓ1 - ликвидность до сбора комиссии
ℓ2 - ликвидность после сбора комиссии
И ключевой инвариант:
η / p = s / d
То есть? если mintFee η может выкупить (redeem) количество ликвидности в протоколе 𝑝, то первоначальное предложение LP s может выкупить (redeem) оставшуюся часть пула d.
Именно этот расчет и показан на скрине.
Но если вам это еще ни о чем не говорит, то дальше мы посмотрим уже в код контракта, и вам точно станет понятнее.
#uniswap #v2 #mintfee
В нескольких постах попробует разобрать всю ту ересь, которую вы можете увидеть на скрине выше. К слову сказать, изучив статью, я сам разобрался как рассчитывает комиссия, но вот дословно разобрать всю формулу... уффф, вряд ли смогу. У меня вообще не математический склад ума, как я уже не однократно писал. Но поехали по порядку.
Uniswap V2 был разработан для сбора 1/6 части комиссии за своп в протоколе. Так как комиссия за своп составляет 0,3%, 1/6 часть от этой суммы равна 0,05%; то есть 0,05% от каждой сделки должно идти в протокол.
Ранее мы уже обсуждали, что сама процедура взимания комиссии за своп еще не активирована. Одной из причин может быть то, что это крайне не эффективное занятие. Посудите сами, при каждом свопе требовался бы дополнительный перевод токенов в пул (комиссия) и обновление переменных. И это при условии, что в одном пуле есть оба необходимых для свопа токена. А если нужно использовать несколько пулов? В общем, в V2 посчитали это трудоемким процессом.
Именно поэтому комиссия взимается, когда поставщик ликвидности вызывает функции burn или mint. Поскольку эти операции происходят нечасто по сравнению с обменом токенов, это приведет к экономии газа и стоимости самой транзакции.
Для того чтобы собрать mintFee, контракт вычисляет сумму комиссий, собранных с момента последней операции, и чеканит на адрес получателя достаточное количество токенов LP, чтобы вкладчик имел право на 1/6 часть самого сбора.
P.S. Во избежание путаницы в терминологии, мы обозначаем "fee" как 0,3%, взимаемые с трейдеров во время свопа, а "mintFee" - как 1/6 часть от 0,3%. Да, наличие комиссии в обоих терминах - не самая лучшая номенклатура, но это то, с чем нам приходится работать.
P.P.S. Также в данном контексте "ликвидность" - это квадратный корень из произведения остатков токенов в пуле. В некоторых источниках она обозначается как √𝑘, где 𝑘 = 𝑥𝑦, а 𝑥 и 𝑦 - остатки токенов.
Что еще нужно держать в уме для дальнейшего разбора?
В этой работе расчетов Uniswap V2 опирается на следующие два инварианта:
1. Если mint и burn не вызываются, ликвидность пула может только увеличиваться;
2. Увеличение ликвидности происходит исключительно за счет комиссий;
Таким образом, измеряя увеличение ликвидности с момента последнего mint или burn, пул понимает, сколько сборов было собрано.
Давайте разберем на примере, чтобы было чуть нагляднее.
Предположим, что в t₁ пул начинается с 10 токенов_0 и 10 токенов_1.
После множества торгов и сбора комиссии новый баланс пула составляет 40 токенов_0 и 40 токенов_1 в t₂.
Ликвидность измеряется как квадратный корень из произведения двух токенов, то есть ликвидность = sqrt(xy). Ликвидность составляла 10 на t₁ и 40 на t₂, sqrt(100) и sqrt(1600) соответственно. Мы собираемся взимать комиссию за рост с 10 до 40.
То есть 3/4, или 30 единиц ликвидности пула, приходится на комиссию. Мы хотим сминтить достаточное количество токенов LP, "mintFee", чтобы бенефициар получал 1/6 часть "комиссионной части" пула. То есть он должен иметь право на 5 единиц ликвидности (30 / 6).
Для формулы на скрине мы используем следующие обозначения:
s - количество LP токенов до сбора комиссии
η - комиссия
ℓ1 - ликвидность до сбора комиссии
ℓ2 - ликвидность после сбора комиссии
И ключевой инвариант:
η / p = s / d
То есть? если mintFee η может выкупить (redeem) количество ликвидности в протоколе 𝑝, то первоначальное предложение LP s может выкупить (redeem) оставшуюся часть пула d.
Именно этот расчет и показан на скрине.
Но если вам это еще ни о чем не говорит, то дальше мы посмотрим уже в код контракта, и вам точно станет понятнее.
#uniswap #v2 #mintfee
🌭6🔥4🤯2👍1
Как Uniswap V2 вычисляет mintFee? Часть 2
После последнего разбора, должны быть понятны основные моменты. Теперь же посмотрим, как это все организовано в самой функции. Ее вы можете увидеть на скрине выше.
Вот некоторые пояснения к выделениям на скрине:
1. rootK - текущая ликвидность после комиссий ℓ₂;
2. kLast - предыдущая ликвидность;
3. totalSupply - количество LP токенов до разбавления S;
4. Отметка синим - функция изменяет состояние контракта; она майнит mintFee внутри самой функции, а не просто возвращает расчет mintFee;
5. Fee могут быть как включены, так и выключены с флагом feeOn (об этом позже)
Мы рассмотрим эту функцию подробнее, но сначала посмотрим, где обновляется kLast.
#uniswap #v2 #mintfee
После последнего разбора, должны быть понятны основные моменты. Теперь же посмотрим, как это все организовано в самой функции. Ее вы можете увидеть на скрине выше.
Вот некоторые пояснения к выделениям на скрине:
1. rootK - текущая ликвидность после комиссий ℓ₂;
2. kLast - предыдущая ликвидность;
3. totalSupply - количество LP токенов до разбавления S;
4. Отметка синим - функция изменяет состояние контракта; она майнит mintFee внутри самой функции, а не просто возвращает расчет mintFee;
5. Fee могут быть как включены, так и выключены с флагом feeOn (об этом позже)
Мы рассмотрим эту функцию подробнее, но сначала посмотрим, где обновляется kLast.
#uniswap #v2 #mintfee
Как Uniswap V2 вычисляет mintFee? Часть 3
В приведенном выше коде kLast не устанавливается, если feeOn равен true.
Он устанавливается при завершении вызовов функция mint и burn, но не самого swap, поскольку мы заинтересованы в измерении роста комиссий из-за свопов между событиями ввода и вывода ликвидности.
Места, где устанавливается kLast, отмечены желтым.
#uniswap #v2 #mintfee
В приведенном выше коде kLast не устанавливается, если feeOn равен true.
Он устанавливается при завершении вызовов функция mint и burn, но не самого swap, поскольку мы заинтересованы в измерении роста комиссий из-за свопов между событиями ввода и вывода ликвидности.
Места, где устанавливается kLast, отмечены желтым.
#uniswap #v2 #mintfee
Как Uniswap V2 вычисляет mintFee? Часть 4
Теперь, когда мы поняли, как обновляется kLast, мы можем полностью объяснить разобрать функцию _mintFee.
Тут нужно взглянуть на скрин, иначе будет ничего не понятно. Следуйте за мной:
1. feeOn равен false, ничего не сминчено (зеленое выделение);
2. feeOn равен false, kLast равен нулю (желтое выделение);
3. feeOn равен false, kLast НЕ равен нулю (желтое выделение);
4. feeOn равен true, но роста ликвидности не произошло (оранжевое выделение);
5. feeOn равен true, но был рост ликвидности (оранжевое выделение), поэтому применяется mint fee (синее выделение);
Ниже будет представлен древовидный ход выполнения функции для лучшего визуального восприятия.
#uniswap #v2 #mintfee
Теперь, когда мы поняли, как обновляется kLast, мы можем полностью объяснить разобрать функцию _mintFee.
Тут нужно взглянуть на скрин, иначе будет ничего не понятно. Следуйте за мной:
1. feeOn равен false, ничего не сминчено (зеленое выделение);
2. feeOn равен false, kLast равен нулю (желтое выделение);
3. feeOn равен false, kLast НЕ равен нулю (желтое выделение);
4. feeOn равен true, но роста ликвидности не произошло (оранжевое выделение);
5. feeOn равен true, но был рост ликвидности (оранжевое выделение), поэтому применяется mint fee (синее выделение);
Ниже будет представлен древовидный ход выполнения функции для лучшего визуального восприятия.
#uniswap #v2 #mintfee
❤1
Как Uniswap V2 вычисляет mintFee? Часть 5
Разбирая такие технические части протоколов, неизбежно получается много коротких постов со скринами. Как вам вообще?
Если больше зашел описательный первый пост, то остановимся на его формате, если несколько мелких тоже норм, то буду делать полное описание и перевод.
#uniswap #v2 #mintfee
Разбирая такие технические части протоколов, неизбежно получается много коротких постов со скринами. Как вам вообще?
Если больше зашел описательный первый пост, то остановимся на его формате, если несколько мелких тоже норм, то буду делать полное описание и перевод.
#uniswap #v2 #mintfee
🔥2
Архитектура Uniswap V2
Думаю, разбор Uniswap контрактов нужно было начинать именно с этого поста, но как-то дошел до не в самом конце. Поэтому в общей сводке всех постов по теме, поставлю его в самом начале.
Архитектура Uniswap V2 удивительно проста.
В ее основе лежит контракт UniswapV2Pair, в котором хранятся два токена ERC20. Через него трейдеры могут менять токены один на другой, а поставщики ликвидности - предоставлять эти самые токены.
Для каждой возможной пары UniswapV2Pair существует свой одноименный контракт, который управляет ею. Если нужный контракт UniswapV2Pair не существует, новый может быть создан из контракта UniswapV2Factory.
Контракты UniswapV2Pair также являются токенами ERC20 (и наследуют от ERC20). Этот токен используется для отслеживания депозитов аналогично тому, как работает ERC4626.
Хотя продвинутые трейдеры или смарт-контракты могут напрямую взаимодействовать с контрактом пары, большинство пользователей будут взаимодействовать с токенами через контракт Router, который имеет несколько удобных функций, например, торговля между парами в одной транзакции и создание «синтетической» пары, если таковой не существует.
Паттерн "core - periphery"
Обратите внимание, что контракт маршрутизатора находится в репозитории под названием «v2 periphery», а пара - в репозитории «v2 core».
Uniswap V2 следует шаблону проектирования «ядро / периферия», где наиболее важная логика находится в ядре, а «необязательная» логика - на периферии.
Это делается для того, чтобы основные контракты содержали как можно меньше кода, что снижает вероятность возникновения ошибок в основной бизнес-логике.
Как определить адрес пула через токены?
Вместо того чтобы обращаться к маппингу пар токенов с адресом пула, смарт-контракты вычисляют адрес пула, предсказывая адрес через create2, как функцию от адресов токенов и адреса фабрики.
Поскольку при этом не происходит обращения к хранилищу, это очень экономит газ. Ниже приведена вспомогательная функция из UniswapV2Library для вычисления адреса парного контракта:
Почему не использовать клоны контрактов через EIP1167?
Многие знают, что иногда копии контрактов создаются с помощью стандарта EIP1167, так почему же Uniswap не использует данную логику?
На самом деле все также просто.
Не смотря на то, что через EIP1167 развертывание контракта копии будет дешевле, но приводит к дополнительным тратам 2300 газа за транзакцию, так как используется delegatecall. И поскольку пулы предназначены для частого использования, экономия от развертывания будет потеряна после нескольких сотен транзакций, поэтому по итогу проще создавать новый контракт с нуля.
Надеюсь, вам понравились наши небольшие разборы Uniswap V2. На этой неделе выйдет еще пара постов про AMM, а потом перейдем к AAVE и Compound.
#uniswap #core #periphery
Думаю, разбор Uniswap контрактов нужно было начинать именно с этого поста, но как-то дошел до не в самом конце. Поэтому в общей сводке всех постов по теме, поставлю его в самом начале.
Архитектура Uniswap V2 удивительно проста.
В ее основе лежит контракт UniswapV2Pair, в котором хранятся два токена ERC20. Через него трейдеры могут менять токены один на другой, а поставщики ликвидности - предоставлять эти самые токены.
Для каждой возможной пары UniswapV2Pair существует свой одноименный контракт, который управляет ею. Если нужный контракт UniswapV2Pair не существует, новый может быть создан из контракта UniswapV2Factory.
Контракты UniswapV2Pair также являются токенами ERC20 (и наследуют от ERC20). Этот токен используется для отслеживания депозитов аналогично тому, как работает ERC4626.
Хотя продвинутые трейдеры или смарт-контракты могут напрямую взаимодействовать с контрактом пары, большинство пользователей будут взаимодействовать с токенами через контракт Router, который имеет несколько удобных функций, например, торговля между парами в одной транзакции и создание «синтетической» пары, если таковой не существует.
Паттерн "core - periphery"
Обратите внимание, что контракт маршрутизатора находится в репозитории под названием «v2 periphery», а пара - в репозитории «v2 core».
Uniswap V2 следует шаблону проектирования «ядро / периферия», где наиболее важная логика находится в ядре, а «необязательная» логика - на периферии.
Это делается для того, чтобы основные контракты содержали как можно меньше кода, что снижает вероятность возникновения ошибок в основной бизнес-логике.
Как определить адрес пула через токены?
Вместо того чтобы обращаться к маппингу пар токенов с адресом пула, смарт-контракты вычисляют адрес пула, предсказывая адрес через create2, как функцию от адресов токенов и адреса фабрики.
Поскольку при этом не происходит обращения к хранилищу, это очень экономит газ. Ниже приведена вспомогательная функция из UniswapV2Library для вычисления адреса парного контракта:
function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
(address token0, address token1) = sortTokens(tokenA, tokenB);
pair = address(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
keccak256(abi.encodePacked(token0, token1)),
hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
))));
}Почему не использовать клоны контрактов через EIP1167?
Многие знают, что иногда копии контрактов создаются с помощью стандарта EIP1167, так почему же Uniswap не использует данную логику?
На самом деле все также просто.
Не смотря на то, что через EIP1167 развертывание контракта копии будет дешевле, но приводит к дополнительным тратам 2300 газа за транзакцию, так как используется delegatecall. И поскольку пулы предназначены для частого использования, экономия от развертывания будет потеряна после нескольких сотен транзакций, поэтому по итогу проще создавать новый контракт с нуля.
Надеюсь, вам понравились наши небольшие разборы Uniswap V2. На этой неделе выйдет еще пара постов про AMM, а потом перейдем к AAVE и Compound.
#uniswap #core #periphery
🌭4👍2👌1
Погружение в DeFi. Все о Uniswap V2
Пора подвести некоторые итоги нашего разбора Uniswap V2 и обозначить все посты, где мы говорили про эту платформу.
Сводный пост про основные DeFi
Гайд по изучению Uniswap (2 части)
Архитектура Uniswap V2
Как Uniswap V2 вычисляет mintFee? (5 частей)
Разбор Uniswap V2: Router контракты (3 части)
Uniswap V2: UniswapV2Library (2 части)
Как работает TWAP в Uniswap V2 (3 части)
Разбор Uniswap V2: mint() & burn() (3 части)
Uniswap V2: swap() (5 частей)
Сборник ресурсов по Uniswap V2/V3
Всего было написано 26 постов! Ух, даже самому не верится!
Далее в планах пара слов о Sushiswap и Aave, а также более детальное погружение в Compound.
Будет сложно, но интересно!
#defi
Пора подвести некоторые итоги нашего разбора Uniswap V2 и обозначить все посты, где мы говорили про эту платформу.
Сводный пост про основные DeFi
Гайд по изучению Uniswap (2 части)
Архитектура Uniswap V2
Как Uniswap V2 вычисляет mintFee? (5 частей)
Разбор Uniswap V2: Router контракты (3 части)
Uniswap V2: UniswapV2Library (2 части)
Как работает TWAP в Uniswap V2 (3 части)
Разбор Uniswap V2: mint() & burn() (3 части)
Uniswap V2: swap() (5 частей)
Сборник ресурсов по Uniswap V2/V3
Всего было написано 26 постов! Ух, даже самому не верится!
Далее в планах пара слов о Sushiswap и Aave, а также более детальное погружение в Compound.
Будет сложно, но интересно!
#defi
🔥14🌭2👍1🤔1
Введение в Automated Market Makers (AMM)
Uniswap, который мы так старательно разбирали ранее, это приложение DeFi, позволяющее трейдерам обменивать один токен на другой. По сути, он был одним из первых автоматизированных маркет-мейкеров (AMM) для торговли, хоть и не первый.
P.S.Автоматические маркет-мейкеры - это альтернатива книге заявок, о которой мы поговорим чуть позже.
Как работают АММ?
Автоматический маркет-мейкер хранит в пуле (смарт-контракте) два токена (токен X и токен Y). Он позволяет любому вывести токен X из пула, но при этом он должен внести такое количество токена Y, чтобы «общая сумма» активов в пуле не уменьшилась.
«Общая сумма» - это произведение сумм двух активов:
Здесь 𝒳′ и 𝒴′ - остатки токенов в пуле после сделки, а 𝒳 и 𝒴 - количество токенов в пуле до сделки.
Это гарантирует, что активы пула могут либо оставаться неизменными, либо увеличиваться.
Большинство пулов также взимают определенную комиссию. В этом случае произведение балансов должно не только увеличиться, но и вырасти на определенную сумму, с учетом комиссии.
Активы предоставляются пулу поставщиками ликвидности, которые получают так называемые LP-токены, представляющие их долю в пуле.
Балансы поставщиков ликвидности отслеживается аналогично тому, как это работает в ERC4626.
Разница между AMM и ERC4626 заключается в том, что ERC4626 поддерживает только один актив, а AMM работает с двумя токенами. Поэтому как и в vault, доля поставщиков ликвидности в пуле остается прежней, при этом сам продукт 𝒳𝒴 может становиться больше, увеличивая долю поставщиков.
Преимущества АММ
1. В АММ определение цены актива происходит автоматически. Оно определяется соотношением активов в пуле.
В частности, если у нас есть токен 𝒳 и токен 𝒴, цена определяется следующим образом:
price (x) = poolHoldings_Y / poolHoldings_X
И наоборот для 𝒴. То есть, чем больше актива 𝒳 попадает в пул, тем больше его «изобилие», и цена 𝒳 снижается.
2. Также у нас нет необходимости ждать, пока появится подходящий ордер «бид» или «аск». Он существует всегда.
3. Если существует несоответствие между ценой в AMM и на другой бирже, то трейдер будет арбитражировать разницу, возвращая цены в равновесие.
Следует подчеркнуть, что речь идет о «спотовой» или «маржинальной» цене. Если вы купите любое количество 𝒳, фактическая цена, которую вы заплатите, будет хуже, чем результат этого расчета.
4. АММ удваивается как оракул.
Поскольку цена активов определяется автоматически, другие смарт-контракты могут использовать AMM в качестве ценового оракула. Однако ценами AMM можно манипулировать с помощью флэш-кредитов, поэтому при использовании AMM таким образом необходимо предусмотреть меры предосторожности.
5. AMM отличаются высокой газовой эффективностью по сравнению с книгами заявок.
Книги заявок требуют значительного объема бухгалтерского учета. В AMM нужно хранить только два токена и передавать их в соответствии с простыми правилами. Это делает их более эффективными в применении.
На этом пока все, а в следующем посты мы поговорим про недостатки AMM.
#amm
Uniswap, который мы так старательно разбирали ранее, это приложение DeFi, позволяющее трейдерам обменивать один токен на другой. По сути, он был одним из первых автоматизированных маркет-мейкеров (AMM) для торговли, хоть и не первый.
P.S.Автоматические маркет-мейкеры - это альтернатива книге заявок, о которой мы поговорим чуть позже.
Как работают АММ?
Автоматический маркет-мейкер хранит в пуле (смарт-контракте) два токена (токен X и токен Y). Он позволяет любому вывести токен X из пула, но при этом он должен внести такое количество токена Y, чтобы «общая сумма» активов в пуле не уменьшилась.
«Общая сумма» - это произведение сумм двух активов:
𝒳𝒴 ≤ 𝒳′𝒴′
Здесь 𝒳′ и 𝒴′ - остатки токенов в пуле после сделки, а 𝒳 и 𝒴 - количество токенов в пуле до сделки.
Это гарантирует, что активы пула могут либо оставаться неизменными, либо увеличиваться.
Большинство пулов также взимают определенную комиссию. В этом случае произведение балансов должно не только увеличиться, но и вырасти на определенную сумму, с учетом комиссии.
Активы предоставляются пулу поставщиками ликвидности, которые получают так называемые LP-токены, представляющие их долю в пуле.
Балансы поставщиков ликвидности отслеживается аналогично тому, как это работает в ERC4626.
Разница между AMM и ERC4626 заключается в том, что ERC4626 поддерживает только один актив, а AMM работает с двумя токенами. Поэтому как и в vault, доля поставщиков ликвидности в пуле остается прежней, при этом сам продукт 𝒳𝒴 может становиться больше, увеличивая долю поставщиков.
Преимущества АММ
1. В АММ определение цены актива происходит автоматически. Оно определяется соотношением активов в пуле.
В частности, если у нас есть токен 𝒳 и токен 𝒴, цена определяется следующим образом:
price (x) = poolHoldings_Y / poolHoldings_X
И наоборот для 𝒴. То есть, чем больше актива 𝒳 попадает в пул, тем больше его «изобилие», и цена 𝒳 снижается.
2. Также у нас нет необходимости ждать, пока появится подходящий ордер «бид» или «аск». Он существует всегда.
3. Если существует несоответствие между ценой в AMM и на другой бирже, то трейдер будет арбитражировать разницу, возвращая цены в равновесие.
Следует подчеркнуть, что речь идет о «спотовой» или «маржинальной» цене. Если вы купите любое количество 𝒳, фактическая цена, которую вы заплатите, будет хуже, чем результат этого расчета.
4. АММ удваивается как оракул.
Поскольку цена активов определяется автоматически, другие смарт-контракты могут использовать AMM в качестве ценового оракула. Однако ценами AMM можно манипулировать с помощью флэш-кредитов, поэтому при использовании AMM таким образом необходимо предусмотреть меры предосторожности.
5. AMM отличаются высокой газовой эффективностью по сравнению с книгами заявок.
Книги заявок требуют значительного объема бухгалтерского учета. В AMM нужно хранить только два токена и передавать их в соответствии с простыми правилами. Это делает их более эффективными в применении.
На этом пока все, а в следующем посты мы поговорим про недостатки AMM.
#amm
❤7