Solidity. Смарт контракты и аудит – Telegram
Solidity. Смарт контракты и аудит
2.62K subscribers
246 photos
7 videos
18 files
547 links
Обучение Solidity. Уроки, аудит, разбор кода и популярных сервисов
Download Telegram
Последний пост этого года

С понедельника я ухожу в отпуск на две недели, поэтому время немного порефлексировать о прошедшем годе.

Если говорить кратко:

1. На канале вышло более 970 постов;
2. За год количество участников +800!
3. Был запущен наш мини курс для начинающих;
4. Проведены 3 модуля курса;
5. Модуль 4 выйдет уже в следующем месяце;
6. Написан крутой цикл из 39 постов по Foundry;
7. Я изучил несколько дополнительных программ для проведения тестов;
8. Принял участие в 10+ конкурсных аудитах (полноценно и 30+ изучая код);
9. Нашел 5 high и 15 med в конкурсах;
10. Провел 4 соло аудита, в которых нашел 10 high и 30+ med проблем;
11. Дал 15 консультаций о том, как начать карьеру в web3;
12. Прошел отбор и стажировался в Pessimistic;

Это был год огромной ежедневной работы и обучения. И, что самое главное, еще учиться и учиться в следующем году.

Вообще, у мои планы входит:

По курсу и модулям:

1. Провести 4 модуль курса;
2. Если будет достаточное количество желающих, провести и 5 модуль.
3. Если будет достаточное количество желающих, повторить курс с 1 модуля;

По Телеграм каналу:

1. Написать цикл постов про опкоды и assembly;
2. Написать цикл постов про математику в Defi;

По аудиту и конкурсам:

1. Больше времени уделять конкурсным аудитам;
2. Пробиться в топ 50 на code4rena за год;
3. Провести 10+ соло аудитов;

По проектам:

1. Запустить, наконец, проект по тестам на зарубежный рынок;

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

Если хотите вступить на этот путь, будьте готовы постоянно учиться. И учится много!

Вообще, на определенном этапе вы сами поймете, чем хотите заниматься больше:

1. Писать смарт контракты и различные протоколы;
2. Проводить аудит и стать белым хакером;
3. Уйти в тестирование;
4. Разбирать взломы и отслеживать транзакции в разных сетях;
5. Заниматься узлами и стать валидатором;

Все это направления, которые каждый выбирает для себя после первых уроков с EVM и Solidity.

Сложно? Да. Интересно? Еще бы! Прибыльно? Определенно!

Однажды мы сделали правильный выбор!

Желаю вам всем успехов в профессиональной среде в новом году!

С Наступающим!

#last2023
🔥347👍6❤‍🔥1
Медленно, но верно, возвращаемся к работе

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

Так, чем займемся в январе?

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

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

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

Для тех, кто хотел попробовать участие в конкурсных аудитах, есть прекрасная возможность посетить онлайн встречу команды Code4rena: Getting started with c4, которая пройдет в этот четверг в 22:00 по мск.

Вот ссылка: https://discord.com/events/810916927919620096/1193677104433348728

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

Кстати, это прекрасный повод, наконец, зарегистрироваться в Дискорде.

P.S. может создать небольшую рабочую группу для начинающих на с4 и в конкурсных аудитах и на живом примере провести вас, как все там устроено?

Ну, а пока, настраиваемся на рабочий ритм, вспоминаем, как открывать VS Code и, что такое конструктор в контракте.

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

#first2024
🔥182👍1
Временная группа для начинающих конкурсные аудиты?

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

Хотите соберем небольшую группу на ближайший конкурсный аудит?

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

Просто - как начать.

Подойдёт для тех, кто уже знает Solidity, умеет писать код и смотрел некоторые видео по аудиту и безопасности.

Кто хочет попробовать? Пройдите опрос ниже)
🔥13👍1
Соберем группу для начинающих в конкурсные аудиты?
Final Results
81%
Да, я готов присоединиться
19%
Может позже
1
🔥 Круто! 35 желающих за 15 минут) не думал, что тема такая востребованная)

Думаю, тогда завтра уже и начнем) как раз пара конкурсов идет на разных площадках)
15
Группа для начинающих в конкурсных аудитах

Офигеть! Не ожидал такого спроса от участников начать свой путь в конкурсных аудитах! 79 человек за ночь!

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

Сегодня начнем с Code4rena. Присоединяйтесь!

https://news.1rj.ru/str/+P7lY7zRXSEFmYjk6

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

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

#chat #audit
9👍4
Secureum Races теперь на Youtube

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

На данный момент вышло уже 25 Races! Посмотреть эти тесты можно в официальном дискорд сервере: https://discord.gg/RVD6YAUE

Более того, с недавнего времени, организатор этих билц-тестов, Патрик (не Коллинс), запустил свой ютуб канал, на котором разбирает вопросы и ответы с прошедших тестов.

Самое интересное то, что он не только говорит правильный ответ, но и детально рассказывает и объясняет некоторые нюансы работы языка, компилятора, EVM и сетей блокчейна в целом!

Вот ссылка на его канал: https://www.youtube.com/@patrickd_de/videos

За эти 5 - 10 минут в день можно не хило так прокачать свои знания. Очень рекомендую!

#races
11👍2🔥2
Как научиться видеть инварианты

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

В презентациях от компании Certora можно найти много полезного по этой теме, например:

https://github.com/Certora/Tutorials/blob/master/06.Lesson_ThinkingProperties/Categorizing_Properties.pdf

А здесь, посмотреть варианты properties для различных контрактов:

https://github.com/crytic/properties/blob/main/PROPERTIES.md

Ну, или выполнить предлагаемое упражнение:

https://github.com/Certora/Tutorials/tree/master/06.Lesson_ThinkingProperties/ThinkingPropertiesExercise

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

#invariant
🔥8
RareSkills выпустила книгу по Compound

RareSkills уже некоторое время выпускает потрясающие обучающие твиты и статьи по теме Compound. И теперь они решили все объединить в одну электронную "книгу" - Compound V3.

https://www.rareskills.io/compound-v3-book

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

Если вам интересна работа одного из крупнейших DeFi протоколов, крайне рекомендую к изучению!

#compound
👍14
Foundry и старые pragma

На канале в комментариях где-то были вопросы, а как писать тесты, когда контракты имеют разную версию pragma? Ведь может быть и 0.6.0 и 0.8.19 в одном проекте!

В Foundry есть специальный читкод, который помогает деплоить контракты разных версий в тестах:

function deployCode(string memory what) public returns (address);


Пример использования этого читкода вы можете видеть выше на скрине!

Больше о нем можно прочитать тут:

https://book.getfoundry.sh/reference/forge-std/deployCode

Теперь тесты можно писать еще быстрее!

#foundry
🔥7👏1🤯1
Забытый скрин к посту выше)
2👍1
Чеклист от Solodit

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

Есть такая платформа Solodit, которая собирает отчеты по уязвимостям со многих площадок (типа С4) и частных аудиторов (типа Trust).

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

https://solodit.xyz/checklist

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

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

#solodit
🔥7👍2
Новости и программа 4 модуля курса

Многие в прошлом году спрашивали про 4 модуль курса и его темы, поэтому потихоньку буду раскрывать детали. Прежде всего начнем с программы, которая рассчитана на 4 недели обучения:

Модуль 4

Неделя 1

1. Древо Меркла: общее
2. Подписи и стандарты
3. ecrecover и ECDSA
4. Безопасность подписей

Неделя 2

5. Прокси. Общее
6. Transparent и UUPS proxy
7. Beacon proxy, Diamond
8. Безопасность proxy

Неделя 3

9. Работа с памятью: code
10. Работа с памятью: storage
11. Работа с памятью: memory
12. Работа с памятью: calldata
13. Работа с памятью: stack

Неделя 4

14. Опкоды
15. Yul и assembly
16. Побитовые операции
17. Дебаггинг контрактов

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

Напоминаю, что 4 модуль это продолжение курса для начинающих разработчиков, поэтому мы касаемся тем только связанных с Solidity, исключая материал про Hardhat с javanoscript / typenoscript, и фокусируясь исключительно на практических знаниях.

Кроме того, к написанию уроков и поддержке учеников подключится новый преподаватель! Но об этом в следующем посте!

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

#курс
🔥11👍51🥴1
Новости модуля 4

Вчера я упоминал, что этот модуль я буду писать вместе с другим преподавателем. И это @elawbek!

Вот что он пишет о своем пути:

"Разработчик смарт-контрактов для EVM сетей с опытом работы около 1.5 лет.

С 2021 года активно изучаю Solidity и глубоко интересуюсь внутренним устройством Ethereum Virtual Machine (EVM).

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

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

Понимаю, что low-level аспекты Ethereum Virtual Machine несравненны с другими языками программирования, так как EVM была разработана с учетом ограниченной области применения в блокчейне. Тем не менее, с развитием технологий и инфраструктуры уверен, что мои знания и опыт, накопленные до настоящего времени, будут востребованы в будущем.

Готов поделиться своими знаниями на курсе и внести свой вклад в обучение других участников!
"

Вы могли часто видеть, как он помогает участникам нашего чата и других тематических по web3 с ответами на вопросы по тому, как работают опкоды / memory / storage, что делает assembly в коде или почему EVM работает так, как она работает. К нему всегда можно было обратиться за советом!

На 4 модуле он будет рассказывать вам последние 8 уроков: работа с памятью, assembly / yul, побитовые операции и дебаггинг!

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

Запуск уже совсем скоро!

#курс
🔥13🥴1
Текстовые уроки по аудиту

Хотел еще пару дней назад выложить на канале, да как-то забыл.

В Твиттере достаточно много хороших отзывов было по урокам по безопасности смарт контрактов и аудиту от Zokyo, еще одной аудиторской компании.

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

https://zokyo-auditing-tutorials.gitbook.io/zokyo-tutorials/

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

#zokyo #audit
👍8
Пока идет какой-то не реальный загруз, выложу этот скрин, который описывает дейтствия функции call(). Нашел когда-то в Твиттере, сохранил, а тут просматривал заметки и решил, что можно выложить и на своем канале.

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

#call
8
Еще про 4 модуль курса

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

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

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

Про assembly я вообще молчу. Знаю, что многие просто пропускают эти участки кода на ревью, потому что просто не понимают, как это работает!

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

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

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

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

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

Запуск уже скоро!

#курс
🔥12🤯1
Что нужно знать перед 4 модулем

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

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

1. Знание базового синтаксиса языка;
2. Умение писать простые смарт контракты;
3. Умение работать с библиотеками и наследованиями;
4. Знать популярные стандарты: ERC20, ERC721;
5. Базовые знания Hardhat / Foundry (уметь подготовить проект);
6. Понимать популярные паттерны, типа голландского аукциона, DAO, ролевую системы;
7. Уметь работать с не популярными стандартами, например, ERC4626;
8. Уметь работать с Ремикс и одном из редакторов кода, например, VS Code;

Это тот необходимый минимум, чтобы продолжить обучение на 4 модуле.

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

Запуск уже скоро!

#курс
5
Хочу узнать, сколько человек планирует пойти на 4 модуль?
Anonymous Poll
48%
Я точно иду!
52%
Пропускаю в этот раз
4 модуль и результат опроса

Интересная статистика опроса получилась в этот раз: 32 - за, 35 - пропускают (на момент написания поста). Полагаю, это из-за того, что 4 модуль проводится с достаточно большим перерывом и многие участники уже успели пройти эти темы самостоятельно. Если у кого-то не так, буду рад узнать в комментариях.

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

Я также хочу узнать, какие темы для модулей или канала вам было бы интересно изучить? За полтора года ведения канала я написал кучу постов на самые разные темы Solidity и аудита. Может я что-то пропустил?

#курс
👍5
Сложные темы 4 модуля

Уже достаточно долгое время мы пишем 4 модуль курса, стараясь сделать его более простым и понятным для учеников. Огромное количество уязвимостей постоянно находится на конкурсных аудитах по каждой из этих тем. Если зайти на проект Solodit (тот, который собирает отчеты с аудитов) и поискать сколько багов было найдено, то мы увидим, что:

- 594 проблемы в контрактах с подписями,
- 513 репортов по теме прокси,
- 160 не правильно использовали assembly,
- 37 ошиблись с Merkle tree,


И это количество постоянно растет! После последних трех конкурсов на code4rena, с уверенностью могу сказать, что прибавятся еще репорты связанные с неправильной работой с EIP-712!

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

В итоге, у нас будет 17 уроков и 3 мини аудита реальных протокола, как финальный практикум! 2 преподавателей будут отвечать на ваши вопросы по темам уроков.

В этот раз стоимость чуть выше: 5000 рублей или 60 USDT.

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

А так, сможем начать уже совсем скоро!

#курс
13🔥2🌭1